MoorDyn
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
moordyn::time::Scheme Class Referenceabstract

Time scheme abstraction. More...

#include <Time.hpp>

Inheritance diagram for moordyn::time::Scheme:
Inheritance graph
[legend]
Collaboration diagram for moordyn::time::Scheme:
Collaboration graph
[legend]

Public Member Functions

virtual ~Scheme ()
 Destructor.
 
void SetGround (Body *obj)
 Set the ground body. More...
 
virtual void AddLine (Line *obj)
 Add a line. More...
 
virtual unsigned int RemoveLine (Line *obj)
 Remove a line. More...
 
virtual void AddPoint (Point *obj)
 Add a point. More...
 
virtual unsigned int RemovePoint (Point *obj)
 Remove a point. More...
 
virtual void AddRod (Rod *obj)
 Add a rod. More...
 
virtual unsigned int RemoveRod (Rod *obj)
 Remove a rod. More...
 
virtual void AddBody (Body *obj)
 Add a body. More...
 
virtual unsigned int RemoveBody (Body *obj)
 Remove a body. More...
 
std::string GetName () const
 Get the name of the scheme. More...
 
real GetTime () const
 Get the simulation time. More...
 
void SetTime (const real &time)
 Set the simulation time. More...
 
real GetCFL () const
 Get the CFL factor. More...
 
void SetCFL (const real &cfl)
 Set the CFL factor. More...
 
void Next ()
 Prepare everything for the next outer time step. More...
 
virtual void Init ()=0
 Create an initial state for all the entities. More...
 
virtual void Step (real &dt)
 Run a time step. More...
 
virtual moordyn::state::State GetState (unsigned int i=0)=0
 Get the state variable. More...
 
virtual void SetState (const moordyn::state::State &state, unsigned int i=0)
 Resume the simulation from the stationary solution. More...
 
virtual void SaveState (const std::string filepath, unsigned int i=0)
 Save the system state on a file. More...
 
virtual void LoadState (const std::string filepath, unsigned int i=0)
 Load the system state from a file. More...
 
- Public Member Functions inherited from moordyn::io::IO
 IO (moordyn::Log *log)
 Costructor. More...
 
virtual ~IO ()=default
 Destructor.
 
void Save (const std::string filepath)
 Save the entity into a file. More...
 
void Load (const std::string filepath)
 Loads the entity from a file. More...
 
virtual std::vector< uint64_t > Serialize (void)=0
 Produce the packed data to be saved. More...
 
virtual uint64_t * Deserialize (const uint64_t *data)=0
 Unpack the data to restore the Serialized information. More...
 
- Public Member Functions inherited from moordyn::LogUser
 LogUser (Log *log=NULL)
 Constructor. More...
 
 ~LogUser ()
 Destructor.
 
void SetLogger (Log *log)
 Set the log handler. More...
 
LogGetLogger () const
 Get the log handler. More...
 

Protected Member Functions

 Scheme (moordyn::Log *log)
 Constructor. More...
 
- Protected Member Functions inherited from moordyn::io::IO
ofstream MakeFile (const std::string filepath) const
 Create an output file and write the MoorDyn magic header. More...
 
std::tuple< uint64_t, uint64_t * > LoadFile (const std::string filepath) const
 Open an input file and load the data. More...
 
uint64_t Serialize (const uint64_t &i)
 Pack an unsigned integer to make it writable. More...
 
uint64_t Serialize (const int64_t &i)
 Pack an integer to make it writable. More...
 
uint64_t Serialize (const real &f)
 Pack a float to make it writable. More...
 
std::vector< uint64_t > Serialize (const vec &m)
 Pack a 3D vector to make it writable. More...
 
std::vector< uint64_t > Serialize (const vec6 &m)
 Pack a 6D vector to make it writable. More...
 
std::vector< uint64_t > Serialize (const mat &m)
 Pack a 3x3 matrix to make it writable. More...
 
std::vector< uint64_t > Serialize (const mat6 &m)
 Pack a 6x6 matrix to make it writable. More...
 
std::vector< uint64_t > Serialize (const quaternion &m)
 Pack a quaternion to make it writable. More...
 
std::vector< uint64_t > Serialize (const XYZQuat &m)
 Pack an XYZQuat to make it writable. More...
 
std::vector< uint64_t > Serialize (const std::vector< real > &l)
 Pack a list of floating point numbers to make it writable. More...
 
std::vector< uint64_t > Serialize (const std::vector< vec > &l)
 Pack a list of 3D vectors to make it writable. More...
 
std::vector< uint64_t > Serialize (const std::vector< vec6 > &l)
 Pack a list of 6D vectors to make it writable. More...
 
std::vector< uint64_t > Serialize (const std::vector< mat > &l)
 Pack a list of 3x3 matrices to make it writable. More...
 
std::vector< uint64_t > Serialize (const std::vector< mat6 > &l)
 Pack a list of 6x6 matrices to make it writable. More...
 
std::vector< uint64_t > Serialize (const Eigen::Matrix< real, Eigen::Dynamic, Eigen::Dynamic > &l)
 Pack an arbitrarily large matrix. More...
 
template<typename T >
std::vector< uint64_t > Serialize (const std::vector< std::vector< T >> &l)
 Pack a list of lists to make it writable This function might act recursively. More...
 
uint64_t * Deserialize (const uint64_t *in, uint64_t &out)
 Unpack a loaded unsigned integer. More...
 
uint64_t * Deserialize (const uint64_t *in, int64_t &out)
 Unpack a loaded integer. More...
 
uint64_t * Deserialize (const uint64_t *in, real &out)
 Unpack a loaded floating point number. More...
 
uint64_t * Deserialize (const uint64_t *in, vec &out)
 Unpack a loaded 3D vector. More...
 
uint64_t * Deserialize (const uint64_t *in, vec6 &out)
 Unpack a loaded 6D vector. More...
 
uint64_t * Deserialize (const uint64_t *in, mat &out)
 Unpack a loaded 3x3 matrix. More...
 
uint64_t * Deserialize (const uint64_t *in, mat6 &out)
 Unpack a loaded 6x6 matrix. More...
 
uint64_t * Deserialize (const uint64_t *in, quaternion &out)
 Unpack a loaded quaternion. More...
 
uint64_t * Deserialize (const uint64_t *in, XYZQuat &out)
 Unpack a loaded XYZQuat. More...
 
uint64_t * Deserialize (const uint64_t *in, std::vector< real > &out)
 Unpack a loaded list of floating point numbers. More...
 
uint64_t * Deserialize (const uint64_t *in, std::vector< vec > &out)
 Unpack a loaded list of 3D vectors. More...
 
uint64_t * Deserialize (const uint64_t *in, std::vector< vec6 > &out)
 Unpack a loaded list of 6D vectors. More...
 
uint64_t * Deserialize (const uint64_t *in, std::vector< mat > &out)
 Unpack a loaded list of 3x3 matrices. More...
 
uint64_t * Deserialize (const uint64_t *in, std::vector< mat6 > &out)
 Unpack a loaded list of 6x6 matrices. More...
 
uint64_t * Deserialize (const uint64_t *in, Eigen::Matrix< real, Eigen::Dynamic, Eigen::Dynamic > &out)
 Unpack an arbitrarily large matrix. More...
 
template<typename T >
uint64_t * Deserialize (const uint64_t *in, std::vector< std::vector< T >> &out)
 Unpack a loaded list of lists. More...
 

Protected Attributes

Bodyground
 The ground body.
 
std::vector< Line * > lines
 The lines.
 
std::vector< Point * > points
 The points.
 
std::vector< Rod * > rods
 The rods.
 
std::vector< Body * > bodies
 The bodies.
 
std::string name
 The scheme name.
 
real t
 The simulation time.
 
real t_local
 The local time, within the outer time step.
 
real cfl
 Maximum CFL factor.
 
- Protected Attributes inherited from moordyn::LogUser
Log_log
 The log handler.
 

Detailed Description

Time scheme abstraction.

This class is helping mooring::MoorDyn to can consider every single time scheme in the very same way

Constructor & Destructor Documentation

◆ Scheme()

moordyn::time::Scheme::Scheme ( moordyn::Log log)
inlineprotected

Constructor.

Parameters
logLogging handler

Member Function Documentation

◆ AddBody()

virtual void moordyn::time::Scheme::AddBody ( Body obj)
inlinevirtual

Add a body.

Parameters
objThe body
Exceptions
moordyn::invalid_value_errorIf it has been already registered

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ AddLine()

virtual void moordyn::time::Scheme::AddLine ( Line obj)
inlinevirtual

Add a line.

Parameters
objThe line
Exceptions
moordyn::invalid_value_errorIf it has been already registered

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ AddPoint()

virtual void moordyn::time::Scheme::AddPoint ( Point obj)
inlinevirtual

Add a point.

Parameters
objThe point
Exceptions
moordyn::invalid_value_errorIf it has been already registered

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ AddRod()

virtual void moordyn::time::Scheme::AddRod ( Rod obj)
inlinevirtual

Add a rod.

Parameters
objThe rod
Exceptions
moordyn::invalid_value_errorIf it has been already registered

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ GetCFL()

real moordyn::time::Scheme::GetCFL ( ) const
inline

Get the CFL factor.

Returns
The CFL factor

◆ GetName()

std::string moordyn::time::Scheme::GetName ( ) const
inline

Get the name of the scheme.

Returns
The name

◆ GetState()

virtual moordyn::state::State moordyn::time::Scheme::GetState ( unsigned int  i = 0)
pure virtual

Get the state variable.

Parameters
iThe index of the state variable to take
Returns
The state variable

Implemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ GetTime()

real moordyn::time::Scheme::GetTime ( ) const
inline

Get the simulation time.

Returns
The time
Here is the caller graph for this function:

◆ Init()

virtual void moordyn::time::Scheme::Init ( )
pure virtual

Create an initial state for all the entities.

Note
Just the first state is written. None of the following states, nor the derivatives are initialized in any way.
It is assumed that the coupled entities were already initialized

Implemented in moordyn::time::LocalSchemeBase< NSTATE, NDERIV >, moordyn::time::LocalSchemeBase< 1, 1 >, moordyn::time::LocalSchemeBase< 1, 5 >, moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ LoadState()

virtual void moordyn::time::Scheme::LoadState ( const std::string  filepath,
unsigned int  i = 0 
)
inlinevirtual

Load the system state from a file.

Parameters
filepathThe output file path
iThe index of the state variable to overwrite

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

◆ Next()

void moordyn::time::Scheme::Next ( )
inline

Prepare everything for the next outer time step.

Always call this method before start calling Scheme::Step()

Here is the caller graph for this function:

◆ RemoveBody()

virtual unsigned int moordyn::time::Scheme::RemoveBody ( Body obj)
inlinevirtual

Remove a body.

Parameters
objThe body
Returns
The index of the removed entity
Exceptions
moordyn::invalid_value_errorIf the body has not been registered, or it was already removed

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ RemoveLine()

virtual unsigned int moordyn::time::Scheme::RemoveLine ( Line obj)
inlinevirtual

Remove a line.

Parameters
objThe line
Returns
The index of the removed entity
Exceptions
moordyn::invalid_value_errorIf the line has not been registered, or it was already removed

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ RemovePoint()

virtual unsigned int moordyn::time::Scheme::RemovePoint ( Point obj)
inlinevirtual

Remove a point.

Parameters
objThe point
Returns
The index of the removed entity
Exceptions
moordyn::invalid_value_errorIf the point has not been registered, or it was already removed

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ RemoveRod()

virtual unsigned int moordyn::time::Scheme::RemoveRod ( Rod obj)
inlinevirtual

Remove a rod.

Parameters
objThe rod
Returns
The index of the removed entity
Exceptions
moordyn::invalid_value_errorIf the rod has not been registered, or it was already removed

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

Here is the caller graph for this function:

◆ SaveState()

virtual void moordyn::time::Scheme::SaveState ( const std::string  filepath,
unsigned int  i = 0 
)
inlinevirtual

Save the system state on a file.

Parameters
filepathThe output file path
iThe index of the state variable to serialize
See also
::SerializeState()

Reimplemented in moordyn::time::SchemeBase< NSTATE, NDERIV >, moordyn::time::SchemeBase< 2, 2 >, moordyn::time::SchemeBase< 1, 2 >, moordyn::time::SchemeBase< 2, 1 >, moordyn::time::SchemeBase< 1, 1 >, and moordyn::time::SchemeBase< 5, 4 >.

◆ SetCFL()

void moordyn::time::Scheme::SetCFL ( const real cfl)
inline

Set the CFL factor.

Parameters
cflThe CFL factor
Here is the caller graph for this function:

◆ SetGround()

void moordyn::time::Scheme::SetGround ( Body obj)
inline

Set the ground body.

Parameters
objThe ground body
Here is the caller graph for this function:

◆ SetState()

virtual void moordyn::time::Scheme::SetState ( const moordyn::state::State state,
unsigned int  i = 0 
)
inlinevirtual

◆ SetTime()

void moordyn::time::Scheme::SetTime ( const real time)
inline

Set the simulation time.

Parameters
timeThe time
Note
This method is also calling to Scheme::Next()
Here is the call graph for this function:

◆ Step()

virtual void moordyn::time::Scheme::Step ( real dt)
inlinevirtual

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