#ifndef MY_BODY_HH #define MY_BODY_HH #include <dune/common/fvector.hh> #include <dune/fufem/functions/constantfunction.hh> #include <dune/tectonic/body.hh> #include <dune/tectonic/gravity.hh> #include "mygeometry.hh" template <int dimension> class MyBody : public Body<dimension> { using typename Body<dimension>::ScalarFunction; using typename Body<dimension>::VectorField; using MyConstantFunction = ConstantFunction< Dune::FieldVector<double, dimension>, Dune::FieldVector<double, 1>>; public: MyBody(Dune::ParameterTree const &parset, MyGeometry const &mygeometry) : poissonRatio_(parset.get<double>("body.poissonRatio")), youngModulus_(parset.get<double>("body.youngModulus")), shearViscosityField_(parset.get<double>("body.shearViscosity")), bulkViscosityField_(parset.get<double>("body.bulkViscosity")), densityField_(parset.get<double>("body.density")), gravityField_(densityField_, mygeometry.zenith, parset.get<double>("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_; MyConstantFunction const shearViscosityField_; MyConstantFunction const bulkViscosityField_; MyConstantFunction const densityField_; Gravity<dimension> const gravityField_; }; #endif