Skip to content
Snippets Groups Projects
Commit fa0910dd authored by Elias Pipping's avatar Elias Pipping
Browse files

[Output ] Kill relative output

parent b75495c2
Branches
No related tags found
No related merge requests found
...@@ -72,7 +72,6 @@ int FixedPointIterator<Factory, StateUpdater, VelocityUpdater>::run( ...@@ -72,7 +72,6 @@ int FixedPointIterator<Factory, StateUpdater, VelocityUpdater>::run(
DUNE_THROW(Dune::Exception, "FPI failed to converge"); DUNE_THROW(Dune::Exception, "FPI failed to converge");
velocityUpdater->postProcess(velocityIterate); velocityUpdater->postProcess(velocityIterate);
velocityUpdater->postProcessRelativeQuantities();
return fixedPointIteration; return fixedPointIteration;
} }
......
...@@ -311,8 +311,6 @@ int main(int argc, char *argv[]) { ...@@ -311,8 +311,6 @@ int main(int argc, char *argv[]) {
u_initial = 0.0; u_initial = 0.0;
solveLinearProblem(dirichletNodes, A, ell0, u_initial, ANorm, solveLinearProblem(dirichletNodes, A, ell0, u_initial, ANorm,
parset.sub("u0.solver")); parset.sub("u0.solver"));
Vector ur_initial(leafVertexCount);
ur_initial = 0.0;
ScalarVector alpha_initial(leafVertexCount); ScalarVector alpha_initial(leafVertexCount);
alpha_initial = parset.get<double>("boundary.friction.initialAlpha"); alpha_initial = parset.get<double>("boundary.friction.initialAlpha");
...@@ -333,8 +331,6 @@ int main(int argc, char *argv[]) { ...@@ -333,8 +331,6 @@ int main(int argc, char *argv[]) {
velocityDirichletFunction.evaluate(0.0, v_initial_const); velocityDirichletFunction.evaluate(0.0, v_initial_const);
assert(std::abs(v_initial_const) < 1e-14); assert(std::abs(v_initial_const) < 1e-14);
} }
Vector vr_initial(leafVertexCount);
vr_initial = 0.0;
Vector a_initial(leafVertexCount); Vector a_initial(leafVertexCount);
a_initial = 0.0; a_initial = 0.0;
...@@ -386,7 +382,7 @@ int main(int argc, char *argv[]) { ...@@ -386,7 +382,7 @@ int main(int argc, char *argv[]) {
frictionWriter.writeKinetics(_u, _v); frictionWriter.writeKinetics(_u, _v);
frictionWriter.writeOther(c, _alpha); frictionWriter.writeOther(c, _alpha);
}; };
report(ur_initial, vr_initial, alpha_initial); report(u_initial, v_initial, alpha_initial);
MyVTKWriter<typename MyAssembler::VertexBasis, MyVTKWriter<typename MyAssembler::VertexBasis,
typename MyAssembler::CellBasis> const typename MyAssembler::CellBasis> const
...@@ -396,7 +392,7 @@ int main(int argc, char *argv[]) { ...@@ -396,7 +392,7 @@ int main(int argc, char *argv[]) {
ScalarVector stress; ScalarVector stress;
myAssembler.assembleVonMisesStress( myAssembler.assembleVonMisesStress(
body.getYoungModulus(), body.getPoissonRatio(), u_initial, stress); body.getYoungModulus(), body.getPoissonRatio(), u_initial, stress);
vtkWriter.write(0, ur_initial, vr_initial, alpha_initial, stress); vtkWriter.write(0, u_initial, v_initial, alpha_initial, stress);
} }
SpecialWriter<GridView, dims> specialVelocityWriter("specialVelocities", SpecialWriter<GridView, dims> specialVelocityWriter("specialVelocities",
...@@ -423,8 +419,7 @@ int main(int argc, char *argv[]) { ...@@ -423,8 +419,7 @@ int main(int argc, char *argv[]) {
parset.get<double>("boundary.friction.V0")), parset.get<double>("boundary.friction.V0")),
initTimeStepper(parset.get<Config::scheme>("timeSteps.scheme"), initTimeStepper(parset.get<Config::scheme>("timeSteps.scheme"),
velocityDirichletFunction, dirichletNodes, M, A, C, velocityDirichletFunction, dirichletNodes, M, A, C,
u_initial, ur_initial, v_initial, vr_initial, u_initial, v_initial, a_initial));
a_initial));
auto const refinementTolerance = auto const refinementTolerance =
parset.get<double>("timeSteps.refinementTolerance"); parset.get<double>("timeSteps.refinementTolerance");
...@@ -449,28 +444,27 @@ int main(int argc, char *argv[]) { ...@@ -449,28 +444,27 @@ int main(int argc, char *argv[]) {
reportTimeStep(adaptiveTimeStepper.getRelativeTime(), reportTimeStep(adaptiveTimeStepper.getRelativeTime(),
adaptiveTimeStepper.getRelativeTau()); adaptiveTimeStepper.getRelativeTau());
Vector u, ur, vr; Vector u, v;
ScalarVector alpha; ScalarVector alpha;
current.second->extractDisplacement(u); current.second->extractDisplacement(u);
current.second->extractRelativeDisplacement(ur); current.second->extractVelocity(v);
current.second->extractRelativeVelocity(vr);
current.first->extractAlpha(alpha); current.first->extractAlpha(alpha);
report(ur, vr, alpha); report(u, v, alpha);
{ {
BasisGridFunction<typename MyAssembler::VertexBasis, Vector> velocity(
myAssembler.vertexBasis, v);
BasisGridFunction<typename MyAssembler::VertexBasis, Vector> BasisGridFunction<typename MyAssembler::VertexBasis, Vector>
relativeVelocity(myAssembler.vertexBasis, vr); displacement(myAssembler.vertexBasis, u);
BasisGridFunction<typename MyAssembler::VertexBasis, Vector> specialVelocityWriter.write(velocity);
relativeDisplacement(myAssembler.vertexBasis, ur); specialDisplacementWriter.write(displacement);
specialVelocityWriter.write(relativeVelocity);
specialDisplacementWriter.write(relativeDisplacement);
} }
if (parset.get<bool>("io.writeVTK")) { if (parset.get<bool>("io.writeVTK")) {
ScalarVector stress; ScalarVector stress;
myAssembler.assembleVonMisesStress(body.getYoungModulus(), myAssembler.assembleVonMisesStress(body.getYoungModulus(),
body.getPoissonRatio(), u, stress); body.getPoissonRatio(), u, stress);
vtkWriter.write(timeStep, ur, vr, alpha, stress); vtkWriter.write(timeStep, u, v, alpha, stress);
} }
timeStep++; timeStep++;
} }
......
...@@ -14,11 +14,8 @@ class TimeSteppingScheme { ...@@ -14,11 +14,8 @@ class TimeSteppingScheme {
Vector &rhs, Vector &iterate, Matrix &AB) = 0; Vector &rhs, Vector &iterate, Matrix &AB) = 0;
void virtual postProcess(Vector const &iterate) = 0; void virtual postProcess(Vector const &iterate) = 0;
void virtual postProcessRelativeQuantities() = 0;
void virtual extractDisplacement(Vector &displacement) const = 0; void virtual extractDisplacement(Vector &displacement) const = 0;
void virtual extractRelativeDisplacement(Vector &displacement) const = 0;
void virtual extractVelocity(Vector &velocity) const = 0; void virtual extractVelocity(Vector &velocity) const = 0;
void virtual extractRelativeVelocity(Vector &velocity) const = 0;
void virtual extractOldVelocity(Vector &velocity) const = 0; void virtual extractOldVelocity(Vector &velocity) const = 0;
std::shared_ptr< std::shared_ptr<
...@@ -36,19 +33,17 @@ initTimeStepper(Config::scheme scheme, ...@@ -36,19 +33,17 @@ initTimeStepper(Config::scheme scheme,
Dune::BitSetVector<dimension> const &velocityDirichletNodes, Dune::BitSetVector<dimension> const &velocityDirichletNodes,
Matrix const &massMatrix, Matrix const &stiffnessMatrix, Matrix const &massMatrix, Matrix const &stiffnessMatrix,
Matrix const &dampingMatrix, Vector const &u_initial, Matrix const &dampingMatrix, Vector const &u_initial,
Vector const &ur_initial, Vector const &v_initial, Vector const &v_initial, Vector const &a_initial) {
Vector const &vr_initial, Vector const &a_initial) {
switch (scheme) { switch (scheme) {
case Config::Newmark: case Config::Newmark:
return std::make_shared<Newmark<Vector, Matrix, Function, dimension>>( return std::make_shared<Newmark<Vector, Matrix, Function, dimension>>(
stiffnessMatrix, massMatrix, dampingMatrix, u_initial, ur_initial, stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial,
v_initial, vr_initial, a_initial, velocityDirichletNodes, a_initial, velocityDirichletNodes, velocityDirichletFunction);
velocityDirichletFunction);
case Config::BackwardEuler: case Config::BackwardEuler:
return std::make_shared< return std::make_shared<
BackwardEuler<Vector, Matrix, Function, dimension>>( BackwardEuler<Vector, Matrix, Function, dimension>>(
stiffnessMatrix, massMatrix, dampingMatrix, u_initial, ur_initial, stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial,
v_initial, velocityDirichletNodes, velocityDirichletFunction); velocityDirichletNodes, velocityDirichletFunction);
default: default:
assert(false); assert(false);
} }
......
...@@ -3,14 +3,13 @@ ...@@ -3,14 +3,13 @@
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
BackwardEuler<Vector, Matrix, Function, dim>::BackwardEuler( BackwardEuler<Vector, Matrix, Function, dim>::BackwardEuler(
Matrix const &_A, Matrix const &_M, Matrix const &_C, Matrix const &_A, Matrix const &_M, Matrix const &_C,
Vector const &_u_initial, Vector const &_ur_initial, Vector const &_u_initial, Vector const &_v_initial,
Vector const &_v_initial, Dune::BitSetVector<dim> const &_dirichletNodes, Dune::BitSetVector<dim> const &_dirichletNodes,
Function const &_dirichletFunction) Function const &_dirichletFunction)
: A(_A), : A(_A),
M(_M), M(_M),
C(_C), C(_C),
u(_u_initial), u(_u_initial),
ur(_ur_initial),
v(_v_initial), v(_v_initial),
dirichletNodes(_dirichletNodes), dirichletNodes(_dirichletNodes),
dirichletFunction(_dirichletFunction) {} dirichletFunction(_dirichletFunction) {}
...@@ -19,7 +18,6 @@ template <class Vector, class Matrix, class Function, size_t dim> ...@@ -19,7 +18,6 @@ template <class Vector, class Matrix, class Function, size_t dim>
void BackwardEuler<Vector, Matrix, Function, dim>::nextTimeStep() { void BackwardEuler<Vector, Matrix, Function, dim>::nextTimeStep() {
v_o = v; v_o = v;
u_o = u; u_o = u;
ur_o = ur;
} }
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
...@@ -27,7 +25,6 @@ void BackwardEuler<Vector, Matrix, Function, dim>::setup( ...@@ -27,7 +25,6 @@ void BackwardEuler<Vector, Matrix, Function, dim>::setup(
Vector const &ell, double _tau, double relativeTime, Vector &rhs, Vector const &ell, double _tau, double relativeTime, Vector &rhs,
Vector &iterate, Matrix &AM) { Vector &iterate, Matrix &AM) {
postProcessCalled = false; postProcessCalled = false;
postProcessRelativeQuantitiesCalled = false;
dirichletFunction.evaluate(relativeTime, dirichletValue); dirichletFunction.evaluate(relativeTime, dirichletValue);
tau = _tau; tau = _tau;
...@@ -91,21 +88,6 @@ void BackwardEuler<Vector, Matrix, Function, dim>::postProcess( ...@@ -91,21 +88,6 @@ void BackwardEuler<Vector, Matrix, Function, dim>::postProcess(
Arithmetic::addProduct(u, tau, v); Arithmetic::addProduct(u, tau, v);
} }
template <class Vector, class Matrix, class Function, size_t dim>
void
BackwardEuler<Vector, Matrix, Function, dim>::postProcessRelativeQuantities() {
if (!postProcessCalled)
DUNE_THROW(Dune::Exception, "It seems you forgot to call postProcess!");
postProcessRelativeQuantitiesCalled = true;
vr = v;
for (size_t i = 0; i < dirichletNodes.size(); ++i)
vr[i][0] -= dirichletValue;
ur = ur_o;
Arithmetic::addProduct(ur, tau, vr);
}
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
void BackwardEuler<Vector, Matrix, Function, dim>::extractDisplacement( void BackwardEuler<Vector, Matrix, Function, dim>::extractDisplacement(
Vector &displacement) const { Vector &displacement) const {
...@@ -115,16 +97,6 @@ void BackwardEuler<Vector, Matrix, Function, dim>::extractDisplacement( ...@@ -115,16 +97,6 @@ void BackwardEuler<Vector, Matrix, Function, dim>::extractDisplacement(
displacement = u; displacement = u;
} }
template <class Vector, class Matrix, class Function, size_t dim>
void BackwardEuler<Vector, Matrix, Function, dim>::extractRelativeDisplacement(
Vector &displacement) const {
if (!postProcessRelativeQuantitiesCalled)
DUNE_THROW(Dune::Exception,
"It seems you forgot to call postProcessRelativeQuantities!");
displacement = ur;
}
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
void BackwardEuler<Vector, Matrix, Function, dim>::extractVelocity( void BackwardEuler<Vector, Matrix, Function, dim>::extractVelocity(
Vector &velocity) const { Vector &velocity) const {
...@@ -134,16 +106,6 @@ void BackwardEuler<Vector, Matrix, Function, dim>::extractVelocity( ...@@ -134,16 +106,6 @@ void BackwardEuler<Vector, Matrix, Function, dim>::extractVelocity(
velocity = v; velocity = v;
} }
template <class Vector, class Matrix, class Function, size_t dim>
void BackwardEuler<Vector, Matrix, Function, dim>::extractRelativeVelocity(
Vector &velocity) const {
if (!postProcessRelativeQuantitiesCalled)
DUNE_THROW(Dune::Exception,
"It seems you forgot to call postProcessRelativeQuantities!");
velocity = vr;
}
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
void BackwardEuler<Vector, Matrix, Function, dim>::extractOldVelocity( void BackwardEuler<Vector, Matrix, Function, dim>::extractOldVelocity(
Vector &velocity) const { Vector &velocity) const {
......
...@@ -5,8 +5,7 @@ template <class Vector, class Matrix, class Function, size_t dim> ...@@ -5,8 +5,7 @@ template <class Vector, class Matrix, class Function, size_t dim>
class BackwardEuler : public TimeSteppingScheme<Vector, Matrix, Function, dim> { class BackwardEuler : public TimeSteppingScheme<Vector, Matrix, Function, dim> {
public: public:
BackwardEuler(Matrix const &_A, Matrix const &_M, Matrix const &_C, BackwardEuler(Matrix const &_A, Matrix const &_M, Matrix const &_C,
Vector const &_u_initial, Vector const &_ur_initial, Vector const &_u_initial, Vector const &_v_initial,
Vector const &_v_initial,
Dune::BitSetVector<dim> const &_dirichletNodes, Dune::BitSetVector<dim> const &_dirichletNodes,
Function const &_dirichletFunction); Function const &_dirichletFunction);
...@@ -14,11 +13,8 @@ class BackwardEuler : public TimeSteppingScheme<Vector, Matrix, Function, dim> { ...@@ -14,11 +13,8 @@ class BackwardEuler : public TimeSteppingScheme<Vector, Matrix, Function, dim> {
void setup(Vector const &, double, double, Vector &, Vector &, void setup(Vector const &, double, double, Vector &, Vector &,
Matrix &) override; Matrix &) override;
void postProcess(Vector const &) override; void postProcess(Vector const &) override;
void postProcessRelativeQuantities() override;
void extractDisplacement(Vector &) const override; void extractDisplacement(Vector &) const override;
void extractRelativeDisplacement(Vector &) const override;
void extractVelocity(Vector &) const override; void extractVelocity(Vector &) const override;
void extractRelativeVelocity(Vector &) const override;
void extractOldVelocity(Vector &) const override; void extractOldVelocity(Vector &) const override;
std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dim>> clone() std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dim>> clone()
...@@ -29,20 +25,16 @@ class BackwardEuler : public TimeSteppingScheme<Vector, Matrix, Function, dim> { ...@@ -29,20 +25,16 @@ class BackwardEuler : public TimeSteppingScheme<Vector, Matrix, Function, dim> {
Matrix const &M; Matrix const &M;
Matrix const &C; Matrix const &C;
Vector u; Vector u;
Vector ur;
Vector v; Vector v;
Vector vr;
Dune::BitSetVector<dim> const &dirichletNodes; Dune::BitSetVector<dim> const &dirichletNodes;
Function const &dirichletFunction; Function const &dirichletFunction;
double dirichletValue; double dirichletValue;
Vector u_o; Vector u_o;
Vector ur_o;
Vector v_o; Vector v_o;
double tau; double tau;
bool postProcessCalled = false; bool postProcessCalled = false;
bool postProcessRelativeQuantitiesCalled = false;
}; };
#endif #endif
...@@ -3,17 +3,14 @@ ...@@ -3,17 +3,14 @@
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
Newmark<Vector, Matrix, Function, dim>::Newmark( Newmark<Vector, Matrix, Function, dim>::Newmark(
Matrix const &_A, Matrix const &_M, Matrix const &_C, Matrix const &_A, Matrix const &_M, Matrix const &_C,
Vector const &_u_initial, Vector const &_ur_initial, Vector const &_u_initial, Vector const &_v_initial,
Vector const &_v_initial, Vector const &_vr_initial,
Vector const &_a_initial, Dune::BitSetVector<dim> const &_dirichletNodes, Vector const &_a_initial, Dune::BitSetVector<dim> const &_dirichletNodes,
Function const &_dirichletFunction) Function const &_dirichletFunction)
: A(_A), : A(_A),
M(_M), M(_M),
C(_C), C(_C),
u(_u_initial), u(_u_initial),
ur(_ur_initial),
v(_v_initial), v(_v_initial),
vr(_vr_initial),
a(_a_initial), a(_a_initial),
dirichletNodes(_dirichletNodes), dirichletNodes(_dirichletNodes),
dirichletFunction(_dirichletFunction) {} dirichletFunction(_dirichletFunction) {}
...@@ -22,9 +19,7 @@ template <class Vector, class Matrix, class Function, size_t dim> ...@@ -22,9 +19,7 @@ template <class Vector, class Matrix, class Function, size_t dim>
void Newmark<Vector, Matrix, Function, dim>::nextTimeStep() { void Newmark<Vector, Matrix, Function, dim>::nextTimeStep() {
a_o = a; a_o = a;
v_o = v; v_o = v;
vr_o = vr;
u_o = u; u_o = u;
ur_o = ur;
} }
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
...@@ -34,7 +29,6 @@ void Newmark<Vector, Matrix, Function, dim>::setup(Vector const &ell, ...@@ -34,7 +29,6 @@ void Newmark<Vector, Matrix, Function, dim>::setup(Vector const &ell,
Vector &rhs, Vector &iterate, Vector &rhs, Vector &iterate,
Matrix &AM) { Matrix &AM) {
postProcessCalled = false; postProcessCalled = false;
postProcessRelativeQuantitiesCalled = false;
dirichletFunction.evaluate(relativeTime, dirichletValue); dirichletFunction.evaluate(relativeTime, dirichletValue);
tau = _tau; tau = _tau;
...@@ -109,22 +103,6 @@ void Newmark<Vector, Matrix, Function, dim>::postProcess( ...@@ -109,22 +103,6 @@ void Newmark<Vector, Matrix, Function, dim>::postProcess(
Arithmetic::subtractProduct(a, 1.0, a_o); Arithmetic::subtractProduct(a, 1.0, a_o);
} }
template <class Vector, class Matrix, class Function, size_t dim>
void Newmark<Vector, Matrix, Function, dim>::postProcessRelativeQuantities() {
if (!postProcessCalled)
DUNE_THROW(Dune::Exception, "It seems you forgot to call postProcess!");
postProcessRelativeQuantitiesCalled = true;
vr = v;
for (size_t i = 0; i < dirichletNodes.size(); ++i)
vr[i][0] -= dirichletValue;
// u1 = tau/2 ( v1 + v0 ) + u0
ur = ur_o;
Arithmetic::addProduct(ur, tau / 2.0, vr);
Arithmetic::addProduct(ur, tau / 2.0, vr_o);
}
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
void Newmark<Vector, Matrix, Function, dim>::extractDisplacement( void Newmark<Vector, Matrix, Function, dim>::extractDisplacement(
Vector &displacement) const { Vector &displacement) const {
...@@ -134,16 +112,6 @@ void Newmark<Vector, Matrix, Function, dim>::extractDisplacement( ...@@ -134,16 +112,6 @@ void Newmark<Vector, Matrix, Function, dim>::extractDisplacement(
displacement = u; displacement = u;
} }
template <class Vector, class Matrix, class Function, size_t dim>
void Newmark<Vector, Matrix, Function, dim>::extractRelativeDisplacement(
Vector &displacement) const {
if (!postProcessRelativeQuantitiesCalled)
DUNE_THROW(Dune::Exception,
"It seems you forgot to call postProcessRelativeQuantities!");
displacement = ur;
}
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
void Newmark<Vector, Matrix, Function, dim>::extractVelocity(Vector &velocity) void Newmark<Vector, Matrix, Function, dim>::extractVelocity(Vector &velocity)
const { const {
...@@ -153,16 +121,6 @@ void Newmark<Vector, Matrix, Function, dim>::extractVelocity(Vector &velocity) ...@@ -153,16 +121,6 @@ void Newmark<Vector, Matrix, Function, dim>::extractVelocity(Vector &velocity)
velocity = v; velocity = v;
} }
template <class Vector, class Matrix, class Function, size_t dim>
void Newmark<Vector, Matrix, Function, dim>::extractRelativeVelocity(
Vector &velocity) const {
if (!postProcessRelativeQuantitiesCalled)
DUNE_THROW(Dune::Exception,
"It seems you forgot to call postProcessRelativeQuantities!");
velocity = vr;
}
template <class Vector, class Matrix, class Function, size_t dim> template <class Vector, class Matrix, class Function, size_t dim>
void Newmark<Vector, Matrix, Function, dim>::extractOldVelocity( void Newmark<Vector, Matrix, Function, dim>::extractOldVelocity(
Vector &velocity) const { Vector &velocity) const {
......
...@@ -5,8 +5,7 @@ template <class Vector, class Matrix, class Function, size_t dim> ...@@ -5,8 +5,7 @@ template <class Vector, class Matrix, class Function, size_t dim>
class Newmark : public TimeSteppingScheme<Vector, Matrix, Function, dim> { class Newmark : public TimeSteppingScheme<Vector, Matrix, Function, dim> {
public: public:
Newmark(Matrix const &_A, Matrix const &_M, Matrix const &_C, Newmark(Matrix const &_A, Matrix const &_M, Matrix const &_C,
Vector const &_u_initial, Vector const &_ur_initial, Vector const &_u_initial, Vector const &_v_initial,
Vector const &_v_initial, Vector const &_vr_initial,
Vector const &_a_initial, Vector const &_a_initial,
Dune::BitSetVector<dim> const &_dirichletNodes, Dune::BitSetVector<dim> const &_dirichletNodes,
Function const &_dirichletFunction); Function const &_dirichletFunction);
...@@ -15,11 +14,8 @@ class Newmark : public TimeSteppingScheme<Vector, Matrix, Function, dim> { ...@@ -15,11 +14,8 @@ class Newmark : public TimeSteppingScheme<Vector, Matrix, Function, dim> {
void setup(Vector const &, double, double, Vector &, Vector &, void setup(Vector const &, double, double, Vector &, Vector &,
Matrix &) override; Matrix &) override;
void postProcess(Vector const &) override; void postProcess(Vector const &) override;
void postProcessRelativeQuantities() override;
void extractDisplacement(Vector &) const override; void extractDisplacement(Vector &) const override;
void extractRelativeDisplacement(Vector &) const override;
void extractVelocity(Vector &) const override; void extractVelocity(Vector &) const override;
void extractRelativeVelocity(Vector &) const override;
void extractOldVelocity(Vector &) const override; void extractOldVelocity(Vector &) const override;
std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dim>> clone() std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dim>> clone()
...@@ -30,23 +26,18 @@ class Newmark : public TimeSteppingScheme<Vector, Matrix, Function, dim> { ...@@ -30,23 +26,18 @@ class Newmark : public TimeSteppingScheme<Vector, Matrix, Function, dim> {
Matrix const &M; Matrix const &M;
Matrix const &C; Matrix const &C;
Vector u; Vector u;
Vector ur;
Vector v; Vector v;
Vector vr;
Vector a; Vector a;
Dune::BitSetVector<dim> const &dirichletNodes; Dune::BitSetVector<dim> const &dirichletNodes;
Function const &dirichletFunction; Function const &dirichletFunction;
double dirichletValue; double dirichletValue;
Vector u_o; Vector u_o;
Vector ur_o;
Vector v_o; Vector v_o;
Vector vr_o;
Vector a_o; Vector a_o;
double tau; double tau;
bool postProcessCalled = false; bool postProcessCalled = false;
bool postProcessRelativeQuantitiesCalled = false;
}; };
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment