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.
102 lines
3.3 KiB
102 lines
3.3 KiB
def orca(job,method,nproc,geom,charge,mult,scalfreq,temperature,pressure,nroots,tda,solvent,constraints,qmatoms,totalcharge,totalmult,qm2method,qm2basis,activeatoms,hessfile,disp,aim,product,ts,irciter, printlevel, inithess,grid, finalgrid,maxiter): |
|
if 'opt' in job or 'Opt' in job or 'OPT' in job and not 'ts' in job: |
|
method += ' opt' |
|
if 'freq' in job and ('XTB2' in method or 'XTB' in method): |
|
method += ' Numfreq' |
|
if 'irc' in job: |
|
method += ' IRC' |
|
if 'ts' in job and 'neb' not in job: |
|
method += ' OptTS' |
|
if 'neb-ts' in job: |
|
method += ' NEB-TS' |
|
if 'neb' in job and 'ts' not in job: |
|
method += ' NEB' |
|
if 'neb-ci' in job: |
|
method += ' NEB-CI' |
|
if 'freq' in job and ('XTB2' not in method and 'XTB' not in method and 'XTBFF' not in method): |
|
method += ' freq' |
|
if disp != 'None': |
|
method += ' {}'.format(disp) |
|
if aim == 'true' or aim == 'True' or aim == 'TRUE': |
|
method += ' AIM' |
|
if solvent != 'none' and ('XTB2' in method or 'XTB' in method or 'XTBFF' in method): |
|
method += ' ALPB({})'.format(solvent) |
|
if solvent != 'none' and ('XTB2' not in method and 'XTB' not in method and 'XTBFF' not in method): |
|
method += ' CPCM({})'.format(solvent) |
|
|
|
with open('cmmd.in','w') as f: |
|
print("#CMMDE generated Orca input file", file=f) |
|
print("!{}".format(method), file=f) |
|
print("""%pal |
|
nprocs {} |
|
end""".format(nproc),file=f) |
|
if 'opt' in job: |
|
print("""%geom |
|
maxiter {} |
|
end""".format(maxiter),file=f) |
|
if qmatoms != 'None': |
|
print("""%qmmm |
|
QMAtoms {{ {} }} end |
|
Charge_Total {} |
|
Mult_Total {}""".format(qmatoms,totalcharge,totalmult),file=f) |
|
if qm2method != 'None': |
|
print(""" QM2CUSTOMMETHOD "{}" |
|
QM2CUSTOMBASIS "{}" """.format(qm2method,qm2basis),file=f) |
|
if activeatoms != 'None': |
|
print("ActiveAtoms {} end".format(activeatoms)) |
|
print("end",file=f) |
|
if constraints != 'None': |
|
print("%geom", file=f) |
|
print("Constraints",file=f) |
|
for i in constraints.split(','): |
|
print("""{{ {} }}""".format(i),file=f) |
|
print("end",file=f) |
|
print("end",file=f) |
|
if hessfile != 'None': |
|
print("""%geom |
|
MaxIter {} |
|
InHess Read |
|
InHessName "{}" |
|
end""".format(maxiter,hessfile),file=f) |
|
# Baris koordinat atom |
|
print(""" |
|
*xyzfile {} {} {} |
|
""".format(charge,mult,geom) |
|
, file=f) |
|
if 'freq' in job: |
|
print("""%freq |
|
scalfreq {} |
|
Temp {} |
|
Pressure {} |
|
end""".format(scalfreq,temperature,pressure),file=f) |
|
if 'td' in job: |
|
print("""%tddft |
|
nroots {} |
|
tda {} |
|
end""".format(nroots,tda),file=f) |
|
if 'neb' in job: |
|
print("""%geom |
|
maxiter {} |
|
end""".format(maxiter),file=f) |
|
print("""%NEB |
|
neb_end_xyzfile "{}" """.format(product),file=f) |
|
if ts != 'None': |
|
print(""" neb_ts_xyzfile "{}" |
|
end""".format(ts),file=f) |
|
else: |
|
print("end",file=f) |
|
if 'irc' in job: |
|
print("""%irc |
|
MaxIter {} |
|
PrintLevel {} |
|
InitHess {} |
|
Hess_filename "{}" |
|
end |
|
|
|
%method |
|
Grid {} |
|
FinalGrid {} |
|
end |
|
""".format(irciter, printlevel, inithess, hessfile, grid, finalgrid),file=f) |
|
return |
|
|
|
|