Gromacs  2025.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Enumerations | Functions | Variables
#include "gmxpre.h"
#include "msd.h"
#include <cinttypes>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <functional>
#include <limits>
#include <memory>
#include <numeric>
#include <optional>
#include <string>
#include <vector>
#include "gromacs/analysisdata/analysisdata.h"
#include "gromacs/analysisdata/modules/average.h"
#include "gromacs/analysisdata/modules/plot.h"
#include "gromacs/analysisdata/paralleloptions.h"
#include "gromacs/fileio/oenv.h"
#include "gromacs/fileio/trxio.h"
#include "gromacs/math/functions.h"
#include "gromacs/math/vectypes.h"
#include "gromacs/options/basicoptions.h"
#include "gromacs/options/filenameoption.h"
#include "gromacs/options/ioptionscontainer.h"
#include "gromacs/options/optionfiletype.h"
#include "gromacs/pbcutil/pbc.h"
#include "gromacs/selection/indexutil.h"
#include "gromacs/selection/selection.h"
#include "gromacs/selection/selectionoption.h"
#include "gromacs/statistics/statistics.h"
#include "gromacs/trajectory/trajectoryframe.h"
#include "gromacs/trajectoryanalysis/analysissettings.h"
#include "gromacs/trajectoryanalysis/topologyinformation.h"
#include "gromacs/utility/arrayref.h"
#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/enumerationhelpers.h"
#include "gromacs/utility/exceptions.h"
#include "gromacs/utility/real.h"
#include "gromacs/utility/stringutil.h"
+ Include dependency graph for msd.cpp:

Description

Defines the trajectory analysis module for mean squared displacement calculations.

Author
Kevin Boyd kevin.nosp@m.44bo.nosp@m.yd@gm.nosp@m.ail..nosp@m.com

Classes

class  gmx::analysismodules::anonymous_namespace{msd.cpp}::MsdData
 Mean Squared Displacement data accumulator. More...
 
class  gmx::analysismodules::anonymous_namespace{msd.cpp}::MsdData::MsdColumnProxy
 Proxy to a MsdData tau column vector. Supports only push_back. More...
 
struct  gmx::analysismodules::anonymous_namespace{msd.cpp}::MoleculeData
 Holds data needed for MSD calculations for a single molecule, if requested. More...
 
class  gmx::analysismodules::anonymous_namespace{msd.cpp}::MsdCoordinateManager
 Handles coordinate operations for MSD calculations. More...
 
struct  gmx::analysismodules::anonymous_namespace{msd.cpp}::MsdGroupData
 Holds per-group coordinates, analysis, and results. More...
 
class  gmx::analysismodules::Msd
 Implements the gmx msd module. More...
 

Enumerations

enum  gmx::analysismodules::anonymous_namespace{msd.cpp}::SingleDimDiffType : int {
  X = 0, Y, Z, Unused,
  Count
}
 Describes 1D MSDs, in the given dimension.
 
enum  gmx::analysismodules::anonymous_namespace{msd.cpp}::TwoDimDiffType : int {
  NormalToX = 0, NormalToY, NormalToZ, Unused,
  Count
}
 Describes 2D MSDs, in the plane normal to the given dimension.
 

Functions

template<bool x, bool y, bool z>
double gmx::analysismodules::anonymous_namespace{msd.cpp}::calcSingleSquaredDistance (const DVec &firstCoords, const DVec &secondCoords)
 Calculates 1,2, or 3D distance for two vectors. More...
 
template<bool x, bool y, bool z>
double gmx::analysismodules::anonymous_namespace{msd.cpp}::calcAverageDisplacement (ArrayRef< const DVec > c1, ArrayRef< const DVec > c2)
 Calculate average displacement between sets of points. More...
 
void gmx::analysismodules::anonymous_namespace{msd.cpp}::removePbcJumps (ArrayRef< DVec > currentCoords, ArrayRef< const DVec > previousCoords, t_pbc *pbc)
 Removes jumps across periodic boundaries for currentFrame, based on the positions in previousFrame. Updates currentCoords in place.
 
static size_t gmx::analysismodules::calculateFitIndex (const int userFitTau, const double defaultTauFraction, const int numTaus, const double dt)
 Calculate the tau index for fitting. If userFitTau < 0, uses the default fraction of max tau.
 

Variables

constexpr double gmx::analysismodules::anonymous_namespace{msd.cpp}::c_diffusionConversionFactor = 1000.0
 Convert nm^2/ps to 10e-5 cm^2/s.
 
constexpr double gmx::analysismodules::anonymous_namespace{msd.cpp}::c_3DdiffusionDimensionFactor = 6.0
 Three dimensional diffusion coefficient multiplication constant.
 
constexpr double gmx::analysismodules::anonymous_namespace{msd.cpp}::c_2DdiffusionDimensionFactor = 4.0
 Two dimensional diffusion coefficient multiplication constant.
 
constexpr double gmx::analysismodules::anonymous_namespace{msd.cpp}::c_1DdiffusionDimensionFactor = 2.0
 One dimensional diffusion coefficient multiplication constant.