13#ifndef SIM_EXPLICIT_LMM_H_
14#define SIM_EXPLICIT_LMM_H_
43 const std::string& solField =
"") :
69 solver.getProcessAdm().cout <<
"\n step = "<< tp.
step <<
" time = "<< tp.
time.
t << std::endl;
82 if (!
solver.updateDirichlet(time.
t, &zeroRef,
true))
91 const std::vector<std::vector<double>> AB_coefs = {
94 {5.0/12.0, -16.0/12.0, 23.0/12.0},
95 {-9.0/24.0, 37.0/24, -59.0/24.0, 55.0/24.0},
96 {251.0/720.0, -1274.0/720.0, 2616.0/720.0, -2774.0/720.0, 1901.0/720.0}
100 const std::vector<double>& AB_coef = AB_coefs[c_order];
105 for (
size_t j = 0; j < AB_coef.size()-1; ++j)
112 solver.setMode(SIM::RHS_ONLY);
125 solver.getProblem()->getField1Name(1).c_str());
136 for (
int j = 2; j <=
order; ++j) {
137 std::stringstream str;
139 if (
solver.hasIC(str.str())) {
144 if (!
solver.updateDirichlet(time.
t, &zeroRef,
true))
158 loads.back().reset();
159 for (
int j =
order-2; j >= 0; --j)
163 return solver.advanceStep(tp);
167 bool saveModel(
char* fileName,
int& geoBlk,
int& nBlock)
169 return solver.saveModel(fileName, geoBlk, nBlock);
175 return solver.saveStep(tp, nBlock);
181 solver.registerFields(exporter);
188 return solver.serialize(data);
195 return solver.deSerialize(data);
203 std::vector<std::unique_ptr<SystemVector>>
loads;
std::vector< Vector > Vectors
An array of real-valued vectors with algebraic operations.
Definition MatVec.h:37
General representation of system matrices and vectors.
Various helpers for time integration.
Class for encapsulation of general time stepping parameters.
Administer and write data using DataWriters.
Definition DataExporter.h:38
Class for administration of MPI processes in IFEM library.
Definition ProcessAdm.h:33
Base class for representing a system vector on different formats.
Definition SystemMatrix.h:32
virtual void mult(Real alpha)=0
Multiplication with a scalar.
Explicit linear multistep time stepping for SIM classes.
Definition SIMExplicitLMM.h:35
bool serialize(std::map< std::string, std::string > &data)
Serialize internal state for restarting purposes.
Definition SIMExplicitLMM.h:186
bool hasICs
If true, start with full order.
Definition SIMExplicitLMM.h:207
bool saveStep(const TimeStep &tp, int &nBlock)
Saves the converged results of a given time step to VTF file.
Definition SIMExplicitLMM.h:173
bool linear
If true, mass matrix is constant.
Definition SIMExplicitLMM.h:208
bool solveStep(TimeStep &tp)
Computes the solution for the current time step.
Definition SIMExplicitLMM.h:66
Solver & solver
Reference to simulator.
Definition SIMExplicitLMM.h:202
bool advanceStep(TimeStep &tp)
Advances the time step one step forward.
Definition SIMExplicitLMM.h:131
const std::string fieldName
Name of primary solution fields (for ICs)
Definition SIMExplicitLMM.h:206
bool alone
If true, this is a standalone solver.
Definition SIMExplicitLMM.h:205
bool deSerialize(const std::map< std::string, std::string > &data)
Set internal state from a serialized state.
Definition SIMExplicitLMM.h:193
bool saveModel(char *fileName, int &geoBlk, int &nBlock)
Opens a new VTF-file and writes the model geometry to it.
Definition SIMExplicitLMM.h:167
std::vector< std::unique_ptr< SystemVector > > loads
Unscaled load vectors.
Definition SIMExplicitLMM.h:203
int order
Order of method.
Definition SIMExplicitLMM.h:204
const ProcessAdm & getProcessAdm() const
Returns the parallel process administrator.
Definition SIMExplicitLMM.h:63
SIMExplicitLMM(Solver &solv, Method type, bool standalone=true, const std::string &solField="")
Constructor.
Definition SIMExplicitLMM.h:42
void setLinear(bool enable)
Mark operator as linear to avoid repeated assembly and factorization.
Definition SIMExplicitLMM.h:199
void registerFields(DataExporter &exporter)
Registers fields for output to a data exporter.
Definition SIMExplicitLMM.h:179
Class for encapsulation of general time stepping parameters.
Definition TimeStep.h:31
int step
Time step counter.
Definition TimeStep.h:72
TimeDomain time
Time domain data.
Definition TimeStep.h:74
A vector class with some added algebraic operations.
Definition matrix.h:64
Utilities for time integration.
Definition BDF.h:21
Method
Enum defining various solution methods.
Definition TimeIntUtils.h:28
@ AB2
Second order Adams-Bashforth, explicit.
Definition TimeIntUtils.h:37
@ AB3
Third order Adams-Bashforth, explicit.
Definition TimeIntUtils.h:38
@ AB4
Fourth order Adams-Bashforth, explicit.
Definition TimeIntUtils.h:39
@ AB5
Fifth order Adams-Bashforth, explicit.
Definition TimeIntUtils.h:40
Struct representing the time domain.
Definition TimeDomain.h:23
double dt
Current timestep (or load parameter) increment.
Definition TimeDomain.h:25
double t
Current time (or pseudo time, load parameter)
Definition TimeDomain.h:24