diff --git a/src/assemblers.cc b/src/assemblers.cc index cad3e273a7b870e069cc32c32340306269b624c7..c3e3c4149065b804a21775b41b52aef74efba047 100644 --- a/src/assemblers.cc +++ b/src/assemblers.cc @@ -58,7 +58,7 @@ assemble_nonlinearity( Dune::ParameterTree const &parset, Dune::BlockVector<Dune::FieldVector<double, 1>> const &nodalIntegrals, Dune::BlockVector<Dune::FieldVector<double, 1>> const &state, - double scalarNormalStress) { + Dune::BlockVector<Dune::FieldVector<double, 1>> const &normalStress) { auto const size = nodalIntegrals.size(); typedef Dune::BlockVector<Dune::FieldVector<double, 1>> SingletonVectorType; @@ -66,9 +66,6 @@ assemble_nonlinearity( SingletonVectorType mu(size); mu = parset.get<double>("mu"); - SingletonVectorType normalStress(size); - normalStress = scalarNormalStress; - switch (parset.get<Config::model>("model")) { case Config::Exponential: { SingletonVectorType a(size); diff --git a/src/assemblers.hh b/src/assemblers.hh index 12b49c1fde2b7daf5ed0efeadfb3a1e8350bf9e0..dd2a1cf25197ffd4cdc47b328de75a5ddc131103 100644 --- a/src/assemblers.hh +++ b/src/assemblers.hh @@ -28,6 +28,5 @@ assemble_nonlinearity( Dune::ParameterTree const &parset, Dune::BlockVector<Dune::FieldVector<double, 1>> const &nodalIntegrals, Dune::BlockVector<Dune::FieldVector<double, 1>> const &state, - double scalarNormalStress); - + Dune::BlockVector<Dune::FieldVector<double, 1>> const &normalStress); #endif diff --git a/src/assemblers_tmpl.cc b/src/assemblers_tmpl.cc index f20d3a3bb461ab48544076d2c87504dbc8d1861f..9418d1ba30dbf0388f7c4766e78028bd9c7b1b85 100644 --- a/src/assemblers_tmpl.cc +++ b/src/assemblers_tmpl.cc @@ -35,4 +35,4 @@ assemble_nonlinearity<MatrixType, VectorType>( Dune::ParameterTree const &parset, Dune::BlockVector<Dune::FieldVector<double, 1>> const &nodalIntegrals, Dune::BlockVector<Dune::FieldVector<double, 1>> const &state, - double scalarNormalStress); + Dune::BlockVector<Dune::FieldVector<double, 1>> const &normalStress); diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index b3d1420e53fb31d7ee8b9311df4611849f3923e2..d9148a1b54a79dcc86598ea890fa9022cdca8a00 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -256,6 +256,12 @@ int main(int argc, char *argv[]) { SingletonVectorType alpha(alpha_old); SingletonVectorType vonMisesStress; + + SingletonVectorType surfaceNormalStress(finestSize); + surfaceNormalStress = 0.0; + for (size_t i = 0; i < frictionalNodes.size(); ++i) + if (frictionalNodes[i][0]) + surfaceNormalStress[i] = normalStress; // }}} typedef MyConvexProblem<MatrixType, VectorType> MyConvexProblemType; @@ -345,7 +351,7 @@ int main(int argc, char *argv[]) { auto myGlobalNonlinearity = assemble_nonlinearity<MatrixType, VectorType>( parset.sub("boundary.friction"), *nodalIntegrals, alpha, - normalStress); + surfaceNormalStress); MyConvexProblemType const myConvexProblem( problem_A, *myGlobalNonlinearity, problem_rhs);