5template<
class CGSolver>
8 auto& coarseGridVertices,
10 const auto& vertexMarker
17 for (
int unknown=0; unknown<CGSolver::VertexUnknowns; unknown++) {
19 coarseGridVertices(v).setRhs(
21 coarseGridVertices(v).getRhs(unknown) + restrictionMatrix(v,col) * fineGridVertex.getResidual(unknown)
29template<
class CGSolver>
32 auto& coarseGridVertices,
34 const auto& vertexMarker
36 logTraceInWith3Arguments(
"prolongate", fineGridVertex.getLevel(), fineGridVertex.getU(), coarseGridVertices(0).getLevel());
39 for (
int unknown=0; unknown<CGSolver::VertexUnknowns; unknown++) {
43 delta += prolongationMatrix(row,v) * coarseGridVertices(v).getDelta(unknown);
48 fineGridVertex.getU(unknown) + delta
#define logTraceOutWith1Argument(methodName, argument0)
#define logTraceOut(methodName)
#define logTraceInWith3Arguments(methodName, argument0, argument1, argument2)
#define logTraceInWith1Argument(methodName, argument0)
std::string toString(Filter filter)
void restrictToNextLevel(const tarch::la::Matrix< TwoPowerD, FourPowerD, double > &restrictionMatrix, auto &coarseGridVertices, auto &fineGridVertex, const auto &vertexMarker)
Restrict data from fine grid vertices onto the coarse level.
void prolongate(const tarch::la::Matrix< FourPowerD, TwoPowerD, double > &prolongationMatrix, auto &coarseGridVertices, auto &fineGridVertex, const auto &vertexMarker)
Prolongate data from coarse vertices down onto fine vertices.
CPUGPUMethod int dLinearised(const tarch::la::Vector< Dimensions, int > &counter, int max)
Map d-dimensional vector onto integer index.