13 namespace matrixfree {
15 namespace dgcgcoupling {
91 bool restrictRhsAndInjectSolution,
130 template <
class DGSolver,
class CGSolver>
137 template <
class DGSolver,
class CGSolver>
141 const auto& cgVertices
144 template <
class DGSolver,
class CGSolver>
155 template <
class DGSolver,
class CGSolver>
169 template <
class CGSolver>
179#include "DGCGCoupling.cpph"
void updateRestrictionCounters(auto &vertices)
Restrict counters.
void computeAndRestrictHierarchicalResidual(const tarch::la::Matrix< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, TwoPowerD *CGSolver::VertexUnknowns, double > &prolongationMatrix, const tarch::la::Matrix< TwoPowerD *CGSolver::VertexUnknowns, DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &restrictionMatrix, const tarch::la::Matrix< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &massMatrix, const tarch::la::Matrix< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &systemMatrix, const tarch::la::Vector< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &dgSolution, const tarch::la::Vector< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &dgRhs, auto &cgVertices)
void injectSolution(const tarch::la::Matrix< TwoPowerD *CGSolver::VertexUnknowns, DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &injectionMatrix, const tarch::la::Vector< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &dgSolution, auto &cgVertices)
void rollOverAndPrepareCGVertex(auto &vertex, bool restrictRhsAndInjectSolution, bool fas)
Apply updates from previous mesh sweep in multigrid sense and prepare for next correction step.
void computeAndRestrictResidual(const tarch::la::Matrix< TwoPowerD *CGSolver::VertexUnknowns, DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &restrictionMatrix, const tarch::la::Matrix< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &massMatrix, const tarch::la::Matrix< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &systemMatrix, const tarch::la::Vector< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &dgSolution, const tarch::la::Vector< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &dgRhs, const tarch::la::Vector< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &faceSolutions, auto &cgVertices)
tarch::la::Vector< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > prolongate(const tarch::la::Matrix< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, TwoPowerD *CGSolver::VertexUnknowns, double > &prolongationMatrix, const tarch::la::Vector< DGSolver::NodesPerCell *DGSolver::UnknownsPerCellNode, double > &dgSolution, const auto &cgVertices)
tarch::la::Vector< TwoPowerD *CGSolver::VertexUnknowns, double > getCoarseGridSolution(auto &cgVertices)
Get the vector of course grid solutions.
This file is part of the multigrid project within Peano 4.
This file is part of the multigrid project within Peano 4.