[gmx-developers] ensemble distance restraints confusion

David van der Spoel spoel at xray.bmc.uu.se
Thu Jun 3 11:31:09 CEST 2010


I'm investigating http://bugzilla.gromacs.org/show_bug.cgi?id=408
where the problem is that when one has distance restraints and perfoms a 
replica exchange simulation, ones restraints are treated as ensemble 
restraints. The reason for this is the following code:

     if (cr->ms)
     {
         ptr = getenv("GMX_DISRE_ENSEMBLE_SIZE");
#ifdef GMX_MPI
         if (ptr == NULL)
         {
             dd->nsystems          = cr->ms->nsim;
             dd->mpi_comm_ensemble = cr->ms->mpi_comm_masters;
             if (fplog)
             {
                 fprintf(fplog,"Will apply ensemble averaging over %d 
systems\n",
                         dd->nsystems);
             }
         }

That is, the decision whether or not to do ensemble restraints is 
determined by an environment variable and the fact that we are using 
replica exchange. Later, the dd->nsystems is used like:

#ifdef GMX_MPI
     if (dd->nsystems > 1)
     {
         gmx_sum_comm(2*dd->nres,Rt_6,dd->mpi_comm_ensemble);
     }
#endif

Now the strange thing is that there is an mdp option for this, but that 
is not allowed (this code is from further up in disre.c):
     if (ir->eDisre == edrEnsemble)
     {
         gmx_fatal(FARGS,"Sorry, distance restraints with ensemble 
averaging over multiple molecules in one system are not functional in 
this version of GROMACS");
     }

So it seems there is hidden functionality for doing ensemble restraints, 
but it can be turned on by accident. I propose we should either enable 
it through the mdp file or not all.


-- 
David van der Spoel, Ph.D., Professor of Biology
Dept. of Cell & Molec. Biol., Uppsala University.
Box 596, 75124 Uppsala, Sweden. Phone:	+46184714205. Fax: +4618511755.
spoel at xray.bmc.uu.se	spoel at gromacs.org   http://folding.bmc.uu.se



More information about the gromacs.org_gmx-developers mailing list