69 template <
class TAlgebra>
185 std::vector<number>& vSA,
197 return currentTime + dt;
SmartPtr< IDomainDiscretization< TAlgebra > > m_spDomDisc
Definition: linear_implicit_timestep.h:74
ITimeDiscretization< TAlgebra > base_type
Type of base class.
Definition: linear_implicit_timestep.h:77
static const size_t m_prevSteps
number of previous steps needed.
Definition: linear_implicit_timestep.h:200
void disable_linear_mode()
Definition: linear_implicit_timestep.h:175
void assemble_jacobian(matrix_type &J, const vector_type &u, const GridLevel &gl)
Meant to assemble J(u) c = d(u), but abused here... (u not used!)
Definition: linear_implicit_timestep.cpp:195
virtual number future_time() const
Definition: linear_implicit_timestep.h:150
SmartPtr< AssembledLinearOperator< algebra_type > > m_spGammaOp
Gamma operator.
Definition: linear_implicit_timestep.h:220
algebra_type::vector_type vector_type
Type of algebra vector.
Definition: linear_implicit_timestep.h:86
SmartPtr< matrix_type > m_spMatrixCacheMk
Definition: linear_implicit_timestep.h:223
bool use_linear_mode() const
Definition: linear_implicit_timestep.h:176
SmartPtr< IDomainDiscretization< algebra_type > > m_spMatrixJDisc
Definition: linear_implicit_timestep.h:213
TAlgebra algebra_type
Type of algebra.
Definition: linear_implicit_timestep.h:80
LinearImplicitEuler(SmartPtr< IDomainDiscretization< algebra_type > > spDD)
CTOR.
Definition: linear_implicit_timestep.h:93
std::vector< number > m_vScaleMass
Scaling for mass part.
Definition: linear_implicit_timestep.h:201
void enable_linear_mode()
Some simplifications for linear systems. (In this case, the mass matrix is not re-assembled....
Definition: linear_implicit_timestep.h:174
LinearImplicitEuler(SmartPtr< IDomainDiscretization< algebra_type > > spDefectDisc, SmartPtr< IDomainDiscretization< algebra_type > > spMatrixJDisc, SmartPtr< IDomainDiscretization< algebra_type > > spGammaDisc)
CTOR.
Definition: linear_implicit_timestep.h:116
IDomainDiscretization< algebra_type > domain_discretization_type
Domain Discretization type.
Definition: linear_implicit_timestep.h:89
virtual size_t num_prev_steps() const
Definition: linear_implicit_timestep.h:133
virtual ~LinearImplicitEuler()
DTOR.
Definition: linear_implicit_timestep.h:129
bool m_bMatrixJNeedsUpdate
Definition: linear_implicit_timestep.h:215
virtual void set_stage(size_t stage)
Definition: linear_implicit_timestep.h:170
bool m_useCachedMatrices
Definition: linear_implicit_timestep.h:225
SmartPtr< IDomainDiscretization< algebra_type > > m_spGammaDisc
Gamma disc.
Definition: linear_implicit_timestep.h:219
void set_gamma_disc(SmartPtr< IDomainDiscretization< algebra_type > > spGammaDisc)
Definition: linear_implicit_timestep.h:241
void assemble_linear(matrix_type &A, vector_type &b, const GridLevel &gl)
Should return (M+tau A) delta = tau f.
Definition: linear_implicit_timestep.cpp:380
number m_futureTime
Future Time.
Definition: linear_implicit_timestep.h:206
void set_matrix_cache(bool useCache)
Definition: linear_implicit_timestep.h:180
SmartPtr< AssembledLinearOperator< algebra_type > > m_spMatrixJOp
Operator.
Definition: linear_implicit_timestep.h:214
void adjust_solution(vector_type &u, const GridLevel &gl)
Definition: linear_implicit_timestep.cpp:147
virtual void prepare_step(SmartPtr< VectorTimeSeries< vector_type > > prevSol, number dt)
Definition: linear_implicit_timestep.cpp:50
void assemble_defect(vector_type &d, const vector_type &u, const GridLevel &gl)
Meant to assemble d(u), but abused here... (u not used!)
Definition: linear_implicit_timestep.cpp:305
LinearImplicitEuler(SmartPtr< IDomainDiscretization< algebra_type > > spDefectDisc, SmartPtr< IDomainDiscretization< algebra_type > > spMatrixJDisc)
CTOR.
Definition: linear_implicit_timestep.h:104
void invalidate()
Invalidate all cached operators.
Definition: linear_implicit_timestep.h:230
bool m_useLinearMode
Definition: linear_implicit_timestep.h:216
virtual void finish_step(SmartPtr< VectorTimeSeries< vector_type > > currSol)
Definition: linear_implicit_timestep.h:144
algebra_type::matrix_type matrix_type
Type of algebra matrix.
Definition: linear_implicit_timestep.h:83
number m_dt
Time Step size.
Definition: linear_implicit_timestep.h:205
virtual void finish_step_elem(SmartPtr< VectorTimeSeries< vector_type > > currSol, const GridLevel &gl)
Definition: linear_implicit_timestep.cpp:163
virtual size_t num_stages() const
Definition: linear_implicit_timestep.h:169
virtual void prepare_step_elem(SmartPtr< VectorTimeSeries< vector_type > > prevSol, number dt, const GridLevel &gl)
Definition: linear_implicit_timestep.cpp:102
SmartPtr< VectorTimeSeries< vector_type > > m_pPrevSol
Previous solutions.
Definition: linear_implicit_timestep.h:204
void disable_matrix_cache()
Definition: linear_implicit_timestep.h:179
void assemble_rhs(vector_type &b, const vector_type &u, const GridLevel &gl)
Definition: linear_implicit_timestep.cpp:354
void invalidate_gamma()
Invalidate Gamma operator.
Definition: linear_implicit_timestep.h:238
virtual number update_scaling(std::vector< number > &vSM, std::vector< number > &vSA, number dt, number currentTime, ConstSmartPtr< VectorTimeSeries< vector_type > > prevSol)
Definition: linear_implicit_timestep.h:184
void enable_matrix_cache()
Definition: linear_implicit_timestep.h:178
std::vector< number > m_vScaleStiff
Scaling for stiffness part.
Definition: linear_implicit_timestep.h:202
bool m_bGammaNeedsUpdate
Definition: linear_implicit_timestep.h:221
ParallelMatrix< SparseMatrix< double > > matrix_type
ParallelVector< Vector< double > > vector_type
const NullSmartPtr SPNULL