From: Joe Jordan Date: Tue, 13 Apr 2021 09:43:44 +0000 (+0000) Subject: Use array for term and foreign_term in gmx_enerdata_t X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=7f63c12ad7cd781e8a51079e13608b7cb61dea26;p=alexxy%2Fgromacs.git Use array for term and foreign_term in gmx_enerdata_t --- diff --git a/src/gromacs/listed_forces/listed_forces.cpp b/src/gromacs/listed_forces/listed_forces.cpp index 3a226ed961..b0d83be843 100644 --- a/src/gromacs/listed_forces/listed_forces.cpp +++ b/src/gromacs/listed_forces/listed_forces.cpp @@ -554,10 +554,11 @@ static void calcBondedForces(const InteractionDefinitions& idef, { f_thread_t& threadBuffers = *bt->f_t[thread]; int ftype; - real * epot, v; + real v; /* thread stuff */ rvec* fshift; gmx::ArrayRef dvdlt; + gmx::ArrayRef epot; gmx_grppairener_t* grpp; zero_thread_output(&threadBuffers); @@ -677,7 +678,7 @@ void calc_listed(struct gmx_wallcycle* wcycle, wallcycle_sub_stop(wcycle, ewcsLISTED); wallcycle_sub_start(wcycle, ewcsLISTED_BUF_OPS); - reduce_thread_output(&forceWithShiftForces, enerd->term, &enerd->grpp, dvdl, bt, stepWork); + reduce_thread_output(&forceWithShiftForces, enerd->term.data(), &enerd->grpp, dvdl, bt, stepWork); if (stepWork.computeDhdl) { @@ -906,14 +907,14 @@ void ListedForces::calculate(struct gmx_wallcycle* wcycle, forceBufferLambda_, shiftForceBufferLambda_, &(enerd->foreign_grpp), - enerd->foreign_term, + enerd->foreign_term.data(), dvdl, nrnb, lam_i, md, fcdata, global_atom_index); - sum_epot(enerd->foreign_grpp, enerd->foreign_term); + sum_epot(enerd->foreign_grpp, enerd->foreign_term.data()); const double dvdlSum = std::accumulate(std::begin(dvdl), std::end(dvdl), 0.); std::fill(std::begin(dvdl), std::end(dvdl), 0.0); enerd->foreignLambdaTerms.accumulate(i, enerd->foreign_term[F_EPOT], dvdlSum); diff --git a/src/gromacs/mdlib/enerdata_utils.cpp b/src/gromacs/mdlib/enerdata_utils.cpp index 1559acd0eb..07a26a1e8d 100644 --- a/src/gromacs/mdlib/enerdata_utils.cpp +++ b/src/gromacs/mdlib/enerdata_utils.cpp @@ -234,7 +234,7 @@ void ForeignLambdaTerms::finalizePotentialContributions(gmx::ArrayRef lambda, const t_lambda* fepvals) { - sum_epot(enerd->grpp, enerd->term); + sum_epot(enerd->grpp, enerd->term.data()); if (fepvals) { diff --git a/src/gromacs/mdlib/stat.cpp b/src/gromacs/mdlib/stat.cpp index 5a1efe13ad..5283f17fce 100644 --- a/src/gromacs/mdlib/stat.cpp +++ b/src/gromacs/mdlib/stat.cpp @@ -180,7 +180,7 @@ void global_stat(const gmx_global_stat& gs, the sums and overcounting. */ std::array copyenerd; - int nener = filter_enerdterm(enerd->term, TRUE, copyenerd.data(), bTemp, bPres, bEner); + int nener = filter_enerdterm(enerd->term.data(), TRUE, copyenerd.data(), bTemp, bPres, bEner); /* First, the data that needs to be communicated with velocity verlet every time This is just the constraint virial.*/ @@ -347,7 +347,7 @@ void global_stat(const gmx_global_stat& gs, } } - filter_enerdterm(copyenerd.data(), FALSE, enerd->term, bTemp, bPres, bEner); + filter_enerdterm(copyenerd.data(), FALSE, enerd->term.data(), bTemp, bPres, bEner); } if (vcm) diff --git a/src/gromacs/mdtypes/enerdata.h b/src/gromacs/mdtypes/enerdata.h index 528352a47f..3398cd69aa 100644 --- a/src/gromacs/mdtypes/enerdata.h +++ b/src/gromacs/mdtypes/enerdata.h @@ -196,7 +196,7 @@ struct gmx_enerdata_t gmx_enerdata_t(int numEnergyGroups, int numFepLambdas); //! The energies for all different interaction types - real term[F_NRE] = { 0 }; + std::array term = { 0 }; //! Energy group pair non-bonded energies struct gmx_grppairener_t grpp; //! Contributions to dV/dlambda with linear dependence on lambda @@ -212,7 +212,7 @@ struct gmx_enerdata_t ForeignLambdaTerms foreignLambdaTerms; //! Alternate, temporary array for storing foreign lambda energies - real foreign_term[F_NRE] = { 0 }; + std::array foreign_term = { 0 }; //! Alternate, temporary array for storing foreign lambda group pair energies struct gmx_grppairener_t foreign_grpp; }; diff --git a/src/gromacs/nbnxm/kerneldispatch.cpp b/src/gromacs/nbnxm/kerneldispatch.cpp index fa689d4227..846e2bbdb3 100644 --- a/src/gromacs/nbnxm/kerneldispatch.cpp +++ b/src/gromacs/nbnxm/kerneldispatch.cpp @@ -632,7 +632,7 @@ void nonbonded_verlet_t::dispatchFreeEnergyKernel(gmx::InteractionLocality GMX_CATCH_ALL_AND_EXIT_WITH_FATAL_ERROR } - sum_epot(enerd->foreign_grpp, enerd->foreign_term); + sum_epot(enerd->foreign_grpp, enerd->foreign_term.data()); enerd->foreignLambdaTerms.accumulate( i, enerd->foreign_term[F_EPOT],