simulation, and afterward use position restraints in conjunction
with constant pressure.
-accelerate group
-
- On each atom in an “accelerate group” an acceleration
- :math:`\mathbf{a}^g` is imposed. This is equivalent to
- an external force. This feature makes it possible to drive the
- system into a non-equilibrium state and enables the performance of
- non-equilibrium MD and hence to obtain transport properties.
- (Deprecated)
-
energy-monitor group
Mutual interactions between all energy-monitor groups are compiled
Removed functionality
^^^^^^^^^^^^^^^^^^^^^
+Removed constant-acceleration groups support
+""""""""""""""""""""""""""""""""""""""""""""
+This code has been broken since before GROMACS 4.6, so it has been
+removed.
+
+:issue:`1354`
+
.. Note to developers!
Please use """"""" to underline the individual entries for fixed issues in the subfolders,
otherwise the formatting on the webpage is messed up.
Non-equilibrium MD
^^^^^^^^^^^^^^^^^^
-.. mdp:: acc-grps
-
- groups for constant acceleration (*e.g.* ``Protein Sol``) all atoms
- in groups Protein and Sol will experience constant acceleration as
- specified in the :mdp:`accelerate` line. (Deprecated)
-
-.. mdp:: accelerate
-
- (0) [nm ps\ :sup:`-2`]
- acceleration for :mdp:`acc-grps`; x, y and z for each group
- (*e.g.* ``0.1 0.0 0.0 -0.1 0.0 0.0`` means that first group has
- constant acceleration of 0.1 nm ps\ :sup:`-2` in X direction, second group
- the opposite). (Deprecated)
-
.. mdp:: freezegrps
Groups that are to be frozen (*i.e.* their X, Y, and/or Z position
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
tpxv_StoreNonBondedInteractionExclusionGroup, /**< Store the non bonded interaction exclusion group in the topology */
tpxv_VSite1, /**< Added 1 type virtual site */
tpxv_MTS, /**< Added multiple time stepping */
- tpxv_Count /**< the total number of tpxv versions */
+ tpxv_RemovedConstantAcceleration, /**< Removed support for constant acceleration NEMD. */
+ tpxv_Count /**< the total number of tpxv versions */
};
/*! \brief Version number of the file format written to run input
{
ir->opts.nhchainlength = 1;
}
- serializer->doInt(&ir->opts.ngacc);
+ int removedOptsNgacc = 0;
+ if (serializer->reading() && file_version < tpxv_RemovedConstantAcceleration)
+ {
+ serializer->doInt(&removedOptsNgacc);
+ }
serializer->doInt(&ir->opts.ngfrz);
serializer->doInt(&ir->opts.ngener);
snew(ir->opts.anneal_temp, ir->opts.ngtc);
snew(ir->opts.tau_t, ir->opts.ngtc);
snew(ir->opts.nFreeze, ir->opts.ngfrz);
- snew(ir->opts.acc, ir->opts.ngacc);
snew(ir->opts.egp_flags, ir->opts.ngener * ir->opts.ngener);
}
if (ir->opts.ngtc > 0)
{
serializer->doIvecArray(ir->opts.nFreeze, ir->opts.ngfrz);
}
- if (ir->opts.ngacc > 0)
+ if (serializer->reading() && file_version < tpxv_RemovedConstantAcceleration && removedOptsNgacc > 0)
{
- serializer->doRvecArray(ir->opts.acc, ir->opts.ngacc);
+ std::vector<gmx::RVec> dummy;
+ dummy.resize(removedOptsNgacc);
+ serializer->doRvecArray(reinterpret_cast<rvec*>(dummy.data()), removedOptsNgacc);
+ ir->useConstantAcceleration = std::any_of(dummy.begin(), dummy.end(), [](const gmx::RVec& vec) {
+ return vec[XX] != 0.0 || vec[YY] != 0.0 || vec[ZZ] != 0.0;
+ });
+ }
+ else
+ {
+ ir->useConstantAcceleration = false;
}
serializer->doIntArray(ir->opts.egp_flags, ir->opts.ngener * ir->opts.ngener);
}
do_groups(serializer, &mtop->groups, &(mtop->symtab));
+ if (file_version < tpxv_RemovedConstantAcceleration)
+ {
+ mtop->groups.groups[SimulationAtomGroupType::AccelerationUnused].clear();
+ mtop->groups.groupNumbers[SimulationAtomGroupType::AccelerationUnused].clear();
+ }
mtop->haveMoleculeIndices = true;
"Then a coordinate file is read and velocities can be generated",
"from a Maxwellian distribution if requested.",
"[THISMODULE] also reads parameters for [gmx-mdrun] ",
- "(eg. number of MD steps, time step, cut-off), and others such as",
- "NEMD parameters, which are corrected so that the net acceleration",
- "is zero.",
+ "(eg. number of MD steps, time step, cut-off).",
"Eventually a binary file is produced that can serve as the sole input",
"file for the MD program.[PAR]",
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017, The GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
struct gmx_inputrec_strings
{
- char tcgrps[STRLEN], tau_t[STRLEN], ref_t[STRLEN], acc[STRLEN], accgrps[STRLEN], freeze[STRLEN],
- frdim[STRLEN], energy[STRLEN], user1[STRLEN], user2[STRLEN], vcm[STRLEN],
- x_compressed_groups[STRLEN], couple_moltype[STRLEN], orirefitgrp[STRLEN],
- egptable[STRLEN], egpexcl[STRLEN], wall_atomtype[STRLEN], wall_density[STRLEN],
- deform[STRLEN], QMMM[STRLEN], imd_grp[STRLEN];
+ char tcgrps[STRLEN], tau_t[STRLEN], ref_t[STRLEN], freeze[STRLEN], frdim[STRLEN],
+ energy[STRLEN], user1[STRLEN], user2[STRLEN], vcm[STRLEN], x_compressed_groups[STRLEN],
+ couple_moltype[STRLEN], orirefitgrp[STRLEN], egptable[STRLEN], egpexcl[STRLEN],
+ wall_atomtype[STRLEN], wall_density[STRLEN], deform[STRLEN], QMMM[STRLEN], imd_grp[STRLEN];
char fep_lambda[efptNR][STRLEN];
char lambda_weights[STRLEN];
std::vector<std::string> pullGroupNames;
}
}
-static void convertRvecs(warninp_t wi, gmx::ArrayRef<const std::string> inputs, const char* name, rvec* outputs)
-{
- int i = 0, d = 0;
- for (const auto& input : inputs)
- {
- try
- {
- outputs[i][d] = gmx::fromString<real>(input);
- }
- catch (gmx::GromacsException&)
- {
- auto message = gmx::formatString(
- "Invalid value for mdp option %s. %s should only consist of real numbers "
- "separated by spaces.",
- name,
- name);
- warning_error(wi, message);
- }
- ++d;
- if (d == DIM)
- {
- d = 0;
- ++i;
- }
- }
-}
-
static void do_wall_params(t_inputrec* ir, char* wall_atomtype, char* wall_density, t_gromppopts* opts, warninp_t wi)
{
opts->wall_atomtype[0] = nullptr;
/* Non-equilibrium MD stuff */
printStringNewline(&inp, "Non-equilibrium MD stuff");
- setStringEntry(&inp, "acc-grps", inputrecStrings->accgrps, nullptr);
- setStringEntry(&inp, "accelerate", inputrecStrings->acc, nullptr);
setStringEntry(&inp, "freezegrps", inputrecStrings->freeze, nullptr);
setStringEntry(&inp, "freezedim", inputrecStrings->frdim, nullptr);
ir->cos_accel = get_ereal(&inp, "cos-acceleration", 0, wi);
*defaultIndexGroups, gmx::arrayRefFromArray(gnames, defaultIndexGroups->nr));
notifier.preProcessingNotifications_.notify(defaultIndexGroupsAndNames);
- auto accelerations = gmx::splitString(inputrecStrings->acc);
- auto accelerationGroupNames = gmx::splitString(inputrecStrings->accgrps);
- if (accelerationGroupNames.size() * DIM != accelerations.size())
- {
- gmx_fatal(FARGS,
- "Invalid Acceleration input: %zu groups and %zu acc. values",
- accelerationGroupNames.size(),
- accelerations.size());
- }
- do_numbering(natoms,
- groups,
- accelerationGroupNames,
- defaultIndexGroups,
- gnames,
- SimulationAtomGroupType::Acceleration,
- restnm,
- egrptpALL_GENREST,
- bVerbose,
- wi);
- nr = groups->groups[SimulationAtomGroupType::Acceleration].size();
- snew(ir->opts.acc, nr);
- ir->opts.ngacc = nr;
-
- convertRvecs(wi, accelerations, "anneal-time", ir->opts.acc);
-
auto freezeDims = gmx::splitString(inputrecStrings->frdim);
auto freezeGroupNames = gmx::splitString(inputrecStrings->freeze);
if (freezeDims.size() != DIM * freezeGroupNames.size())
char err_buf[STRLEN];
int i, m, c, nmol;
- bool bCharge, bAcc;
- real * mgrp, mt;
- rvec acc;
+ bool bCharge;
gmx_mtop_atomloop_block_t aloopb;
ivec AbsRef;
char warn_buf[STRLEN];
"constant by hand.");
}
- bAcc = FALSE;
- for (int i = 0; (i < gmx::ssize(sys->groups.groups[SimulationAtomGroupType::Acceleration])); i++)
- {
- for (m = 0; (m < DIM); m++)
- {
- if (fabs(ir->opts.acc[i][m]) > 1e-6)
- {
- bAcc = TRUE;
- }
- }
- }
- if (bAcc)
- {
- clear_rvec(acc);
- snew(mgrp, sys->groups.groups[SimulationAtomGroupType::Acceleration].size());
- for (const AtomProxy atomP : AtomRange(*sys))
- {
- const t_atom& local = atomP.atom();
- int i = atomP.globalAtomNumber();
- mgrp[getGroupType(sys->groups, SimulationAtomGroupType::Acceleration, i)] += local.m;
- }
- mt = 0.0;
- for (i = 0; (i < gmx::ssize(sys->groups.groups[SimulationAtomGroupType::Acceleration])); i++)
- {
- for (m = 0; (m < DIM); m++)
- {
- acc[m] += ir->opts.acc[i][m] * mgrp[i];
- }
- mt += mgrp[i];
- }
- for (m = 0; (m < DIM); m++)
- {
- if (fabs(acc[m]) > 1e-6)
- {
- const char* dim[DIM] = { "X", "Y", "Z" };
- fprintf(stderr,
- "Net Acceleration in %s direction, will %s be corrected\n",
- dim[m],
- ir->nstcomm != 0 ? "" : "not");
- if (ir->nstcomm != 0 && m < ndof_com(ir))
- {
- acc[m] /= mt;
- for (i = 0;
- (i < gmx::ssize(sys->groups.groups[SimulationAtomGroupType::Acceleration]));
- i++)
- {
- ir->opts.acc[i][m] -= acc[m];
- }
- }
- }
- }
- sfree(mgrp);
- }
-
if (ir->efep != efepNO && ir->fepvals->sc_alpha != 0
&& !gmx_within_tol(sys->ffparams.reppow, 12.0, 10 * GMX_DOUBLE_EPS))
{
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
dh_hist_spacing = 0.1
; Non-equilibrium MD stuff
-acc-grps =
-accelerate =
freezegrps =
freezedim =
cos-acceleration = 0
void rescale_velocities(const gmx_ekindata_t* ekind, const t_mdatoms* mdatoms, int start, int end, rvec v[])
{
- unsigned short *cACC, *cTC;
- int ga, gt, n, d;
- real lg;
- rvec vrel;
-
- cTC = mdatoms->cTC;
-
+ const unsigned short* cTC = mdatoms->cTC;
gmx::ArrayRef<const t_grp_tcstat> tcstat = ekind->tcstat;
- if (ekind->bNEMD)
+ for (int n = start; n < end; n++)
{
- gmx::ArrayRef<const t_grp_acc> gstat = ekind->grpstat;
- cACC = mdatoms->cACC;
-
- ga = 0;
- gt = 0;
- for (n = start; n < end; n++)
+ int gt = 0;
+ if (cTC)
{
- if (cACC)
- {
- ga = cACC[n];
- }
- if (cTC)
- {
- gt = cTC[n];
- }
- /* Only scale the velocity component relative to the COM velocity */
- rvec_sub(v[n], gstat[ga].u, vrel);
- lg = tcstat[gt].lambda;
- for (d = 0; d < DIM; d++)
- {
- v[n][d] = gstat[ga].u[d] + lg * vrel[d];
- }
+ gt = cTC[n];
}
- }
- else
- {
- gt = 0;
- for (n = start; n < end; n++)
+ const real lg = tcstat[gt].lambda;
+ for (int d = 0; d < DIM; d++)
{
- if (cTC)
- {
- gt = cTC[n];
- }
- lg = tcstat[gt].lambda;
- for (d = 0; d < DIM; d++)
- {
- v[n][d] *= lg;
- }
+ v[n][d] *= lg;
}
}
}
}
sfree(grpnms);
- nU_ = groups->groups[SimulationAtomGroupType::Acceleration].size();
- snew(tmp_v_, nU_);
- if (nU_ > 1)
- {
- snew(grpnms, 3 * nU_);
- for (i = 0; (i < nU_); i++)
- {
- ni = groups->groups[SimulationAtomGroupType::Acceleration][i];
- sprintf(buf, "Ux-%s", *(groups->groupNames[ni]));
- grpnms[3 * i + XX] = gmx_strdup(buf);
- sprintf(buf, "Uy-%s", *(groups->groupNames[ni]));
- grpnms[3 * i + YY] = gmx_strdup(buf);
- sprintf(buf, "Uz-%s", *(groups->groupNames[ni]));
- grpnms[3 * i + ZZ] = gmx_strdup(buf);
- }
- iu_ = get_ebin_space(ebin_, 3 * nU_, grpnms, unit_vel);
- for (i = 0; i < 3 * nU_; i++)
- {
- sfree(grpnms[i]);
- }
- sfree(grpnms);
- }
-
/* Note that fp_ene should be valid on the master rank and null otherwise */
if (fp_ene != nullptr && startingBehavior != StartingBehavior::RestartWithAppending)
{
}
}
- if (ekind && nU_ > 1)
- {
- for (int i = 0; (i < nU_); i++)
- {
- copy_rvec(ekind->grpstat[i].u, tmp_v_[i]);
- }
- add_ebin(ebin_, iu_, 3 * nU_, tmp_v_[0], bSum);
- }
-
ebin_increase_count(1, ebin_, bSum);
// BAR + thermodynamic integration values
pr_ebin(log, ebin_, itemp_, nTC_, 4, eprAVER, true);
fprintf(log, "\n");
}
- if (nU_ > 1)
- {
- fprintf(log, "%15s %12s %12s %12s\n", "Group", "Ux", "Uy", "Uz");
- for (int i = 0; (i < nU_); i++)
- {
- int ni = groups->groups[SimulationAtomGroupType::Acceleration][i];
- fprintf(log, "%15s", *groups->groupNames[ni]);
- pr_ebin(log, ebin_, iu_ + 3 * i, 3, 3, eprAVER, false);
- }
- fprintf(log, "\n");
- }
}
}
//! Index for scalling factor of MTTK
int itcb_ = 0;
- //! Number of acceleration groups
- int nU_ = 0;
- //! Index for group velocities
- int iu_ = 0;
-
//! Array to accumulate values during update
real* tmp_r_ = nullptr;
//! Array to accumulate values during update
gmx_bool bEkinAveVel)
{
int g;
- gmx::ArrayRef<t_grp_tcstat> tcstat = ekind->tcstat;
- gmx::ArrayRef<t_grp_acc> grpstat = ekind->grpstat;
+ gmx::ArrayRef<t_grp_tcstat> tcstat = ekind->tcstat;
/* three main: VV with AveVel, vv with AveEkin, leap with AveEkin. Leap with AveVel is also
an option, but not supported now.
bEkinAveVel: If TRUE, we sum into ekin, if FALSE, into ekinh.
*/
- /* group velocities are calculated in update_ekindata and
- * accumulated in acumulate_groups.
- * Now the partial global and groups ekin.
- */
+ // Now accumulate the partial global and groups ekin.
for (g = 0; (g < opts->ngtc); g++)
{
copy_mat(tcstat[g].ekinh, tcstat[g].ekinh_old);
// or memory allocation. It should not be able to throw, so for now
// we do not need a try/catch wrapper.
int start_t, end_t, n;
- int ga, gt;
- rvec v_corrt;
+ int gt;
real hm;
int d, m;
matrix* ekin_sum;
}
*dekindl_sum = 0.0;
- ga = 0;
gt = 0;
for (n = start_t; n < end_t; n++)
{
- if (md->cACC)
- {
- ga = md->cACC[n];
- }
if (md->cTC)
{
gt = md->cTC[n];
}
hm = 0.5 * md->massT[n];
- for (d = 0; (d < DIM); d++)
- {
- v_corrt[d] = v[n][d] - grpstat[ga].u[d];
- }
for (d = 0; (d < DIM); d++)
{
for (m = 0; (m < DIM); m++)
{
- /* if we're computing a full step velocity, v_corrt[d] has v(t). Otherwise, v(t+dt/2) */
- ekin_sum[gt][m][d] += hm * v_corrt[m] * v_corrt[d];
+ /* if we're computing a full step velocity, v[d] has v(t). Otherwise, v(t+dt/2) */
+ ekin_sum[gt][m][d] += hm * v[n][m] * v[n][d];
}
}
if (md->nMassPerturbed && md->bPerturbed[n])
{
- *dekindl_sum += 0.5 * (md->massB[n] - md->massA[n]) * iprod(v_corrt, v_corrt);
+ *dekindl_sum += 0.5 * (md->massB[n] - md->massA[n]) * iprod(v[n], v[n]);
}
}
}
if (bTemp)
{
- /* Non-equilibrium MD: this is parallellized, but only does communication
- * when there really is NEMD.
- */
-
- if (PAR(cr) && (ekind->bNEMD))
- {
- accumulate_u(cr, &(ir->opts), ekind);
- }
if (!bReadEkin)
{
calc_ke_part(x, v, box, &(ir->opts), mdatoms, ekind, nrnb, bEkinAveVel);
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2012,2013,2014,2015,2016 by the GROMACS development team.
- * Copyright (c) 2017,2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2017,2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
sfree(mdatoms_->ptype);
sfree(mdatoms_->cTC);
sfree(mdatoms_->cENER);
- sfree(mdatoms_->cACC);
sfree(mdatoms_->cFREEZE);
sfree(mdatoms_->cVCM);
sfree(mdatoms_->cORF);
/* We always copy cTC with domain decomposition */
}
srenew(md->cENER, md->nalloc);
- if (opts->ngacc > 1)
- {
- srenew(md->cACC, md->nalloc);
- }
if (opts->nFreeze
&& (opts->ngfrz > 1 || opts->nFreeze[0][XX] || opts->nFreeze[0][YY] || opts->nFreeze[0][ZZ]))
{
md->cTC[i] = groups.groupNumbers[SimulationAtomGroupType::TemperatureCoupling][ag];
}
md->cENER[i] = getGroupType(groups, SimulationAtomGroupType::EnergyOutput, ag);
- if (md->cACC)
- {
- md->cACC[i] = groups.groupNumbers[SimulationAtomGroupType::Acceleration][ag];
- }
if (md->cVCM)
{
md->cVCM[i] = groups.groupNumbers[SimulationAtomGroupType::MassCenterVelocityRemoval][ag];
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
mtop_.groups.groups[SimulationAtomGroupType::TemperatureCoupling][1] = 1;
mtop_.groups.groups[SimulationAtomGroupType::TemperatureCoupling][2] = 2;
- mtop_.groups.groups[SimulationAtomGroupType::Acceleration].resize(2);
- mtop_.groups.groups[SimulationAtomGroupType::Acceleration][0] = 0;
- mtop_.groups.groups[SimulationAtomGroupType::Acceleration][1] = 2;
-
// Nose-Hoover chains
inputrec_.bPrintNHChains = true;
inputrec_.opts.nhchainlength = 2;
// Kinetic energy and related data
ekindata_.tcstat.resize(mtop_.groups.groups[SimulationAtomGroupType::TemperatureCoupling].size());
- ekindata_.grpstat.resize(mtop_.groups.groups[SimulationAtomGroupType::Acceleration].size());
// This is needed so that the ebin space will be allocated
inputrec_.cos_accel = 1.0;
tcstat.T = (*testValue += 0.1);
tcstat.lambda = (*testValue += 0.1);
}
- for (auto& grpstat : ekindata_.grpstat)
- {
- grpstat.u[XX] = (*testValue += 0.1);
- grpstat.u[YY] = (*testValue += 0.1);
- grpstat.u[ZZ] = (*testValue += 0.1);
- }
+ // Removing constant acceleration removed a total increment of 0.6
+ // To avoid unnecessary changes in reference data, we keep the increment
+ (*testValue += 0.6);
// This conditional is to check whether the ebin was allocated.
// Otherwise it will print cosacc data into the first bin.
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
state_.box[ZZ][YY] = 0.0;
state_.box[ZZ][ZZ] = 10.0;
- kineticEnergyData_.bNEMD = false;
kineticEnergyData_.cosacc.cos_accel = 0.0;
kineticEnergyData_.nthreads = 1;
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">T-Lipid</String>
<String Name="Units">K</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">18.000000000000007</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">97</Int>
+ <Int Name="Number of Energy Terms">91</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
1.76000e+01 1.78000e+01 1.80000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">51</Int>
+ <Int Name="Length">45</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">LJ-14:Lipid-Lipid</String>
<String Name="Units">kJ/mol</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">51</Int>
+ <Int Name="Length">45</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">LJ-14:Lipid-Lipid</String>
<Real Name="Value">17.5</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">51</Int>
+ <Int Name="Number of Energy Terms">45</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
Water-Lipid 1.56000e+01 1.57000e+01 1.59000e+01 1.60000e+01
Lipid-Lipid 1.71000e+01 1.72000e+01 1.74000e+01 1.75000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">108</Int>
+ <Int Name="Length">102</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">T-Lipid</String>
<String Name="Units">K</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">108</Int>
+ <Int Name="Length">102</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">18.000000000000007</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">108</Int>
+ <Int Name="Number of Energy Terms">102</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
1.76000e+01 1.78000e+01 1.80000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">T-Lipid</String>
<String Name="Units">K</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">18.000000000000007</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">97</Int>
+ <Int Name="Number of Energy Terms">91</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
1.76000e+01 1.78000e+01 1.80000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
<ReferenceData>
- <Int Name="Number of Energy Terms">97</Int>
+ <Int Name="Number of Energy Terms">91</Int>
<String Name="log">Current ref_t for group Water: 0.0
Current ref_t for group Lipid: 0.0
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">T-Lipid</String>
<String Name="Units">K</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">10</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">18.000000000000007</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">100</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">28.900000000000162</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">35.400000000000254</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">35.600000000000257</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">35.700000000000259</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">35.80000000000026</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">35.900000000000261</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">36.000000000000263</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">36.100000000000264</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">200</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">46.300000000000409</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">52.800000000000502</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">53.000000000000504</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">53.100000000000506</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">53.200000000000507</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">53.300000000000509</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">53.40000000000051</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">53.500000000000512</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">300</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">63.700000000000657</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">70.200000000000301</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">70.40000000000029</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">70.500000000000284</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">70.600000000000279</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">70.700000000000273</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">70.800000000000267</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">70.900000000000261</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">400</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">81.099999999999682</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">87.599999999999312</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">87.799999999999301</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">87.899999999999295</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">87.999999999999289</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">88.099999999999284</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">88.199999999999278</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">88.299999999999272</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">500</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">98.499999999998693</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">104.99999999999832</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">105.19999999999831</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">105.29999999999831</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">105.3999999999983</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">105.49999999999829</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">105.59999999999829</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">105.69999999999828</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">600</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">115.8999999999977</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">122.39999999999733</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">122.59999999999732</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">122.69999999999732</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">122.79999999999731</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">122.89999999999731</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">122.9999999999973</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">123.09999999999729</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">700</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">133.29999999999671</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">139.79999999999634</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">139.99999999999633</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">140.09999999999633</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">140.19999999999632</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">140.29999999999632</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">140.39999999999631</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">140.49999999999631</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">800</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">150.69999999999573</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">157.19999999999536</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">157.39999999999534</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">157.49999999999534</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">157.59999999999533</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">157.69999999999533</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">157.79999999999532</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">157.89999999999532</Real>
- </EnergyTerm>
</Sequence>
</Frame>
<Frame>
<String Name="Step">900</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">168.09999999999474</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">174.59999999999437</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">174.79999999999436</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">174.89999999999435</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">174.99999999999434</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">175.09999999999434</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">175.19999999999433</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">175.29999999999433</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">97</Int>
+ <Int Name="Number of Energy Terms">91</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
9.59000e+01 9.61000e+01 9.63000e+01
- Group Ux Uy Uz
- Protein 9.65000e+01 9.66000e+01 9.67000e+01
- Lipid 9.68000e+01 9.69000e+01 9.70000e+01
-
</String>
</ReferenceData>
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">101</Int>
+ <Int Name="Length">95</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">Lamb-Lipid</String>
<String Name="Units"></String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">101</Int>
+ <Int Name="Length">95</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">Lamb-Lipid</String>
<Real Name="Value">18.100000000000009</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">101</Int>
+ <Int Name="Number of Energy Terms">95</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
1.76000e+01 1.78000e+01 1.80000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">104</Int>
+ <Int Name="Length">98</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">vXi-Lipid</String>
<String Name="Units">1/ps</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">104</Int>
+ <Int Name="Length">98</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">vXi-Lipid</String>
<Real Name="Value">26.400000000000126</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">104</Int>
+ <Int Name="Number of Energy Terms">98</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
1.76000e+01 1.78000e+01 1.80000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">108</Int>
+ <Int Name="Length">102</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">T-Lipid</String>
<String Name="Units">K</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">108</Int>
+ <Int Name="Length">102</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">18.000000000000007</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">108</Int>
+ <Int Name="Number of Energy Terms">102</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
1.76000e+01 1.78000e+01 1.80000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">108</Int>
+ <Int Name="Length">102</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">T-Lipid</String>
<String Name="Units">K</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">108</Int>
+ <Int Name="Length">102</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">18.000000000000007</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">108</Int>
+ <Int Name="Number of Energy Terms">102</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
1.76000e+01 1.78000e+01 1.80000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
<ReferenceData>
<File Name="EnergyFile">
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<String Name="Units">kJ/mol</String>
<String Name="Name">T-Lipid</String>
<String Name="Units">K</String>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <String Name="Units">nm/ps</String>
- </EnergyTerm>
</Sequence>
<Sequence Name="Frames">
<Int Name="Length">1</Int>
<String Name="Step">0</String>
<String Name="NumSteps">0</String>
<Sequence Name="EnergyTerms">
- <Int Name="Length">97</Int>
+ <Int Name="Length">91</Int>
<EnergyTerm>
<String Name="Name">LJ-14</String>
<Real Name="Value">11.499999999999995</Real>
<String Name="Name">T-Lipid</String>
<Real Name="Value">18.000000000000007</Real>
</EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Protein</String>
- <Real Name="Value">18.20000000000001</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Protein</String>
- <Real Name="Value">18.300000000000011</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Protein</String>
- <Real Name="Value">18.400000000000013</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Ux-Lipid</String>
- <Real Name="Value">18.500000000000014</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uy-Lipid</String>
- <Real Name="Value">18.600000000000016</Real>
- </EnergyTerm>
- <EnergyTerm>
- <String Name="Name">Uz-Lipid</String>
- <Real Name="Value">18.700000000000017</Real>
- </EnergyTerm>
</Sequence>
</Frame>
</Sequence>
</File>
- <Int Name="Number of Energy Terms">97</Int>
+ <Int Name="Number of Energy Terms">91</Int>
<String Name="log">Current ref_t for group Water: 25.7
Current ref_t for group Lipid: 25.8
T-Protein T-Water T-Lipid
1.76000e+01 1.78000e+01 1.80000e+01
- Group Ux Uy Uz
- Protein 1.82000e+01 1.83000e+01 1.84000e+01
- Lipid 1.85000e+01 1.86000e+01 1.87000e+01
-
</String>
</ReferenceData>
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "gromacs/utility/futil.h"
#include "gromacs/utility/smalloc.h"
-static void init_grpstat(const gmx_mtop_t* mtop, int ngacc, t_grp_acc gstat[])
-{
- if (ngacc > 0)
- {
- const SimulationGroups& groups = mtop->groups;
- for (const AtomProxy atomP : AtomRange(*mtop))
- {
- const t_atom& local = atomP.atom();
- int i = atomP.globalAtomNumber();
- int grp = getGroupType(groups, SimulationAtomGroupType::Acceleration, i);
- if ((grp < 0) && (grp >= ngacc))
- {
- gmx_incons("Input for acceleration groups wrong");
- }
- gstat[grp].nat++;
- /* This will not work for integrator BD */
- gstat[grp].mA += local.m;
- gstat[grp].mB += local.mB;
- }
- }
-}
-
-void init_ekindata(FILE gmx_unused* log,
- const gmx_mtop_t* mtop,
- const t_grpopts* opts,
- gmx_ekindata_t* ekind,
- real cos_accel)
+void init_ekindata(FILE gmx_unused* log, const t_grpopts* opts, gmx_ekindata_t* ekind, real cos_accel)
{
int i;
- /* bNEMD tells if we should remove remove the COM velocity
- * from the velocities during velocity scaling in T-coupling.
- * Turn this on when we have multiple acceleration groups
- * or one accelerated group.
- */
- ekind->bNEMD = (opts->ngacc > 1 || norm2(opts->acc[0]) > 0);
-
ekind->ngtc = opts->ngtc;
ekind->tcstat.resize(opts->ngtc);
/* Set Berendsen tcoupl lambda's to 1,
GMX_CATCH_ALL_AND_EXIT_WITH_FATAL_ERROR
}
- ekind->ngacc = opts->ngacc;
- ekind->grpstat.resize(opts->ngacc);
- init_grpstat(mtop, opts->ngacc, ekind->grpstat.data());
-
ekind->cosacc.cos_accel = cos_accel;
}
-void accumulate_u(const t_commrec* cr, const t_grpopts* opts, gmx_ekindata_t* ekind)
-{
- /* This routine will only be called when it's necessary */
- t_bin* rb;
- int g;
-
- rb = mk_bin();
-
- for (g = 0; (g < opts->ngacc); g++)
- {
- add_binr(rb, DIM, ekind->grpstat[g].u);
- }
- sum_bin(rb, cr);
-
- for (g = 0; (g < opts->ngacc); g++)
- {
- extract_binr(rb, DIM * g, DIM, ekind->grpstat[g].u);
- }
- destroy_bin(rb);
-}
-
-void update_ekindata(int start,
- int homenr,
- gmx_ekindata_t* ekind,
- const t_grpopts* opts,
- const rvec v[],
- const t_mdatoms* md,
- real lambda)
-{
- int d, g, n;
- real mv;
-
- /* calculate mean velocities at whole timestep */
- for (g = 0; (g < opts->ngtc); g++)
- {
- ekind->tcstat[g].T = 0;
- }
-
- if (ekind->bNEMD)
- {
- for (g = 0; (g < opts->ngacc); g++)
- {
- clear_rvec(ekind->grpstat[g].u);
- }
-
- g = 0;
- for (n = start; (n < start + homenr); n++)
- {
- if (md->cACC)
- {
- g = md->cACC[n];
- }
- for (d = 0; (d < DIM); d++)
- {
- mv = md->massT[n] * v[n][d];
- ekind->grpstat[g].u[d] += mv;
- }
- }
-
- for (g = 0; (g < opts->ngacc); g++)
- {
- for (d = 0; (d < DIM); d++)
- {
- ekind->grpstat[g].u[d] /=
- (1 - lambda) * ekind->grpstat[g].mA + lambda * ekind->grpstat[g].mB;
- }
- }
- }
-}
-
real sum_ekin(const t_grpopts* opts, gmx_ekindata_t* ekind, real* dekindlambda, gmx_bool bEkinAveVel, gmx_bool bScaleEkin)
{
int i, j, m, ngtc;
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013,2014,2015,2018,2019, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014,2015,2018,2019,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include <cstdio>
-#include "gromacs/math/vectypes.h"
#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/real.h"
struct gmx_ekindata_t;
-struct gmx_mtop_t;
struct t_commrec;
struct t_grpopts;
struct t_mdatoms;
-void init_ekindata(FILE* log, const gmx_mtop_t* mtop, const t_grpopts* opts, gmx_ekindata_t* ekind, real cos_accel);
+void init_ekindata(FILE* log, const t_grpopts* opts, gmx_ekindata_t* ekind, real cos_accel);
/* Allocate memory and set the grpnr array. */
void done_ekindata(gmx_ekindata_t* ekind);
/* Free the memory */
-void accumulate_u(const t_commrec* cr, const t_grpopts* opts, gmx_ekindata_t* ekind);
-
-/* Communicate subsystem - group velocities and subsystem ekin respectively
- * and sum them up. Return them in grps.
- */
-
real sum_ekin(const t_grpopts* opts, gmx_ekindata_t* ekind, real* dekindlambda, gmx_bool bEkinFullStep, gmx_bool bScaleEkin);
/* Sum the group ekins into total ekin and calc temp per group,
* return total temperature.
*/
-void update_ekindata(int start,
- int homenr,
- gmx_ekindata_t* ekind,
- const t_grpopts* opts,
- const rvec v[],
- const t_mdatoms* md,
- real lambda);
-/* Do the update of group velocities (if bNEMD) and
- * (partial) group ekin.
- */
-
#endif
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
enum class AccelerationType
{
none,
- group,
cosine
};
* \param[in] dt The time step.
* \param[in] dtPressureCouple Time step for pressure coupling, is 0 when no pressure
* coupling should be applied at this step.
- * \param[in] accel Acceleration per group.
* \param[in] md Atom properties.
* \param[in] ekind Kinetic energy data.
* \param[in] box The box dimensions.
bool doNoseHoover,
real dt,
real dtPressureCouple,
- const rvec* accel,
const t_mdatoms* md,
const gmx_ekindata_t* ekind,
const matrix box,
* Holian et al. Phys Rev E 52(3) : 2338, 1995
*/
- gmx::ArrayRef<const t_grp_tcstat> tcstat = ekind->tcstat;
- gmx::ArrayRef<const t_grp_acc> grpstat = ekind->grpstat;
- const unsigned short* cTC = md->cTC;
- const unsigned short* cACC = md->cACC;
+ gmx::ArrayRef<const t_grp_tcstat> tcstat = ekind->tcstat;
+ const unsigned short* cTC = md->cTC;
const rvec* gmx_restrict invMassPerDim = md->invMassPerDim;
/* Initialize group values, changed later when multiple groups are used */
- int ga = 0;
int gt = 0;
real omega_Z = 2 * static_cast<real>(M_PI) / box[ZZ][ZZ];
switch (accelerationType)
{
case AccelerationType::none: copy_rvec(v[n], vRel); break;
- case AccelerationType::group:
- if (cACC)
- {
- ga = cACC[n];
- }
- /* Avoid scaling the group velocity */
- rvec_sub(v[n], grpstat[ga].u, vRel);
- break;
case AccelerationType::cosine:
cosineZ = std::cos(x[n][ZZ] * omega_Z);
vCosine = cosineZ * ekind->cosacc.vcos;
switch (accelerationType)
{
case AccelerationType::none: break;
- case AccelerationType::group:
- /* Add back the mean velocity and apply acceleration */
- vNew += grpstat[ga].u[d] + accel[ga][d] * dt;
- break;
case AccelerationType::cosine:
if (d == XX)
{
rvec* gmx_restrict xprime,
rvec* gmx_restrict v,
const rvec* gmx_restrict f,
- const rvec* gmx_restrict accel,
const int etc,
const int epc,
const int nsttcouple,
real dtPressureCouple = (doParrinelloRahman ? nstpcouple * dt : 0);
- /* NEMD (also cosine) acceleration is applied in updateMDLeapFrogGeneral */
- bool doAcceleration = (ekind->bNEMD || ekind->cosacc.cos_accel != 0);
+ /* NEMD cosine acceleration is applied in updateMDLeapFrogGeneral */
+ bool doAcceleration = (ekind->cosacc.cos_accel != 0);
if (doNoseHoover || doPROffDiagonal || doAcceleration)
{
if (!doAcceleration)
{
updateMDLeapfrogGeneral<AccelerationType::none>(
- start, nrend, doNoseHoover, dt, dtPressureCouple, accel, md, ekind, box, x, xprime, v, f, nh_vxi, nsttcouple, stepM);
- }
- else if (ekind->bNEMD)
- {
- updateMDLeapfrogGeneral<AccelerationType::group>(
- start, nrend, doNoseHoover, dt, dtPressureCouple, accel, md, ekind, box, x, xprime, v, f, nh_vxi, nsttcouple, stepM);
+ start, nrend, doNoseHoover, dt, dtPressureCouple, md, ekind, box, x, xprime, v, f, nh_vxi, nsttcouple, stepM);
}
else
{
updateMDLeapfrogGeneral<AccelerationType::cosine>(
- start, nrend, doNoseHoover, dt, dtPressureCouple, accel, md, ekind, box, x, xprime, v, f, nh_vxi, nsttcouple, stepM);
+ start, nrend, doNoseHoover, dt, dtPressureCouple, md, ekind, box, x, xprime, v, f, nh_vxi, nsttcouple, stepM);
}
}
else
static void do_update_vv_vel(int start,
int nrend,
real dt,
- const rvec accel[],
const ivec nFreeze[],
const real invmass[],
const unsigned short ptype[],
const unsigned short cFREEZE[],
- const unsigned short cACC[],
rvec v[],
const rvec f[],
gmx_bool bExtended,
real veta,
real alpha)
{
- int gf = 0, ga = 0;
+ int gf = 0;
int n, d;
real g, mv1, mv2;
{
gf = cFREEZE[n];
}
- if (cACC)
- {
- ga = cACC[n];
- }
for (d = 0; d < DIM; d++)
{
if ((ptype[n] != eptVSite) && (ptype[n] != eptShell) && !nFreeze[gf][d])
{
- v[n][d] = mv1 * (mv1 * v[n][d] + 0.5 * (w_dt * mv2 * f[n][d])) + 0.5 * accel[ga][d] * dt;
+ v[n][d] = mv1 * (mv1 * v[n][d] + 0.5 * (w_dt * mv2 * f[n][d]));
}
else
{
int start,
int nrend,
real dt,
- const rvec accel[],
const ivec nFreeze[],
const real invmass[],
const unsigned short ptype[],
const unsigned short cFREEZE[],
- const unsigned short cACC[],
const unsigned short cTC[],
const rvec x[],
rvec xprime[],
int seed,
const int* gatindex)
{
- // cTC, cACC and cFREEZE can be nullptr any time, but various
+ // cTC and cFREEZE can be nullptr any time, but various
// instantiations do not make sense with particular pointer
// values.
if (updateType == SDUpdate::ForcesOnly)
if (updateType == SDUpdate::FrictionAndNoiseOnly)
{
GMX_ASSERT(f == nullptr, "SD update with only noise cannot handle forces");
- GMX_ASSERT(cACC == nullptr, "SD update with only noise cannot handle acceleration groups");
}
if (updateType == SDUpdate::Combined)
{
real inverseMass = invmass[n];
real invsqrtMass = std::sqrt(inverseMass);
- int freezeGroup = cFREEZE ? cFREEZE[n] : 0;
- int accelerationGroup = cACC ? cACC[n] : 0;
- int temperatureGroup = cTC ? cTC[n] : 0;
+ int freezeGroup = cFREEZE ? cFREEZE[n] : 0;
+ int temperatureGroup = cTC ? cTC[n] : 0;
for (int d = 0; d < DIM; d++)
{
{
if (updateType == SDUpdate::ForcesOnly)
{
- real vn = v[n][d] + (inverseMass * f[n][d] + accel[accelerationGroup][d]) * dt;
+ real vn = v[n][d] + inverseMass * f[n][d] * dt;
v[n][d] = vn;
// Simple position update.
xprime[n][d] = x[n][d] + v[n][d] * dt;
}
else
{
- real vn = v[n][d] + (inverseMass * f[n][d] + accel[accelerationGroup][d]) * dt;
+ real vn = v[n][d] + inverseMass * f[n][d] * dt;
v[n][d] = (vn * sd.sdc[temperatureGroup].em
+ invsqrtMass * sd.sdsig[temperatureGroup].V * dist(rng));
// Here we include half of the friction+noise
rvec* gmx_restrict xprime,
rvec* gmx_restrict v,
const rvec* gmx_restrict f,
- const rvec accel[],
const ivec nFreeze[],
const real invmass[],
const unsigned short ptype[],
const unsigned short cFREEZE[],
- const unsigned short cACC[],
const unsigned short cTC[],
int seed,
const t_commrec* cr,
{
// With constraints, the SD update is done in 2 parts
doSDUpdateGeneral<SDUpdate::ForcesOnly>(
- sd, start, nrend, dt, accel, nFreeze, invmass, ptype, cFREEZE, cACC, nullptr, x, xprime, v, f, step, seed, nullptr);
+ sd, start, nrend, dt, nFreeze, invmass, ptype, cFREEZE, nullptr, x, xprime, v, f, step, seed, nullptr);
}
else
{
start,
nrend,
dt,
- accel,
nFreeze,
invmass,
ptype,
cFREEZE,
- cACC,
cTC,
x,
xprime,
start_th,
end_th,
dt,
- inputRecord.opts.acc,
inputRecord.opts.nFreeze,
md->invmass,
md->ptype,
md->cFREEZE,
- nullptr,
md->cTC,
state->x.rvec_array(),
xp_.rvec_array(),
xp_rvec,
v_rvec,
f_rvec,
- inputRecord.opts.acc,
inputRecord.etc,
inputRecord.epc,
inputRecord.nsttcouple,
xp_rvec,
v_rvec,
f_rvec,
- inputRecord.opts.acc,
inputRecord.opts.nFreeze,
md->invmass,
md->ptype,
md->cFREEZE,
- md->cACC,
md->cTC,
inputRecord.ld_seed,
cr,
do_update_vv_vel(start_th,
end_th,
dt,
- inputRecord.opts.acc,
inputRecord.opts.nFreeze,
md->invmass,
md->ptype,
md->cFREEZE,
- md->cACC,
v_rvec,
f_rvec,
bExtended,
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011-2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2011-2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
GMX_RELEASE_ASSERT(inputrec != nullptr, "All ranks should have a valid inputrec now");
partialDeserializedTpr.reset(nullptr);
+ GMX_RELEASE_ASSERT(
+ !inputrec->useConstantAcceleration,
+ "Linear acceleration has been removed in GROMACS 2022, and was broken for many years "
+ "before that. Use GROMACS 4.5 or earlier if you need this feature.");
+
// Now the number of ranks is known to all ranks, and each knows
// the inputrec read by the master rank. The ranks can now all run
// the task-deciding functions and will agree on the result
/* Kinetic energy data */
gmx_ekindata_t ekind;
- init_ekindata(fplog, &mtop, &(inputrec->opts), &ekind, inputrec->cos_accel);
+ init_ekindata(fplog, &(inputrec->opts), &ekind, inputrec->cos_accel);
/* Set up interactive MD (IMD) */
auto imdSession = makeImdSession(inputrec.get(),
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2008, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
dt = ir->delta_t;
- /* Does NOT work with freeze or acceleration groups (yet) */
+ /* Does NOT work with freeze groups (yet) */
for (n = 0; n < end; n++)
{
w_dt = md->invmass[n] * dt;
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013,2014,2015,2018,2019, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014,2015,2018,2019,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
double vscale_nhc = 0;
};
-struct t_grp_acc
-{
- //! Number of atoms in this group
- int nat = 0;
- //! Mean velocities of home particles
- rvec u = { 0 };
- //! Previous mean velocities of home particles
- rvec uold = { 0 };
- //! Mass for topology A
- double mA = 0;
- //! Mass for topology B
- double mB = 0;
-};
-
struct t_cos_acc
{
//! The acceleration for the cosine profile
struct gmx_ekindata_t
{
- //! Whether non-equilibrium MD is active (ie. constant or cosine acceleration)
- gmx_bool bNEMD;
//! The number of T-coupling groups
int ngtc = 0;
//! For size of ekin_work
tensor** ekin_work = nullptr;
//! Work location for dekindl per thread
real** dekindl_work = nullptr;
- //! The number of acceleration groups
- int ngacc = 0;
- //! Acceleration data
- std::vector<t_grp_acc> grpstat;
//! overall kinetic energy
tensor ekin = { { 0 } };
//! overall 1/2 step kinetic energy
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2010, The GROMACS development team.
* Copyright (c) 2012,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
sfree(ir->opts.anneal_time);
sfree(ir->opts.anneal_temp);
sfree(ir->opts.tau_t);
- sfree(ir->opts.acc);
sfree(ir->opts.nFreeze);
sfree(ir->opts.egp_flags);
done_lambdas(ir->fepvals);
}
}
- pr_indent(out, indent);
- fprintf(out, "acc:\t");
- for (i = 0; (i < opts->ngacc); i++)
- {
- for (m = 0; (m < DIM); m++)
- {
- fprintf(out, " %10g", opts->acc[i][m]);
- }
- }
- fprintf(out, "\n");
-
pr_indent(out, indent);
fprintf(out, "nfreeze:");
for (i = 0; (i < opts->ngfrz); i++)
char buf1[256], buf2[256];
cmp_int(fp, "inputrec->grpopts.ngtc", -1, opt1->ngtc, opt2->ngtc);
- cmp_int(fp, "inputrec->grpopts.ngacc", -1, opt1->ngacc, opt2->ngacc);
cmp_int(fp, "inputrec->grpopts.ngfrz", -1, opt1->ngfrz, opt2->ngfrz);
cmp_int(fp, "inputrec->grpopts.ngener", -1, opt1->ngener, opt2->ngener);
for (i = 0; (i < std::min(opt1->ngtc, opt2->ngtc)); i++)
}
}
}
- for (i = 0; (i < std::min(opt1->ngacc, opt2->ngacc)); i++)
- {
- cmp_rvec(fp, "inputrec->grpopts.acc", i, opt1->acc[i], opt2->acc[i], ftol, abstol);
- }
for (i = 0; (i < std::min(opt1->ngfrz, opt2->ngfrz)); i++)
{
cmp_ivec(fp, "inputrec->grpopts.nFreeze", i, opt1->nFreeze[i], opt2->nFreeze[i]);
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
int ngtc;
//! Number of of Nose-Hoover chains per group
int nhchainlength;
- //! Number of Accelerate groups
- int ngacc;
//! Number of Freeze groups
int ngfrz;
//! Number of Energy groups
real** anneal_temp;
//! Tau coupling time
real* tau_t;
- //! Acceleration per group
- rvec* acc;
//! Whether the group will be frozen in each direction
ivec* nFreeze;
//! Exclusions/tables of energy group pairs
gmx_bool bAdress;
//! Whether twin-range scheme is active - always false if a valid .tpr was read
gmx_bool useTwinRange;
+ //! Whether we have constant acceleration - removed in GROMACS 2022
+ bool useConstantAcceleration;
//! KVT object that contains input parameters converted to the new style.
gmx::KeyValueTreeObject* params;
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2012,2013,2014,2015,2016 by the GROMACS development team.
- * Copyright (c) 2017,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2017,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
unsigned short* cTC;
//! Group index for energy matrix
unsigned short* cENER;
- //! Group index for acceleration
- unsigned short* cACC;
//! Group index for freezing
unsigned short* cFREEZE;
//! Group index for center of mass motion removal
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
"Pulling is not supported by the modular simulator.");
isInputCompatible =
isInputCompatible
- && conditionalAssert(inputrec->opts.ngacc == 1 && inputrec->opts.acc[0][XX] == 0.0
- && inputrec->opts.acc[0][YY] == 0.0
- && inputrec->opts.acc[0][ZZ] == 0.0 && inputrec->cos_accel == 0.0,
+ && conditionalAssert(inputrec->cos_accel == 0.0,
"Acceleration is not supported by the modular simulator.");
isInputCompatible =
isInputCompatible
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2013, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
{
for (auto group : keysOf(gcount))
{
+ if (group == SimulationAtomGroupType::AccelerationUnused)
+ {
+ continue;
+ }
gcount[group][getGroupType(groups, group, i)]++;
}
}
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
static gmx::EnumerationArray<SimulationAtomGroupType, const char*> c_simulationAtomGroupTypeShortNames = {
{ "T-Coupling",
"Energy Mon.",
- "Acceleration",
+ "Acc. not used",
"Freeze",
"User1",
"User2",
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2011,2014,2015,2016,2018, The GROMACS development team.
- * Copyright (c) 2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
{
TemperatureCoupling,
EnergyOutput,
- Acceleration,
+ AccelerationUnused,
Freeze,
User1,
User2,