17template<
typename ValueType>
38template<
typename ValueType>
41 VolumeBoundaryFactory<ValueType>,
42 Parameters<const UnstructuredMesh&, const Dictionary&, localIdx>>,
47 static std::string
name() {
return "VolumeBoundaryFactory"; }
84 virtual std::unique_ptr<VolumeBoundaryFactory>
clone()
const = 0;
101template<
typename ValueType>
109 mesh.boundaryMesh().offset()[static_cast<
size_t>(
patchID) + 1],
113 dict.get<std::string>(
"type"), mesh, dict,
patchID
119 boundaryCorrectionStrategy_(other.boundaryCorrectionStrategy_->clone())
124 boundaryCorrectionStrategy_->correctBoundaryCondition(domainVector);
130 boundaryCorrectionStrategy_->correctBoundaryCondition(domainVector, ctx);
135 boundaryCorrectionStrategy_->set(domainVector);
140 boundaryCorrectionStrategy_->update(domainVector);
145 return boundaryCorrectionStrategy_->attributes();
148 const std::string
name()
const {
return boundaryCorrectionStrategy_->getName(); }
153 std::unique_ptr<NeoN::finiteVolume::cellCentred::VolumeBoundaryFactory<ValueType>>
154 boundaryCorrectionStrategy_;
A class representing a dictionary that stores key-value pairs.
Represents the domain fields for a computational domain.
A factory class for runtime selection of derived classes.
Represents an unstructured mesh in NeoN.
Carries named field references for context-aware boundary conditions.
A base class for implementing derived boundary conditions.
virtual std::unique_ptr< VolumeBoundaryFactory > clone() const =0
virtual void set(Field< ValueType > &domainVector)
One-time patch initialisation, applied once per field before the first update().
static std::string name()
virtual ~VolumeBoundaryFactory()=default
virtual void correctBoundaryCondition(Field< ValueType > &domainVector)=0
BoundaryAttributes attributes() const
virtual void update(Field< ValueType > &domainVector)
Per-iteration boundary update, applied on every correctBoundaryConditions() call.
VolumeBoundaryFactory(const UnstructuredMesh &mesh, const Dictionary &dict, localIdx patchID, BoundaryAttributes attributes)
virtual std::string getName() const =0
BoundaryAttributes attributes_
The attributes of the patch.
virtual void correctBoundaryCondition(Field< ValueType > &domainVector, const BoundaryContext &)
Represents a volume boundary field for a cell-centered finite volume method.
VolumeBoundary(const VolumeBoundary &other)
virtual void update(Field< ValueType > &domainVector)
const std::string name() const
VolumeBoundary(const UnstructuredMesh &mesh, const Dictionary &dict, localIdx patchID)
virtual void set(Field< ValueType > &domainVector)
virtual void correctBoundaryCondition(Field< ValueType > &domainVector, const BoundaryContext &ctx)
virtual void correctBoundaryCondition(Field< ValueType > &domainVector)
const BoundaryAttributes attributes() const
bool assignable
whether values can be assigned to the boundary patch