Peano
variant3 Namespace Reference

Functions

void runBenchmarks (int numberOfCells, double timeStamp, double timeStepSize, const tarch::la::Vector< DIMENSIONS, double > cellCenter, const tarch::la::Vector< DIMENSIONS, double > cellSize)
 

Variables

tarch::logging::Log _log
 This is variant 3 of the fused kernels. More...
 

Function Documentation

◆ runBenchmarks()

Variable Documentation

◆ _log

tarch::logging::Log variant3::_log
extern

This is variant 3 of the fused kernels.

In this variant, we will assume that faceData is constructed per cell, and that it contains data both from one's own cell and one's neighbour, e.g. it has access to the side of the faces that belong to the neighbour. We assume that this data IS shared with the neighbour, i.e. there always exist two instances of a faceData object which share a pointer.

This means that the Riemann kernel can be performed only once per face, but it also means that these need to be performed before any cells are started, as otherwise the cells cannot know whether any given face has already been solved by its neighbour.

This can be implemented as two enclave tasks, with the first being solving the pre-required Riemann problems, and the second being solving the problems inside of all of the cells in order.

Upsides: only one dependency which occurs between timeSteps Riemann kernels are only performed once per face No copying or duplicating of data whatsoever

Downsides: Costly data dependency at the beginning of the step due to the initial Riemann solves