diff --git a/bin/cmmde.py b/bin/cmmde.py index 8663249..4c06cf5 100755 --- a/bin/cmmde.py +++ b/bin/cmmde.py @@ -32,7 +32,7 @@ parser.add_argument('-para','--parapath',type=str,default='/home/adit/opt/dftbpl parser.add_argument('-iter','--iter',type=int,default=9999, help='Jumlah iterasi dalam optimasi geometri dan jenis perhitungan lainnya') parser.add_argument('-ens','--ensembel',type=str,default='NVE', help='Ensembel yang digunakan dalam simulasi dinamika molekul. Pilihan: NVE, NVT, dan NPT.') parser.add_argument('-tstat','--thermostat',type=str,default='andersen', help='Termostat yang digunakan dalam simulasi NVT. Pilihan: andersen,berendsen,dan nose') -parser.add_argument('-t','--temp', type=float, default=298.15,help='Suhu yang digunakan dalam perhitungan frekuensi maupun simulasi MD dalam satuan Kelvin.') +parser.add_argument('-t','--temp', type=str, default='298.15',help='Suhu yang digunakan dalam perhitungan frekuensi maupun simulasi MD dan perhitungan frekuensi dalam satuan Kelvin.') parser.add_argument('-dt','--deltat',type=float, default=1.0, help='Selang waktu integrasi dalam simulasi dinamika molekul dalam satuan femtodetik.') parser.add_argument('-mdprint','--mdprint',type=int,default=10, help='Berapa step sekali struktur dicetak. Default=10.') parser.add_argument('-rest','--restart',type=str,default='false',help='Apakah dilakukan restart simulasi MD?') @@ -128,6 +128,9 @@ parser.add_argument('-ang','--angle',type=str,default='None',help='Sudut antara parser.add_argument('-dih','--dihedral',type=str, default='None',help='Sudut dihedral antara empat buah atom dalam format: Serial1,Serial2,Serial4,Dihedral. Contoh: 4,1,3,2,120.') parser.add_argument('-scanmode','--scanmode',type=str,default='None',help='Mode scan geometri yang diinginkan. Pilihan: concerted, sequential.') parser.add_argument('-scan','--scan',type=str,default='None',help='Rentang Scanning dalam format: Titik1,Titik2,JumlahTitik. Contoh:2.5,1.0,100.') +# Konstrain dan Fixing Atom pada Program XTB Standalone +parser.add_argument('-fixatm','--fixedatoms',type=str,default='None',help='Label atom-atom yang dibuat fix.') +parser.add_argument('-fixele','--fixedelements',type=str,default='None',help='Simbol unsur atom yang dibuat fix.') # Input untuk perhitungan NEB parser.add_argument('-produk','--produk',type=str,help='Struktur produk yang digunakan dalam interpolasi NEB dalam format koordinat Cartesian.') parser.add_argument('-trans','--transitionstate',default='None',type=str,help='Struktur perkiraan keadaan transisi yang digunakan dalam format koordinat Cartesian.') @@ -400,4 +403,4 @@ if opt.job == 'ligprep' and opt.software == 'gmx': # Program XTB Standalone if opt.software == 'xtb': - xtb(opt.job,geom,opt.nproc,opt.produk,opt.temp,opt.nrun,opt.npoint,opt.anopt,opt.kpush,opt.kpull,opt.ppull,opt.alp,opt.distance,opt.angle,opt.dihedral,opt.scanmode,opt.iter,opt.scan,opt.solvent,opt.charge,opt.mult,opt.method) \ No newline at end of file + xtb(opt.job,geom,opt.nproc,opt.produk,opt.temp,opt.nrun,opt.npoint,opt.anopt,opt.kpush,opt.kpull,opt.ppull,opt.alp,opt.distance,opt.angle,opt.dihedral,opt.scanmode,opt.iter,opt.scan,opt.solvent,opt.charge,opt.mult,opt.method,opt.fixedatoms,opt.fixedelements) \ No newline at end of file diff --git a/lib/__pycache__/cmmde_xtb.cpython-39.pyc b/lib/__pycache__/cmmde_xtb.cpython-39.pyc index 9f4cda7..261528b 100644 Binary files a/lib/__pycache__/cmmde_xtb.cpython-39.pyc and b/lib/__pycache__/cmmde_xtb.cpython-39.pyc differ diff --git a/lib/cmmde_xtb.py b/lib/cmmde_xtb.py index 9a7d154..74b449a 100644 --- a/lib/cmmde_xtb.py +++ b/lib/cmmde_xtb.py @@ -1,6 +1,6 @@ # 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,solvent,charge,mult,method): +def xtb(job,geom,nproc,product,temperature,nrun,npoint,anopt,kpush,kpull,ppull,alp,distance,angle,dihedral,scanmode,maxiter,scan,solvent,charge,mult,method,fixedatoms,fixedelements): with open('run.sh','w') as fout: print("""#!/bin/bash #SBATCH --nodes=1 @@ -23,6 +23,11 @@ cd $PWD""".format(nproc),file=fout) print("$XTB_COMMAND {} --opt -P {} --alpb {} --chrg {} --uhf {} {} > xtb.out".format(geom,nproc,solvent,charge,mult-1,meth),file=fout) else: print("$XTB_COMMAND {} --opt -P {} --chrg {} --uhf {} {} > xtb.out".format(geom,nproc,charge,mult-1,meth),file=fout) + if 'fix' in job: + if solvent != 'none': + print("$XTB_COMMAND {} --opt -P {} --alpb {} --chrg {} --uhf {} {} --input cmmd.in > xtb.out".format(geom,nproc,solvent,charge,mult-1,meth),file=fout) + else: + print("$XTB_COMMAND {} --opt -P {} --chrg {} --uhf {} {} --input cmmd.in > xtb.out".format(geom,nproc,charge,mult-1,meth),file=fout) if 'freq' in job: if solvent != 'none': print("$XTB_COMMAND {} --hess -P {} --input cmmd.in --alpb {} --chrg {} --uhf {} {} > xtb.out".format(geom,nproc,solvent,charge,mult-1,meth), file=fout) @@ -59,6 +64,25 @@ nrun={} ppull={} alp={} $end""".format(nrun,npoint,anopt,kpush,kpull,ppull,alp),file=f) + if 'optfix' in job: + with open("cmmd.in",'w') as f: + print("$fix",file=f) + if distance != 'None': + distance = distance.split(";") + for index, i in enumerate(distance): + print("distance: {}".format(i),file=f) + if angle != 'None': + angle = angle.split(";") + for index, i in enumerate(angle): + print("angle: {}".format(i),file=f) + if dihedral != 'None': + dihedral = dihedral.split(";") + for index, i in enumerate(dihedral): + print("dihedral: {}".format(i),file=f) + if fixedatoms != 'None': + print("atoms: {}".format(fixedatoms),file=f) + if fixedelements != 'None': + print("elements: {}".format(fixedelements),file=f) if 'scan' in job: with open("cmmd.in",'w') as f: