[gmx-developers] test particle insertion into the slab

robert.vacha at marge.uochb.cas.cz robert.vacha at marge.uochb.cas.cz
Tue Dec 16 09:07:55 CET 2008


OK, I understand. If someone wants its here...

Robert
ps: the last change should have little bit different conditions:
/* Generate a random position in the box */
     /* slab modification*/
        if ((inputrec->tpizmax < state->box[ZZ][ZZ])&&(inputrec->tpizmax >0))
            zmax = inputrec->tpizmax;
        else zmax = state->box[ZZ][ZZ];
        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];*/


> 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