MercuryDPM  Trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TimeSmoothedCG< Coordinates, BaseFunction, Fields > Class Template Referencefinal

Evaluates time-smoothed continuum fields and writes the data into a stat file. More...

#include <TimeSmoothedCG.h>

+ Inheritance diagram for TimeSmoothedCG< Coordinates, BaseFunction, Fields >:

Public Types

typedef BaseFunction< CoordinatesFunction
 
- Public Types inherited from CG< Coordinates, BaseFunction, Fields >
typedef BaseFunction< CoordinatesFunction
 Because of this typedefs, Point can be used instead of CGPoint<Function> and Function can be used instead of BaseFunction<Coordinates> in this class. This was done to avoid the overly use of template notation. More...
 
typedef CGPoint< Coordinates,
Fields > 
Point
 

Public Member Functions

 TimeSmoothedCG ()
 Default constructor; does nothing, i.e. no points are created initially. More...
 
 TimeSmoothedCG (const TimeSmoothedCG &p)=default
 Copy constructor. It copies the TimeSmoothedCGFunction and all objects it contains. More...
 
virtual ~TimeSmoothedCG ()=default
 Destructor, it simply destructs the TimeSmoothedCGFunction and all the objects it contains. More...
 
TimeSmoothedCG< Coordinates,
BaseFunction, Fields > * 
copy () const override
 Copy operator; creates a new'ed CG object. More...
 
void write (std::ostream &os) const override
 Writes class content, except for the points, into an output stream. More...
 
void writeAll (std::ostream &os, TimeSmoothedFields< Fields > &average) const
 
std::string getName () const override
 returns the name of the class, which is required by write. More...
 
void initialise () override
 Called at the beginning of the DPM simulation to initialise the cg evaluation and to open the statFile. More...
 
void evaluate () override
 Called after a given number of time steps (statFile::saveCount_) to evaluate the CG fields. More...
 
void finish () override
 Called at the end of the DPM simulation to finish the cg evaluation and to close the statFile. More...
 
void setWidthTime (Mdouble widthTime)
 
Mdouble getWidthTime () const
 
void setTimeStep (Mdouble timeStep)
 
Mdouble getTimeStep () const
 
- Public Member Functions inherited from CG< Coordinates, BaseFunction, Fields >
 CG ()=default
 Default constructor; does nothing, i.e. no points are created initially. More...
 
 CG (Mdouble width, unsigned n)
 
 CG (const CG &p)=default
 Default copy Constructor; copies all member variables. More...
 
virtual ~CG ()=default
 Default destructor; does nothing. More...
 
void writeAll (std::ostream &os) const
 Writes class content, including the points_, into an output stream, usually a stat file. More...
 
virtual void createMesh ()
 Creates spatial mesh of CGPoints, the points where the CG-variables are evaluated. More...
 
Point evaluateAverage ()
 Computes the spatially-averaged value for each field. More...
 
Point evaluateTotal ()
 Computes the total value (integrated over space) for each field. More...
 
void evaluateParticleAtPoint (Fields &currentInteraction, const BaseParticle &p, Point &r)
 
void evaluateParticle (const BaseParticle &p)
 Contains the basic for loop over all CGPoints, required to do particle statistics. More...
 
void evaluateContact (const BaseInteraction &i)
 Contains the basic for loop over all CGPoints, required to do contact statistics. More...
 
IntegralType getIntegralType (const BaseInteraction &c)
 
const PointgetPoint (size_t i) const
 
const std::vector< Point > & getPoints () const
 
FunctiongetFunction ()
 
void setStandardDeviation (Mdouble std) override
 
void setRadius (Mdouble radius) override
 
void setWidth (Mdouble width) override
 
Mdouble getWidth () const override
 
- Public Member Functions inherited from BaseCG
 BaseCG ()
 Simple constructor, sets default values. More...
 
 BaseCG (const BaseCG &p)=default
 Default copy constructor, copies all values. More...
 
 ~BaseCG () override=default
 Default destructor, does nothing. More...
 
void read (std::istream &is) override
 Currently, no read functions are implemented for the CGHandler, but the function is required for any derivative of BaseObject. More...
 
void clear ()
 This class seems to have no use (?), but is required for any derivative of BaseObject. More...
 
void setHandler (CGHandler *handler)
 Sets handler_, the pointer to the CGHandler. More...
 
CGHandlergetHandler () const
 Returns handler_, a pointer to the CGHandler. More...
 
void setNZ (std::size_t nZ)
 Sets nZ_, the number of spatial mesh points in the z-direction. More...
 
std::size_t getNZ () const
 Returns nZ_, the number of spatial mesh points in the z-direction. More...
 
void setNY (std::size_t nY)
 Sets nY_, the number of spatial mesh points in the y-direction. More...
 
std::size_t getNY () const
 Returns nY_, the number of spatial mesh points in the y-direction. More...
 
void setNX (std::size_t nX)
 Sets nX_, the number of spatial mesh points in the x-direction. More...
 
std::size_t getNX () const
 Returns nX_, the number of spatial mesh points in the x-direction. More...
 
void setN (std::size_t n)
 Sets nX_, nY_, nZ_, the number of spatial mesh points in each cartesian direction. More...
 
void setN (std::array< std::size_t, 3 > n)
 Sets nX_, nY_, nZ_, the number of spatial mesh points in each cartesian direction. More...
 
void setH (Mdouble h)
 Sets nX_, nY_, nZ_, the number of spatial mesh points in each cartesian direction. However, instead of explicitly defining n, the mesh size h=(max-min)/n is defined. More...
 
void setHX (Mdouble h)
 Sets nX_ the number of spatial mesh points in the X-direction. Instead of explicitly defining nX, the mesh size hX=(max.X-min.X)/nX is defined. More...
 
void setHY (Mdouble h)
 Sets nX_ the number of spatial mesh points in the X-direction. Instead of explicitly defining nX, the mesh size hX=(max.X-min.X)/nX is defined. More...
 
void setHZ (Mdouble h)
 Sets nX_ the number of spatial mesh points in the X-direction. Instead of explicitly defining nX, the mesh size hX=(max.X-min.X)/nX is defined. More...
 
void setTimeMin (Mdouble timeMin)
 Sets timeMin_, the lower limit of the temporal domain. More...
 
void setTimeMax (Mdouble timeMax)
 Sets timeMax_, the upper limit of the temporal domain. More...
 
Mdouble getTimeMin () const
 Returns timeMin_, the lower limit of the temporal domain. More...
 
Mdouble getTimeMax () const
 Returns timeMax_, the upper limit of the temporal domain. More...
 
void setMin (Vec3D min)
 Sets max_, the lower limit of the spatial domain. More...
 
void setX (Mdouble min, Mdouble max)
 Sets min_.X, max_.X, the limits of the spatial domain in X. More...
 
void setY (Mdouble min, Mdouble max)
 Sets min_.Y, max_.Y, the limits of the spatial domain in Y. More...
 
void setZ (Mdouble min, Mdouble max)
 Sets min_.Z, max_.Z, the limits of the spatial domain in Z. More...
 
void setXGrid (Mdouble min, Mdouble max, Mdouble h)
 
void setYGrid (Mdouble min, Mdouble max, Mdouble h)
 
void setZGrid (Mdouble min, Mdouble max, Mdouble h)
 
void setGrid (Vec3D min, Vec3D max, Mdouble h)
 
void setMax (Vec3D max)
 Sets max_, the upper limit of the spatial domain. More...
 
Vec3D getMin () const
 Returns min_, the lower limit of the spatial domain. More...
 
Vec3D getMax () const
 Returns max_, the upper limit of the spatial domain. More...
 
void selectSpecies (unsigned speciesIndex)
 
void setSelectedParticle (const std::function< const bool(const BaseInteractable *)> &selectedParticle)
 
void setEps (Mdouble eps)
 
Mdouble getEps () const
 
void setAverageBeyondDomain (const bool val)
 
bool getAverageBeyondDomain () const
 
- Public Member Functions inherited from BaseObject
 BaseObject ()=default
 Default constructor. More...
 
 BaseObject (const BaseObject &p)=default
 Copy constructor, copies all the objects BaseObject contains. More...
 
