Skip to content
Snippets Groups Projects
Commit 1ea86fdf authored by podlesny's avatar podlesny
Browse files

.

parent 77dc60fe
No related branches found
No related tags found
No related merge requests found
...@@ -34,11 +34,9 @@ void FixedPointIterationCounter::operator+=( ...@@ -34,11 +34,9 @@ void FixedPointIterationCounter::operator+=(
template <class Factory, class Updaters, class ErrorNorm> template <class Factory, class Updaters, class ErrorNorm>
FixedPointIterator<Factory, Updaters, ErrorNorm>::FixedPointIterator( FixedPointIterator<Factory, Updaters, ErrorNorm>::FixedPointIterator(
const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler,
Factory &factory, Dune::ParameterTree const &parset, Factory &factory, Dune::ParameterTree const &parset,
std::shared_ptr<Nonlinearity> globalFriction, ErrorNorm const &errorNorm) std::shared_ptr<Nonlinearity> globalFriction, ErrorNorm const &errorNorm)
: nBodyAssembler_(nBodyAssembler), : step_(factory.getStep()),
step_(factory.getStep()),
parset_(parset), parset_(parset),
globalFriction_(globalFriction), globalFriction_(globalFriction),
fixedPointMaxIterations_(parset.get<size_t>("v.fpi.maximumIterations")), fixedPointMaxIterations_(parset.get<size_t>("v.fpi.maximumIterations")),
......
...@@ -35,8 +35,7 @@ class FixedPointIterator { ...@@ -35,8 +35,7 @@ class FixedPointIterator {
void relativeVelocities(std::vector<Vector>& v_m) const; void relativeVelocities(std::vector<Vector>& v_m) const;
public: public:
FixedPointIterator(const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler, FixedPointIterator(Factory &factory, const Dune::ParameterTree& parset,
Factory &factory, const Dune::ParameterTree& parset,
std::shared_ptr<Nonlinearity> globalFriction, std::shared_ptr<Nonlinearity> globalFriction,
const ErrorNorm& errorNorm); const ErrorNorm& errorNorm);
...@@ -46,7 +45,7 @@ class FixedPointIterator { ...@@ -46,7 +45,7 @@ class FixedPointIterator {
Vector &velocityIterate); Vector &velocityIterate);
private: private:
const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler_;
std::shared_ptr<typename Factory::Step> step_; std::shared_ptr<typename Factory::Step> step_;
Dune::ParameterTree const &parset_; Dune::ParameterTree const &parset_;
std::shared_ptr<Nonlinearity> globalFriction_; std::shared_ptr<Nonlinearity> globalFriction_;
......
...@@ -13,15 +13,16 @@ ...@@ -13,15 +13,16 @@
template <size_t dim, class BlockProblem, class DeformedGrid> template <size_t dim, class BlockProblem, class DeformedGrid>
SolverFactory<dim, BlockProblem, DeformedGrid>::SolverFactory( SolverFactory<dim, BlockProblem, DeformedGrid>::SolverFactory(
Dune::ParameterTree const &parset, const DeformedGrid& grid, Dune::ParameterTree const &parset, const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler,
Dune::BitSetVector<dim> const &ignoreNodes) Dune::BitSetVector<dim> const &ignoreNodes)
: baseEnergyNorm(linearBaseSolverStep), : nBodyAssembler_(nBodyAssembler),
baseEnergyNorm(linearBaseSolverStep),
linearBaseSolver(&linearBaseSolverStep, linearBaseSolver(&linearBaseSolverStep,
parset.get<size_t>("linear.maxiumumIterations"), parset.get<size_t>("linear.maxiumumIterations"),
parset.get<double>("linear.tolerance"), &baseEnergyNorm, parset.get<double>("linear.tolerance"), &baseEnergyNorm,
Solver::QUIET), Solver::QUIET)/*,
transferOperators(grid.maxLevel()), transferOperators(grid.maxLevel()),
multigridStep(std::make_shared<Step>(linearIterationStep, nonlinearSmoother)) { multigridStep(std::make_shared<Step>(linearIterationStep, nonlinearSmoother))*/ {
// linear iteration step // linear iteration step
linearIterationStep.setMGType(parset.get<int>("linear.cycle"), linearIterationStep.setMGType(parset.get<int>("linear.cycle"),
...@@ -33,8 +34,7 @@ SolverFactory<dim, BlockProblem, DeformedGrid>::SolverFactory( ...@@ -33,8 +34,7 @@ SolverFactory<dim, BlockProblem, DeformedGrid>::SolverFactory(
// transfer operators // transfer operators
for (auto &&x : transferOperators) for (auto &&x : transferOperators)
x = new CompressedMultigridTransfer<Vector>; x = new CompressedMultigridTransfer<Vector>;
TransferOperatorAssembler<DeformedGrid>(grid) TransferOperatorAssembler<DeformedGrid>(grid).assembleOperatorPointerHierarchy(transferOperators);
.assembleOperatorPointerHierarchy(transferOperators);
linearIterationStep.setTransferOperators(transferOperators); linearIterationStep.setTransferOperators(transferOperators);
// tnnmg iteration step // tnnmg iteration step
......
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
#include <dune/tnnmg/iterationsteps/genericnonlineargs.hh> #include <dune/tnnmg/iterationsteps/genericnonlineargs.hh>
//#include <dune/tnnmg/iterationsteps/tnnmgstep.hh> //#include <dune/tnnmg/iterationsteps/tnnmgstep.hh>
#include <dune/contact/assemblers/nbodyassembler.hh>
#define USE_OLD_TNNMG //needed for old bisection.hh in tnnmg #define USE_OLD_TNNMG //needed for old bisection.hh in tnnmg
template <size_t dim, class BlockProblemTEMPLATE, class DeformedGridTEMPLATE> template <size_t dim, class BlockProblemTEMPLATE, class DeformedGridTEMPLATE>
...@@ -31,7 +33,7 @@ class SolverFactory { ...@@ -31,7 +33,7 @@ class SolverFactory {
using Step = NonlinearSmoother; using Step = NonlinearSmoother;
//TruncatedNonsmoothNewtonMultigrid<BlockProblem, NonlinearSmoother>; //TruncatedNonsmoothNewtonMultigrid<BlockProblem, NonlinearSmoother>;
SolverFactory(Dune::ParameterTree const &parset, const DeformedGrid& grid, SolverFactory(Dune::ParameterTree const &parset, const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler,
Dune::BitSetVector<dim> const &ignoreNodes); Dune::BitSetVector<dim> const &ignoreNodes);
~SolverFactory(); ~SolverFactory();
...@@ -39,6 +41,8 @@ class SolverFactory { ...@@ -39,6 +41,8 @@ class SolverFactory {
std::shared_ptr<Step> getStep(); std::shared_ptr<Step> getStep();
private: private:
const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler_;
TruncatedBlockGSStep<Matrix, Vector> linearBaseSolverStep; TruncatedBlockGSStep<Matrix, Vector> linearBaseSolverStep;
EnergyNorm<Matrix, Vector> baseEnergyNorm; EnergyNorm<Matrix, Vector> baseEnergyNorm;
LoopSolver<Vector> linearBaseSolver; LoopSolver<Vector> linearBaseSolver;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment