Gromacs  2020.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
settle.cpp File Reference
#include "gmxpre.h"
#include "settle.h"
#include <cassert>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include "gromacs/math/functions.h"
#include "gromacs/math/invertmatrix.h"
#include "gromacs/math/vec.h"
#include "gromacs/mdlib/constr.h"
#include "gromacs/mdtypes/mdatom.h"
#include "gromacs/pbcutil/ishift.h"
#include "gromacs/pbcutil/pbc.h"
#include "gromacs/pbcutil/pbc_simd.h"
#include "gromacs/simd/simd.h"
#include "gromacs/simd/simd_math.h"
#include "gromacs/topology/idef.h"
#include "gromacs/topology/ifunc.h"
#include "gromacs/topology/mtop_util.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/gmxassert.h"
#include "gromacs/utility/smalloc.h"
+ Include dependency graph for settle.cpp:


Defines SETTLE code.

Berk Hess
Mark Abraham


static void gmx::init_proj_matrix (real invmO, real invmH, real dOH, real dHH, matrix inverseCouplingMatrix)
 Initializes a projection matrix.
static void gmx::settleparam_init (settleparam_t *p, real mO, real mH, real invmO, real invmH, real dOH, real dHH)
 Initializes settle parameters.
settledata * gmx::settle_init (const gmx_mtop_t &mtop)
 Initializes and returns a structure with SETTLE parameters.
void gmx::settle_free (settledata *settled)
 Cleans up.
void gmx::settle_set_constraints (settledata *settled, const t_ilist *il_settle, const t_mdatoms &mdatoms)
 Set up the indices for the settle constraints.
void gmx::settle_proj (settledata *settled, ConstraintVariable econq, int nsettle, const t_iatom iatoms[], const t_pbc *pbc,const rvec x[], rvec *der, rvec *derp, int CalcVirAtomEnd, tensor vir_r_m_dder)
 Analytical algorithm to subtract the components of derivatives of coordinates working on settle type constraint.
template<typename T , typename TypeBool , int packSize, typename TypePbc , bool bCorrectVelocity, bool bCalcVirial>
static void gmx::settleTemplate (const settledata *settled, int settleStart, int settleEnd, const TypePbc pbc, const real *x, real *xprime, real invdt, real *gmx_restrict v, tensor vir_r_m_dr, bool *bErrorHasOccurred)
 The actual settle code, templated for real/SimdReal and for optimization.
template<typename T , typename TypeBool , int packSize, typename TypePbc >
static void gmx::settleTemplateWrapper (settledata *settled, int nthread, int thread, TypePbc pbc, const real x[], real xprime[], real invdt, real *v, bool bCalcVirial, tensor vir_r_m_dr, bool *bErrorHasOccurred)
 Wrapper template function that divides the settles over threads and instantiates the core template with instantiated booleans.
void gmx::csettle (settledata *settled,int nthread,int thread,const t_pbc *pbc,const real x[],real xprime[],real invdt,real *v,bool bCalcVirial,tensor vir_r_m_dr,bool *bErrorHasOccurred)
 Constrain coordinates using SETTLE. Can be called on any number of threads.