diff --git a/src/scheme/AcousticSolver.cpp b/src/scheme/AcousticSolver.cpp index 3336fd716822a86f86fc335a3f02cb80882a26fc..6bac5a6b3d920f9f3b5654e826bf9b974a9fcd0f 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 fda64fdcb82d1eb36b8925e9cdc438989cd92306..c8eeaf94cb8d4f1037b28ebf65d377660464c093 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 df64472fe6281f06ccdb32148f3e0bd596216710..c2ee7f44d8d26ea619511f96ae89675def2243ac 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 d689258f88f7139fc05bd16ba11307338607e578..103718b125e123692241715e697ab89869d078eb 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 1a5077377dd1858f5f3c2fa495621598784e8360..8b2d50b12fe85092d837c699e62973bdec43da08 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>