#include "gromacs/math/vectypes.h"
#include "gromacs/mdtypes/md_enums.h"
+#include "gromacs/utility/enumerationhelpers.h"
#include "gromacs/utility/real.h"
class gmx_ekindata_t;
gmx::ArrayRef<const real> invMass,
const t_extmass* MassQ,
gmx::ArrayRef<std::vector<int>> trotter_seqlist,
- int trotter_seqno);
+ TrotterSequence trotter_seqno);
-std::array<std::vector<int>, ettTSEQMAX>
+gmx::EnumerationArray<TrotterSequence, std::vector<int>>
init_npt_vars(const t_inputrec* ir, t_state* state, t_extmass* Mass, bool bTrotter);
real NPT_energy(const t_inputrec* ir, const t_state* state, const t_extmass* MassQ);
gmx::ArrayRef<gmx::RVec> v);
/* Rescale the velocities with the scaling factor in ekind */
+/*!
+ * \brief Compute the new annealing temperature for a temperature group
+ *
+ * \param inputrec The input record
+ * \param temperatureGroup The temperature group
+ * \param time The current time
+ * \return The new reference temperature for the group
+ */
+real computeAnnealingTargetTemperature(const t_inputrec& inputrec, int temperatureGroup, real time);
+
//! Check whether we do simulated annealing.
bool doSimulatedAnnealing(const t_inputrec* ir);
* the default code path.
*
* \param[in] kk present value of the kinetic energy of the atoms to be thermalized (in
- * arbitrary units) \param[in] sigma target average value of the kinetic energy (ndeg k_b T/2) (in
- * the same units as kk) \param[in] ndeg number of degrees of freedom of the atoms to be
- * thermalized \param[in] taut relaxation time of the thermostat, in units of 'how often this
- * routine is called' \param[in] step the time step this routine is called on \param[in] seed the
- * random number generator seed \return the new kinetic energy
+ * arbitrary units)
+ * \param[in] sigma target average value of the kinetic energy (ndeg k_b T/2) (in
+ * the same units as kk)
+ * \param[in] ndeg number of degrees of freedom of the atoms to be thermalized
+ * \param[in] taut relaxation time of the thermostat, in units of 'how often this
+ * routine is called'
+ * \param[in] step the time step this routine is called on
+ * \param[in] seed the random number generator seed
+ * \return the new kinetic energy
*/
real vrescale_resamplekin(real kk, real sigma, real ndeg, real taut, int64_t step, int64_t seed);