MoorDyn
Public Member Functions | List of all members
moordyn::time::RK4Scheme Class Referencefinal

4th order Runge-Kutta time scheme More...

#include <Time.hpp>

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

Public Member Functions

 RK4Scheme (moordyn::Log *log, WavesRef waves)
 Constructor. More...
 
 ~RK4Scheme ()
 Destructor.
 
virtual void Step (real &dt)
 Run a time step. More...
 
- Public Member Functions inherited from moordyn::time::SchemeBase< 5, 4 >
virtual ~SchemeBase ()
 Destructor.
 
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...
 
virtual void Init ()
 Create an initial state for all the entities. More...
 
virtual void SetState (const 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...
 
state::Staterd (unsigned int i=0)
 Get the state derivative. More...
 
virtual std::vector< uint64_t > Serialize (void)
 Produce the packed data to be saved. More...
 
virtual uint64_t * Deserialize (const uint64_t *data)
 Unpack the data to restore the Serialized information. More...
 
state::Stater (unsigned int i=0)
 Get the state. More...
 
state::State GetState (unsigned int i=0)
 Get the state variable. More...
 
- Public Member Functions inherited from moordyn::time::Scheme
virtual ~Scheme ()
 Destructor.
 
void SetGround (Body *obj)
 Set the ground 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...
 
- 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...
 
- 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...
 

Additional Inherited Members

- Protected Types inherited from moordyn::time::SchemeBase< 5, 4 >
typedef struct moordyn::time::SchemeBase::_mask mask
 A mask to determine which entities shall be computed. More...
 
- Protected Member Functions inherited from moordyn::time::SchemeBase< 5, 4 >
 SchemeBase (moordyn::Log *log, moordyn::WavesRef waves)
 Constructor. More...
 
void Update (real t_local, unsigned int substep=0)
 Update all the entities to set the state. More...
 
void CalcStateDeriv (unsigned int substep=0)
 Compute the time derivatives and store them. More...
 
- Protected Member Functions inherited from moordyn::time::Scheme
 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 inherited from moordyn::time::SchemeBase< 5, 4 >
std::array< moordyn::state::State *, NSTATE > _r
 The list of states.
 
std::array< moordyn::state::State *, NDERIV > _rd
 The list of state derivatives.
 
std::shared_ptr< Waveswaves
 The waves instance.
 
mask _calc_mask
 The SchemeBase::CalcStateDeriv() mask.
 
- Protected Attributes inherited from moordyn::time::Scheme
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

4th order Runge-Kutta time scheme

A very popular time integration scheme, it is however computationally expensive, requiring 4 computations of the derivative per time step. On the other hand, it might be possible to increase the time step size, compensating such a drawback

Constructor & Destructor Documentation

◆ RK4Scheme()

moordyn::time::RK4Scheme::RK4Scheme ( moordyn::Log log,
moordyn::WavesRef  waves 
)

Constructor.

Parameters
logLogging handler
wavesWaves instance

Member Function Documentation

◆ Step()

void moordyn::time::RK4Scheme::Step ( real dt)
virtual

Run a time step.

This function is the one that must be specialized on each time scheme

Parameters
dtTime step

Reimplemented from moordyn::time::SchemeBase< 5, 4 >.

Here is the call graph for this function:

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