Gromacs  2024.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Attributes
gmx::Lincs Class Reference
+ Collaboration diagram for gmx::Lincs:

Description

Data for LINCS algorithm.

Public Attributes

int ncg = 0
 The global number of constraints.
 
int ncg_flex = 0
 The global number of flexible constraints.
 
int ncg_triangle = 0
 The global number of constraints in triangles.
 
int nIter = 0
 The number of iterations.
 
int nOrder = 0
 The order of the matrix expansion.
 
int max_connect = 0
 The maximum number of constraints connected to a single atom.
 
int nc_real = 0
 The number of real constraints.
 
int nc = 0
 The number of constraints including padding for SIMD.
 
int ncc = 0
 The number of constraint connections.
 
real matlam = 0
 The FE lambda value used for filling blc and blmf.
 
std::vector< int > con_index
 mapping from topology to LINCS constraints.
 
std::vector< real,
AlignedAllocator< real > > 
bllen0
 The reference distance in topology A.
 
std::vector< real,
AlignedAllocator< real > > 
ddist
 The reference distance in top B - the r.d. in top A.
 
std::vector< AtomPairatoms
 The atom pairs involved in the constraints.
 
std::vector< real,
AlignedAllocator< real > > 
blc
 1/sqrt(invmass1 invmass2).
 
std::vector< real,
AlignedAllocator< real > > 
blc1
 As blc, but with all masses 1.
 
std::vector< int > blnr
 Index into blbnb and blmf.
 
std::vector< int > blbnb
 List of constraint connections.
 
int ntriangle = 0
 The local number of constraints in triangles.
 
int ncc_triangle = 0
 The number of constraint connections in triangles.
 
bool bCommIter = false
 Communicate before each LINCS interation.
 
std::vector< realblmf
 Matrix of mass factors for constraint connections.
 
std::vector< realblmf1
 As blmf, but with all masses 1.
 
std::vector< real,
AlignedAllocator< real > > 
bllen
 The reference bond length.
 
std::vector< int > nlocat
 The local atom count per constraint, can be NULL.
 
int ntask = 0
 The number of tasks used for LINCS work. More...
 
std::vector< Task > task
 LINCS thread division.
 
std::vector< gmx_bitmask_tatf
 Atom flags for thread parallelization.
 
bool bTaskDep = false
 Are the LINCS tasks interdependent?
 
bool bTaskDepTri = false
 Are there triangle constraints that cross task borders?
 
bool haveSecondUpdateTask = false
 Whether any task has constraints in the second update list.
 
std::vector< real,
AlignedAllocator< real > > 
mlambda
 The Lagrange multipliers times -1.
 
std::optional
< ObservablesReducerBuilder::CallbackToRequireReduction
callbackToRequireReduction
 Callback used after constraining to require reduction of values later used to compute the constraint RMS relative deviation, so the latter can be output.
 
ArrayRef< double > rmsdReductionBuffer
 View used for reducing the components of the global relative RMS constraint deviation. More...
 
std::optional< double > constraintRmsDeviation
 The value of the constraint RMS deviation after it has been computed. More...
 
PaddedVector< gmx::RVectmpv
 Arrays for temporary storage in the LINCS algorithm.
 
std::vector< realtmpncc
 
std::vector< real,
AlignedAllocator< real > > 
tmp1
 
std::vector< real,
AlignedAllocator< real > > 
tmp2
 
std::vector< real,
AlignedAllocator< real > > 
tmp3
 
std::vector< real,
AlignedAllocator< real > > 
tmp4
 

Member Data Documentation

std::optional<double> gmx::Lincs::constraintRmsDeviation

The value of the constraint RMS deviation after it has been computed.

When DD is active, filled by the ObservablesReducer, otherwise filled directly here.

int gmx::Lincs::ntask = 0

The number of tasks used for LINCS work.

Todo:
This is mostly used to loop over task, which would be nicer to do with range-based for loops, but the thread index is used for constructing bit masks and organizing the virial output buffer, so other things need to change, first.
ArrayRef<double> gmx::Lincs::rmsdReductionBuffer

View used for reducing the components of the global relative RMS constraint deviation.

Can be written any time, but that is only useful when followed by a call of the callbackToRequireReduction. Useful to read only from the callback that the ObservablesReducer will later make after reduction.


The documentation for this class was generated from the following file: