14#include <Kokkos_Core.hpp>
22template<
typename ValueType>
25 const std::shared_ptr<GeometryScheme> geometryScheme,
29template<
typename ValueType>
32 const std::shared_ptr<GeometryScheme> geometryScheme,
36template<
typename ValueType>
45 : Base(exec, mesh), geometryScheme_(
GeometryScheme::readOrCreate(mesh)) {};
48 : Base(exec, mesh), geometryScheme_(
GeometryScheme::readOrCreate(mesh)) {};
50 static std::string
name() {
return "corrected"; }
52 static std::string
doc()
54 return "Corrected face normal gradient with explicit non-orthogonality correction";
57 static std::string
schema() {
return "none"; }
68 return geometryScheme_->nonOrthDeltaCoeffs();
80 std::unique_ptr<FaceNormalGradientFactory<ValueType>>
clone()
const override
82 return std::make_unique<Corrected>(*
this);
87 const std::shared_ptr<GeometryScheme> geometryScheme_;
91template class Corrected<scalar>;
92template class Corrected<Vec3>;
Represents an unstructured mesh in NeoN.
std::unique_ptr< FaceNormalGradientFactory< ValueType > > clone() const override
virtual void faceNormalGrad(const VolumeField< ValueType > &volField, SurfaceField< ValueType > &surfaceField) const override
static std::string name()
static std::string schema()
virtual void implicitCorrection(const VolumeField< ValueType > &phi, SurfaceField< ValueType > &corrField) const override
bool hasImplicitCorrection() const override
Corrected(const Executor &exec, const UnstructuredMesh &mesh, Input)
virtual const SurfaceField< scalar > & deltaCoeffs() const override
Corrected(const Executor &exec, const UnstructuredMesh &mesh)
Represents a surface field in a finite volume method.
Represents a volume field in a finite volume method.
A template class for registering derived classes with a base class.
void computeCorrectionTerm(const VolumeField< ValueType > &volField, const std::shared_ptr< GeometryScheme > geometryScheme, SurfaceField< ValueType > &corrField)
void computeCorrectedFaceNormalGrad(const VolumeField< ValueType > &volField, const std::shared_ptr< GeometryScheme > geometryScheme, SurfaceField< ValueType > &surfaceField)
std::variant< Dictionary, TokenList > Input
std::variant< SerialExecutor, CPUExecutor, GPUExecutor > Executor