Forked from
agnumpde / dune-tectonic
152 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
mybody.hh 2.11 KiB
#ifndef SRC_MULTI_BODY_PROBLEM_DATA_MYBODYDATA_HH
#define SRC_MULTI_BODY_PROBLEM_DATA_MYBODYDATA_HH
#include <dune/common/fvector.hh>
#include <dune/fufem/functions/constantfunction.hh>
#include "../data-structures/body/bodydata.hh"
#include "gravity.hh"
#include "grid/cuboidgeometry.hh"
#include "segmented-function.hh"
template <int dimension> class MyBodyData : public BodyData<dimension> {
using typename BodyData<dimension>::ScalarFunction;
using typename BodyData<dimension>::VectorField;
public:
MyBodyData(Dune::ParameterTree const &parset, const double gravity, const Dune::FieldVector<double, dimension>& zenith)
: poissonRatio_(parset.get<double>("poissonRatio")),
youngModulus_(3.0 * parset.get<double>("bulkModulus") *
(1.0 - 2.0 * poissonRatio_)),
zenith_(zenith),
shearViscosityField_(
parset.get<double>("elastic.shearViscosity"),
parset.get<double>("viscoelastic.shearViscosity")),
bulkViscosityField_(
parset.get<double>("elastic.bulkViscosity"),
parset.get<double>("viscoelastic.bulkViscosity")),
densityField_(parset.get<double>("elastic.density"),
parset.get<double>("viscoelastic.density")),
gravityField_(densityField_, zenith_,
gravity) {}
double getPoissonRatio() const override { return poissonRatio_; }
double getYoungModulus() const override { return youngModulus_; }
ScalarFunction const &getShearViscosityField() const override {
return shearViscosityField_;
}
ScalarFunction const &getBulkViscosityField() const override {
return bulkViscosityField_;
}
ScalarFunction const &getDensityField() const override {
return densityField_;
}
VectorField const &getGravityField() const override { return gravityField_; }
private:
double const poissonRatio_;
double const youngModulus_;
Dune::FieldVector<double, dimension> zenith_;
SegmentedFunction const shearViscosityField_;
SegmentedFunction const bulkViscosityField_;
SegmentedFunction const densityField_;
Gravity<dimension> const gravityField_;
};
#endif