Sure, worth trying. Mark
On Tue, Jun 25, 2013 at 10:07 AM, Broadbent, Richard <[email protected]> wrote: > For my system reducing shake-tol greatly improves the energy conservation > generally 1.0e-7 is the largest I would use. However if you want very good > energy conservation 1.0e-9 or lower might be needed. > > This effect might only be for my system but I think it might help here too > > Richard > > On 25/06/2013 08:45, "Mark Abraham" <[email protected]> wrote: > >>On Tue, Jun 25, 2013 at 1:34 AM, S. Alireza Bagherzadeh >><[email protected]> wrote: >>> Dear All, >>> >>> I have a box of 3073 tip4p water molecules. I do a 250ps nvt, then 250 >>>ps >>> npt and finally a 1 ns nve (production run). >>> >>> I used the opls forcefield and I copied the tip4p.itp to my working >>> directory (in order to be able to make changes). >>> >>> In one case I used the [ settles ] directive to constraint water >>>molecules. >>> .top file: >>> >>> ; Topology for 3087 TIPT4P waters >>> >>> #include >>> >>>"/global/software/gromacs/gromacs-4.5.5/share/gromacs/top/oplsaa.ff/force >>>field.itp" >>> ;SOL >>> ;----------------------------------------------- >>> ; water topology - liquid phase >>> #include "./tip4p.itp" >>> ;------------------------------------------------ >>> [ system ] >>> ; Name >>> A box of 216 tip4p for protocol testing >>> >>> [ molecules ] >>> ; Compound #mols >>> SOL 3073 >>> >>> >>> .itp file: >>> ; Note the strange order of atoms to make it faster in gromacs. >>> ; >>> [ moleculetype ] >>> ; molname nrexcl >>> SOL 2 >>> >>> [ atoms ] >>> ; id at type res nr residu name at name cg nr charge >>> 1 opls_113 1 SOL OW 1 0.0 >>> 2 opls_114 1 SOL HW1 1 0.52 >>> 3 opls_114 1 SOL HW2 1 0.52 >>> 4 opls_115 1 SOL MW 1 -1.04 >>> >>> #ifndef FLEXIBLE >>> [ settles ] >>> ; OW funct doh dhh >>> 1 1 0.09572 0.15139 >>> #else >>> [ bonds ] >>> ; i j funct length force.c. >>> 1 2 1 0.09572 502416.0 0.09572 502416.0 >>> 1 3 1 0.09572 502416.0 0.09572 502416.0 >>> >>> [ angles ] >>> ; i j k funct angle force.c. >>> 2 1 3 1 104.52 628.02 104.52 628.02 >>> #endif >>> >>> [ exclusions ] >>> 1 2 3 4 >>> 2 1 3 4 >>> 3 1 2 4 >>> 4 1 2 3 >>> >>> ; The position of the virtual site is computed as follows: >>> ; >>> ; O >>> ; >>> ; D >>> ; >>> ; H H >>> ; >>> ; const = distance (OD) / [ cos (angle(DOH)) * distance (OH) ] >>> ; 0.015 nm / [ cos (52.26 deg) * 0.09572 nm ] >>> >>> ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) >>> >>> [ virtual_sites3 ] >>> ; Vsite from funct a b >>> 4 1 2 3 1 0.128012065 0.128012065 >>> >>> .mdp file: >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; Run control >>> integrator = md ; Leap-frog algorithm >>> tinit = 0 ; starting time [ps] >>> dt = 0.001 ; time step [ps] >>> nsteps = 250000 ; number of steps >>> nstcomm = 100 ; frequency for center of mass >>>motion >>> removal [steps] >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; Output control >>> nstxout = 0 ; frequency to write coordinates to >>> output trajectory file [steps] >>> nstvout = 0 ; frequency to write velocities to >>> output trajectory file [steps] >>> nstfout = 0 ; frequency to write forces to >>>output >>> trajectory file [steps] >>> nstlog = 500 ; frequency to write energies to log >>> file [steps] >>> nstenergy = 500 ; frequency to write energies to >>>energy >>> file [steps] >>> nstxtcout = 000 ; frequency to write coordinates to >>>xtc >>> trajectory [steps] >>> xtc-precision = 1000 ; precision to write to xtc >>>trajectory >>> [real] >>> xtc_grps = SOL >>> energygrps = SOL >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; Neighborsearching and short-range nonbonded interactions >>> nstlist = 10 ; frequency to update the neighbor >>>list >>> [steps] >>> ns_type = grid ; (grid / simple) search for >>> neighboring list >>> pbc = xyz ; priodic boundary conditions (xyz >>>/ no >>> / xy) >>> rlist = 1.7 ; cut-off distance for the >>>short-range >>> neighbor list [nm] >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; Electrostatics >>> coulombtype = PME-Switch >>> rcoulomb_switch = 1.3 ; where to switch the Coulomb >>>potential >>> [nm] >>> rcoulomb = 1.5 ; distance for the Coulomb cut-off >>>[nm] >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; van der Waals >>> vdw-type = shift ; (the LJ normal out at rvdw_switch >>>to >>> reach zero at rvdw) >>> rvdw-switch = 1.3 ; where to strat switching the LJ >>> potential [nm] >>> rvdw = 1.5 ; cut-off distance for vdw potenrial >>> [nm] >>> DispCorr = EnerPres ; (Apply long range dispersion >>> corrections for Energy and Pressure) >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; EWALD/PME/PPPM parameters >>> fourierspacing = 0.12 ; maximum grid spacing for the FFT >>>when >>> using PPPM or PME [nm] >>> pme_order = 6 ; interpolation order for PME >>> ewald_rtol = 1e-06 ; relative strength of the >>> Ewald-shifted direct potential at rcoulomb >>> epsilon_surface = 0 ; dipole correction to the Ewald >>> summation in 3d >>> optimize_fft = no ; optimal FFT plan for the grid at >>> startup (yes / no) >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; Temperature coupling >>> tcoupl = no >>> ;tcoupl = nose-hoover >>> nh-chain-length = 1 >>> tc_grps = system >>> tau_t = 0.2 ; time constatn for coupling [ps], 1 >>> for each group >>> ref_t = 300 ; refernce temperature [K], 1 for >>>each >>> group >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; Pressure coupling >>> Pcoupl = no >>> ;Pcoupl = Parrinello-Rahman >>> tau_p = 0.5 ; time constant for coupling >>> compressibility = 4.5e-05 >>> ref_p = 1.0 ; reference pressure for coupling >>>[bar] >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; Velocity generation >>> gen_vel = no ; generating velocities according to >>> maxwell distribution? >>> gen_temp = 300 ; [K] >>> gen_seed = -1 ; initialize random generator based >>>on >>> the process ID number [integer] >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> ; Bonds >>> constraints = all-angles >>> constraint-algorithm = shake >>> continuation = no ; DO apply constraints to the start >>> configuration >>> shake-tol = 1e-5 >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>>;------------------------------------------------------------------------ >>>-----------------------------; >>> >>> This case I obtain a very good energy conservation. >>> >>> However, in another case where I change settles to 3 normal constraints, >>> there is a rather substantial energy drift (~2% per nano second) and >>>also >>> the T does not remain constant and it decreases (~8 K per ns). >> >>Hmm, that doesn't sound good. Guessing wildly, SHAKE and the v-site >>are not properly implemented? >> >>> .itp file: >>> ; Note the strange order of atoms to make it faster in gromacs. >>> ; >>> [ moleculetype ] >>> ; molname nrexcl >>> SOL 2 >>> >>> [ atoms ] >>> ; id at type res nr residu name at name cg nr charge >>> 1 opls_113 1 SOL OW 1 0.0 >>> 2 opls_114 1 SOL HW1 1 0.52 >>> 3 opls_114 1 SOL HW2 1 0.52 >>> 4 opls_115 1 SOL MW 1 -1.04 >>> >>> #ifndef FLEXIBLE >>> [ constraints ] >>> ; ai aj funct b0 >>> 1 2 1 0.09572 >>> 1 3 1 0.09572 >>> 2 3 1 0.15139 >>> >>> #else >>> [ bonds ] >>> ; i j funct length force.c. >>> 1 2 1 0.09572 502416.0 0.09572 502416.0 >>> 1 3 1 0.09572 502416.0 0.09572 502416.0 >>> >>> [ angles ] >>> ; i j k funct angle force.c. >>> 2 1 3 1 104.52 628.02 104.52 628.02 >>> #endif >>> >>> [ exclusions ] >>> 1 2 3 4 >>> 2 1 3 4 >>> 3 1 2 4 >>> 4 1 2 3 >>> >>> ; The position of the virtual site is computed as follows: >>> ; >>> ; O >>> ; >>> ; D >>> ; >>> ; H H >>> ; >>> ; const = distance (OD) / [ cos (angle(DOH)) * distance (OH) ] >>> ; 0.015 nm / [ cos (52.26 deg) * 0.09572 nm ] >>> >>> ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) >>> >>> [ virtual_sites3 ] >>> ; Vsite from funct a b >>> 4 1 2 3 1 0.128012065 0.128012065 >>> >>> >>> The .mdp and .top files are the same. >>> >>> >>> I was wondering if there is any difference between [settles] and 3 >>>normal [ >>> constraints]? >> >>I believe not, but Berk's probably the only expert on the >>implementation, here... >> >>> * I am asking this question because in my real simulation, the above is >>>a >>> simplified version where I can check for energy conservation, I need to >>>use >>> water in two different molecule types and if I use [ settles ] for both >>>of >>> them I get this error: >>> >>> Fatal error: >>> The [molecules] section of your topology specifies more than one block >>>of >>> a [moleculetype] with a [settles] block. Only one such is allowed. If >>>you >>> are trying to partition your solvent into different *groups* (e.g. for >>> freezing, T-coupling, etc.) then you are using the wrong approach. Index >>> files specify groups. Otherwise, you may wish to change the least-used >>> block of molecules with SETTLE constraints into 3 normal constraints. >>> >>> >>> I appreciate being advised on what I might be doing wrong. >> >>I can't see anything wrong. I would suggest trying LINCS, which is >>more likely to be better tested with v-sites. Please report back, >>either way! :-) >> >>Mark >>-- >>gmx-users mailing list [email protected] >>http://lists.gromacs.org/mailman/listinfo/gmx-users >>* Please search the archive at >>http://www.gromacs.org/Support/Mailing_Lists/Search before posting! >>* Please don't post (un)subscribe requests to the list. Use the >>www interface or send it to [email protected]. >>* Can't post? Read http://www.gromacs.org/Support/Mailing_Lists > > -- > gmx-users mailing list [email protected] > http://lists.gromacs.org/mailman/listinfo/gmx-users > * Please search the archive at > http://www.gromacs.org/Support/Mailing_Lists/Search before posting! > * Please don't post (un)subscribe requests to the list. Use the > www interface or send it to [email protected]. > * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists -- gmx-users mailing list [email protected] http://lists.gromacs.org/mailman/listinfo/gmx-users * Please search the archive at http://www.gromacs.org/Support/Mailing_Lists/Search before posting! * Please don't post (un)subscribe requests to the list. Use the www interface or send it to [email protected]. * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists

