NeoN
A framework for CFD software
Loading...
Searching...
No Matches
boundaryContext.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 - 2026 NeoN authors
2//
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
7#include <stdexcept>
8#include <string>
9#include <unordered_map>
10
14
16{
17
18template<typename ValueType>
19class VolumeField;
20
21template<typename ValueType>
22class SurfaceField;
23
36{
37public:
38
39 void insert(std::string name, const VolumeField<scalar>& f);
40 void insert(std::string name, const VolumeField<Vec3>& f);
41 void insert(std::string name, const VolumeField<Tensor>& f);
42 void insert(std::string name, const SurfaceField<scalar>& f);
43
44 const VolumeField<scalar>& scalarFieldPtr(const std::string& name) const;
45 const VolumeField<Vec3>& vectorFieldPtr(const std::string& name) const;
46 const VolumeField<Tensor>& tensorFieldPtr(const std::string& name) const;
47 const SurfaceField<scalar>& surfaceScalarField(const std::string& name) const;
48
49 bool hasScalar(const std::string& name) const noexcept;
50 bool hasVector(const std::string& name) const noexcept;
51 bool hasTensor(const std::string& name) const noexcept;
52 bool hasSurfaceScalar(const std::string& name) const noexcept;
53
54private:
55
56 std::unordered_map<std::string, const VolumeField<NeoN::scalar>*> scalarFields_;
57 std::unordered_map<std::string, const VolumeField<Vec3>*> vectorFields_;
58 std::unordered_map<std::string, const VolumeField<Tensor>*> tensorFields_;
59 std::unordered_map<std::string, const SurfaceField<NeoN::scalar>*> surfaceScalarFields_;
60};
61
62} // namespace NeoN::finiteVolume::cellCentred
Carries named field references for context-aware boundary conditions.
void insert(std::string name, const VolumeField< Tensor > &f)
bool hasTensor(const std::string &name) const noexcept
bool hasVector(const std::string &name) const noexcept
void insert(std::string name, const VolumeField< Vec3 > &f)
void insert(std::string name, const SurfaceField< scalar > &f)
void insert(std::string name, const VolumeField< scalar > &f)
const VolumeField< Tensor > & tensorFieldPtr(const std::string &name) const
const VolumeField< scalar > & scalarFieldPtr(const std::string &name) const
const VolumeField< Vec3 > & vectorFieldPtr(const std::string &name) const
bool hasScalar(const std::string &name) const noexcept
bool hasSurfaceScalar(const std::string &name) const noexcept
const SurfaceField< scalar > & surfaceScalarField(const std::string &name) const
Represents a surface field in a finite volume method.
Represents a volume field in a finite volume method.
const std::string & name(const NeoN::Document &doc)
Retrieves the name of a Document.