12#include <Kokkos_Core.hpp>
30template<
typename ValueType>
38template<
typename ValueType>
47 : Base(exec, mesh), geometryScheme_(
GeometryScheme::readOrCreate(mesh)) {};
49 static std::string
name() {
return "upwind"; }
51 static std::string
doc() {
return "upwind interpolation"; }
53 static std::string
schema() {
return "none"; }
86 std::unique_ptr<SurfaceInterpolationFactory<ValueType>>
clone()
const override
88 return std::make_unique<Upwind>(*
this);
93 const std::shared_ptr<GeometryScheme> geometryScheme_;
102namespace fvcc = finiteVolume::cellCentred;
Represents an unstructured mesh in NeoN.
Represents a surface field in a finite volume method.
Upwind(const Executor &exec, const UnstructuredMesh &mesh, Input input)
static std::string name()
void weight(const SurfaceField< scalar > &, const VolumeField< ValueType > &, SurfaceField< scalar > &) const override
static std::string schema()
void weight(const VolumeField< ValueType > &, SurfaceField< scalar > &) const override
std::unique_ptr< SurfaceInterpolationFactory< ValueType > > clone() const override
void interpolate(const VolumeField< ValueType > &src, SurfaceField< ValueType > &dst) const override
void interpolate(const SurfaceField< scalar > &flux, const VolumeField< ValueType > &src, SurfaceField< ValueType > &dst) const override
Represents a volume field in a finite volume method.
A template class for registering derived classes with a base class.
#define NF_ERROR_EXIT(message)
Macro for printing an error message and aborting the program.
void computeUpwindInterpolation(const VolumeField< ValueType > &src, const SurfaceField< scalar > &flux, const SurfaceField< scalar > &weights, SurfaceField< ValueType > &dst)
std::variant< Dictionary, TokenList > Input
std::variant< SerialExecutor, CPUExecutor, GPUExecutor > Executor