From 8581e8c5655c26051ac2a5784542a10d2a29e022 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Wed, 17 Jul 2013 19:17:48 +0200 Subject: [PATCH] [Problem] Compute initial displacement from stationary problem --- src/one-body-sample.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index e2e22ba3..153f5d3c 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -213,6 +213,8 @@ int main(int argc, char *argv[]) { // Set up the boundary Dune::BitSetVector<dims> velocityDirichletNodes(finestSize, false); + Dune::BitSetVector<dims> const &displacementDirichletNodes = + velocityDirichletNodes; Dune::BitSetVector<dims> accelerationDirichletNodes(finestSize, false); Dune::BitSetVector<1> neumannNodes(finestSize, false); Dune::BitSetVector<1> frictionalNodes(finestSize, false); @@ -357,9 +359,32 @@ int main(int argc, char *argv[]) { GridType>; ZeroNonlinearity<SmallVector, SmallMatrix> zeroNonlinearity; + // Solve the stationary problem VectorType u_initial(finestSize); u_initial = 0.0; + { + LinearFactoryType displacementFactory(parset.sub("solver.tnnmg"), // FIXME + refinements, 1e-12, // FIXME, + *grid, displacementDirichletNodes); + auto multigridStep = displacementFactory.getSolver(); + Solver::VerbosityMode const verbosity = + parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET; + + typename LinearFactoryType::ConvexProblemType myConvexProblem( + 1.0, A, zeroNonlinearity, ell, u_initial); + typename LinearFactoryType::BlockProblemType initialDisplacementProblem( + parset, myConvexProblem); + + multigridStep->setProblem(u_initial, initialDisplacementProblem); + LoopSolver<VectorType> initialDisplacementProblemSolver( + multigridStep, + parset.get<size_t>("solver.tnnmg.maxiterations"), // FIXME + 1e-12, // FIXME + &ANorm, verbosity, false); // absolute error + initialDisplacementProblemSolver.preprocess(); + initialDisplacementProblemSolver.solve(); + } VectorType v_initial(finestSize); { // Prescribe a homogeneous velocity field in the x-direction -- GitLab