[gmx-users] truncated LJ potential

Makoto Yoneya makoto-yoneya at aist.go.jp
Thu Jan 27 02:11:25 CET 2011


Dear Berk and all:

I'd tried to rewrite the routine 

> > > src/gmxlib/nonbonded/nb_generic.c

to modify the LJ potential to the shifted and truncated one.

First, I'd add the new switch(ivdw) as case 4, but when I'd tried;
[ defaults ]
; nbfunc comb-rule   gen-pairs   fudgeLJ  fudgeQQ
  4      1     no    1.0   1.0,
I'd got,
ERROR 1 [file topol.top, line 8]:
  Invalid nonbond function selector '4' using LJ.

Then, I'd rewrite the standard switch(ivdw) case 1 as follows
(with real tc12c5 and int factor).

#ifdef TRUNCATED_LJ
	tc12c6 = 2.0*c12/c6;
	factor = ceil(floor(tc12c6*rinvsix)/(tc12c6*rinvsix));
	fscal += factor*(12.0*Vvdw_rep-6.0*Vvdw_disp)*rinvsq;
	Vvdwtot = Vvdwtot+factor*(Vvdw_rep-Vvdw_disp+0.5*c6/tc12c6);
#else
	fscal += (12.0*Vvdw_rep-6.0*Vvdw_disp)*rinvsq;
	Vvdwtot = Vvdwtot+Vvdw_rep-Vvdw_disp;
#endif

However with this modification (recompile with #define TRUNCATED_LJ), 
the simulation result was exactly the same.

I'd appreciate to tell me what kind of mistake I'd done?

Makoto Yoneya, Dr.
AIST
http://staff.aist.go.jp/makoto-yoneya/

> Yes.
>
> The pow function is expensive though. The code will run much faster
>if you can use rinvsix, such as check for  2*rinvsix > c6/c12.
> (I forgot the factor 2 in my previous mail).
>
> Berk
>
> From: makoto-yoneya at aist.go.jp
> To: gmx-users at gromacs.org
> Date: Tue, 11 Jan 2011 10:10:56 +0900
> Subject: [gmx-users] truncated LJ potential
> 
> Dear Berk:
> 
> Thanks again for the further reply.
> 
> >> The LJ potential and force code in the above looks like in the c6-c12
> form
> >> not in epsilon-sigma one.
> >> The LJ potential modification I'd like to try is based on the epsilon-
> >> sigma form and the mixing rule is the Lorents-Bertelot's one.
> >> Could you kindly tell me the LJ potential and force routine in the
> epsilon-
> >> Sigma form.
> >
> >There is no such code.
> >
> >You can simply check for rinvsix > c6/c12
> 
> Is it means that the LJ potential in epsion-sigma form (with the
> Lorents-Bertelot 
> mixing rule) is evaluated after the coversion into c6-c12 form in GROMACS?
> Then, may I evaluate the modified LJ potential:
> 
> > > V(r)
> > >    = 4*epsilon*{ (sigma/r)^(12) - (sigma/r)^6 + (1/4) } for r<=
> > > 2^(1/6)*sigma
> > >    = 0 for r>  2^(1/6)*sigma
> 
> with translated into the equivalent c6-c12 form:
> 
> V(r)
>    = (c12/r)^(12) - (c6/r)^6 + (c6/2)*(c6/2*c12) for r<= (2*c12/c6)^(1/6)
>    = 0 for r > (2*c12/c6)^(1/6)
> 
> in the following routines.
> > > You can also set the environment variable nb_generic.c and modify
> > > src/gmxlib/nonbonded/nb_generic.c, but might lead to somewhat
> > > slower simulations.
> 
> If my understanding in the above would correct, I'll try that.




More information about the gromacs.org_gmx-users mailing list