12#ifndef BELFEM_CL_IWG_TIMESTEP_HPP
13#define BELFEM_CL_IWG_TIMESTEP_HPP
62 bool mCoeffsDirty = true ;
71 uint mStepCountSnapshot = 0 ;
72 bool mHaveSavepoint = false ;
84 uint mOrderActive = 1 ;
87 bool mHaveStiffness = true ;
265 real & aLastDeltaTime )
const ;
281 const uint aDepth = 0 )
const ;
307 const uint aStepCount,
308 const real aLastDeltaTime ) ;
366 ? ( mStepCount > 0 ? mStepCount : 1 )
380 create_old_dof_fields();
385 static_subfield( Matrix< real > & aM, Vector< real > & aRHS );
389 explicit_euler( Matrix< real > & aM, Vector< real > & aRHS );
394 crank_nicolson( Matrix< real > & aM, Vector< real > & aRHS );
399 galerkin( Matrix< real > & aM, Vector< real > & aRHS );
406 Vector< real > & aRHS );
410 stiffness_matrix_only(
412 Vector< real > & aRHS );
419 Vector< real > & aRHS );
426 Vector< real > & aRHS );
433 Vector< real > & aRHS );
440 Vector< real > & aRHS );
447 Vector< real > & aRHS );
454 Vector< real > & aRHS );
461 Vector< real > & aRHS );
468 Vector< real > & aRHS );
475 Vector< real > & aRHS );
482 Vector< real > & aRHS );
487 compute_bdf_coeffs_2();
492 compute_bdf_coeffs_3();
497 compute_bdf_coeffs_4();
502 compute_bdf_coeffs_5();
507 derivative( Matrix< real > & aJ,
508 Vector< real > & aRHS );
513 euler_no_stiffness( Matrix< real > & aJ,
514 Vector< real > & aRHS );
519 derivative_no_stiffness( Matrix< real > & aJ,
520 Vector< real > & aRHS );
526 timestepping_order()
const override ;
547 return mOrderActive ;
561 return mCoeffsDirty ? this->ramped_order() : mOrderActive ;
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
abstract interface of the dof manager as seen by the group classes and the IWG; DofManager is its onl...
Definition cl_FEM_DofManagerBase.hpp:44
Definition cl_FEM_Element.hpp:41
void compute_jacobian_and_rhs(Element *aElement, Matrix< real > &aJacobian, Vector< real > &aRHS) override
Definition cl_IWG_Timestep.cpp:796
EulerMethod method() const override
Definition cl_IWG_Timestep.hpp:535
void save_history_state(Vector< real > &aH, uint &aStepCount, real &aLastDeltaTime) const
Export the multi-step integrator state for the memdump, so a warm restart can resume at full BDF orde...
Definition cl_IWG_Timestep.cpp:650
void compute_bdf_coefficients()
compute BDF coefficients (alpha, beta) for variable-step BDF and select the scheme for the upcoming s...
Definition cl_IWG_Timestep.cpp:401
TimestepMatrices * matrices() override
Definition cl_IWG_Timestep.cpp:725
void compute_timestep(Matrix< real > &aJ, Vector< real > &aRHS)
Definition cl_IWG_Timestep.cpp:826
void make_savepoint()
save a deep copy of all dof fields, the step-size history and the step counter.
Definition cl_IWG_Timestep.cpp:584
void reset_fields() override
called by main file to copy fields from last timestep eg.
Definition cl_IWG_Timestep.cpp:541
void compute_mkf(Element *aElement) override
a default interface to compute the matrices of a timestepping scheme of shape of
Definition cl_IWG_Timestep.cpp:733
friend class BdfCoefficientProbe
Definition cl_IWG_Timestep.hpp:49
void set_field(DofManagerBase *aField) override
Definition cl_IWG_Timestep.cpp:839
TimestepMatrices * mTimeStepMatrices
Definition cl_IWG_Timestep.hpp:108
bool restore_history_state(const Vector< real > &aH, const uint aStepCount, const real aLastDeltaTime)
Counterpart of save_history_state.
Definition cl_IWG_Timestep.cpp:663
void shift_fields() override
called by main file to copy fields into last timestep eg.
Definition cl_IWG_Timestep.cpp:362
void history_field_labels(Cell< string > &aParents, Cell< string > &aHistory, const uint aDepth=0) const
the dof labels ( aParents ) and their numbered history labels ( aHistory, label + "0"....
Definition cl_IWG_Timestep.cpp:257
void set_timestepping_method(const EulerMethod aMethod, const bool aHaveStiffness=true) override
Definition cl_IWG_Timestep.cpp:62
const Vector< real > & collect_qhist()
The beta-weighted dof history of the scheme running this step:
Definition cl_IWG_Timestep.cpp:741
uint mOrder
Definition cl_IWG_Timestep.hpp:106
void restore_savepoint()
restore the state stored by make_savepoint
Definition cl_IWG_Timestep.cpp:623
IWG_Timestep(const IwgType aType, const ModelDimensionality aDimensionality, const IwgMode aMode=IwgMode::Iterative, const SymmetryMode aSymmetryMode=SymmetryMode::Unsymmetric, const DofMode aDofMode=DofMode::AllBlocksEqual, const SideSetDofLinkMode aSideSetDofLinkMode=SideSetDofLinkMode::FacetOnly)
Definition cl_IWG_Timestep.cpp:32
uint order_pending() const
Definition cl_IWG_Timestep.hpp:559
uint order_active() const
Definition cl_IWG_Timestep.hpp:545
virtual uint timestepping_order() const
Definition cl_IWG.cpp:2212
Container for element-level DENSE matrices in transient nonlinear FEM.
Definition cl_TimestepMatrices.hpp:71
Definition cl_IFB_LINE3.hpp:21
SideSetDofLinkMode
how the dofs of a sideset element are linked to its facet, master and slave elements ( six modes plus...
Definition en_IWG_SideSetDofLinkMode.hpp:25
@ FacetOnly
Definition en_IWG_SideSetDofLinkMode.hpp:26
USER GUIDES:
Definition cl_Capacitor.cpp:16
IwgMode
Definition en_IWGs.hpp:81
@ Iterative
Definition en_IWGs.hpp:83
IwgType
Definition en_IWGs.hpp:64
EulerMethod
Definition en_SolverEnums.hpp:47
@ BackwardDifference1
Definition en_SolverEnums.hpp:52
@ BackwardDifference5
Definition en_SolverEnums.hpp:56
@ BackwardDifference2
Definition en_SolverEnums.hpp:53
@ BackwardDifference3
Definition en_SolverEnums.hpp:54
@ BackwardDifference4
Definition en_SolverEnums.hpp:55
DofMode
Definition cl_IWG.hpp:38
@ AllBlocksEqual
Definition cl_IWG.hpp:39
unsigned int uint
Definition typedefs.hpp:30
ModelDimensionality
Definition en_IWGs.hpp:20
SymmetryMode
Definition en_SolverEnums.hpp:36
@ Unsymmetric
Definition en_SolverEnums.hpp:37
double real
Definition typedefs.hpp:36
#define BELFEM_QUIET_NAN
Definition typedefs.hpp:87