Forked from
agnumpde / dune-tectonic
62 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
coupledtimestepper.hh 1.70 KiB
#ifndef SRC_TIME_STEPPING_COUPLEDTIMESTEPPER_HH
#define SRC_TIME_STEPPING_COUPLEDTIMESTEPPER_HH
#include <functional>
#include <memory>
#include <dune/common/parametertree.hh>
#include "../spatial-solving/fixedpointiterator.hh"
template <class Factory, class ContactNetwork, class Updaters, class ErrorNorms>
class CoupledTimeStepper {
using Vector = typename Factory::Vector;
using Matrix = typename Factory::Matrix;
using IgnoreVector = typename Factory::BitVector;
using FixedPointIterator = FixedPointIterator<Factory, ContactNetwork, Updaters, ErrorNorms>;
public:
using GlobalFriction = typename FixedPointIterator::GlobalFriction;
using BitVector = typename FixedPointIterator::BitVector;
using ExternalForces = std::vector<std::unique_ptr<const std::function<void(double, Vector &)>>>;
public:
CoupledTimeStepper(double finalTime,
Dune::ParameterTree const &parset,
const ContactNetwork& contactNetwork,
const IgnoreVector& ignoreNodes,
GlobalFriction& globalFriction,
const std::vector<const BitVector*>& bodywiseNonmortarBoundaries,
Updaters updaters,
const ErrorNorms& errorNorms,
ExternalForces& externalForces);
FixedPointIterationCounter step(double relativeTime, double relativeTau);
private:
double finalTime_;
Dune::ParameterTree const &parset_;
const ContactNetwork& contactNetwork_;
const IgnoreVector& ignoreNodes_;
GlobalFriction& globalFriction_;
const std::vector<const BitVector*>& bodywiseNonmortarBoundaries_;
Updaters updaters_;
ExternalForces& externalForces_;
const ErrorNorms& errorNorms_;
};
#endif