|
IFEM
90A354
|
Explicit Runge-Kutta based time stepping for SIM classes. More...
#include <SIMExplicitRK.h>


Public Member Functions | |
| SIMExplicitRK (Solver &solv, Method type, bool standalone=true) | |
| Constructor. More... | |
| const ProcessAdm & | getProcessAdm () const |
| Returns the parallel process administrator. More... | |
| virtual bool | solveStep (TimeStep &tp) |
| Computes the solution for the current time step. More... | |
| bool | solveRK (Vectors &stages, const TimeStep &tp) |
| Applies the Runge-Kutta scheme. More... | |
| bool | advanceStep (TimeStep &tp) |
| Advances the time step one step forward. More... | |
| bool | saveModel (char *fileName, int &geoBlk, int &nBlock) |
| Opens a new VTF-file and writes the model geometry to it. More... | |
| bool | saveStep (const TimeStep &tp, int &nBlock) |
| Saves the converged results of a given time step to VTF file. More... | |
| void | registerFields (DataExporter &exporter) |
| Registers fields for output to a data exporter. More... | |
| bool | serialize (std::map< std::string, std::string > &data) |
| Serialize internal state for restarting purposes. More... | |
| bool | deSerialize (const std::map< std::string, std::string > &data) |
| Set internal state from a serialized state. More... | |
| void | setLinear (bool enable) |
| Mark operator as linear to avoid repeated assembly and factorization. | |
Protected Attributes | |
| Solver & | solver |
| Reference to simulator. | |
| RKTableaux | RK |
| Tableaux of Runge-Kutta coefficients. | |
| bool | alone |
| If true, this is a standalone solver. | |
| bool | linear = false |
| If true mass matrix is constant. | |
Explicit Runge-Kutta based time stepping for SIM classes.
Template can be instanced over any SIM implementing ISolver, and which derive from SIMbase.
|
inline |
Constructor.
| solv | The simulator to do time stepping for |
| type | The Runge-Kutta scheme to use |
| standalone | If true, this is a standalone solver |
References TimeIntegration::RKTableaux::A, TimeIntegration::RKTableaux::b, TimeIntegration::RKTableaux::c, TimeIntegration::EULER, TimeIntegration::HEUN, TimeIntegration::RKTableaux::order, utl::matrix< T >::resize(), TimeIntegration::SIMExplicitRK< Solver >::RK, TimeIntegration::RK3, and TimeIntegration::RK4.
|
inline |
Advances the time step one step forward.
References TimeIntegration::SIMExplicitRK< Solver >::solver.
|
inline |
Set internal state from a serialized state.
| [in] | data | Container for serialized data |
References TimeIntegration::SIMExplicitRK< Solver >::solver.
|
inline |
Returns the parallel process administrator.
References TimeIntegration::SIMExplicitRK< Solver >::solver.
|
inline |
Registers fields for output to a data exporter.
References TimeIntegration::SIMExplicitRK< Solver >::solver.
|
inline |
Opens a new VTF-file and writes the model geometry to it.
| [in] | fileName | File name used to construct the VTF-file name from |
| [out] | geoBlk | Running geometry block counter |
| [out] | nBlock | Running result block counter |
References TimeIntegration::SIMExplicitRK< Solver >::solver.
|
inline |
Saves the converged results of a given time step to VTF file.
| [in] | tp | Time stepping parameters |
| [in] | nBlock | Running VTF block counter |
References TimeIntegration::SIMExplicitRK< Solver >::solver.
|
inline |
Serialize internal state for restarting purposes.
| data | Container for serialized data |
References TimeIntegration::SIMExplicitRK< Solver >::solver.
|
inline |
Applies the Runge-Kutta scheme.
| stages | Vector of stage vectors | |
| [in] | tp | Time stepping information |
References TimeIntegration::RKTableaux::A, utl::vector< T >::add(), TimeIntegration::SIMExplicitRK< Solver >::alone, TimeIntegration::RKTableaux::b, TimeIntegration::RKTableaux::c, TimeDomain::dt, TimeIntegration::SIMExplicitRK< Solver >::linear, utl::vector< T >::resize(), TimeIntegration::SIMExplicitRK< Solver >::RK, TimeIntegration::SIMExplicitRK< Solver >::solver, TimeStep::step, TimeDomain::t, and TimeStep::time.
Referenced by TimeIntegration::SIMExplicitRK< Solver >::solveStep(), and TimeIntegration::SIMExplicitRKE< Solver >::solveStep().
|
inlinevirtual |
Computes the solution for the current time step.
Reimplemented in TimeIntegration::SIMExplicitRKE< Solver >.
References TimeIntegration::SIMExplicitRK< Solver >::alone, TimeIntegration::SIMExplicitRK< Solver >::solver, TimeIntegration::SIMExplicitRK< Solver >::solveRK(), TimeStep::step, TimeDomain::t, and TimeStep::time.