diff --git a/src/assemblers.cc b/src/assemblers.cc index 347a84810723766feac0b19afd46966b886a9eeb..1527c7906f03b23a1d665aeb096eb47e3e70d034 100644 --- a/src/assemblers.cc +++ b/src/assemblers.cc @@ -57,7 +57,8 @@ Dune::shared_ptr<Dune::GlobalNonlinearity<MatrixType, VectorType> const> assemble_nonlinearity( Dune::ParameterTree const &parset, Dune::BlockVector<Dune::FieldVector<double, 1>> const &nodalIntegrals, - Dune::BlockVector<Dune::FieldVector<double, 1>> const &state) { + Dune::BlockVector<Dune::FieldVector<double, 1>> const &state, + double scalarNormalStress) { auto const size = nodalIntegrals.size(); typedef Dune::BlockVector<Dune::FieldVector<double, 1>> SingletonVectorType; @@ -66,7 +67,7 @@ assemble_nonlinearity( mu = parset.get<double>("mu"); SingletonVectorType normalStress(size); - normalStress = parset.get<double>("normalstress"); + normalStress = scalarNormalStress; switch (parset.get<Config::model>("model")) { case Config::Exponential: { diff --git a/src/assemblers.hh b/src/assemblers.hh index e5d8b316bbfa75b8610ed0e8af6e24547c5540d5..12b49c1fde2b7daf5ed0efeadfb3a1e8350bf9e0 100644 --- a/src/assemblers.hh +++ b/src/assemblers.hh @@ -27,6 +27,7 @@ Dune::shared_ptr<Dune::GlobalNonlinearity<MatrixType, VectorType> const> assemble_nonlinearity( Dune::ParameterTree const &parset, Dune::BlockVector<Dune::FieldVector<double, 1>> const &nodalIntegrals, - Dune::BlockVector<Dune::FieldVector<double, 1>> const &state); + Dune::BlockVector<Dune::FieldVector<double, 1>> const &state, + double scalarNormalStress); #endif diff --git a/src/assemblers_tmpl.cc b/src/assemblers_tmpl.cc index af3ff384ad23ea04e1333fc07ae44033883cb21b..f40d6c099af337fe1935a5271a4e318299f482cd 100644 --- a/src/assemblers_tmpl.cc +++ b/src/assemblers_tmpl.cc @@ -32,4 +32,5 @@ template Dune::shared_ptr< assemble_nonlinearity<MatrixType, VectorType>( Dune::ParameterTree const &parset, Dune::BlockVector<Dune::FieldVector<double, 1>> const &nodalIntegrals, - Dune::BlockVector<Dune::FieldVector<double, 1>> const &state); + Dune::BlockVector<Dune::FieldVector<double, 1>> const &state, + double scalarNormalStress); diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 717c2619a20ebfb3ab3047c91762008e8c03b785..a3d4c215abf50822c7f2b6ded901b0a474081553 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -167,6 +167,7 @@ int main(int argc, char *argv[]) { P0Basis const p0Basis(leafView); P1Basis const p1Basis(leafView); + double normalStress; MatrixType massMatrix; VectorType gravityFunctional; { @@ -190,8 +191,7 @@ int main(int argc, char *argv[]) { area *= (upperRight[i] - lowerLeft[i]); double const gravity = 9.81; - double const normalStress = - parset.get<double>("boundary.friction.normalstress"); + normalStress = parset.get<double>("boundary.friction.normalstress"); // rho = sigma * A / V / g // kg/m^d = N/m^(d-1) * m^(d-1) / m^d / (N/kg) @@ -344,7 +344,8 @@ int main(int argc, char *argv[]) { for (size_t state_fpi = 1; state_fpi <= state_fpi_max; ++state_fpi) { auto myGlobalNonlinearity = assemble_nonlinearity<MatrixType, VectorType>( - parset.sub("boundary.friction"), *nodalIntegrals, alpha); + parset.sub("boundary.friction"), *nodalIntegrals, alpha, + normalStress); MyConvexProblemType const myConvexProblem( problem_A, *myGlobalNonlinearity, problem_rhs);