34    template<std::
size_t id>
 
   35    using SubDomainGridGeometry = 
typename MDTraits::template SubDomain<id>::GridGeometry;
 
   37    using GridGeometryPtrTuple = 
typename MDTraits::template TupleOfSharedPtrConst<SubDomainGridGeometry>;
 
   39    using SolutionVector = 
typename MDTraits::SolutionVector;
 
   40    using ResidualVector = 
typename MDTraits::ResidualVector;
 
   42    template<std::
size_t id>
 
   43    using SubDomainSolutionVector = 
typename MDTraits::template SubDomain<id>::SolutionVector;
 
   44    template<std::
size_t id>
 
   45    using SubDomainResidualVector = 
typename MDTraits::template SubDomain<id>::ResidualVector;
 
   47    template<std::
size_t id>
 
   50    using ConvergenceWriterPtrTuple = 
typename MDTraits::template TupleOfSharedPtr<SubDomainNewtonConvergenceWriter>;
 
   59                                       const std::string& name = 
"newton_convergence")
 
   60    : gridGeometryPtrTuple_(std::move(gridGeometryPtrTuple))
 
   62        using namespace Dune::Hybrid;
 
   63        forEach(std::make_index_sequence<MDTraits::numSubDomains>{}, [&](
auto&& id)
 
   65            using ConvWriter = SubDomainNewtonConvergenceWriter<std::decay_t<
decltype(id)>::value>;
 
   66            elementAt(convergenceWriterPtrTuple_, 
id) = std::make_shared<ConvWriter>(*elementAt(gridGeometryPtrTuple_, 
id), name + 
"_domain_" + std::to_string(
id));
 
 
   73        using namespace Dune::Hybrid;
 
   74        forEach(std::make_index_sequence<MDTraits::numSubDomains>{}, [&](
auto&& id)
 
   76            elementAt(convergenceWriterPtrTuple_, 
id)->resize();
 
 
   82    void reset(std::size_t newId = 0UL)
 
   84        using namespace Dune::Hybrid;
 
   85        forEach(std::make_index_sequence<MDTraits::numSubDomains>{}, [&](
auto&& id)
 
   87            elementAt(convergenceWriterPtrTuple_, 
id)->reset(newId);
 
 
   91    void write(
const SolutionVector& uLastIter,
 
   92               const ResidualVector& deltaU,
 
   93               const ResidualVector& residual)
 override 
   95        using namespace Dune::Hybrid;
 
   96        forEach(std::make_index_sequence<MDTraits::numSubDomains>{}, [&](
auto&& id)
 
   98            constexpr auto i = std::decay_t<
decltype(id)>{};
 
   99            elementAt(convergenceWriterPtrTuple_, 
id)->write(uLastIter[i], deltaU[i], residual[i]);
 
 
  104    GridGeometryPtrTuple gridGeometryPtrTuple_;
 
  105    ConvergenceWriterPtrTuple convergenceWriterPtrTuple_;
 
 
void reset(std::size_t newId=0UL)
Definition multidomain/newtonconvergencewriter.hh:82
void resize()
Resizes the output fields. This has to be called whenever the grid changes.
Definition multidomain/newtonconvergencewriter.hh:71
void write(const SolutionVector &uLastIter, const ResidualVector &deltaU, const ResidualVector &residual) override
Definition multidomain/newtonconvergencewriter.hh:91
MultiDomainNewtonConvergenceWriter(GridGeometryPtrTuple gridGeometryPtrTuple, const std::string &name="newton_convergence")
Constructor.
Definition multidomain/newtonconvergencewriter.hh:58