A series of Python3 script to lower the barrier of computing and simulating molecular and material systems.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

59 lines
1.9 KiB

# CMMDE function for xTB standalone program
import os
def xtb(job,geom,nproc,product,temperature,nrun,npoint,anopt,kpush,kpull,ppull,alp,distance,angle,dihedral,scanmode,maxiter,scan):
with open('run.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD""".format(nproc),file=fout)
if 'opt' in job:
print("$XTB_COMMAND {} --opt -P {} > xtb.out".format(geom,nproc),file=fout)
if 'freq' in job:
print("$XTB_COMMAND {} --hess -P {} --input cmmd.in > xtb.out".format(geom,nproc), file=fout)
if 'opt' in job and 'freq' in job:
print("$XTB_COMMAND {} --ohess -P {} --input cmmd.in > xtb.out".format(geom,nproc),file=fout)
if 'path' in job:
print("$XTB_COMMAND {} --path {} --input cmmd.in -P {} > xtb.out".format(geom,product,nproc),file=fout)
if 'scan' in job:
print("$XTB_COMMAND {} --opt -P {} --input cmmd.in > xtb.out".format(geom,nproc), file=fout)
if 'freq' in job:
with open('cmmd.in', 'w') as f:
print("""$thermo
temp={}""".format(temperature),file=f)
if 'path' in job:
with open("cmmd.in", 'w') as f:
print("""$path
nrun={}
npoint={}
anopt={}
kpush={}
kpull={}
ppull={}
alp={}
$end""".format(nrun,npoint,anopt,kpush,kpull,ppull,alp),file=f)
if 'scan' in job:
with open("cmmd.in",'w') as f:
print("$constrain",file=f)
if distance != 'None':
print("distance: {}".format(distance),file=f)
if angle != 'None':
print("angle: {}".format(angle),file=f)
if dihedral != 'None':
print("dihedral: {}".format(dihedral),file=f)
print("$scan",file=f)
if scanmode != 'None':
print("mode = {}".format(scanmode),file=f)
scan = scan.split(";")
for index, i in enumerate(scan):
print("{}: {}".format(index+1,i),file=f)
print("""$opt
maxcycle = {}""".format(maxiter),file=f)
os.system('sbatch run.sh')