zero_history(&state->hist);
zero_ekinstate(&state->ekinstate);
init_energyhistory(&state->enerhist);
- init_df_history(&state->dfhist, nlambda, 0);
+ init_df_history(&state->dfhist,nlambda);
state->ddp_count = 0;
state->ddp_count_cg_gl = 0;
state->cg_gl = NULL;
}
}
-extern void init_df_history(df_history_t *dfhist, int nlambda, real wl_delta)
+void init_df_history(df_history_t *dfhist, int nlambda)
{
int i;
- dfhist->bEquil = 0;
dfhist->nlambda = nlambda;
- dfhist->wl_delta = wl_delta;
- snew(dfhist->sum_weights, dfhist->nlambda);
- snew(dfhist->sum_dg, dfhist->nlambda);
- snew(dfhist->sum_minvar, dfhist->nlambda);
- snew(dfhist->sum_variance, dfhist->nlambda);
- snew(dfhist->n_at_lam, dfhist->nlambda);
- snew(dfhist->wl_histo, dfhist->nlambda);
-
- /* allocate transition matrices here */
- snew(dfhist->Tij, dfhist->nlambda);
- snew(dfhist->Tij_empirical, dfhist->nlambda);
-
- for (i = 0; i < dfhist->nlambda; i++)
- {
- snew(dfhist->Tij[i], dfhist->nlambda);
- snew(dfhist->Tij_empirical[i], dfhist->nlambda);
- }
-
- snew(dfhist->accum_p, dfhist->nlambda);
- snew(dfhist->accum_m, dfhist->nlambda);
- snew(dfhist->accum_p2, dfhist->nlambda);
- snew(dfhist->accum_m2, dfhist->nlambda);
+ dfhist->bEquil = 0;
+ dfhist->wl_delta = 0;
- for (i = 0; i < dfhist->nlambda; i++)
+ if (nlambda > 0)
{
- snew((dfhist->accum_p)[i], dfhist->nlambda);
- snew((dfhist->accum_m)[i], dfhist->nlambda);
- snew((dfhist->accum_p2)[i], dfhist->nlambda);
- snew((dfhist->accum_m2)[i], dfhist->nlambda);
+ snew(dfhist->sum_weights, dfhist->nlambda);
+ snew(dfhist->sum_dg, dfhist->nlambda);
+ snew(dfhist->sum_minvar, dfhist->nlambda);
+ snew(dfhist->sum_variance, dfhist->nlambda);
+ snew(dfhist->n_at_lam, dfhist->nlambda);
+ snew(dfhist->wl_histo, dfhist->nlambda);
+
+ /* allocate transition matrices here */
+ snew(dfhist->Tij, dfhist->nlambda);
+ snew(dfhist->Tij_empirical, dfhist->nlambda);
+
+ /* allocate accumulators for various transition matrix
+ free energy methods here */
+ snew(dfhist->accum_p, dfhist->nlambda);
+ snew(dfhist->accum_m, dfhist->nlambda);
+ snew(dfhist->accum_p2, dfhist->nlambda);
+ snew(dfhist->accum_m2, dfhist->nlambda);
+
+ for (i = 0; i < dfhist->nlambda; i++)
+ {
+ snew(dfhist->Tij[i], dfhist->nlambda);
+ snew(dfhist->Tij_empirical[i], dfhist->nlambda);
+ snew((dfhist->accum_p)[i], dfhist->nlambda);
+ snew((dfhist->accum_m)[i], dfhist->nlambda);
+ snew((dfhist->accum_p2)[i], dfhist->nlambda);
+ snew((dfhist->accum_m2)[i], dfhist->nlambda);
+ }
}
}
{
int i, j;
- init_df_history(df_dest, df_source->nlambda, df_source->wl_delta);
+ /* Currently, there should not be any difference in nlambda between the two,
+ but this is included for completeness for potential later functionality */
df_dest->nlambda = df_source->nlambda;
df_dest->bEquil = df_source->bEquil;
+ df_dest->wl_delta = df_source->wl_delta;
+
for (i = 0; i < df_dest->nlambda; i++)
{
df_dest->sum_weights[i] = df_source->sum_weights[i];
df_dest->sum_variance[i] = df_source->sum_variance[i];
df_dest->n_at_lam[i] = df_source->n_at_lam[i];
df_dest->wl_histo[i] = df_source->wl_histo[i];
- df_dest->accum_p[i] = df_source->accum_p[i];
- df_dest->accum_m[i] = df_source->accum_m[i];
- df_dest->accum_p2[i] = df_source->accum_p2[i];
- df_dest->accum_m2[i] = df_source->accum_m2[i];
}
for (i = 0; i < df_dest->nlambda; i++)
{
for (j = 0; j < df_dest->nlambda; j++)
{
+ df_dest->accum_p[i][j] = df_source->accum_p[i][j];
+ df_dest->accum_m[i][j] = df_source->accum_m[i][j];
+ df_dest->accum_p2[i][j] = df_source->accum_p2[i][j];
+ df_dest->accum_m2[i][j] = df_source->accum_m2[i][j];
df_dest->Tij[i][j] = df_source->Tij[i][j];
df_dest->Tij_empirical[i][j] = df_source->Tij_empirical[i][j];
}
}
}
+
+void done_df_history(df_history_t *dfhist)
+{
+ int i;
+
+ if (dfhist->nlambda > 0)
+ {
+ sfree(dfhist->n_at_lam);
+ sfree(dfhist->wl_histo);
+ sfree(dfhist->sum_weights);
+ sfree(dfhist->sum_dg);
+ sfree(dfhist->sum_minvar);
+ sfree(dfhist->sum_variance);
+
+ for (i=0;i<dfhist->nlambda;i++)
+ {
+ sfree(dfhist->Tij[i]);
+ sfree(dfhist->Tij_empirical[i]);
+ sfree(dfhist->accum_p[i]);
+ sfree(dfhist->accum_m[i]);
+ sfree(dfhist->accum_p2[i]);
+ sfree(dfhist->accum_m2[i]);
+ }
+ }
+ dfhist->bEquil = 0;
+ dfhist->nlambda = 0;
+ dfhist->wl_delta = 0;
+}