virtual ~BaseObject ()=default
 virtual destructor More...
 
virtual void moveInHandler (unsigned int index)
 Except that it is virtual, it does the same thing as setIndex() does. More...
 
void setIndex (unsigned int index)
 Allows one to assign an index to an object in the handler/container. More...
 
void setId (unsigned long id)
 Assigns a unique identifier to each object in the handler (container) which remains constant even after the object is deleted from the container/handler. More...
 
unsigned int getIndex () const
 Returns the index of the object in the handler. More...
 
unsigned int getId () const
 Returns the unique identifier of any particular object. More...
 
void setGroupId (unsigned groupId)
 
unsigned getGroupId () const
 

Protected Attributes

Mdouble widthTime_
 
Mdouble cutoffTime_
 
Mdouble nextTime_
 
Mdouble timeStep_
 
std::vector
< TimeSmoothedFields< Fields > > 
averages_
 
- Protected Attributes inherited from CG< Coordinates, BaseFunction, Fields >
std::vector< Pointpoints_
 Contains the CGPoint's, i.e. the positions at which the StandardFields are evaluated. More...
 
Function function_
 
- Protected Attributes inherited from BaseCG
CGHandlerhandler_
 
std::size_t nX_
 
std::size_t nY_
 
std::size_t nZ_
 
Mdouble eps_
 
Mdouble timeMin_
 
Mdouble timeMax_
 
Vec3D min_
 
Vec3D max_
 
std::function< bool(const
BaseInteractable *)> 
selectedParticle_
 
bool averageBeyondDomain_ = true
 Determines whether particles outside the domain are considered when computing the averaged fields. More...
 

Additional Inherited Members

- Public Attributes inherited from BaseCG
File statFile
 File class to handle the output into a .stat file. More...
 
- Protected Member Functions inherited from CG< Coordinates, BaseFunction, Fields >
void resetVariables ()
 set all variables to zero More...
 
void volumeAverageVariables ()
 divide each variable by the domain volume More...
 
void writeVariables ()
 write variables to the stat file More...
 
void evaluateCommon ()
 The part of evaluate that is used for CG, timeAveragedCG and timeSmoothedCG. More...
 
void outputSumOfVariables ()
 plot total to console More...
 

Detailed Description

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
class TimeSmoothedCG< Coordinates, BaseFunction, Fields >

Evaluates time-smoothed continuum fields and writes the data into a stat file.

Like CG, this class should be used to evaluate time-dependent fields. However, as the data is averaged over several time steps, the resulting fields are smoother and more reliable, as they use more information. For time-independent fields, see TimeAveragedCG.

The class is derived from CG, which already contains the basic functionality to obtain time-dependent statistics. This class then averages the field values F over time, with a non-uniform weight for each time step,

\[\bar F(t,w_t) = \frac{\sum_i w(t-t_i) F(t_i)}{\sum_i w(t-t_i)},\]

with the weight given by a Gaussian distribution,

\[\bar w(t-t_i) = exp(-(t-t_i)^2/2w_t^2).\]

Definition at line 59 of file TimeSmoothedCG.h.

Member Typedef Documentation

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
typedef BaseFunction<Coordinates> TimeSmoothedCG< Coordinates, BaseFunction, Fields >::Function

Definition at line 62 of file TimeSmoothedCG.h.

Constructor & Destructor Documentation

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
TimeSmoothedCG< Coordinates, BaseFunction, Fields >::TimeSmoothedCG ( )

Default constructor; does nothing, i.e. no points are created initially.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
TimeSmoothedCG< Coordinates, BaseFunction, Fields >::TimeSmoothedCG ( const TimeSmoothedCG< Coordinates, BaseFunction, Fields > &  p)
default

Copy constructor. It copies the TimeSmoothedCGFunction and all objects it contains.

Parameters
[in]pthe TimeSmoothedCGFunction that has to be copied
template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
virtual TimeSmoothedCG< Coordinates, BaseFunction, Fields >::~TimeSmoothedCG ( )
virtualdefault

Destructor, it simply destructs the TimeSmoothedCGFunction and all the objects it contains.

Member Function Documentation

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
TimeSmoothedCG<Coordinates, BaseFunction, Fields>* TimeSmoothedCG< Coordinates, BaseFunction, Fields >::copy ( ) const
overridevirtual

Copy operator; creates a new'ed CG object.

Reimplemented from CG< Coordinates, BaseFunction, Fields >.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
void TimeSmoothedCG< Coordinates, BaseFunction, Fields >::evaluate ( )
overridevirtual

Called after a given number of time steps (statFile::saveCount_) to evaluate the CG fields.

Reimplemented from CG< Coordinates, BaseFunction, Fields >.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
void TimeSmoothedCG< Coordinates, BaseFunction, Fields >::finish ( )
overridevirtual

Called at the end of the DPM simulation to finish the cg evaluation and to close the statFile.

Reimplemented from CG< Coordinates, BaseFunction, Fields >.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
std::string TimeSmoothedCG< Coordinates, BaseFunction, Fields >::getName ( ) const
overridevirtual

returns the name of the class, which is required by write.

Reimplemented from CG< Coordinates, BaseFunction, Fields >.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
Mdouble TimeSmoothedCG< Coordinates, BaseFunction, Fields >::getTimeStep ( ) const
template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
Mdouble TimeSmoothedCG< Coordinates, BaseFunction, Fields >::getWidthTime ( ) const
template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
void TimeSmoothedCG< Coordinates, BaseFunction, Fields >::initialise ( )
overridevirtual

Called at the beginning of the DPM simulation to initialise the cg evaluation and to open the statFile.

Reimplemented from CG< Coordinates, BaseFunction, Fields >.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
void TimeSmoothedCG< Coordinates, BaseFunction, Fields >::setTimeStep ( Mdouble  timeStep)
template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
void TimeSmoothedCG< Coordinates, BaseFunction, Fields >::setWidthTime ( Mdouble  widthTime)
template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
void TimeSmoothedCG< Coordinates, BaseFunction, Fields >::write ( std::ostream &  os) const
overridevirtual

Writes class content, except for the points, into an output stream.

Todo:
TW write should be renamed writeHeader, writeAll should be renamed write.

Reimplemented from CG< Coordinates, BaseFunction, Fields >.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
void TimeSmoothedCG< Coordinates, BaseFunction, Fields >::writeAll ( std::ostream &  os,
TimeSmoothedFields< Fields > &  average 
) const

Member Data Documentation

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
std::vector<TimeSmoothedFields<Fields> > TimeSmoothedCG< Coordinates, BaseFunction, Fields >::averages_
protected

Stores the smoothed fields that are currently being evaluated. Internal variable, see TimeSmoothedFields for details.

Definition at line 159 of file TimeSmoothedCG.h.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
Mdouble TimeSmoothedCG< Coordinates, BaseFunction, Fields >::cutoffTime_
protected

Cutoff of the Gauss function used to calculate the weights for the temporal smoothing. Internal variable, set to 3.0*widthTime_.

Definition at line 138 of file TimeSmoothedCG.h.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
Mdouble TimeSmoothedCG< Coordinates, BaseFunction, Fields >::nextTime_
protected

Stores the next time at which smoothed fields should be evaluated, but which is not yet included in averages_. Internal variable, set DPMBase::time_ in initialize, then increased by timeStep_ every time a new object is added to averages_.

Definition at line 146 of file TimeSmoothedCG.h.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
Mdouble TimeSmoothedCG< Coordinates, BaseFunction, Fields >::timeStep_
protected

Interval between two successive time steps for which time-smoothed fields are evaluated. Has to be specified by the user.

Definition at line 153 of file TimeSmoothedCG.h.

template<class Coordinates, template< class > class BaseFunction = CGFunctions::Lucy, class Fields = CGFields::StandardFields>
Mdouble TimeSmoothedCG< Coordinates, BaseFunction, Fields >::widthTime_
protected

Width of the Gauss function used to calculate the weights for the temporal smoothing. Has to be specified by the user.

Definition at line 131 of file TimeSmoothedCG.h.


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