From 08f1abb93a294e11e9b22ff0c9d298cf04e04c0c Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Sun, 11 Mar 2012 18:38:07 +0100 Subject: [PATCH] Remove unused solvers --- src/one-body-sample.cc | 92 +++++--------------------------------- src/one-body-sample.parset | 12 ----- 2 files changed, 12 insertions(+), 92 deletions(-) diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 4e520f28..616a5d56 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -196,24 +196,18 @@ int main(int argc, char *argv[]) { GenericNonlinearGS<MyBlockProblemType> nonlinearGSStep; nonlinearGSStep.ignoreNodes_ = &ignoreNodes; - VectorType u1(finestSize); - u1 = 0.0; // Has to be zero! - VectorType u2 = u1; - VectorType u3 = u1; - VectorType u4 = u1; - VectorType u5 = u1; + VectorType u4(finestSize); + u4 = 0.0; // Has to be zero! + VectorType u5 = u4; SingletonVectorType s4_old(finestSize); SingletonVectorType s5_old(finestSize); s4_old = parset.get<double>("boundary.friction.state.initial"); s5_old = s4_old; - VectorType u1_diff(finestSize); - u1_diff = 0.0; // Has to be zero! - VectorType u2_diff = u1_diff; - VectorType u3_diff = u1_diff; - VectorType u4_diff = u1_diff; - VectorType u5_diff = u1_diff; + VectorType u4_diff(finestSize); + u4_diff = 0.0; // Has to be zero! + VectorType u5_diff = u4_diff; auto s4_new = Dune::make_shared<SingletonVectorType>(finestSize); auto s5_new = Dune::make_shared<SingletonVectorType>(finestSize); @@ -222,9 +216,6 @@ int main(int argc, char *argv[]) { SingletonVectorType vonMisesStress; - VectorType b1; - VectorType b2; - VectorType b3; VectorType b4; VectorType b5; @@ -286,42 +277,14 @@ int main(int argc, char *argv[]) { // b = neumann assemble_neumann<GridType, GridView, SmallVector, P1Basis>( - leafView, p1Basis, neumannNodes, b1, functions.get("sampleFunction"), + leafView, p1Basis, neumannNodes, b4, functions.get("sampleFunction"), h * run); - b2 = b1; - b3 = b1; - b4 = b1; - b5 = b1; + b5 = b4; // b -= linear update - stiffnessMatrix.mmv(u1, b1); - stiffnessMatrix.mmv(u2, b2); - stiffnessMatrix.mmv(u3, b3); stiffnessMatrix.mmv(u4, b4); stiffnessMatrix.mmv(u5, b5); - if (parset.get<bool>("solver.nonlineargs.use")) { - auto state = - Dune::make_shared<Dune::BlockVector<Dune::FieldVector<double, 1>>>( - finestSize); - *state = 0.0; - auto myGlobalNonlinearity = - assemble_nonlinearity<VectorType, OperatorType>( - finestSize, parset, nodalIntegrals, state, h); - MyConvexProblemType const myConvexProblem(stiffnessMatrix, - *myGlobalNonlinearity, b1); - MyBlockProblemType myBlockProblem(parset, myConvexProblem); - nonlinearGSStep.setProblem(u1_diff, myBlockProblem); - - LoopSolver<VectorType> solver( - &nonlinearGSStep, - parset.get<size_t>("solver.nonlineargs.maxiterations"), - solver_tolerance, &energyNorm, verbosity); - solver.solve(); - } - - u1 += u1_diff; - if (parset.get<bool>("solver.tnnmg.use")) { for (int state_fpi = 0; state_fpi < parset.get<int>("solver.tnnmg.fixed_point_iterations"); @@ -428,35 +391,6 @@ int main(int argc, char *argv[]) { p1Basis, u4, *s4_new, p0Basis, vonMisesStress, leafView, (boost::format("obs%d") % run).str()); } - - if (parset.get<bool>("solver.gs.use")) { - BlockGSStep<OperatorType, VectorType> blockGSStep(stiffnessMatrix, - u2_diff, b2); - blockGSStep.ignoreNodes_ = &ignoreNodes; - - LoopSolver<VectorType> solver( - &blockGSStep, parset.get<size_t>("solver.gs.maxiterations"), - solver_tolerance, &energyNorm, verbosity); - solver.solve(); - } - - u2 += u2_diff; - - // Use a linear solver for comparison; should return roughly the - // same results if phi vanishes (e.g. because the normalstress is zero) - if (parset.get<bool>("solver.truncatedgs.use")) { - TruncatedBlockGSStep<OperatorType, VectorType> blockGSStep( - stiffnessMatrix, u3_diff, b3); - blockGSStep.ignoreNodes_ = &ignoreNodes; - - LoopSolver<VectorType> solver( - &blockGSStep, - parset.get<size_t>("solver.truncatedgs.maxiterations"), - solver_tolerance, &energyNorm, verbosity); - solver.solve(); - } - - u3 += u3_diff; } std::cout << std::endl; std::cout << "Making " << timesteps << " time steps took " @@ -470,14 +404,12 @@ int main(int argc, char *argv[]) { if (parset.get<bool>("printFrictionalBoundary")) { // Print displacement on frictional boundary - boost::format const formatter("u1[%02d] = %+3e, " - "%|40t|u2[%02d] = %+3e, " - "%|80t|u3[%02d] = %+3e, " - "%|120t|u4[%02d] = %+3e"); + boost::format const formatter("u4[%02d] = %+3e, " + "%|40t|u5[%02d] = %+3e"); for (size_t i = 0; i < frictionalNodes.size(); ++i) if (frictionalNodes[i][0]) - std::cout << boost::format(formatter) % i % u1[i] % i % u2[i] % i % - u3[i] % i % u4[i] << std::endl; + std::cout << boost::format(formatter) % i % u4[i] % i % u5[i] + << std::endl; } Python::stop(); } diff --git a/src/one-body-sample.parset b/src/one-body-sample.parset index aefd27eb..ede9a29e 100644 --- a/src/one-body-sample.parset +++ b/src/one-body-sample.parset @@ -26,18 +26,6 @@ nu = 0.3 # Needs to be strictly below 0.5; the closer we get, the [solver] tolerance = 1e-12 -[solver.nonlineargs] -use = false -maxiterations = 1000000 - -[solver.gs] -use = false -maxiterations = 1000000 - -[solver.truncatedgs] -use = false -maxiterations = 1000000 - [solver.tnnmg] use = true maxiterations = 1000000 -- GitLab