From 05684f9cf64e9453277a61c98760424ee20f5b2a Mon Sep 17 00:00:00 2001 From: Aditya Wibawa Sakti Date: Mon, 1 Aug 2022 09:22:06 +0700 Subject: [PATCH] xTB bug fix --- bin/cmmde.py | 7 ++++-- lib/__pycache__/cmmde_xtb.cpython-39.pyc | Bin 3070 -> 3733 bytes lib/cmmde_xtb.py | 26 ++++++++++++++++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) 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 9f4cda7b6bd8a9bb026547a6f1e20e0a093dabc6..261528bd8194474e5931662bc0d717439cda6a9b 100644 GIT binary patch literal 3733 zcmb_f&2Jk;6yI+v+j}cQdYE^r!g16AsUBdU5SZ^rA7eAFfqws+^v@6G$oo8P>h zm9<17#=+;e@1Ese^>W;wwA1_%pz}UlZa>@*hj^1);*fyEFS#Wi@eACT^c+0ge13>F z;pYUjop8;<<^CaaoClFe*c7&eCtp{FJRXVLLLlt$!4Q(Z5qJ*Cm0_d=M;~(Tc@&{7 zz7h|Y3qBBnzTimEkB$y;!SIe!%gH(kBL>0|4ZmFTqe05I#pAP8MzCTKG1QiGxCQ62 zkTa-rJ^;?+Z8=9;aI$qnb_CVfNuB*Eu%BqlezFDo8!Tf1PllWV?gLJhMTmQ}jnuTW zR2XxrKBl2=U41kf@_tq4Ekexcwz(!>pX)uSU=m=s#=T79c zoT7Va7w1`~hlI@<=NA7&V60;`jv$WSUKO`QydA{1MfA=NUx|BC5Z~nIxX(sD6)MLo zBe0rtki|%2HCy7^7eOM7BtasKOh9B}Ph@Iec;vl#^m>C+PzE=^^o zGBJJKv9YJ#&fZy`znfiNy!p}ft8)v}k1Me}Qj>S?&5iLyDj23tIA8hT#(e6=jU{=d zU=<2}B$Z+Ykv>_xHn}9Nd$~zpVIcGXn_$>Ph(Qmq48t-ZmLa0;cto;nOZTrQ!M{9v zJDa^aKc_yfz)HcXrtVa2&2(~AD__JbRjXVqPy>E5Doj6am%ZmayeR$4t+`q;N?lwmn#PtBJ~Xxy+G+4&!~radUJ*OI};V13R1ct2%Pcip;hyHiP}TBlwY z(!X^`-h*;)u-)6wX8$i~W)Dl;GEX8onpgB6>?fsowd(c=+P*%|m2|IYqoy*reR%#h zX}fvNYFD&-693PY(57hj(zeXhkAx3}-<|Y|Ixg8UPcJ!e;`sNIRO6Th2OvFwR8_Sc z+pxT_qgikqg!U?&ZpDUenxXAD<+=@ZPSK=pp(O=E=~FEw;ZCG^IB#C^m;E?0Tu-y| z`V{P}-=SG6X4M2oQAb!aLx*RVTxP~~Q!nY3SM9};dE0V5tQnRsC)pNsl;Ct$rzxNE zxWZ!klQ26hr=+dtH}YoaO}IJD%NNz^aX%IzlI`dgksS<6CQ8A^CCwwU>zIZ|I&`aC z(y`|0M6g|=xEn60Hg|`%$d-fcJc+;^mGd6yq`K0WGS=aUg?Wfl6_m(K zOCmEFS!0?oGZl}Bpc{$SgrP%06be)YAyK+ax=0d%1sR@>G5vo+BCc&d1Z9YlFKT!N zrYx0B=v8Z<#6Wl*X;es(V0KMOIL6@IUXtiQ!WW2aSV&(dyzxDUGr;`vT)JqN^t6Ty zFP+_3unXQJ4eROIYAAnFnElOJhk%ZQhN<45N(U@q|1f2u^NR8W-gL#`C zYPgveMib+SdgRL8_z(Cm=+%Sq=EZ~Y?Q~iwkhsn6Y~OpI@B6-)?EA^Tj=jNol;HL5 z-uFkp`Hp?HkqZ9mD~D?g?`wG1ADV=CL{Pz+tj$_We#)c5*kiyt6jH)`%P0{c-w|O* zZjt(uhy<%!1xE}m6O0e5_?n2S_-%~GRNPW=A$YLn-RGFFRU)nuAVw7M2IGk!zVmZ# z&gq1EJ!@0wBZWRFFc^bzkxUbCIw45OE3_0+mGUXgHB?Od90jsP+SJ_^PVWsy#n>|g zW1Fa#)q0~x6bC!zPV1=EC$#3bzUF6-R>h=3477PvHqswt8XHgbYYs=j#*mbO>P6%BuA1TBMXfa=qA`2{Q|Z|ZA9&3===%t6I!|0 zGXZg}@&lunur_{Z5E5E9;VqkxP{R5CGz(aq5lM&OOspq|GyOrKBIZW)-aBW^`s&f$ z_dP 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: