<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hello all,
<div class=""><br class="">
</div>
<div class="">What I’m trying to do is get the energy difference between neighboring expanded ensemble simulations, i.e U(lambda_trial, x) - U(lambda_current, x). As such, I am trying to better understand the de term used in expanded ensemble calculations (de
= weighted_lamee[lamtrial] - weighted_lamee[fep_state]). </div>
<div class=""><br class="">
</div>
<div class="">It is defined in forcerec.h as:</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">typedef struct {</div>
<div class=""> real term[F_NRE]; /* The energies for all different interaction types */</div>
<div class=""> gmx_grppairener_t grpp;</div>
<div class=""> double dvdl_lin[efptNR]; /* Contributions to dvdl with linear lam-dependence */</div>
<div class=""> double dvdl_nonlin[efptNR]; /* Idem, but non-linear dependence */</div>
<div class=""> int n_lambda;</div>
<div class=""> int fep_state; /*current fep state -- just for printing */</div>
<div class=""><font color="#ff2600" class=""> double *enerpart_lambda; /* Partial energy for lambda and flambda[] */</font></div>
<div class=""> real foreign_term[F_NRE]; /* alternate array for storing foreign lambda energies */</div>
<div class=""> gmx_grppairener_t foreign_grpp; /* alternate array for storing foreign lambda energies */</div>
<div class="">} gmx_enerdata_t;</div>
<div class="">/* The idea is that dvdl terms with linear lambda dependence will be added</div>
<div class=""> * automatically to enerpart_lambda. Terms with non-linear lambda dependence</div>
<div class=""> * should explicitly determine the energies at foreign lambda points</div>
<div class=""> * when n_lambda > 0.</div>
<div class=""> */</div>
<div class=""><br class="">
</div>
<div class="">I see that this term is used in the xvg output inside of mdebin.c and </div>
<div class=""><br class="">
</div>
<div class="">
<div class=""> /* BAR + thermodynamic integration values */</div>
<div class=""> if ((md->fp_dhdl || md->dhc) && bDoDHDL)</div>
<div class=""> {</div>
<div class=""> for (i = 0; i < enerd->n_lambda-1; i++)</div>
<div class=""> {</div>
<div class=""> /* zero for simulated tempering */</div>
<div class=""> md->dE[i] = enerd->enerpart_lambda[i+1]-enerd->enerpart_lambda[0];</div>
</div>
<div class="">……</div>
<div class=""><br class="">
</div>
<div class="">Also, in the replica exchange code (repl_ex.c) we find this term again;</div>
<div class=""><br class="">
</div>
<div class="">
<div class=""> if (re->type == ereLAMBDA || re->type == ereTL)</div>
<div class=""> {</div>
<div class=""> bDLambda = TRUE;</div>
<div class=""> /* lambda differences. */</div>
<div class=""> /* de[i][j] is the energy of the jth simulation in the ith Hamiltonian</div>
<div class=""> minus the energy of the jth simulation in the jth Hamiltonian */</div>
<div class=""> for (i = 0; i < re->nrepl; i++)</div>
<div class=""> {</div>
<div class=""> for (j = 0; j < re->nrepl; j++)</div>
<div class=""> {</div>
<div class=""> re->de[i][j] = 0;</div>
<div class=""> }</div>
<div class=""> }</div>
<div class=""> for (i = 0; i < re->nrepl; i++)</div>
<div class=""> {</div>
<div class=""> re->de[i][re->repl] = (enerd->enerpart_lambda[(int)re->q[ereLAMBDA][i]+1]-enerd->enerpart_lambda[0]);</div>
<div class=""> ……</div>
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">I’m trying to understand how this term is used in Thermodynamic integration (Pymbar for instance). Also, I’ve noticed that the enerd->enerpart_lambda[0] term is only updated every nstenergy step. Could anyone explain what the 0 term is and how
this enerpart_lambda[i]-enerpart_lambda[0] term would be used in TI? </div>
<div class=""><br class="">
</div>
<div class="">The bottom line is that I need the correct value for the energy difference between neighboring lambda simulations. Does the de term do that for me? </div>
<div class=""><br class="">
</div>
<div class="">If de is the correct term, is delta lambda part of the calculation? The reason I ask this question is from not understanding the output of debug information in force.c, specifically;</div>
<div class=""><br class="">
</div>
<div class="">
<div class=""> if (debug)</div>
<div class=""> {</div>
<div class=""> fprintf(debug, "enerdiff lam %g: (%15s), non-linear %f linear %f*%f\n",</div>
<div class=""> fepvals->all_lambda[j][i], efpt_names[j],</div>
<div class=""> (enerd->enerpart_lambda[i+1] - enerd->enerpart_lambda[0]),</div>
<div class=""> dlam, enerd->dvdl_lin[j]);</div>
<div class=""> }</div>
</div>
<div class=""><br class="">
</div>
<div class="">Does this mean that the energy difference is (enerd->enerpart_lambda[i+1] - enerd->enerpart_lambda[0]) + dlam*dvdl_lin[i]? I’m very confused.</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">Thanks,</div>
<div class=""><br class="">
</div>
<div class="">-ChrisM</div>
<div class=""><br class="">
</div>
<div class="">Mirabzadeh, Christopher <br class="">
Graduate Research Assistant/Physics Instructor<br class="">
Department of Physics<br class="">
University of Idaho<br class="">
Moscow, Id<br class="">
(509)339-5647<br class="">
<br class="">
<br class="">
</div>
<br class="">
</div>
</body>
</html>