[gmx-developers] test particle insertion into the slab

Berk Hess hessb at mpip-mainz.mpg.de
Mon Dec 15 15:55:39 CET 2008


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.
>
>   




More information about the gromacs.org_gmx-developers mailing list