Gromacs
2019-rc1
|
#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"
Defines SETTLE code.
Functions | |
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. | |