modules/chempy/gms.py (65 lines of code) (raw):

#A* ------------------------------------------------------------------- #B* This file contains source code for the PyMOL computer program #C* copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific. #D* ------------------------------------------------------------------- #E* It is unlawful to modify or remove this copyright notice. #F* ------------------------------------------------------------------- #G* Please see the accompanying LICENSE file for further information. #H* ------------------------------------------------------------------- #I* Additional authors of this source file include: #-* #-* #-* #Z* ------------------------------------------------------------------- from chempy.models import Indexed from chempy import Storage,Atom,Bond # # THIS MODULE IS OBSOLETE PLEASE DO NOT USE # import string atNum = { 'H' : 1, 'C' : 6, 'N' : 7, 'O' : 8, 'F' : 9, 'P' : 15, 'S' : 16, 'Cl' : 17, 'Br' : 35, 'I' : 53, } class GMS(Storage): def toList(self,model,runtyp='OPTIMIZE',exetyp='RUN', gbasis='N31',ngauss=6,ndfunc=1,dirscf=1): gmsList = [] # write header records nzvar = (model.nAtom*3)-6 chg = 0 for a in model.atom: chg = chg + a.formal_charge chg = int(chg) if chg==0: icharg='' diffsp='' else: icharg='ICHARG=%d' % chg if chg<0: diffsp='DIFFSP=.TRUE.' else: diffsp='' gmsList.append( " $CONTRL RUNTYP=%s COORD=UNIQUE EXETYP=%s NZVAR=%d %s $END\n" % (runtyp,exetyp,nzvar,icharg)) if ndfunc>0: gmsList.append(" $BASIS GBASIS=%s NGAUSS=%d NDFUNC=%d %s $END\n" % (gbasis,ngauss,ndfunc,diffsp)) else: gmsList.append(" $BASIS GBASIS=%s NGAUSS=%d %s $END\n", (gbasis,ngauss,diffsp)) if dirscf: gmsList.append(" $SCF DIRSCF=.TRUE. $END\n") gmsList.append(" $DATA\n") gmsList.append(model.molecule.title+" 6-31G* optimization\n") gmsList.append("C1\n") # write atom records in an ordering compatible with internal # coordinate generation c = 1 for z in model.get_internal_tuples(): a = model.atom[z[0]] if not len(a.name): name = a.symbol + "%02d"%c else: name = a.name gmsList.append("%4s %5.2f %12.6f %12.6f %12.6f\n" % (name,atNum[a.symbol],a.coord[0], a.coord[1],a.coord[2])) c = c + 1 gmsList.append(" $END\n") gmsList.append(" $ZMAT DLC=.TRUE. AUTO=.TRUE. $END\n") if runtyp=='OPTIMIZE': gmsList.append(" $STATPT NPRT=-2 NPUN=-2 NSTEP=50 $END\n") gmsList.append(" $ELPOT IEPOT=1 WHERE=PDC $END\n") gmsList.append(" $PDC PTSEL=GEODESIC CONSTR=CHARGE $END\n") return(gmsList)