|
NeoN
A framework for CFD software
|
Namespaces | |
| namespace | detail |
| namespace | surfaceBoundary |
| namespace | volumeBoundary |
| namespace | volumeFieldDetail |
Classes | |
| class | BasicGeometryScheme |
| Default GeometryScheme kernel: computes weights, nonOrthDeltaCoeffs and the non-orthogonal correction vectors directly from the mesh geometry. More... | |
| struct | BoundaryAttributes |
| class | BoundaryContext |
| Carries named field references for context-aware boundary conditions. More... | |
| class | BoundaryPatchMixin |
| A base class for implementing derived boundary conditions. More... | |
| class | BoundedDiv |
| class | CellLimitedGrad |
| class | CellToFaceStencil |
| class | Corrected |
| class | CreateFromExistingVector |
| Creates a VectorDocument from an existing field. More... | |
| class | DdtOperator |
| class | DivOperator |
| class | DivOperatorFactory |
| class | DomainMixin |
| This class represents a mixin for a geometric field. More... | |
| class | FaceNormalGradient |
| class | FaceNormalGradientFactory |
| class | FieldDatabaseMixin |
| Mixin for database registration for fields (volume/surface). More... | |
| class | GaussGreenDdtDivLaplacian |
| class | GaussGreenDiv |
| class | GaussGreenDivLaplacian |
| class | GaussGreenGrad |
| class | GaussGreenLaplacian |
| class | GeometryScheme |
| class | GeometrySchemeFactory |
| class | GradOperator |
| class | GradOperatorFactory |
| class | LaplacianOperator |
| class | LaplacianOperatorFactory |
| class | LimitedCorrected |
| class | Linear |
| class | LinearUpwind |
| class | OldTimeCollection |
| class | OldTimeDocument |
| class | SourceTerm |
| class | SurfaceBoundary |
| Represents a surface boundary field for a cell-centered finite volume method. More... | |
| class | SurfaceBoundaryFactory |
| class | SurfaceField |
| Represents a surface field in a finite volume method. More... | |
| class | SurfaceIntegrate |
| class | SurfaceInterpolation |
| class | SurfaceInterpolationFactory |
| class | Uncorrected |
| class | Upwind |
| class | VectorCollection |
| A class representing a collection of field documents in a database. More... | |
| class | VectorDocument |
| A class representing a field document in a database. More... | |
| class | VolumeBoundary |
| Represents a volume boundary field for a cell-centered finite volume method. More... | |
| class | VolumeBoundaryFactory |
| class | VolumeField |
| Represents a volume field in a finite volume method. More... | |
Typedefs | |
| using | CreateFunction = std::function< VectorDocument(NeoN::Database &db)> |
| A function type for creating a VectorDocument. | |
| using | VolVectorField = VolumeField< Vec3 > |
| using | SurfScalarField = SurfaceField< scalar > |
Enumerations | |
| enum class | DdtScheme { None , SteadyState , BDF1 , BDF2 } |
Functions | |
| bool | validateVectorDoc (const Document &doc) |
| Validates a VectorDocument. | |
| template<typename VectorType > | |
| VectorType & | oldTime (VectorType &field) |
| Retrieves the old time field of a given field. | |
| template<typename VectorType > | |
| const VectorType & | oldTime (const VectorType &field) |
| Retrieves the old time field of a given field (const version). | |
| template<typename VectorType > | |
| int | oldTimeLevel (const VectorType &field) |
| Helper function to retrieve the history depth of a field in oldTimeCollection. | |
| template<typename VectorType > | |
| void | rotateOldTimes (VectorType &field) |
Rotate time levels for a field. Meaning of level (computed via oldTimeLevel(field)): level == 0 : no history exists yet level == 1 : φ^{n} exists (one oldTime buffer) level >= 2 : φ^{n} and φ^{n-1} exist (old and oldOld) | |
| std::pair< scalar, scalar > | computeCoNum (const SurfaceField< scalar > &faceFlux, const scalar dt) |
| template<typename BoundaryType > | |
| std::vector< BoundaryType > | createCalculatedBCs (const UnstructuredMesh &mesh) |
| template<typename BoundaryType > | |
| std::vector< BoundaryType > | createCalculatedProcBCs (const UnstructuredMesh &mesh) |
| template<typename BoundaryType > | |
| std::vector< BoundaryType > | createExtrapolatedBCs (const UnstructuredMesh &mesh) |
| std::vector< SurfaceBoundary< scalar > > | createFluxCorrBCsFromU (const UnstructuredMesh &mesh, const VolumeField< Vec3 > &u) |
| Boundary condition to apply to ddtFluxCorr surfaceScalarField. It sets the flux correction to zero for all fixedValue velocity boundaries by calling .correctBoundaryConditions(). | |
| template<typename ValueType > | |
| void | computeCorrectedFaceNormalGrad (const VolumeField< ValueType > &volField, const std::shared_ptr< GeometryScheme > geometryScheme, SurfaceField< ValueType > &surfaceField) |
| template<typename ValueType > | |
| void | computeCorrectionTerm (const VolumeField< ValueType > &volField, const std::shared_ptr< GeometryScheme > geometryScheme, SurfaceField< ValueType > &corrField) |
| template<typename ValueType > | |
| void | computeLimitedCorrectedFaceNormalGrad (const VolumeField< ValueType > &volField, const std::shared_ptr< GeometryScheme > geometryScheme, scalar limitCoeff, SurfaceField< ValueType > &surfaceField) |
| template<typename ValueType > | |
| void | computeLimitedCorrectionTerm (const VolumeField< ValueType > &volField, const std::shared_ptr< GeometryScheme > geometryScheme, scalar limitCoeff, SurfaceField< ValueType > &corrField) |
| template<typename ValueType > | |
| void | computeFaceNormalGrad (const VolumeField< ValueType > &volVector, const std::shared_ptr< GeometryScheme > geometryScheme, SurfaceField< ValueType > &surfaceVector) |
| 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) |
| SurfaceField< scalar > | operator* (scalar s, const SurfaceField< scalar > &fld) |
| VolumeField< Vec3 > | cross (const VolumeField< Vec3 > &lhs, const VolumeField< Vec3 > &rhs) |
| Element-wise cross product of two Vec3 volume fields. | |
| template<typename ValueType > | |
| void | computeLinearInterpolation (const VolumeField< ValueType > &src, const SurfaceField< scalar > &weights, SurfaceField< ValueType > &dst) |
| template<typename ValueType > | |
| void | computeLinearUpwindInterpolation (const VolumeField< ValueType > &src, const SurfaceField< scalar > &flux, const SurfaceField< Vec3 > &faceDeltaOwner, const SurfaceField< Vec3 > &faceDeltaNeighbour, SurfaceField< ValueType > &dst, const bool cellLimitedGradient=false) |
| template<typename ValueType > | |
| void | computeLinearUpwindCorrection (const VolumeField< ValueType > &src, const SurfaceField< scalar > &flux, const SurfaceField< Vec3 > &faceDeltaOwner, const SurfaceField< Vec3 > &faceDeltaNeighbour, SurfaceField< ValueType > &dst, const bool cellLimitedGradient=false) |
| template<typename ValueType > | |
| void | computeUpwindInterpolation (const VolumeField< ValueType > &src, const SurfaceField< scalar > &flux, const SurfaceField< scalar > &weights, SurfaceField< ValueType > &dst) |
| template<typename ValueType > | |
| void | computeUpwindInterpolationWeights (const SurfaceField< scalar > &flux, const VolumeField< ValueType > &src, SurfaceField< scalar > &weights) |
| template<typename FieldValueType , typename AssemblyType = FieldValueType> | |
| void | applyBoundedDivDiagonal (la::LinearSystem< AssemblyType, FieldValueType > &ls, const SurfaceField< scalar > &faceFlux, const UnstructuredMesh &mesh, const dsl::Coeff scaling) |
| SurfScalarField | ddtFluxCorr (const VolVectorField &u, const SurfScalarField &phi, scalar dt, DdtScheme scheme) |
| template<typename FieldValueType , typename AssemblyType > | |
| void | addDivCorrectionToRhs (la::LinearSystem< AssemblyType, FieldValueType > &ls, const SurfaceField< scalar > &faceFlux, const SurfaceField< FieldValueType > &correction, const dsl::Coeff operatorScaling) |
| template void | addDivCorrectionToRhs (la::LinearSystem< scalar, scalar > &, const SurfaceField< scalar > &, const SurfaceField< scalar > &, const dsl::Coeff) |
| template void | addDivCorrectionToRhs (la::LinearSystem< Vec3, Vec3 > &, const SurfaceField< scalar > &, const SurfaceField< Vec3 > &, const dsl::Coeff) |
| template void | addDivCorrectionToRhs (la::LinearSystem< scalar, Vec3 > &, const SurfaceField< scalar > &, const SurfaceField< Vec3 > &, const dsl::Coeff) |
| template<typename FieldValueType , typename AssemblyType = FieldValueType> | |
| void | computeLaplacianNonOrthCorrImpl (la::LinearSystem< AssemblyType, FieldValueType > &ls, const SurfaceField< scalar > &gamma, const VolumeField< FieldValueType > &phi, const dsl::Coeff coeff, const FaceNormalGradient< FieldValueType > &faceNormalGradient) |
| VolumeField< Vec3 > | reconstruct (const SurfaceField< scalar > &ssf) |
| template<typename ValueType > | |
| void | surfaceIntegrate (const Executor &exec, localIdx nInternalFaces, View< const label > internalFaceNeighbors, View< const label > internalFaceOwners, View< const label > boundaryFaceOwners, View< const ValueType > flux, View< const ValueType > bFlux, View< const scalar > v, View< ValueType > res, const dsl::Coeff operatorScaling) |
| using NeoN::finiteVolume::cellCentred::CreateFunction = typedef std::function<VectorDocument(NeoN::Database& db)> |
A function type for creating a VectorDocument.
This function type is used to create a VectorDocument and creates a registered VectorType
| db | The database to create the VectorDocument in. |
Definition at line 201 of file fieldCollection.hpp.
| using NeoN::finiteVolume::cellCentred::SurfScalarField = typedef SurfaceField<scalar> |
Definition at line 18 of file ddtFluxCorr.hpp.
| using NeoN::finiteVolume::cellCentred::VolVectorField = typedef VolumeField<Vec3> |
Definition at line 17 of file ddtFluxCorr.hpp.
|
strong |
| Enumerator | |
|---|---|
| None | |
| SteadyState | |
| BDF1 | |
| BDF2 | |
Definition at line 19 of file ddtOperator.hpp.
| void NeoN::finiteVolume::cellCentred::addDivCorrectionToRhs | ( | la::LinearSystem< AssemblyType, FieldValueType > & | ls, |
| const SurfaceField< scalar > & | faceFlux, | ||
| const SurfaceField< FieldValueType > & | correction, | ||
| const dsl::Coeff | operatorScaling | ||
| ) |
|
extern |
|
extern |
|
extern |
| void NeoN::finiteVolume::cellCentred::applyBoundedDivDiagonal | ( | la::LinearSystem< AssemblyType, FieldValueType > & | ls, |
| const SurfaceField< scalar > & | faceFlux, | ||
| const UnstructuredMesh & | mesh, | ||
| const dsl::Coeff | scaling | ||
| ) |
| std::pair< scalar, scalar > NeoN::finiteVolume::cellCentred::computeCoNum | ( | const SurfaceField< scalar > & | faceFlux, |
| const scalar | dt | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeCorrectedFaceNormalGrad | ( | const VolumeField< ValueType > & | volField, |
| const std::shared_ptr< GeometryScheme > | geometryScheme, | ||
| SurfaceField< ValueType > & | surfaceField | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeCorrectionTerm | ( | const VolumeField< ValueType > & | volField, |
| const std::shared_ptr< GeometryScheme > | geometryScheme, | ||
| SurfaceField< ValueType > & | corrField | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeFaceNormalGrad | ( | const VolumeField< ValueType > & | volVector, |
| const std::shared_ptr< GeometryScheme > | geometryScheme, | ||
| SurfaceField< ValueType > & | surfaceVector | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeLaplacianNonOrthCorrImpl | ( | la::LinearSystem< AssemblyType, FieldValueType > & | ls, |
| const SurfaceField< scalar > & | gamma, | ||
| const VolumeField< FieldValueType > & | phi, | ||
| const dsl::Coeff | coeff, | ||
| const FaceNormalGradient< FieldValueType > & | faceNormalGradient | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeLimitedCorrectedFaceNormalGrad | ( | const VolumeField< ValueType > & | volField, |
| const std::shared_ptr< GeometryScheme > | geometryScheme, | ||
| scalar | limitCoeff, | ||
| SurfaceField< ValueType > & | surfaceField | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeLimitedCorrectionTerm | ( | const VolumeField< ValueType > & | volField, |
| const std::shared_ptr< GeometryScheme > | geometryScheme, | ||
| scalar | limitCoeff, | ||
| SurfaceField< ValueType > & | corrField | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeLinearInterpolation | ( | const VolumeField< ValueType > & | src, |
| const SurfaceField< scalar > & | weights, | ||
| SurfaceField< ValueType > & | dst | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeLinearUpwindCorrection | ( | const VolumeField< ValueType > & | src, |
| const SurfaceField< scalar > & | flux, | ||
| const SurfaceField< Vec3 > & | faceDeltaOwner, | ||
| const SurfaceField< Vec3 > & | faceDeltaNeighbour, | ||
| SurfaceField< ValueType > & | dst, | ||
| const bool | cellLimitedGradient = false |
||
| ) |
| void NeoN::finiteVolume::cellCentred::computeLinearUpwindInterpolation | ( | const VolumeField< ValueType > & | src, |
| const SurfaceField< scalar > & | flux, | ||
| const SurfaceField< Vec3 > & | faceDeltaOwner, | ||
| const SurfaceField< Vec3 > & | faceDeltaNeighbour, | ||
| SurfaceField< ValueType > & | dst, | ||
| const bool | cellLimitedGradient = false |
||
| ) |
| void NeoN::finiteVolume::cellCentred::computeUpwindInterpolation | ( | const VolumeField< ValueType > & | src, |
| const SurfaceField< scalar > & | flux, | ||
| const SurfaceField< scalar > & | weights, | ||
| SurfaceField< ValueType > & | dst | ||
| ) |
| void NeoN::finiteVolume::cellCentred::computeUpwindInterpolationWeights | ( | const SurfaceField< scalar > & | flux, |
| const VolumeField< ValueType > & | src, | ||
| SurfaceField< scalar > & | weights | ||
| ) |
| std::vector< BoundaryType > NeoN::finiteVolume::cellCentred::createCalculatedBCs | ( | const UnstructuredMesh & | mesh | ) |
Definition at line 35 of file boundary.hpp.
| std::vector< BoundaryType > NeoN::finiteVolume::cellCentred::createCalculatedProcBCs | ( | const UnstructuredMesh & | mesh | ) |
Definition at line 49 of file boundary.hpp.
| std::vector< BoundaryType > NeoN::finiteVolume::cellCentred::createExtrapolatedBCs | ( | const UnstructuredMesh & | mesh | ) |
Definition at line 76 of file boundary.hpp.
|
inline |
Boundary condition to apply to ddtFluxCorr surfaceScalarField. It sets the flux correction to zero for all fixedValue velocity boundaries by calling .correctBoundaryConditions().
| mesh | The mesh the boundary is registered on. |
| u | The velocity field to check the boundary conditions on. |
Definition at line 23 of file ddtFluxCorrBoundary.hpp.
|
inline |
Element-wise cross product of two Vec3 volume fields.
Applied to the internal vector and to the boundary values alike, so the result is usable wherever the operands were — matching the scalar SurfaceField operators. Right-handed: cross(a, b)[i] == a[i] ^ b[i].
Definition at line 172 of file volumeField.hpp.
|
inline |
Definition at line 178 of file ddtFluxCorr.hpp.
| const VectorType & NeoN::finiteVolume::cellCentred::oldTime | ( | const VectorType & | field | ) |
Retrieves the old time field of a given field (const version).
This function retrieves the old time field of a given field
| field | The field to retrieve the old time field from. |
Definition at line 175 of file oldTimeCollection.hpp.
| VectorType & NeoN::finiteVolume::cellCentred::oldTime | ( | VectorType & | field | ) |
Retrieves the old time field of a given field.
This function retrieves the old time field of a given field
| field | The field to retrieve the old time field from. |
Definition at line 159 of file oldTimeCollection.hpp.
|
inline |
Helper function to retrieve the history depth of a field in oldTimeCollection.
| field | The field to retrieve the old time field from. |
Definition at line 189 of file oldTimeCollection.hpp.
|
inline |
Definition at line 177 of file surfaceField.hpp.
|
inline |
Definition at line 203 of file surfaceField.hpp.
|
inline |
Definition at line 186 of file surfaceField.hpp.
|
inline |
Definition at line 195 of file surfaceField.hpp.
| VolumeField< Vec3 > NeoN::finiteVolume::cellCentred::reconstruct | ( | const SurfaceField< scalar > & | ssf | ) |
| void NeoN::finiteVolume::cellCentred::rotateOldTimes | ( | VectorType & | field | ) |
Rotate time levels for a field. Meaning of level (computed via oldTimeLevel(field)): level == 0 : no history exists yet level == 1 : φ^{n} exists (one oldTime buffer) level >= 2 : φ^{n} and φ^{n-1} exist (old and oldOld)
Startup sequence when rotate() is called at the BEGINNING of each time step:
Initial state (t = t0, before first rotate): field = φ^{0} no oldTime buffers exist
First rotateOldTimes() call (entering t1):
Second rotateOldTimes() call (entering t2):
Subsequent rotate() calls:
Only two historical states are kept (φ^{n}, φ^{n-1}).
| field | The field to retrieve the old time field from. |
| void NeoN::finiteVolume::cellCentred::surfaceIntegrate | ( | const Executor & | exec, |
| localIdx | nInternalFaces, | ||
| View< const label > | internalFaceNeighbors, | ||
| View< const label > | internalFaceOwners, | ||
| View< const label > | boundaryFaceOwners, | ||
| View< const ValueType > | flux, | ||
| View< const ValueType > | bFlux, | ||
| View< const scalar > | v, | ||
| View< ValueType > | res, | ||
| const dsl::Coeff | operatorScaling | ||
| ) |
| bool NeoN::finiteVolume::cellCentred::validateVectorDoc | ( | const Document & | doc | ) |
Validates a VectorDocument.
This function validates a VectorDocument by checking if it contains the required fields.
| doc | The Document to validate. |