From 6a14a91d447dc50bfa4b0cbee1d85d2ce9000dbd Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Fri, 26 Mar 2021 12:08:14 +0000 Subject: [PATCH] Use ArrayRefs instead of mdatoms in gmx_nb_free_energy_kernel signature In addition to helping facilitate the coming mdatoms refactoring, this is needed to facilitate calling gmx_nb_free_energy_kernel from nblib without constructing mdatoms. --- .../gmxlib/nonbonded/nb_free_energy.cpp | 21 ++++++++++++------- src/gromacs/gmxlib/nonbonded/nb_free_energy.h | 6 ++++-- src/gromacs/mdlib/sim_util.cpp | 10 +++++++-- src/gromacs/nbnxm/kerneldispatch.cpp | 15 ++++++++++--- src/gromacs/nbnxm/nbnxm.h | 6 ++++-- 5 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp b/src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp index 5fb29200b8..86c17b7479 100644 --- a/src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp +++ b/src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp @@ -203,7 +203,10 @@ static void nb_free_energy_kernel(const t_nblist& nlist, gmx::ArrayRef coords, gmx::ForceWithShiftForces* forceWithShiftForces, const t_forcerec& fr, - const t_mdatoms& mdatoms, + gmx::ArrayRef chargeA, + gmx::ArrayRef chargeB, + gmx::ArrayRef typeA, + gmx::ArrayRef typeB, int flags, gmx::ArrayRef lambda, gmx::ArrayRef dvdl, @@ -239,10 +242,6 @@ static void nb_free_energy_kernel(const t_nblist& nlist, gmx::ArrayRef gid = nlist.gid; const real* shiftvec = fr.shift_vec[0]; - const real* chargeA = mdatoms.chargeA; - const real* chargeB = mdatoms.chargeB; - const int* typeA = mdatoms.typeA; - const int* typeB = mdatoms.typeB; const int ntype = fr.ntype; gmx::ArrayRef nbfp = fr.nbfp; gmx::ArrayRef nbfp_grid = fr.ljpme_c6grid; @@ -870,7 +869,10 @@ typedef void (*KernelFunction)(const t_nblist& nlist, gmx::ArrayRef coords, gmx::ForceWithShiftForces* forceWithShiftForces, const t_forcerec& fr, - const t_mdatoms& mdatoms, + gmx::ArrayRef chargeA, + gmx::ArrayRef chargeB, + gmx::ArrayRef typeA, + gmx::ArrayRef typeB, int flags, gmx::ArrayRef lambda, gmx::ArrayRef dvdl, @@ -995,7 +997,10 @@ void gmx_nb_free_energy_kernel(const t_nblist& nlist, gmx::ArrayRef coords, gmx::ForceWithShiftForces* ff, const t_forcerec& fr, - const t_mdatoms& mdatoms, + gmx::ArrayRef chargeA, + gmx::ArrayRef chargeB, + gmx::ArrayRef typeA, + gmx::ArrayRef typeB, int flags, gmx::ArrayRef lambda, gmx::ArrayRef dvdl, @@ -1036,5 +1041,5 @@ void gmx_nb_free_energy_kernel(const t_nblist& nlist, vdwModifierIsPotSwitch, useSimd, ic); - kernelFunc(nlist, coords, ff, fr, mdatoms, flags, lambda, dvdl, energygrp_elec, energygrp_vdw, nrnb); + kernelFunc(nlist, coords, ff, fr, chargeA, chargeB, typeA, typeB, flags, lambda, dvdl, energygrp_elec, energygrp_vdw, nrnb); } diff --git a/src/gromacs/gmxlib/nonbonded/nb_free_energy.h b/src/gromacs/gmxlib/nonbonded/nb_free_energy.h index 67920fc4ae..97e64eb0ff 100644 --- a/src/gromacs/gmxlib/nonbonded/nb_free_energy.h +++ b/src/gromacs/gmxlib/nonbonded/nb_free_energy.h @@ -42,7 +42,6 @@ #include "gromacs/utility/basedefinitions.h" struct t_forcerec; -struct t_mdatoms; struct t_nrnb; struct t_nblist; namespace gmx @@ -56,7 +55,10 @@ void gmx_nb_free_energy_kernel(const t_nblist& nlist, gmx::ArrayRef coords, gmx::ForceWithShiftForces* forceWithShiftForces, const t_forcerec& fr, - const t_mdatoms& mdatoms, + gmx::ArrayRef chargeA, + gmx::ArrayRef chargeB, + gmx::ArrayRef typeA, + gmx::ArrayRef typeB, int flags, gmx::ArrayRef lambda, gmx::ArrayRef dvdl, diff --git a/src/gromacs/mdlib/sim_util.cpp b/src/gromacs/mdlib/sim_util.cpp index abb68c4a76..bfe3500376 100644 --- a/src/gromacs/mdlib/sim_util.cpp +++ b/src/gromacs/mdlib/sim_util.cpp @@ -1759,7 +1759,10 @@ void do_force(FILE* fplog, *fr, x.unpaddedArrayRef(), &forceOutNonbonded->forceWithShiftForces(), - *mdatoms, + gmx::arrayRefFromArray(mdatoms->chargeA, mdatoms->nr), + gmx::arrayRefFromArray(mdatoms->chargeB, mdatoms->nr), + gmx::arrayRefFromArray(mdatoms->typeA, mdatoms->nr), + gmx::arrayRefFromArray(mdatoms->typeB, mdatoms->nr), inputrec.fepvals.get(), lambda, enerd, @@ -1772,7 +1775,10 @@ void do_force(FILE* fplog, *fr, x.unpaddedArrayRef(), &forceOutNonbonded->forceWithShiftForces(), - *mdatoms, + gmx::arrayRefFromArray(mdatoms->chargeA, mdatoms->nr), + gmx::arrayRefFromArray(mdatoms->chargeB, mdatoms->nr), + gmx::arrayRefFromArray(mdatoms->typeA, mdatoms->nr), + gmx::arrayRefFromArray(mdatoms->typeB, mdatoms->nr), inputrec.fepvals.get(), lambda, enerd, diff --git a/src/gromacs/nbnxm/kerneldispatch.cpp b/src/gromacs/nbnxm/kerneldispatch.cpp index e40f04f8bb..0bfa57b992 100644 --- a/src/gromacs/nbnxm/kerneldispatch.cpp +++ b/src/gromacs/nbnxm/kerneldispatch.cpp @@ -497,7 +497,10 @@ void nonbonded_verlet_t::dispatchFreeEnergyKernel(gmx::InteractionLocality const t_forcerec& fr, gmx::ArrayRef coords, gmx::ForceWithShiftForces* forceWithShiftForces, - const t_mdatoms& mdatoms, + gmx::ArrayRef chargeA, + gmx::ArrayRef chargeB, + gmx::ArrayRef typeA, + gmx::ArrayRef typeB, t_lambda* fepvals, gmx::ArrayRef lambda, gmx_enerdata_t* enerd, @@ -550,7 +553,10 @@ void nonbonded_verlet_t::dispatchFreeEnergyKernel(gmx::InteractionLocality coords, forceWithShiftForces, fr, - mdatoms, + chargeA, + chargeB, + typeA, + typeB, kernelFlags, kernelLambda, kernelDvdl, @@ -608,7 +614,10 @@ void nonbonded_verlet_t::dispatchFreeEnergyKernel(gmx::InteractionLocality coords, forceWithShiftForces, fr, - mdatoms, + chargeA, + chargeB, + typeA, + typeB, kernelFlags, kernelLambda, kernelDvdl, diff --git a/src/gromacs/nbnxm/nbnxm.h b/src/gromacs/nbnxm/nbnxm.h index 37f09824e7..bbfe22453d 100644 --- a/src/gromacs/nbnxm/nbnxm.h +++ b/src/gromacs/nbnxm/nbnxm.h @@ -135,7 +135,6 @@ class PairSearch; class PairlistSets; struct t_commrec; struct t_lambda; -struct t_mdatoms; struct t_nrnb; struct t_forcerec; struct t_inputrec; @@ -371,7 +370,10 @@ public: const t_forcerec& fr, gmx::ArrayRef coords, gmx::ForceWithShiftForces* forceWithShiftForces, - const t_mdatoms& mdatoms, + gmx::ArrayRef chargeA, + gmx::ArrayRef chargeB, + gmx::ArrayRef typeA, + gmx::ArrayRef typeB, t_lambda* fepvals, gmx::ArrayRef lambda, gmx_enerdata_t* enerd, -- 2.22.0