void trotter_update(const t_inputrec *ir, int64_t step, gmx_ekindata_t *ekind,
const gmx_enerdata_t *enerd, t_state *state,
const tensor vir, const t_mdatoms *md,
- const t_extmass *MassQ, const int * const *trotter_seqlist, int trotter_seqno)
+ const t_extmass *MassQ, gmx::ArrayRef < std::vector < int>> trotter_seqlist,
+ int trotter_seqno)
{
int n, i, d, ngtc, gc = 0, t;
int64_t step_eff;
real dt;
double *scalefac, dtc;
- const int *trotter_seq;
rvec sumv = {0, 0, 0};
gmx_bool bCouple;
bCouple = (ir->nsttcouple == 1 ||
do_per_step(step_eff+ir->nsttcouple, ir->nsttcouple));
- trotter_seq = trotter_seqlist[trotter_seqno];
+ const gmx::ArrayRef<const int> trotter_seq = trotter_seqlist[trotter_seqno];
if ((trotter_seq[0] == etrtSKIPALL) || (!bCouple))
{
}
}
-int **init_npt_vars(const t_inputrec *ir, t_state *state, t_extmass *MassQ, gmx_bool bTrotter)
+std::array < std::vector < int>, ettTSEQMAX> init_npt_vars(const t_inputrec *ir, t_state *state,
+ t_extmass *MassQ, gmx_bool bTrotter)
{
int i, j, nnhpres, nh;
const t_grpopts *opts;
real bmass, qmass, reft, kT;
- int **trotter_seq;
opts = &(ir->opts); /* just for ease of referencing */
nnhpres = state->nnhpres;
init_npt_masses(ir, state, MassQ, TRUE);
/* first, initialize clear all the trotter calls */
- snew(trotter_seq, ettTSEQMAX);
+ std::array < std::vector < int>, ettTSEQMAX> trotter_seq;
for (i = 0; i < ettTSEQMAX; i++)
{
- snew(trotter_seq[i], NTROTTERPARTS);
- for (j = 0; j < NTROTTERPARTS; j++)
- {
- trotter_seq[i][j] = etrtNONE;
- }
+ trotter_seq[i].resize(NTROTTERPARTS, etrtNONE);
trotter_seq[i][0] = etrtSKIPALL;
}
#include "gromacs/math/paddedvector.h"
#include "gromacs/math/vectypes.h"
+#include "gromacs/mdtypes/md_enums.h"
#include "gromacs/timing/wallcycle.h"
#include "gromacs/utility/arrayref.h"
#include "gromacs/utility/basedefinitions.h"
double xi[], double vxi[], const t_extmass *MassQ);
void trotter_update(const t_inputrec *ir, int64_t step, gmx_ekindata_t *ekind,
- const gmx_enerdata_t *enerd, t_state *state, const tensor vir, const t_mdatoms *md,
- const t_extmass *MassQ, const int * const *trotter_seqlist, int trotter_seqno);
+ const gmx_enerdata_t *enerd, t_state *state, const tensor vir,
+ const t_mdatoms *md, const t_extmass *MassQ,
+ gmx::ArrayRef < std::vector < int>> trotter_seqlist, int trotter_seqno);
-int **init_npt_vars(const t_inputrec *ir, t_state *state, t_extmass *Mass, gmx_bool bTrotter);
+std::array < std::vector < int>, ettTSEQMAX> init_npt_vars(const t_inputrec *ir, t_state *state,
+ t_extmass *Mass, gmx_bool bTrotter);
real NPT_energy(const t_inputrec *ir, const t_state *state, const t_extmass *MassQ);
/* computes all the pressure/tempertature control energy terms to get a conserved energy */
real saved_conserved_quantity = 0;
real last_ekin = 0;
t_extmass MassQ;
- int **trotter_seq;
char sbuf[STEPSTRSIZE], sbuf2[STEPSTRSIZE];
/* PME load balancing data for GPU kernels */
/* need to make an initiation call to get the Trotter variables set, as well as other constants for non-trotter
temperature control */
- trotter_seq = init_npt_vars(ir, state, &MassQ, bTrotter);
+ auto trotter_seq = init_npt_vars(ir, state, &MassQ, bTrotter);
if (MASTER(cr))
{