ThunderEgg
1.0.0
|
Restrictor that averages the corresponding fine cells into each coarse cell. More...
#include <LinearRestrictor.h>
Public Member Functions | |
LinearRestrictor (const Domain< D > &fine_domain, const Domain< D > &coarse_domain, bool extrapolate_boundary_ghosts=false) | |
Create new LinearRestrictor object. More... | |
LinearRestrictor< D > * | clone () const override |
Clone this restrictor. More... | |
void | restrictPatches (const std::vector< std::pair< int, std::reference_wrapper< const PatchInfo< D >>>> &patches, const Vector< D > &finer_vector, Vector< D > &coarser_vector) const override |
Restrict values into coarse vector. More... | |
Public Member Functions inherited from ThunderEgg::GMG::MPIRestrictor< D > | |
MPIRestrictor (const Domain< D > &coarser_domain, const Domain< D > &finer_domain) | |
Create new LinearRestrictor object. More... | |
Vector< D > | restrict (const Vector< D > &fine) const override |
Public Member Functions inherited from ThunderEgg::GMG::Restrictor< D > | |
virtual | ~Restrictor () |
Destroy the Restrictor object. | |
Restrictor that averages the corresponding fine cells into each coarse cell.
|
inline |
Create new LinearRestrictor object.
|
inlineoverridevirtual |
Clone this restrictor.
Implements ThunderEgg::GMG::Restrictor< D >.
|
inlineoverridevirtual |
Restrict values into coarse vector.
The idea behind this is that this function will be called twice. Once to fill in the ghost values, and once to fill in the local values. The ghost values will be filled first and the local values will be fill while MPI communication is happening.
patches | pairs where the first value is the index in the coarse vector and the second value is a reference to the PatchInfo object |
finer_vector | the finer vector |
coarser_vector | the coarser vector |
Implements ThunderEgg::GMG::MPIRestrictor< D >.