* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
real* dvdlambda,
const t_mdatoms* md,
t_fcdata* fcd,
+ t_disresdata* disresdata,
+ t_oriresdata* oriresdata,
int* ddgatindex);
/*! \brief Mysterious CMAP coefficient matrix */
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
const real one = 1.0;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
const real three = 3.0;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
- int* global_atom_index)
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
+ int* global_atom_index)
{
const real half = 0.5;
const real one = 1.0;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ki, ai, aj, type;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
constexpr int nfa1 = 3;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ki, ai, aj, type;
real* dvdlambda,
const t_mdatoms* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ki, ai, aj, type;
real* dvdlambda,
const t_mdatoms* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ki, ai, aj, type;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
/* This routine implements anisotropic polarizibility for water, through
real gmx_unused* dvdlambda,
const t_mdatoms* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
/* Interaction between two pairs of particles with opposite charge */
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ai, aj, ak, t1, t2, type;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
const int nfa1 = 4;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, m, ai, aj, ak, t1, t2, type;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, m, ai, aj, ak, t1, t2, type, ki;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
constexpr int nfa1 = 4;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, j, ai, aj, ak, t1, t2, type;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int t1, t2, t3;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
const int nfa1 = 5;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
const int nfa1 = 5;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, type, ai, aj, ak, al;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
return low_angres<flavor>(nbonds, forceatoms, forceparams, x, f, fshift, pbc, lambda, dvdlambda, FALSE);
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
return low_angres<flavor>(nbonds, forceatoms, forceparams, x, f, fshift, pbc, lambda, dvdlambda, TRUE);
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
real vtot = 0;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
gmx_impl("*** you are using a not implemented function");
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, d, ai, aj, ak, type, m;
real gmx_unused* dvlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, d, type, ai, aj, ak, al;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int type, ai, aj, ak, al, i, d;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
const real c0 = 0.0, c1 = 1.0, c2 = 2.0, c3 = 3.0, c4 = 4.0, c5 = 5.0;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, n;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ki, ai, aj, type;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ai, aj, ak, type, m, t1, t2;
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
/* Potential from Lawrence and Skimmer, Chem. Phys. Lett. 372 (2003)
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata gmx_unused* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
/* Potential from Lawrence and Skimmer, Chem. Phys. Lett. 372 (2003)
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ki, ai, aj, type, table;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, ai, aj, ak, t1, t2, type, table;
real* dvdlambda,
const t_mdatoms gmx_unused* md,
t_fcdata* fcd,
+ t_disresdata gmx_unused* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
int i, type, ai, aj, ak, al, table;
real* dvdlambda,
const t_mdatoms* md,
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, global_atom_index);
+ numForceatoms, forceatoms, forceparams, x, f, fshift, pbc, lambda, dvdlambda, md, fcd, disresdata, oriresdata, global_atom_index);
return v;
}
dd->sumviol = 0;
}
-real ta_disres(int nfa,
- const t_iatom forceatoms[],
- const t_iparams ip[],
- const rvec x[],
- rvec4 f[],
- rvec fshift[],
- const t_pbc* pbc,
+real ta_disres(int nfa,
+ const t_iatom* forceatoms,
+ const t_iparams* ip,
+ const rvec* x,
+ rvec4* f,
+ rvec* fshift,
+ const t_pbc* pbc,
real gmx_unused lambda,
real gmx_unused* dvdlambda,
const t_mdatoms gmx_unused* md,
- t_fcdata* fcd,
+ t_fcdata gmx_unused* fcd,
+ t_disresdata* disresdata,
+ t_oriresdata gmx_unused* oriresdata,
int gmx_unused* global_atom_index)
{
const real seven_three = 7.0 / 3.0;
- rvec dx;
- real weight_rt_1;
- real smooth_fc, Rt, Rtav, rt2, *Rtl_6, *Rt_6, *Rtav_6;
- real k0, f_scal = 0, fmax_scal, fk_scal, fij;
- real tav_viol, instant_viol, mixed_viol, violtot, vtot;
- real tav_viol_Rtav7, instant_viol_Rtav7;
- real up1, up2, low;
- gmx_bool bConservative, bMixed, bViolation;
- t_disresdata* dd;
- int dr_weighting;
- gmx_bool dr_bMixed;
-
- dd = fcd->disres;
- dr_weighting = dd->dr_weighting;
- dr_bMixed = dd->dr_bMixed;
- Rtl_6 = dd->Rtl_6;
- Rt_6 = dd->Rt_6;
- Rtav_6 = dd->Rtav_6;
+ rvec dx;
+ real weight_rt_1;
+ real smooth_fc, Rt, Rtav, rt2, *Rtl_6, *Rt_6, *Rtav_6;
+ real k0, f_scal = 0, fmax_scal, fk_scal, fij;
+ real tav_viol, instant_viol, mixed_viol, violtot, vtot;
+ real tav_viol_Rtav7, instant_viol_Rtav7;
+ real up1, up2, low;
+ gmx_bool bConservative, bMixed, bViolation;
+ int dr_weighting;
+ gmx_bool dr_bMixed;
+
+ dr_weighting = disresdata->dr_weighting;
+ dr_bMixed = disresdata->dr_bMixed;
+ Rtl_6 = disresdata->Rtl_6;
+ Rt_6 = disresdata->Rt_6;
+ Rtav_6 = disresdata->Rtav_6;
tav_viol = instant_viol = mixed_viol = tav_viol_Rtav7 = instant_viol_Rtav7 = 0;
- smooth_fc = dd->dr_fc;
- if (dd->dr_tau != 0)
+ smooth_fc = disresdata->dr_fc;
+ if (disresdata->dr_tau != 0)
{
/* scaling factor to smoothly turn on the restraint forces *
* when using time averaging */
- smooth_fc *= (1.0 - dd->exp_min_t_tau);
+ smooth_fc *= (1.0 - disresdata->exp_min_t_tau);
}
violtot = 0;
/* 'loop' over all atom pairs (pair_nr=fa/3) involved in restraints, *
* the total number of atoms pairs is nfa/3 */
- int faOffset = static_cast<int>(forceatoms - dd->forceatomsStart);
+ int faOffset = static_cast<int>(forceatoms - disresdata->forceatomsStart);
for (int fa = 0; fa < nfa; fa += 3)
{
int type = forceatoms[fa];
low = ip[type].disres.low;
k0 = smooth_fc * ip[type].disres.kfac;
- int res = type - dd->type_min;
+ int res = type - disresdata->type_min;
/* save some flops when there is only one pair */
if (ip[type].disres.type != 2)
{
if (!dr_bMixed)
{
- weight_rt_1 *= std::pow(dd->rm3tav[pair], seven_three);
+ weight_rt_1 *= std::pow(disresdata->rm3tav[pair], seven_three);
}
else
{
- weight_rt_1 *= tav_viol_Rtav7 * std::pow(dd->rm3tav[pair], seven_three)
- + instant_viol_Rtav7 / (dd->rt[pair] * gmx::power6(dd->rt[pair]));
+ weight_rt_1 *=
+ tav_viol_Rtav7 * std::pow(disresdata->rm3tav[pair], seven_three)
+ + instant_viol_Rtav7
+ / (disresdata->rt[pair] * gmx::power6(disresdata->rt[pair]));
}
}
}
#pragma omp atomic
- dd->sumviol += violtot;
+ disresdata->sumviol += violtot;
/* Return energy */
return vtot;