Peano
Loading...
Searching...
No Matches
exahype2::FaceData< inType, outType > Struct Template Reference

Represents the sides of one face, with 2 sides (left and right) to a face For ADER QIn will contain the values, QOut would contain the fluxes QIn[faceId][0][...] will contain the values of the left side relative to the face QIn[faceId][1][...] will contain the values of the right side relative to the face. More...

#include <LRFaceData.h>

Public Member Functions

 FaceData (inType *QIn_[2], const tarch::la::Vector< DIMENSIONS, double > &faceCentre_, const tarch::la::Vector< DIMENSIONS, double > &faceSize_, double t_, double dt_, outType *QOut_[2], tarch::MemoryLocation memoryLocation_=tarch::MemoryLocation::Heap, int targetDevice_=tarch::accelerator::Device::DefaultDevice)
 Construct patch data object for one single cell.
 FaceData (int numberOfFaces_, tarch::MemoryLocation memoryLocation_=tarch::MemoryLocation::Heap, int targetDevice_=tarch::accelerator::Device::DefaultDevice)
 FaceData (const FaceData &copy)=delete
FaceDataoperator= (const FaceData &)=delete
 ~FaceData ()
std::string toString () const

Data Fields

inType *(* QIn )[2]
 QIn may not be const, as some kernels delete it straightaway once the input data has been handled.
tarch::la::Vector< DIMENSIONS, double > * faceCentre
tarch::la::Vector< DIMENSIONS, double > * faceSize
double * t
double * dt
int * id
 Id of underlying task.
const int numberOfFaces
 As we store data as SoA, we have to know how big the actual arrays are.
const tarch::MemoryLocation memoryLocation
 We might want to allocate data on the heap or an accelerator, therefore we save the target device id.
const int targetDevice
 We might want to allocate data on an accelerator, therefore we save the target device id.
outType *(* QOut )[2]
 Out values.

Detailed Description

template<typename inType = double, typename outType = double>
struct exahype2::FaceData< inType, outType >

Represents the sides of one face, with 2 sides (left and right) to a face For ADER QIn will contain the values, QOut would contain the fluxes QIn[faceId][0][...] will contain the values of the left side relative to the face QIn[faceId][1][...] will contain the values of the right side relative to the face.

Definition at line 20 of file LRFaceData.h.

Constructor & Destructor Documentation

◆ FaceData() [1/3]

template<typename inType, typename outType>
exahype2::FaceData< inType, outType >::FaceData ( inType * QIn_[2],
const tarch::la::Vector< DIMENSIONS, double > & faceCentre_,
const tarch::la::Vector< DIMENSIONS, double > & faceSize_,
double t_,
double dt_,
outType * QOut_[2],
tarch::MemoryLocation memoryLocation_ = tarch::MemoryLocation::Heap,
int targetDevice_ = tarch::accelerator::Device::DefaultDevice )

Construct patch data object for one single cell.

Usually, I do so only to be able to use the same kernels everywhere: Kernels accept FaceData, i.e. multiple patches. Even if we have only one cell, we thus wrap this cell's data into an instance of FaceData and pass it in. The id can be set to any dummy in this case, as we know which task has wrapped this single cell, i.e. we usually do not read it later.

Definition at line 100 of file LRFaceData.h.

References dt, faceCentre, FaceData(), faceSize, QIn, QOut, and t.

Referenced by FaceData(), FaceData(), and operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FaceData() [2/3]

template<typename inType, typename outType>
exahype2::FaceData< inType, outType >::FaceData ( int numberOfFaces_,
tarch::MemoryLocation memoryLocation_ = tarch::MemoryLocation::Heap,
int targetDevice_ = tarch::accelerator::Device::DefaultDevice )

Definition at line 121 of file LRFaceData.h.

References dt, faceCentre, faceSize, memoryLocation, numberOfFaces, QIn, QOut, t, and targetDevice.

◆ FaceData() [3/3]

template<typename inType = double, typename outType = double>
exahype2::FaceData< inType, outType >::FaceData ( const FaceData< inType, outType > & copy)
delete

References FaceData().

Here is the call graph for this function:

◆ ~FaceData()

template<typename inType, typename outType>
exahype2::FaceData< inType, outType >::~FaceData ( )

Definition at line 156 of file LRFaceData.h.

References dt, faceCentre, faceSize, QIn, QOut, t, and targetDevice.

Member Function Documentation

◆ operator=()

template<typename inType = double, typename outType = double>
FaceData & exahype2::FaceData< inType, outType >::operator= ( const FaceData< inType, outType > & )
delete

References FaceData().

Here is the call graph for this function:

◆ toString()

template<typename inType, typename outType>
std::string exahype2::FaceData< inType, outType >::toString ( ) const

Definition at line 174 of file LRFaceData.h.

References dt, faceCentre, faceSize, numberOfFaces, and t.

Field Documentation

◆ dt

template<typename inType = double, typename outType = double>
double* exahype2::FaceData< inType, outType >::dt

◆ faceCentre

template<typename inType = double, typename outType = double>
tarch::la::Vector<DIMENSIONS, double>* exahype2::FaceData< inType, outType >::faceCentre

◆ faceSize

template<typename inType = double, typename outType = double>
tarch::la::Vector<DIMENSIONS, double>* exahype2::FaceData< inType, outType >::faceSize

◆ id

template<typename inType = double, typename outType = double>
int* exahype2::FaceData< inType, outType >::id

Id of underlying task.

Required when we fuse many enclave tasks and load them off to the GPU, as we have to know afterwards which outcome corresponds to which task.

Definition at line 37 of file LRFaceData.h.

◆ memoryLocation

template<typename inType = double, typename outType = double>
const tarch::MemoryLocation exahype2::FaceData< inType, outType >::memoryLocation

We might want to allocate data on the heap or an accelerator, therefore we save the target device id.

Definition at line 49 of file LRFaceData.h.

Referenced by FaceData().

◆ numberOfFaces

template<typename inType = double, typename outType = double>
const int exahype2::FaceData< inType, outType >::numberOfFaces

As we store data as SoA, we have to know how big the actual arrays are.

Definition at line 43 of file LRFaceData.h.

Referenced by FaceData(), and toString().

◆ QIn

template<typename inType = double, typename outType = double>
inType*(* exahype2::FaceData< inType, outType >::QIn)[2]

QIn may not be const, as some kernels delete it straightaway once the input data has been handled.

Definition at line 25 of file LRFaceData.h.

Referenced by FaceData(), FaceData(), firstTask(), firstTask(), initialTask(), variant4::runBenchmarks(), variant5::runBenchmarks(), variant6::runBenchmarks(), runKernels(), secondTask(), and ~FaceData().

◆ QOut

template<typename inType = double, typename outType = double>
outType*(* exahype2::FaceData< inType, outType >::QOut)[2]

◆ t

template<typename inType = double, typename outType = double>
double* exahype2::FaceData< inType, outType >::t

◆ targetDevice

template<typename inType = double, typename outType = double>
const int exahype2::FaceData< inType, outType >::targetDevice

We might want to allocate data on an accelerator, therefore we save the target device id.

Definition at line 55 of file LRFaceData.h.

Referenced by FaceData(), and ~FaceData().


The documentation for this struct was generated from the following file:
  • benchmarks/exahype2/kernel-benchmarks/aderdg-fused/LRFaceData.h