From f4e45f73d241a42148acdd2e8933983557d67f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Thu, 22 Apr 2021 15:27:06 +0200 Subject: [PATCH] Remove the constructors based on FunctionSymbolId These constructors existence was the result of a bad design and just treated very special cases --- src/scheme/AcousticSolver.cpp | 1 + src/scheme/DiscreteFunctionInterpoler.cpp | 11 +++++++++-- src/scheme/DiscreteFunctionP0.hpp | 11 ----------- src/scheme/DiscreteFunctionP0Vector.hpp | 12 ------------ src/scheme/DiscreteFunctionVectorInterpoler.cpp | 10 +++++++++- 5 files changed, 19 insertions(+), 26 deletions(-) diff --git a/src/scheme/AcousticSolver.cpp b/src/scheme/AcousticSolver.cpp index 3336fd716..6bac5a6b3 100644 --- a/src/scheme/AcousticSolver.cpp +++ b/src/scheme/AcousticSolver.cpp @@ -1,5 +1,6 @@ #include <scheme/AcousticSolver.hpp> +#include <language/utils/InterpolateItemValue.hpp> #include <mesh/ItemValueUtils.hpp> #include <mesh/MeshNodeBoundary.hpp> #include <scheme/DirichletBoundaryConditionDescriptor.hpp> diff --git a/src/scheme/DiscreteFunctionInterpoler.cpp b/src/scheme/DiscreteFunctionInterpoler.cpp index fda64fdcb..c8eeaf94c 100644 --- a/src/scheme/DiscreteFunctionInterpoler.cpp +++ b/src/scheme/DiscreteFunctionInterpoler.cpp @@ -1,5 +1,6 @@ #include <scheme/DiscreteFunctionInterpoler.hpp> +#include <language/utils/InterpolateItemValue.hpp> #include <scheme/DiscreteFunctionP0.hpp> #include <utils/Exceptions.hpp> @@ -7,8 +8,14 @@ template <size_t Dimension, typename DataType> std::shared_ptr<IDiscreteFunction> DiscreteFunctionInterpoler::_interpolate() const { - std::shared_ptr mesh = std::dynamic_pointer_cast<const Mesh<Connectivity<Dimension>>>(m_mesh); - return std::make_shared<DiscreteFunctionP0<Dimension, DataType>>(mesh, m_function_id); + std::shared_ptr mesh = std::dynamic_pointer_cast<const Mesh<Connectivity<Dimension>>>(m_mesh); + using MeshDataType = MeshData<Dimension>; + MeshDataType& mesh_data = MeshDataManager::instance().getMeshData(*mesh); + + return std::make_shared< + DiscreteFunctionP0<Dimension, DataType>>(mesh, + InterpolateItemValue<DataType(TinyVector<Dimension>)>:: + template interpolate<ItemType::cell>(m_function_id, mesh_data.xj())); } template <size_t Dimension> diff --git a/src/scheme/DiscreteFunctionP0.hpp b/src/scheme/DiscreteFunctionP0.hpp index df64472fe..c2ee7f44d 100644 --- a/src/scheme/DiscreteFunctionP0.hpp +++ b/src/scheme/DiscreteFunctionP0.hpp @@ -3,7 +3,6 @@ #include <scheme/IDiscreteFunction.hpp> -#include <language/utils/InterpolateItemValue.hpp> #include <mesh/Connectivity.hpp> #include <mesh/Mesh.hpp> #include <mesh/MeshData.hpp> @@ -246,16 +245,6 @@ class DiscreteFunctionP0 : public IDiscreteFunction return ratio; } - DiscreteFunctionP0(const std::shared_ptr<const MeshType>& mesh, const FunctionSymbolId& function_id) : m_mesh(mesh) - { - using MeshDataType = MeshData<Dimension>; - MeshDataType& mesh_data = MeshDataManager::instance().getMeshData(*mesh); - - m_cell_values = - InterpolateItemValue<DataType(TinyVector<Dimension>)>::template interpolate<ItemType::cell>(function_id, - mesh_data.xj()); - } - DiscreteFunctionP0(const std::shared_ptr<const MeshType>& mesh) : m_mesh{mesh}, m_cell_values{mesh->connectivity()} {} DiscreteFunctionP0(const std::shared_ptr<const MeshType>& mesh, const CellValue<DataType>& cell_value) diff --git a/src/scheme/DiscreteFunctionP0Vector.hpp b/src/scheme/DiscreteFunctionP0Vector.hpp index d689258f8..103718b12 100644 --- a/src/scheme/DiscreteFunctionP0Vector.hpp +++ b/src/scheme/DiscreteFunctionP0Vector.hpp @@ -3,7 +3,6 @@ #include <scheme/IDiscreteFunction.hpp> -#include <language/utils/InterpolateItemArray.hpp> #include <mesh/Connectivity.hpp> #include <mesh/ItemArray.hpp> #include <mesh/Mesh.hpp> @@ -195,17 +194,6 @@ class DiscreteFunctionP0Vector : public IDiscreteFunction return product; } - DiscreteFunctionP0Vector(const std::shared_ptr<const MeshType>& mesh, - const std::vector<FunctionSymbolId>& function_symbol_id_list) - : m_mesh(mesh) - { - using MeshDataType = MeshData<Dimension>; - MeshDataType& mesh_data = MeshDataManager::instance().getMeshData(*mesh); - - m_cell_arrays = InterpolateItemArray<DataType( - TinyVector<Dimension>)>::template interpolate<ItemType::cell>(function_symbol_id_list, mesh_data.xj()); - } - DiscreteFunctionP0Vector(const std::shared_ptr<const MeshType>& mesh, size_t size) : m_mesh{mesh}, m_cell_arrays{mesh->connectivity(), size} {} diff --git a/src/scheme/DiscreteFunctionVectorInterpoler.cpp b/src/scheme/DiscreteFunctionVectorInterpoler.cpp index 1a5077377..8b2d50b12 100644 --- a/src/scheme/DiscreteFunctionVectorInterpoler.cpp +++ b/src/scheme/DiscreteFunctionVectorInterpoler.cpp @@ -1,5 +1,6 @@ #include <scheme/DiscreteFunctionVectorInterpoler.hpp> +#include <language/utils/InterpolateItemArray.hpp> #include <scheme/DiscreteFunctionP0Vector.hpp> #include <utils/Exceptions.hpp> @@ -8,7 +9,14 @@ std::shared_ptr<IDiscreteFunction> DiscreteFunctionVectorInterpoler::_interpolate() const { std::shared_ptr mesh = std::dynamic_pointer_cast<const Mesh<Connectivity<Dimension>>>(m_mesh); - return std::make_shared<DiscreteFunctionP0Vector<Dimension, DataType>>(mesh, m_function_id_list); + + using MeshDataType = MeshData<Dimension>; + MeshDataType& mesh_data = MeshDataManager::instance().getMeshData(*mesh); + + return std::make_shared< + DiscreteFunctionP0Vector<Dimension, DataType>>(mesh, InterpolateItemArray<DataType(TinyVector<Dimension>)>:: + template interpolate<ItemType::cell>(m_function_id_list, + mesh_data.xj())); } template <size_t Dimension> -- GitLab