From 557a1192045ea176623e14bfdd8ca51ad898a632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Thu, 8 Jul 2021 19:10:37 +0200 Subject: [PATCH] Add fixed boundary condition descriptor --- .../FixedBoundaryConditionDescriptor.hpp | 56 +++++++++++++++++++ src/scheme/IBoundaryConditionDescriptor.hpp | 1 + 2 files changed, 57 insertions(+) create mode 100644 src/scheme/FixedBoundaryConditionDescriptor.hpp diff --git a/src/scheme/FixedBoundaryConditionDescriptor.hpp b/src/scheme/FixedBoundaryConditionDescriptor.hpp new file mode 100644 index 000000000..2a635b041 --- /dev/null +++ b/src/scheme/FixedBoundaryConditionDescriptor.hpp @@ -0,0 +1,56 @@ +#ifndef FIXED_BOUNDARY_CONDITION_DESCRIPTOR_HPP +#define FIXED_BOUNDARY_CONDITION_DESCRIPTOR_HPP + +#include <language/utils/FunctionSymbolId.hpp> +#include <scheme/IBoundaryConditionDescriptor.hpp> +#include <scheme/IBoundaryDescriptor.hpp> + +#include <memory> + +class FixedBoundaryConditionDescriptor : public IBoundaryConditionDescriptor +{ + private: + std::ostream& + _write(std::ostream& os) const final + { + os << "fixed(" << m_name << ',' << *m_boundary_descriptor << ")"; + return os; + } + + const std::string_view m_name; + + std::shared_ptr<const IBoundaryDescriptor> m_boundary_descriptor; + + public: + std::string_view + name() const + { + return m_name; + } + + const IBoundaryDescriptor& + boundaryDescriptor() const + { + return *m_boundary_descriptor; + } + + Type + type() const final + { + return Type::fixed; + } + + FixedBoundaryConditionDescriptor(const std::string_view name, + std::shared_ptr<const IBoundaryDescriptor> boundary_descriptor) + : m_name{name}, m_boundary_descriptor(boundary_descriptor) + { + ; + } + + FixedBoundaryConditionDescriptor(const FixedBoundaryConditionDescriptor&) = delete; + FixedBoundaryConditionDescriptor(FixedBoundaryConditionDescriptor&&) = delete; + + ~FixedBoundaryConditionDescriptor() = default; +}; + +#endif // FIXED_BOUNDARY_CONDITION_DESCRIPTOR_HPP diff --git a/src/scheme/IBoundaryConditionDescriptor.hpp b/src/scheme/IBoundaryConditionDescriptor.hpp index 30a25db66..96989954c 100644 --- a/src/scheme/IBoundaryConditionDescriptor.hpp +++ b/src/scheme/IBoundaryConditionDescriptor.hpp @@ -10,6 +10,7 @@ class IBoundaryConditionDescriptor { dirichlet, fourier, + fixed, free, neumann, symmetry -- GitLab