NeoFOAM
WIP Prototype of a modern OpenFOAM core
Loading...
Searching...
No Matches
upwind.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// SPDX-FileCopyrightText: 2023 NeoFOAM authors
3
4#pragma once
5
11
12#include <Kokkos_Core.hpp>
13
14#include <functional>
15
17{
18
19class Upwind : public SurfaceInterpolationFactory::Register<Upwind>
20{
21
22public:
23
24 Upwind(const Executor& exec, const UnstructuredMesh& mesh, Input input);
25
26 static std::string name() { return "upwind"; }
27
28 static std::string doc() { return "upwind interpolation"; }
29
30 static std::string schema() { return "none"; }
31
32 void interpolate(const VolumeField<scalar>& volField, SurfaceField<scalar>& surfaceField)
33 const override;
34
36 const SurfaceField<scalar>& faceFlux,
37 const VolumeField<scalar>& volField,
38 SurfaceField<scalar>& surfaceField
39 ) const override;
40
41 std::unique_ptr<SurfaceInterpolationFactory> clone() const override;
42
43private:
44
45 const std::shared_ptr<GeometryScheme> geometryScheme_;
46};
47
48} // namespace NeoFOAM
Represents an unstructured mesh in NeoFOAM.
Represents a surface field in a finite volume method.
void interpolate(const SurfaceField< scalar > &faceFlux, const VolumeField< scalar > &volField, SurfaceField< scalar > &surfaceField) const override
std::unique_ptr< SurfaceInterpolationFactory > clone() const override
void interpolate(const VolumeField< scalar > &volField, SurfaceField< scalar > &surfaceField) const override
Upwind(const Executor &exec, const UnstructuredMesh &mesh, Input input)
Represents a volume field in a finite volume method.
std::variant< Dictionary, TokenList > Input
Definition input.hpp:13
std::variant< SerialExecutor, CPUExecutor, GPUExecutor > Executor
Definition executor.hpp:16