[gmx-developers] Verlet Algorithm

Elena della Valle elena.dv46 at yahoo.it
Tue Oct 4 14:53:35 CEST 2016


Hi to all,

I'm Elena della Valle, a Ph.D. student coming from la Sapienza 
University of Rome.

I'm writing because I have some questions about some modifications that 
I have done to the update of velocities and positions in the verlet 
algorithm. My aim is to implement the magnetic field in gromacs by 
introducing the therm of the larmor frequency to the velocities and 
positions. By literature I read that this has been done by the update of 
the verlet velocities and positions with the frequency larmor therm. 
These are  the equations in order to be more clear on what i wanted to do:

I did this by modifying in the update.c file in gromacs the 
update_do_vv_vel and update_do_vv_pos ad follows:

  if ((ptype[n] != eptVSite) && (ptype[n] != eptShell) && !nFreeze[gf][d])
             {
                 v[n][0] = mv1*(mv1*v[n][0] + 
0.5*(w_dt*mv2*f[n][0]))+0.5*accel[ga][0]*dt + 
w_dt*charge[n]*campoB*v[n][1]*mv1*mv1 + 
0.25*dt*invmass[n]*charge[n]*campoB*((w_dt*mv2*mv1*f[n][1]) + 
accel[ga][1]*dt -2*w_dt*charge[n]*campoB*mv1*mv1*v[n][0]);
                 v[n][1] = mv1*(mv1*v[n][1] + 
0.5*(w_dt*mv2*f[n][1]))+0.5*accel[ga][1]*dt + 
w_dt*charge[n]*campoB*v[n][0]*mv1*mv1 - 
0.25*dt*invmass[n]*charge[n]*campoB*((w_dt*mv2*mv1*f[n][0]) + 
accel[ga][0]*dt +2*w_dt*charge[n]*campoB*mv1*mv1*v[n][1]);
                 v[n][2] = mv1*(mv1*v[n][2] + 
0.5*(w_dt*mv2*f[n][2]))+0.5*accel[ga][2]*dt;



             //printf("frame %lf \n", mv1);
            // printf("frame %d: %lf\t%lf%lf\n", n, v[n][0], v[n][1], 
v[n][2]);
             }

in the do_update_vv_pos:

if ((ptype[n] != eptVSite) && (ptype[n] != eptShell) && !nFreeze[gf][d])
             {
                 xprime[n][0]   = mr1*(mr1*x[n][0]+mr2*dt*v[n][0]) + 
mr1*0.5*dt*(w_dt*mr2*f[n][0] + w_dt*charge[n]*campoB*v[n][1]*mr1);
                 xprime[n][1]   = mr1*(mr1*x[n][1]+mr2*dt*v[n][1]) + 
mr1*0.5*dt*(w_dt*mr2*f[n][1] - w_dt*charge[n]*campoB*v[n][0]*mr1);
                 xprime[n][2]   = mr1*(mr1*x[n][2]+mr2*dt*v[n][2]) + 
mr1*0.5*dt*(w_dt*mr2*f[n][2]);
             }


After that in the grompp file I modified the integrator in md-vv and I 
run the simulation and it seems to use the position and velocities 
modifications.

I want know if you think that this way is correct, if I implemented in 
the right way

And Also I would like to know if in the grompp file I have to modify 
other parameters (I use a beredensed coupling)

Thanks in advance
Sorry for bothering you
Best Regards
Elena della Valle

-- 
Elena della Valle
Ph.D. Student in Electronic Engineering

Department of Information Engineering, Electronics and Telecommunications
Sapienza, University of Rome
via Eudossiana, 18 00184 Rome

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20161004/1a75b400/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kglmpcgicedbgjpk.png
Type: image/png
Size: 58009 bytes
Desc: not available
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20161004/1a75b400/attachment-0001.png>


More information about the gromacs.org_gmx-developers mailing list