20template<
typename FieldValueType,
typename AssemblyType = FieldValueType>
23 GaussGreenDiv<FieldValueType, AssemblyType>>
30 static std::string
name() {
return "Gauss"; }
32 static std::string
doc() {
return "Gauss-Green Divergence"; }
34 static std::string
schema() {
return "none"; }
37 : Base(exec, mesh), surfaceInterpolation_(exec, mesh, inputs) {};
42 const dsl::Coeff operatorScaling)
const override;
48 const dsl::Coeff operatorScaling)
const override;
54 const dsl::Coeff operatorScaling)
const override;
60 const dsl::Coeff operatorScaling)
const override;
62 std::unique_ptr<DivOperatorFactory<FieldValueType, AssemblyType>>
clone()
const override
64 return std::make_unique<GaussGreenDiv<FieldValueType, AssemblyType>>(*this);
75extern template class GaussGreenDiv<scalar>;
76extern template class GaussGreenDiv<Vec3>;
77extern template class GaussGreenDiv<Vec3, scalar>;
83template<
typename FieldValueType,
typename AssemblyType>
Represents an unstructured mesh in NeoN.
A class to contain the data and executors for a field and define some basic operations.
A class that represents a coefficient for the NeoN dsl.
std::unique_ptr< DivOperatorFactory< FieldValueType, AssemblyType > > clone() const override
virtual void div(Vector< FieldValueType > &divPhi, const SurfaceField< scalar > &faceFlux, const VolumeField< FieldValueType > &phi, const dsl::Coeff operatorScaling) const override
static std::string name()
virtual void div(VolumeField< FieldValueType > &divPhi, const SurfaceField< scalar > &faceFlux, const VolumeField< FieldValueType > &phi, const dsl::Coeff operatorScaling) const override
GaussGreenDiv(const Executor &exec, const UnstructuredMesh &mesh, const Input &inputs)
static std::string schema()
virtual void div(la::LinearSystem< AssemblyType, FieldValueType > &ls, const SurfaceField< scalar > &faceFlux, const VolumeField< FieldValueType > &phi, const dsl::Coeff operatorScaling) const override
virtual VolumeField< FieldValueType > div(const SurfaceField< scalar > &faceFlux, const VolumeField< FieldValueType > &phi, const dsl::Coeff operatorScaling) const override
Represents a surface field in a finite volume method.
Represents a volume field in a finite volume method.
A class representing a linear system of equations.
A template class for registering derived classes with a base class.
void addDivCorrectionToRhs(la::LinearSystem< AssemblyType, FieldValueType > &ls, const SurfaceField< scalar > &faceFlux, const SurfaceField< FieldValueType > &correction, const dsl::Coeff operatorScaling)
std::variant< Dictionary, TokenList > Input
std::variant< SerialExecutor, CPUExecutor, GPUExecutor > Executor