NeoN
A framework for CFD software
Loading...
Searching...
No Matches
geometryScheme.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2023 - 2025 NeoN authors
2//
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
7
13
15{
16
18{
19
20public:
21
23
24 virtual ~GeometrySchemeFactory() = default;
25
26 virtual void updateWeights(const Executor& exec, SurfaceField<scalar>& weights) = 0;
27
28 virtual void updateDeltaCoeffs(const Executor& exec, SurfaceField<scalar>& deltaCoeffs) = 0;
29
30 virtual void
31 updateNonOrthDeltaCoeffs(const Executor& exec, SurfaceField<scalar>& nonOrthDeltaCoeffs) = 0;
32
33 virtual void
34 updateNonOrthDeltaCoeffs(const Executor& exec, SurfaceField<Vec3>& nonOrthDeltaCoeffs) = 0;
35};
36
37/* @class GeometryScheme
38 * @brief Implements a method to compute deltaCoeffs
39 */
41{
42public:
43
45 const Executor& exec,
46 std::unique_ptr<GeometrySchemeFactory> kernel,
51 );
52
54 const Executor& exec,
55 const UnstructuredMesh& mesh,
56 std::unique_ptr<GeometrySchemeFactory> kernel
57 );
58
59 GeometryScheme(const UnstructuredMesh& mesh // will lookup the kernel
60 );
61
62 virtual ~GeometryScheme() = default;
63
65
67
69
71
72 void update();
73
74 std::string name() const;
75
76 // add selection mechanism via dictionary later
77 static const std::shared_ptr<GeometryScheme> readOrCreate(const UnstructuredMesh& mesh);
78
79private:
80
81 const Executor exec_;
82 const UnstructuredMesh& mesh_;
83 std::unique_ptr<GeometrySchemeFactory> kernel_;
84
85 SurfaceField<scalar> weights_;
86 SurfaceField<scalar> deltaCoeffs_;
87 SurfaceField<scalar> nonOrthDeltaCoeffs_;
88 SurfaceField<Vec3> nonOrthCorrectionVec3s_;
89};
90
91} // namespace NeoN
Represents an unstructured mesh in NeoN.
virtual void updateWeights(const Executor &exec, SurfaceField< scalar > &weights)=0
virtual void updateDeltaCoeffs(const Executor &exec, SurfaceField< scalar > &deltaCoeffs)=0
virtual void updateNonOrthDeltaCoeffs(const Executor &exec, SurfaceField< scalar > &nonOrthDeltaCoeffs)=0
virtual void updateNonOrthDeltaCoeffs(const Executor &exec, SurfaceField< Vec3 > &nonOrthDeltaCoeffs)=0
const SurfaceField< Vec3 > & nonOrthCorrectionVec3s() const
GeometryScheme(const UnstructuredMesh &mesh)
GeometryScheme(const Executor &exec, std::unique_ptr< GeometrySchemeFactory > kernel, const SurfaceField< scalar > &weights, const SurfaceField< scalar > &deltaCoeffs, const SurfaceField< scalar > &nonOrthDeltaCoeffs, const SurfaceField< Vec3 > &nonOrthCorrectionVec3s)
const SurfaceField< scalar > & deltaCoeffs() const
const SurfaceField< scalar > & weights() const
static const std::shared_ptr< GeometryScheme > readOrCreate(const UnstructuredMesh &mesh)
const SurfaceField< scalar > & nonOrthDeltaCoeffs() const
GeometryScheme(const Executor &exec, const UnstructuredMesh &mesh, std::unique_ptr< GeometrySchemeFactory > kernel)
Represents a surface field in a finite volume method.
std::variant< SerialExecutor, CPUExecutor, GPUExecutor > Executor
Definition executor.hpp:18