Gromacs  2019-beta2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Public Attributes
gmx::Integrator Struct Reference

#include <gromacs/mdrun/integrator.h>

+ Collaboration diagram for gmx::Integrator:

Description

Struct to handle setting up and running the different "integrators".

This struct is a mere aggregate of parameters to pass to evaluate an energy, so that future changes to names and types of them consume less time when refactoring other code.

Aggregate initialization is used, for which the chief risk is that if a member is added at the end and not all initializer lists are updated, then the member will be value initialized, which will typically mean initialization to zero.

Having multiple integrators as member functions isn't a good design, and we definitely only intend one to be called, but the goal is to make it easy to change the names and types of members without having to make identical changes in several places in the code. Once many of them have become modules, we should change this approach.

Note that the presence of const reference members means that the default constructor would be implicitly deleted. But we only want to make one of these when we know how to initialize these members, so that is perfect. To ensure this remains true even if we would remove those members, we explicitly delete this constructor. Other constructors, copies and moves are OK.

Public Member Functions

void run (unsigned int ei, bool doRerun)
 Function to run the correct IntegratorFunctionType, based on the .mdp integrator field. More...
 

Public Attributes

FILE * fplog
 Handles logging.
 
t_commrec * cr
 Handles communication.
 
const gmx_multisim_t * ms
 Coordinates multi-simulations.
 
const MDLoggermdlog
 Handles logging.
 
int nfile
 Count of input file options.
 
const t_filenmfnm
 Content of input file options.
 
const gmx_output_env_t * oenv
 Handles writing text output.
 
const MdrunOptionsmdrunOptions
 Contains command-line options to mdrun.
 
gmx_vsite_t * vsite
 Handles virtual sites.
 
Constraintsconstr
 Handles constraints.
 
gmx_enfrotenforcedRotation
 Handles enforced rotation.
 
BoxDeformation * deform
 Handles box deformation.
 
IMDOutputProvideroutputProvider
 Handles writing output files.
 
t_inputrec * inputrec
 Contains user input mdp options.
 
gmx_mtop_t * top_global
 Full system topology.
 
t_fcdata * fcd
 Helper struct for force calculations.
 
t_statestate_global
 Full simulation state (only non-nullptr on master rank).
 
ObservablesHistoryobservablesHistory
 History of simulation observables.
 
MDAtomsmdAtoms
 Atom parameters for this domain.
 
t_nrnb * nrnb
 Manages flop accounting.
 
gmx_wallcycle * wcycle
 Manages wall cycle accounting.
 
t_forcerec * fr
 Parameters for force calculations.
 
const ReplicaExchangeParametersreplExParams
 Parameters for replica exchange algorihtms.
 
gmx_membed_t * membed
 Parameters for membrane embedding.
 
gmx_walltime_accountingwalltime_accounting
 Manages wall time accounting.
 
std::unique_ptr
< StopHandlerBuilder
stopHandlerBuilder
 Registers stop conditions.
 
IntegratorFunctionType do_md
 Implements the normal MD integrators.
 
IntegratorFunctionType do_rerun
 Implements the rerun functionality.
 
IntegratorFunctionType do_steep
 Implements steepest descent EM.
 
IntegratorFunctionType do_cg
 Implements conjugate gradient energy minimization.
 
IntegratorFunctionType do_lbfgs
 Implements onjugate gradient energy minimization using the L-BFGS algorithm.
 
IntegratorFunctionType do_nm
 Implements normal mode analysis.
 
IntegratorFunctionType do_tpi
 Implements test particle insertion.
 
IntegratorFunctionType do_mimic
 Implements MiMiC QM/MM workflow.
 

Member Function Documentation

void gmx::Integrator::run ( unsigned int  ei,
bool  doRerun 
)

Function to run the correct IntegratorFunctionType, based on the .mdp integrator field.

Run the correct integrator function.


The documentation for this struct was generated from the following files: