[gmx-developers] test particle insertion into the slab

Erik Lindahl lindahl at cbr.su.se
Mon Dec 15 16:29:52 CET 2008


Hi,

I think it should be fairly straightforward; if you look at the  
interpolation code there are theta[] and dtheta[] arrays. theta is the  
potential and dtheta the derivative - normally we use dtheta for one  
of the components (x,y, or z), but if you do it with theta only I  
think you should get the potential (unless I'm missing some constant  
or sign...)

Cheers,

Erik


On Dec 15, 2008, at 3:55 PM, Berk Hess wrote:

> Hi,
>
> I see that this modification can be useful in certain cases.
> But we can not put in all options users ask for, since then the  
> total amount
> of mdp options would explode and the code would also become more bug  
> prone.
> If there are several people that would use this option, I can put it  
> in.
>
> I would like to have PME for test particle insertion,
> but currently there is no potential (only force) interpolation for  
> PME in Gromacs.
> If somebody (Erik?) can give me the formula for energy interpolation,
> I can put it in immediately.
>
> Berk
>
> robert.vacha at marge.uochb.cas.cz wrote:
>> Dear developers,
>>
>> I have found it useful to use the test particle insertion  
>> selectively into
>> the slab in z-coordinate (set z-min and z-max for insertion). It  
>> requires
>> only few modifications that are attached below (lines correspond to  
>> 4.0
>> release). Note that it is not be combined with cavity insertion.
>>
>> Btw do you plan to include PME into the test particle insertion in  
>> future?
>> and if so is it possible to estimate when? :)
>>
>> Thanks & best,
>> Robert
>>
>>
>> include/types/inputrec.h
>> 178: real tpizmin;         /* Z-min value for test particle  
>> insertion     */
>>     real tpizmax;         /* Z-max value for test particle  
>> insertion     */
>>
>> src/gmxlib/tpxio.c
>> 302:
>>    do_real(ir->tpizmin);
>>    do_real(ir->tpizmax);
>>
>> src/gmxlib/txtdump.c
>> 566:
>>    PR("tpizmin",ir->tpizmin);
>>    PR("tpizmax",ir->tpizmax);
>>
>> src/kernel/readir.c
>> 559: in void get_ir(
>>    CTYPE ("Insertion in slab from zmin to zmax, when 0 full box is  
>> used");
>>    RTYPE ("tpizmin",        ir->tpizmin,    0.0);
>>    RTYPE ("tpizmax",        ir->tpizmax,    0.0);
>>
>> 962:
>>  if (ir->tpizmin < 0.0) {
>>      fprintf(stderr,"ERROR: Minimum z coordinate for insertion must  
>> be
>> larger than zero\n");
>>      (*nerror)++;
>>  }
>>  if (ir->tpizmax < 0.0) {
>>      fprintf(stderr,"ERROR: Maximum z coordinate for insertion must  
>> be
>> larger than zero\n");
>>      (*nerror)++;
>>  }
>>  if (ir->tpizmax < ir->tpizmin ) {
>>      fprintf(stderr,"ERROR: Minimum z coordinate for insertion  
>> cannot be
>> larger than maximum\n");
>>      (*nerror)++;
>>  }
>>
>> src/mdlib/minimize.c
>>
>> 2493:
>> /*insertion in slab from zmin to zmax*/
>>  if (!bCavity) {
>>     double zmin=0,zmax=state->box[ZZ][ZZ];
>>     if (inputrec->tpizmin > 0) zmin = inputrec->tpizmin;
>>     if ((inputrec->tpizmax > 0)&& (inputrec->tpizmax < state- 
>> >box[ZZ][ZZ]))
>>          zmax = inputrec->tpizmax;
>>     if (zmin > zmax) gmx_fatal(FARGS,"Cannot insert from %f to
>> %f\n",zmin,zmax);
>>     else fprintf(stderr, "Insertion from zmin: %f to zmax:
>> %f\n",tpizmin,tpizmax);
>>  }
>>  /*slab modification end*/
>>
>> 2689:
>> /* Generate a random position in the box */
>>    /* slab modification*/
>>      if (inputrec->tpizmax > state->box[ZZ][ZZ])
>>          zmax = state->box[ZZ][ZZ];
>>      else zmax = inputrec->tpizmax;
>>      if (zmin > zmax) gmx_fatal(FARGS,"Cannot insert from %f to
>> %f\n",zmin,zmax);
>>
>>      x_init[ZZ] = zmin + gmx_rng_uniform_real(tpi_rand)*(zmax-zmin);
>>    /*end slab modification*/
>>      x_init[XX] = gmx_rng_uniform_real(tpi_rand)*state->box[XX][XX];
>>      x_init[YY] = gmx_rng_uniform_real(tpi_rand)*state->box[YY][YY];
>>   /*old-no slab   x_init[ZZ] =
>> gmx_rng_uniform_real(tpi_rand)*state->box[ZZ][ZZ];*/
>>
>>
>>
>> _______________________________________________
>> gmx-developers mailing list
>> gmx-developers at gromacs.org
>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>> Please don't post (un)subscribe requests to the list. Use the
>> www interface or send it to gmx-developers-request at gromacs.org.
>>
>>
>
> _______________________________________________
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://www.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the www  
> interface or send it to gmx-developers-request at gromacs.org.




More information about the gromacs.org_gmx-developers mailing list