#include "gromacs/simd/simd.h"
#include "gromacs/simd/simd_math.h"
#include "gromacs/simd/vector_operations.h"
+#include "gromacs/utility/arrayref.h"
#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/enumerationhelpers.h"
#include "gromacs/utility/fatalerror.h"
{
//! Type of CPU function to compute a bonded interaction.
-using BondedFunction = real (*)(int nbonds,
- const t_iatom iatoms[],
- const t_iparams iparams[],
- const rvec x[],
- rvec4 f[],
- rvec fshift[],
- const t_pbc* pbc,
- real lambda,
- real* dvdlambda,
- const t_mdatoms* md,
- t_fcdata* fcd,
- t_disresdata* disresdata,
- t_oriresdata* oriresdata,
- int* ddgatindex);
+using BondedFunction = real (*)(int nbonds,
+ const t_iatom iatoms[],
+ const t_iparams iparams[],
+ const rvec x[],
+ rvec4 f[],
+ rvec fshift[],
+ const t_pbc* pbc,
+ real lambda,
+ real* dvdlambda,
+ gmx::ArrayRef<const real> charge,
+ t_fcdata* fcd,
+ t_disresdata* disresdata,
+ t_oriresdata* oriresdata,
+ int* ddgatindex);
/*! \brief Mysterious CMAP coefficient matrix */
const int cmap_coeff_matrix[] = {
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
}
template<BondedKernelFlavor flavor>
-real polarize(int nbonds,
- const t_iatom forceatoms[],
- const t_iparams forceparams[],
- const rvec x[],
- rvec4 f[],
- rvec fshift[],
- const t_pbc* pbc,
- real lambda,
- real* dvdlambda,
- const t_mdatoms* md,
+real polarize(int nbonds,
+ const t_iatom forceatoms[],
+ const t_iparams forceparams[],
+ const rvec x[],
+ rvec4 f[],
+ rvec fshift[],
+ const t_pbc* pbc,
+ real lambda,
+ real* dvdlambda,
+ gmx::ArrayRef<const real> charge,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
type = forceatoms[i++];
ai = forceatoms[i++];
aj = forceatoms[i++];
- ksh = gmx::square(md->chargeA[aj]) * gmx::c_one4PiEps0 / forceparams[type].polarize.alpha;
+ ksh = gmx::square(charge[aj]) * gmx::c_one4PiEps0 / forceparams[type].polarize.alpha;
ki = pbc_rvec_sub(pbc, x[ai], x[aj], dx); /* 3 */
dr2 = iprod(dx, dx); /* 5 */
}
template<BondedKernelFlavor flavor>
-real anharm_polarize(int nbonds,
- const t_iatom forceatoms[],
- const t_iparams forceparams[],
- const rvec x[],
- rvec4 f[],
- rvec fshift[],
- const t_pbc* pbc,
- real lambda,
- real* dvdlambda,
- const t_mdatoms* md,
+real anharm_polarize(int nbonds,
+ const t_iatom forceatoms[],
+ const t_iparams forceparams[],
+ const rvec x[],
+ rvec4 f[],
+ rvec fshift[],
+ const t_pbc* pbc,
+ real lambda,
+ real* dvdlambda,
+ gmx::ArrayRef<const real> charge,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
type = forceatoms[i++];
ai = forceatoms[i++];
aj = forceatoms[i++];
- ksh = gmx::square(md->chargeA[aj]) * gmx::c_one4PiEps0 / forceparams[type].anharm_polarize.alpha; /* 7*/
+ ksh = gmx::square(charge[aj]) * gmx::c_one4PiEps0 / forceparams[type].anharm_polarize.alpha; /* 7*/
khyp = forceparams[type].anharm_polarize.khyp;
drcut = forceparams[type].anharm_polarize.drcut;
rvec gmx_unused fshift[],
const t_pbc gmx_unused* pbc,
real gmx_unused lambda,
- real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ real gmx_unused* dvdlambda,
+ gmx::ArrayRef<const real> charge,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
{
type0 = forceatoms[0];
aS = forceatoms[5];
- qS = md->chargeA[aS];
+ qS = charge[aS];
kk[XX] = gmx::square(qS) * gmx::c_one4PiEps0 / forceparams[type0].wpol.al_x;
kk[YY] = gmx::square(qS) * gmx::c_one4PiEps0 / forceparams[type0].wpol.al_y;
kk[ZZ] = gmx::square(qS) * gmx::c_one4PiEps0 / forceparams[type0].wpol.al_z;
rvec fshift[],
const t_pbc* pbc,
real gmx_unused lambda,
- real gmx_unused* dvdlambda,
- const t_mdatoms* md,
+ real gmx_unused* dvdlambda,
+ gmx::ArrayRef<const real> charge,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
da1 = forceatoms[i++];
a2 = forceatoms[i++];
da2 = forceatoms[i++];
- q1 = md->chargeA[da1];
- q2 = md->chargeA[da2];
+ q1 = charge[da1];
+ q2 = charge[da2];
a = forceparams[type].thole.a;
al1 = forceparams[type].thole.alpha1;
al2 = forceparams[type].thole.alpha2;
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc gmx_unused* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const struct t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
- const t_mdatoms gmx_unused* md,
+ gmx::ArrayRef<const real> /*charge*/,
t_fcdata gmx_unused* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
- t_fcdata* fcd,
+ gmx::ArrayRef<const real> /*charge*/,
+ t_fcdata* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
- t_fcdata* fcd,
+ gmx::ArrayRef<const real> /*charge*/,
+ t_fcdata* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
const t_pbc* pbc,
real lambda,
real* dvdlambda,
- const t_mdatoms gmx_unused* md,
- t_fcdata* fcd,
+ gmx::ArrayRef<const real> /*charge*/,
+ t_fcdata* fcd,
t_disresdata gmx_unused* disresdata,
t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
} // namespace
-real calculateSimpleBond(const int ftype,
- const int numForceatoms,
- const t_iatom forceatoms[],
- const t_iparams forceparams[],
- const rvec x[],
- rvec4 f[],
- rvec fshift[],
- const struct t_pbc* pbc,
- const real lambda,
- real* dvdlambda,
- const t_mdatoms* md,
- t_fcdata* fcd,
- t_disresdata* disresdata,
- t_oriresdata* oriresdata,
+real calculateSimpleBond(const int ftype,
+ const int numForceatoms,
+ const t_iatom forceatoms[],
+ const t_iparams forceparams[],
+ const rvec x[],
+ rvec4 f[],
+ rvec fshift[],
+ const struct t_pbc* pbc,
+ const real lambda,
+ real* dvdlambda,
+ gmx::ArrayRef<const real> charge,
+ t_fcdata* fcd,
+ t_disresdata* disresdata,
+ t_oriresdata* oriresdata,
int gmx_unused* global_atom_index,
const BondedKernelFlavor bondedKernelFlavor)
{
const BondedInteractions& bonded = c_bondedInteractionFunctionsPerFlavor[bondedKernelFlavor][ftype];
real v = bonded.function(
- numForceatoms, forceatoms, forceparams, x, f, fshift, pbc, lambda, dvdlambda, md, fcd, disresdata, oriresdata, global_atom_index);
+ numForceatoms, forceatoms, forceparams, x, f, fshift, pbc, lambda, dvdlambda, charge, fcd, disresdata, oriresdata, global_atom_index);
return v;
}