diff --git a/src/sliding-block-data/mybody.hh b/src/sliding-block-data/mybody.hh index e21d9f1aa43c666df2b2cc24bc245e49cb7e7ddf..b058898bb59bed3a2c8d47b03dcbb5a401d366a0 100644 --- a/src/sliding-block-data/mybody.hh +++ b/src/sliding-block-data/mybody.hh @@ -17,13 +17,13 @@ template <int dimension> class MyBody : public Body<dimension> { Dune::FieldVector<double, dimension>, Dune::FieldVector<double, 1>>; public: - MyBody(Dune::ParameterTree const &parset, MyGeometry const &mygeometry) + MyBody(Dune::ParameterTree const &parset) : 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, + gravityField_(densityField_, MyGeometry::zenith, parset.get<double>("gravity")) {} double getPoissonRatio() const override { return poissonRatio_; } diff --git a/src/sliding-block-data/mygeometry.hh b/src/sliding-block-data/mygeometry.hh index 25bd77360adf0af54a75a7eac82764fac711b9c0..96cd65346dd4381c5063d71cb1a513f928e468d0 100644 --- a/src/sliding-block-data/mygeometry.hh +++ b/src/sliding-block-data/mygeometry.hh @@ -4,23 +4,24 @@ #include <dune/common/fassign.hh> #include <dune/common/fvector.hh> -// kludge because fieldvectors have no initialiser_list constructor,see -// https://dune-project.org/flyspray/index.php?do=details&task_id=1166 -Dune::FieldVector<double, 2> generateVector(double x, double y) { - Dune::FieldVector<double, 2> tmp; - tmp <<= x, y; - return tmp; -} - -struct MyGeometry { - MyGeometry() {} +namespace MyGeometry { +namespace { + using LocalVector = Dune::FieldVector<double, 2>; - Dune::FieldVector<double, 2> A = generateVector(0, 0); - Dune::FieldVector<double, 2> B = generateVector(5, 0); - Dune::FieldVector<double, 2> C = generateVector(5, 1); - Dune::FieldVector<double, 2> D = generateVector(0, 1); + // kludge because fieldvectors have no initialiser_list constructor, see + // https://dune-project.org/flyspray/index.php?do=details&task_id=1166 + LocalVector generateVector(double x, double y) { + LocalVector tmp; + tmp <<= x, y; + return tmp; + } +} - Dune::FieldVector<double, 2> zenith = generateVector(0, 1); -}; +LocalVector const A = generateVector(0, 0); +LocalVector const B = generateVector(5, 0); +LocalVector const C = generateVector(5, 1); +LocalVector const D = generateVector(0, 1); +LocalVector const zenith = generateVector(0, 1); +} #endif diff --git a/src/sliding-block-data/myglobalfrictiondata.hh b/src/sliding-block-data/myglobalfrictiondata.hh index f511c13ea5a55fe95a7c7942b12d0d022bd50084..8487a125f016b0342d8f03b8ce0d75fe4c01f7b6 100644 --- a/src/sliding-block-data/myglobalfrictiondata.hh +++ b/src/sliding-block-data/myglobalfrictiondata.hh @@ -16,7 +16,7 @@ class MyGlobalFrictionData : public GlobalFrictionData<dimension> { using typename GlobalFrictionData<dimension>::VirtualFunction; public: - MyGlobalFrictionData(Dune::ParameterTree const &parset, MyGeometry const &tri) + MyGlobalFrictionData(Dune::ParameterTree const &parset) : C_(parset.get<double>("C")), L_(parset.get<double>("L")), V0_(parset.get<double>("V0")), @@ -42,5 +42,4 @@ class MyGlobalFrictionData : public GlobalFrictionData<dimension> { MyConstantFunction const b_; double const mu0_; }; - #endif diff --git a/src/sliding-block-data/mygrid.hh b/src/sliding-block-data/mygrid.hh index 732bff45dd43ec0faea65b8c2af3d0600d532b8b..d38616c126b4ad8f20d356cb0acc2614cdfe035e 100644 --- a/src/sliding-block-data/mygrid.hh +++ b/src/sliding-block-data/mygrid.hh @@ -7,28 +7,26 @@ #include "mygeometry.hh" -template <class Grid> -std::shared_ptr<Grid> constructGrid(MyGeometry const &myGeometry) { +template <class Grid> std::shared_ptr<Grid> constructGrid() { std::array<unsigned int, 2> elements = { { 5, 1 } }; return Dune::StructuredGridFactory<Grid>::createSimplexGrid( - myGeometry.A, myGeometry.C, elements); + MyGeometry::A, MyGeometry::C, elements); } -template <class GridView, class MyGeometry> class MyFaces { +template <class GridView> class MyFaces { private: bool isClose(double a, double b) { return std::abs(a - b) < 1e-14; }; public: - MyFaces(GridView const &gridView, MyGeometry const &myGeometry) - : lower(gridView), upper(gridView) { + MyFaces(GridView const &gridView) : lower(gridView), upper(gridView) { lower.insertFacesByProperty([&](typename GridView::Intersection const &in) { - return isClose(myGeometry.A[1], in.geometry().center()[1]); + return isClose(MyGeometry::A[1], in.geometry().center()[1]); }); upper.insertFacesByProperty([&](typename GridView::Intersection const &in) { - return isClose(myGeometry.C[1], in.geometry().center()[1]); + return isClose(MyGeometry::C[1], in.geometry().center()[1]); }); } diff --git a/src/sliding-block.cc b/src/sliding-block.cc index d3872be8545d9a637ca2019a477b6996f5bbf834..55185c366a1adbfa555b5fae481982743c61d18e 100644 --- a/src/sliding-block.cc +++ b/src/sliding-block.cc @@ -97,11 +97,9 @@ int main(int argc, char *argv[]) { Dune::ParameterTreeParser::readINITree(datadir "/parset.cfg", parset); Dune::ParameterTreeParser::readOptions(argc, argv, parset); - MyGeometry const myGeometry; - // {{{ Set up grid using Grid = Dune::ALUGrid<dims, dims, Dune::simplex, Dune::nonconforming>; - auto grid = constructGrid<Grid>(myGeometry); // FIXME + auto grid = constructGrid<Grid>(); auto const refinements = parset.get<size_t>("grid.refinements"); grid->globalRefine(refinements); @@ -112,7 +110,7 @@ int main(int argc, char *argv[]) { // }}} // Set up myFaces - MyFaces<GridView, MyGeometry> myFaces(leafView, myGeometry); + MyFaces<GridView> myFaces(leafView); // Neumann boundary BoundaryPatch<GridView> const neumannBoundary(leafView); @@ -157,7 +155,7 @@ int main(int argc, char *argv[]) { MyAssembler myAssembler(leafView); - MyBody<dims> const body(parset, myGeometry); + MyBody<dims> const body(parset); Matrix A, C, M; myAssembler.assembleElasticity(body.getYoungModulus(), @@ -232,8 +230,7 @@ int main(int argc, char *argv[]) { myAssembler.assembleNormalStress(frictionalBoundary, normalStress, body.getYoungModulus(), body.getPoissonRatio(), u_initial); - MyGlobalFrictionData<dims> frictionInfo(parset.sub("boundary.friction"), - myGeometry); + MyGlobalFrictionData<dims> frictionInfo(parset.sub("boundary.friction")); auto myGlobalNonlinearity = myAssembler.assembleFrictionNonlinearity( frictionalBoundary, frictionInfo, normalStress); myGlobalNonlinearity->updateLogState(alpha_initial);