Forked from
agnumpde / dune-tectonic
165 commits behind the upstream repository.
-
Elias Pipping authoredElias Pipping authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
newmark.hh 1.44 KiB
#ifndef SRC_TIMESTEPPING_NEWMARK_HH
#define SRC_TIMESTEPPING_NEWMARK_HH
template <class Vector, class Matrix, class Function, size_t dim>
class Newmark : public TimeSteppingScheme<Vector, Matrix, Function, dim> {
public:
Newmark(Matrix const &_A, Matrix const &_M, Matrix const &_C,
Vector const &_u_initial, Vector const &_ur_initial,
Vector const &_v_initial, Vector const &_vr_initial,
Vector const &_a_initial,
Dune::BitSetVector<dim> const &_dirichletNodes,
Function const &_dirichletFunction);
void nextTimeStep() override;
void setup(Vector const &, double, double, Vector &, Vector &,
Matrix &) override;
void postProcess(Vector const &) override;
void postProcessRelativeQuantities() override;
void extractDisplacement(Vector &) const override;
void extractRelativeDisplacement(Vector &) const override;
void extractVelocity(Vector &) const override;
void extractRelativeVelocity(Vector &) const override;
void extractOldVelocity(Vector &) const override;
private:
Matrix const &A;
Matrix const &M;
Matrix const &C;
Vector u;
Vector ur;
Vector v;
Vector vr;
Vector a;
Dune::BitSetVector<dim> const &dirichletNodes;
Function const &dirichletFunction;
double dirichletValue;
Vector u_o;
Vector ur_o;
Vector v_o;
Vector vr_o;
Vector a_o;
double tau;
bool postProcessCalled = false;
bool postProcessRelativeQuantitiesCalled = false;
};
#endif