26template<
typename ValueType>
44 std::string fieldName,
108 std::string fieldName,
114 std::string collectionName
128 boundaryConditions_(other.boundaryConditions_)
141 if (!boundaryConditionsSet_)
143 for (
auto& boundaryCondition : boundaryConditions_)
145 boundaryCondition.set(this->
field_);
147 boundaryConditionsSet_ =
true;
151 for (
auto& boundaryCondition : boundaryConditions_)
153 boundaryCondition.update(this->
field_);
157 this->
field_.boundaryData().waitAll();
162 return boundaryConditions_;
167 std::vector<SurfaceBoundary<ValueType>>
169 std::optional<Database*> db_;
173 bool boundaryConditionsSet_ {
false};
176inline SurfaceField<scalar>
185inline SurfaceField<scalar>
194inline SurfaceField<scalar>
Represents the boundary fields for a computational domain.
Represents the domain fields for a computational domain.
Represents an unstructured mesh in NeoN.
A class to contain the data and executors for a field and define some basic operations.
This class represents a mixin for a geometric field.
const UnstructuredMesh & mesh() const
Returns a const reference to the unstructured mesh object.
const BoundaryData< ValueType > & boundaryData() const
Returns a const reference to the boundary field.
const Executor & exec() const
Returns a const reference to the executor object.
const Vector< ValueType > & internalVector() const
Returns a const reference to the internal field.
Field< ValueType > field_
Mixin for database registration for fields (volume/surface).
FieldDatabaseMixin()=default
Represents a surface boundary field for a cell-centered finite volume method.
Represents a surface field in a finite volume method.
ValueType VectorValueType
SurfaceField(const Executor &exec, std::string fieldName, const UnstructuredMesh &mesh, const Field< ValueType > &domainVector, const std::vector< SurfaceBoundary< ValueType > > &boundaryConditions, Database &db, std::string dbKey, std::string collectionName)
std::vector< SurfaceBoundary< ValueType > > boundaryConditions() const
SurfaceField(const Executor &exec, std::string fieldName, const UnstructuredMesh &mesh, const std::vector< SurfaceBoundary< ValueType > > &boundaryConditions)
Constructor for a surfaceVector with a given name and mesh.
SurfaceField(const SurfaceField &other)
Copy constructor for a surface field.
SurfaceField(const Executor &exec, const UnstructuredMesh &mesh, const Field< ValueType > &domainVector, const std::vector< SurfaceBoundary< ValueType > > &boundaryConditions)
void correctBoundaryConditions()
Corrects the boundary conditions of the surface field.
SurfaceField(const Executor &exec, const UnstructuredMesh &mesh, const Vector< ValueType > &internalVector, const BoundaryData< ValueType > &boundaryVectors, const std::vector< SurfaceBoundary< ValueType > > &boundaryConditions)
SurfaceField< scalar > operator+(const SurfaceField< scalar > &lhs, const SurfaceField< scalar > &rhs)
SurfaceField< scalar > operator-(const SurfaceField< scalar > &lhs, const SurfaceField< scalar > &rhs)
SurfaceField< scalar > operator*(const SurfaceField< scalar > &lhs, const SurfaceField< scalar > &rhs)
std::variant< SerialExecutor, CPUExecutor, GPUExecutor > Executor