def testNCoord(): rdfcut = 7.5 ld = __prepLD() ld.LammpsTraj = os.path.expanduser('~/benwat/data/gromacs/NB250NW250/NB250NW250_prod.lammpstrj.gz') ld.LDDelta = 1e-3 ld.LDCut = rdfcut ld.Prefix = 'NCoord' ld.genFileNames() ld.Normalize = True ; ld.makeRDF([1], [1]) r,g,e1,x1 = pickle.load(open(ld.rdfpickle, 'r')) ind = np.where(abs(r-rdfcut) < 0.1)[0][0] rho_bulk = (ld.NCentAtoms + ld.NNeighAtoms) / (np.mean(ld.BoxL)**3.) N_rdf = 4 * np.pi * rho_bulk * np.trapz(y = r[:ind+1]**2. * g[:ind+1], x = r[:ind+1]) ld.Normalize = True ; ld.makeLD(1,1) rho, h, e2, x2, y2 = pickle.load(open(ld.ldpickle, 'r')) N_ld = np.trapz(y = h * rho, x = rho) #N_ld = np.mean(np.mean(y2, axis = 0)) print '\n\n' print 'N_RDF = ', N_rdf print 'N_LD = ', N_ld ax = plt.subplot(1,2,1) ; ax.plot(r,g, label = r'$g(r)$') ; ax.legend() ax = plt.subplot(1,2,2) ; ax.plot(rho, h, label = r'$h(\rho)$') ; ax.legend() plt.show() os.remove(ld.rdfpickle) os.remove(ld.ldpickle)
def makeAllLD(LDCuts, LDDelta = 0.5): global Trj, BoxL, AtomNames, AtomTypes, NB, NW __prepHeadVars() LDPairs = {'BB': (1,1), 'BW' : (1,2), 'WB': (2,1), 'WW' : (2,2)} if not type(LDCuts) is dict: raise TypeError("LDCuts must be a dict of the form {'BB': <>, 'BW': <>, 'WB': <>, 'WW': <>}") if not NW: LDPairs.pop('BW'); LDPairs.pop('WW'); LDPairs.pop('WB') if not NB: LDPairs.pop('BW'); LDPairs.pop('BB'); LDPairs.pop('WB') sc.LammpsTraj = Traj sc.Nbins = 100 sc.TrjIter[2] = MeasureFreq sc.LDDelta = LDDelta sc.Normalize = Normalize sc.AtomNames2Types = AtomNames2Types sc.calcErrorBar = calcErrorBar sc.NBlocks = NBlocks for ext in LDPairs.keys(): sc.LDCut = LDCuts[ext] sc.Prefix = Prefix + '_%s' % ext sc.genFileNames() if __isComputed(sc.ldpickle): continue sc.makeLD(LDPairs[ext][0], LDPairs[ext][1])
def makeAllRDF(): global Trj, BoxL, AtomNames, AtomTypes, NB, NW __prepHeadVars() if isMappedTrj: rdfPairs = {'BB': ([1], [1]), 'BW': ([1], [2]), 'WW': ([2], [2])} else: rdfPairs = {'BB': (range(1,13), range(1,13)), 'BW': (range(1,13), [13]), 'WW': ([13], [13])} if not NW: rdfPairs.pop('BW'); rdfPairs.pop('WW') if not NB: rdfPairs.pop('BW'); rdfPairs.pop('BB') sc.LammpsTraj = Traj sc.Nbins = 100 sc.TrjIter[2] = MeasureFreq sc.Normalize = Normalize sc.AtomNames2Types = AtomNames2Types if not isMappedTrj: sc.AtomNames2Types = False #(hotfix for a vmd screwup) sc.calcErrorBar = calcErrorBar sc.NBlocks = NBlocks for ext in rdfPairs.keys(): print '\nCalculating rdf for %s\n\n' % ext sc.Prefix = Prefix + '_%s' % ext sc.genFileNames() if __isComputed(sc.rdfpickle): continue sc.makeRDF(CentAtomType = rdfPairs[ext][0], NeighAtomType = rdfPairs[ext][1])
def testInfCut(): ld = __prepLD() ld.LammpsTraj = os.path.expanduser('~/benwat/data/gromacs/NB250NW250/NB250NW250_prod.lammpstrj.gz') ld.LDDelta = 1.0 ld.LDCut = 1e3 ld.Normalize = True ld.Prefix = 'infCut' ld.genFileNames() for i, ldtype in enumerate([(1,1), (2,2), (1,2), (2,1)]): print ldtype ld.makeLD(ldtype[0], ldtype[1]) r,h,e,x,y = pickle.load(open(ld.ldpickle, 'r')) ax = plt.subplot(2,2,i+1) ax.plot(r,h, label = 'C: %d, N: %d' % (ldtype[0], ldtype[1])) ax.legend() os.remove(ld.ldpickle) plt.show()
#!/usr/bin/env python import os, sys, pickle import matplotlib.pyplot as plt # dependencies sys.path.append(os.path.expanduser('~/benwat')); import mysim import sim from selLDCut import structcorr as rdf rdf.Normalize = True rdf.MeasureFreq = 50 rdf.Normalize = True rdf.Nbins = 50 rdf.AtomNames2Types = True rdf.LammpsTraj = os.path.expanduser('~/benwat/data/gromacs/NB250test/NB250NW250_prod.lammpstrj.gz') rdf.Prefix = 'NB250_CG_BB' rdf.calcErrorBar = False rdf.genFileNames() rdf.makeRDF([1], [1]) r,g,e,a = pickle.load(open(rdf.rdfpickle, 'r')) plt.errorbar(r,g, yerr = e) plt.show()
#choices for LDCuts for NB250NW250 #BB: 1st shell = 7.66, quite good #WW: 1st shell = 3.5, 2nd shell = 5.75, 3rd shell = 8 #BW: 1st shell = 3.8, 2nd shell = 6.25, 3rd shell = 9 LDTypes = ['BB', 'WW', 'BW', 'WB'] LDCuts = dict(BB = 7.66 , WW = 3.5 , BW = 17, WB = 9) LDAtomTypes = dict(BB = (1,1), WW = (2,2), BW = (1,2), WB = (2,1)) ld.Normalize = True ld.MeasureFreq = 50 ld.Normalize = True ld.Nbins = 100 ld.AtomNames2Types = True ld.LammpsTraj = os.path.expanduser('~/benwat/data/gromacs/NB250NW250/NB250NW250_prod.lammpstrj.gz') ld.Prefix = 'NB250NW250_AA_%s' % LDType ld.calcErrorBar = False ld.LDCut = LDCuts[LDType] ld.LDDelta = 1.0 ld.genFileNames() ld.makeLD(LDAtomTypes[LDType][0], LDAtomTypes[LDType][1]) r,h,e,x,ld = pickle.load(open(ld.ldpickle, 'r')) plt.plot(r,h) plt.show()