From e0238768a5a3e0deebb779cb57079d724915d580 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Mon, 17 Sep 2012 10:19:53 +0200 Subject: [PATCH] Pass computed normalstress to nonlinearity asm --- src/assemblers.cc | 5 +++-- src/assemblers.hh | 3 ++- src/assemblers_tmpl.cc | 3 ++- src/one-body-sample.cc | 7 ++++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/assemblers.cc b/src/assemblers.cc index 347a8481..1527c790 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 e5d8b316..12b49c1f 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 af3ff384..f40d6c09 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 717c2619..a3d4c215 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); -- GitLab