|
MoorDyn
|
Implicit Newmark Scheme. More...
#include <Time.hpp>


Public Member Functions | |
| ImplicitNewmarkScheme (moordyn::Log *log, WavesRef waves, unsigned int iters=10, real gamma=0.5, real beta=0.25) | |
| Constructor. More... | |
| ~ImplicitNewmarkScheme () | |
| Destructor. | |
| virtual void | Step (real &dt) |
| Run a time step. More... | |
Public Member Functions inherited from moordyn::time::ImplicitSchemeBase< 2, 3 > | |
| ImplicitSchemeBase (moordyn::Log *log, WavesRef waves, unsigned int iters=10) | |
| Constructor. More... | |
| virtual | ~ImplicitSchemeBase () |
| Destructor. | |
Public Member Functions inherited from moordyn::time::SchemeBase< NSTATE, NDERIV > | |
| 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::State * | rd (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::State * | r (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... | |
| Log * | GetLogger () const |
| Get the log handler. More... | |
Additional Inherited Members | |
Protected Types inherited from moordyn::time::SchemeBase< NSTATE, NDERIV > | |
| typedef struct moordyn::time::SchemeBase::_mask | mask |
| A mask to determine which entities shall be computed. More... | |
Protected Member Functions inherited from moordyn::time::ImplicitSchemeBase< 2, 3 > | |
| unsigned int | iters () const |
| Get the number of subiterations. More... | |
| real | c0 () const |
| Get the constant relaxation part coefficient. More... | |
| void | c0 (const real c) |
| Set the constant relaxation part coefficient. More... | |
| real | c1 () const |
| Get the tanh relaxation part coefficient. More... | |
| void | c1 (const real c) |
| Set the tanh relaxation part coefficient. More... | |
| real | Relax (const unsigned int &iter) |
| Compute the relaxation factor. More... | |
Protected Member Functions inherited from moordyn::time::SchemeBase< NSTATE, NDERIV > | |
| 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< NSTATE, NDERIV > | |
| 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< Waves > | waves |
| The waves instance. | |
| mask | _calc_mask |
| The SchemeBase::CalcStateDeriv() mask. | |
Protected Attributes inherited from moordyn::time::Scheme | |
| Body * | ground |
| 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. | |
Implicit Newmark Scheme.
Implicit Wilson Scheme.
The implicit Newmark scheme is quite popular because is able to produce unconditionally stable time integrators for dynamic response of structures and solids, specifically on its Average Constant Acceleration incarnation
The implicit Wilson scheme is so far similar to the Implicit Euler scheme, but the derivatives are computed considering a time step larger than the integration one, instead of lower.
With the computed acceleration a Taylor series expansion is practised to integrate.
| moordyn::time::ImplicitNewmarkScheme::ImplicitNewmarkScheme | ( | moordyn::Log * | log, |
| moordyn::WavesRef | waves, | ||
| unsigned int | iters = 10, |
||
| real | gamma = 0.5, |
||
| real | beta = 0.25 |
||
| ) |
Constructor.
| log | Logging handler |
| waves | Waves instance |
| iters | The number of inner iterations to find the derivative |
| gamma | The gamma factor |
| beta | The beta factor |

|
virtual |
Run a time step.
This function is the one that must be specialized on each time scheme
| dt | Time step |
Reimplemented from moordyn::time::SchemeBase< NSTATE, NDERIV >.
