Gromacs  2025-dev-20240913-b871546
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Static Protected Member Functions
gmx::AbstractAnalysisArrayData Class Reference

#include <gromacs/analysisdata/arraydata.h>

+ Inheritance diagram for gmx::AbstractAnalysisArrayData:
+ Collaboration diagram for gmx::AbstractAnalysisArrayData:

Description

Abstract base class for data objects that present in-memory data.

This class implements a subclass of AbstractAnalysisData that presents an in-memory array through the AbstractAnalysisData interface. Subclasses should initialize the in-memory array through the provided protected member functions. This class provides public accessor methods for read access to the data.

Public accessor methods in this class do not throw, but assert if data is accessed before it is available.

Todo:
Add support for multiple data sets.

Public Member Functions

int frameCount () const override
 Returns the total number of frames in the data. More...
 
int rowCount () const
 Returns the number of rows in the data array. More...
 
bool isAllocated () const
 Returns true if values have been allocated.
 
real xstart () const
 Returns the x value of the first frame.
 
real xstep () const
 Returns the step between frame x values.
 
real xvalue (int row) const
 Returns the x value of a row.
 
const AnalysisDataValuevalue (int row, int col) const
 Returns a given array element.
 
- Public Member Functions inherited from gmx::AbstractAnalysisData
bool isMultipoint () const
 Whether the data can have multiple points in the same column in the same frame. More...
 
int dataSetCount () const
 Returns the number of data sets in the data object. More...
 
int columnCount (int dataSet) const
 Returns the number of columns in a data set. More...
 
int columnCount () const
 Returns the number of columns in the data. More...
 
AnalysisDataFrameRef tryGetDataFrame (int index) const
 Access stored data. More...
 
AnalysisDataFrameRef getDataFrame (int index) const
 Access stored data. More...
 
bool requestStorage (int nframes)
 Request storage of frames. More...
 
void addModule (const AnalysisDataModulePointer &module)
 Adds a module to process the data. More...
 
void addColumnModule (int col, int span, const AnalysisDataModulePointer &module)
 Adds a module that processes only a subset of the columns. More...
 
void applyModule (IAnalysisDataModule *module)
 Applies a module to process data that is ready. More...
 

Protected Member Functions

 AbstractAnalysisArrayData ()
 Initializes an empty array data object. More...
 
void setColumnCount (int ncols)
 Sets the number of columns in the data array. More...
 
void setRowCount (int rowCount)
 Sets the number of rows in the data array. More...
 
void allocateValues ()
 Allocates memory for the values. More...
 
void setXAxis (real start, real step)
 Sets the values reported as x values for frames. More...
 
void setXAxisValue (int row, real value)
 Sets a single value reported as x value for frames. More...
 
AnalysisDataValuevalue (int row, int col)
 Returns a reference to a given array element.
 
void valuesReady ()
 Notifies modules of the data. More...
 
- Protected Member Functions inherited from gmx::AbstractAnalysisData
 AbstractAnalysisData ()
 Initializes a new analysis data object. More...
 
void setDataSetCount (int dataSetCount)
 Sets the number of data sets. More...
 
void setColumnCount (int dataSet, int columnCount)
 Sets the number of columns for a data set. More...
 
void setMultipoint (bool bMultipoint)
 Sets whether the data has multiple points per column in a frame. More...
 
AnalysisDataModuleManagermoduleManager ()
 Returns the module manager to use for calling notification methods.
 
const AnalysisDataModuleManagermoduleManager () const
 Returns the module manager to use for calling notification methods.
 

Static Protected Member Functions

static void copyContents (const AbstractAnalysisArrayData *src, AbstractAnalysisArrayData *dest)
 Copies the contents into a new object. More...
 

Constructor & Destructor Documentation

gmx::AbstractAnalysisArrayData::AbstractAnalysisArrayData ( )
protected

Initializes an empty array data object.

Exceptions
std::bad_allocif out of memory.

Member Function Documentation

void gmx::AbstractAnalysisArrayData::allocateValues ( )
protected

Allocates memory for the values.

Exceptions
std::bad_allocif memory allocation fails.

setColumnCount() and setRowCount() must have been called.

Strong exception safety guarantee.

void gmx::AbstractAnalysisArrayData::copyContents ( const AbstractAnalysisArrayData src,
AbstractAnalysisArrayData dest 
)
staticprotected

Copies the contents into a new object.

Parameters
[in]srcObject to copy data from.
[in,out]destEmpty array data object to copy data to.
Exceptions
std::bad_allocif memory allocation for dest fails.

dest should not have previous contents.

int gmx::AbstractAnalysisArrayData::frameCount ( ) const
inlineoverridevirtual

Returns the total number of frames in the data.

Returns
The total number of frames in the data.

This function returns the number of frames that the object has produced. If requestStorage() has been successfully called, tryGetDataframe() or getDataFrame() can be used to access some or all of these frames.

Does not throw.

Derived classes should implement this to return the number of frames. The frame count should not be incremented before tryGetDataFrameInternal() can return the new frame. The frame count must be incremented before AnalysisDataModuleManager::notifyFrameFinish() is called.

Implements gmx::AbstractAnalysisData.

int gmx::AbstractAnalysisArrayData::rowCount ( ) const
inline

Returns the number of rows in the data array.

This function is identical to frameCount(), except that frameCount() returns 0 before valuesReady() has been called.

void gmx::AbstractAnalysisArrayData::setColumnCount ( int  ncols)
protected

Sets the number of columns in the data array.

Parameters
[in]ncolsNumber of columns in the data.

Cannot be called after allocateValues().

See AbstractAnalysisData::setColumnCount() for exception behavior.

void gmx::AbstractAnalysisArrayData::setRowCount ( int  rowCount)
protected

Sets the number of rows in the data array.

Parameters
[in]rowCountNumber of rows in the data.

Cannot be called after allocateValues().

Does not throw.

void gmx::AbstractAnalysisArrayData::setXAxis ( real  start,
real  step 
)
protected

Sets the values reported as x values for frames.

Parameters
[in]startx value for the first frame.
[in]stepStep between x values of successive frames.

Must not be called after valuesReady(). Any values set with setXAxisValue() are overwritten.

Does not throw.

void gmx::AbstractAnalysisArrayData::setXAxisValue ( int  row,
real  value 
)
protected

Sets a single value reported as x value for frames.

Parameters
[in]rowRow/frame for which to set the value.
[in]valuex value for the frame specified by row.

Must not be called after valuesReady().

Does not throw.

void gmx::AbstractAnalysisArrayData::valuesReady ( )
protected

Notifies modules of the data.

Exceptions
unspecifiedAny exception thrown by attached data modules in data notification methods.

This function should be called once the values in the array have been initialized. The values should not be changed after this function has been called.


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