diff --git a/src/scheme/DiscreteFunctionP0.hpp b/src/scheme/DiscreteFunctionP0.hpp index 4fb0fcc980bc09a71c8668ad16e069ab8c6d0a2d..bf97079b776c80fec10e26608cfc6ff5e40a664a 100644 --- a/src/scheme/DiscreteFunctionP0.hpp +++ b/src/scheme/DiscreteFunctionP0.hpp @@ -22,6 +22,12 @@ class DiscreteFunctionP0 : public IDiscreteFunction DiscreteFunctionDescriptorP0 m_discrete_function_descriptor; public: + ASTNodeDataType + dataType() const final + { + return ast_node_data_type_from<DataType>; + } + CellValue<DataType> cellValues() const { @@ -51,6 +57,7 @@ class DiscreteFunctionP0 : public IDiscreteFunction { 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()); diff --git a/src/scheme/IDiscreteFunction.hpp b/src/scheme/IDiscreteFunction.hpp index 7a7deb08747f74b28e65458a54fe5a775db86b43..a8bf77f43efb48b03a8967eb16d81966fde86570 100644 --- a/src/scheme/IDiscreteFunction.hpp +++ b/src/scheme/IDiscreteFunction.hpp @@ -1,16 +1,18 @@ #ifndef I_DISCRETE_FUNCTION_HPP #define I_DISCRETE_FUNCTION_HPP -#include <memory> - class IMesh; class IDiscreteFunctionDescriptor; +#include <language/utils/ASTNodeDataTypeTraits.hpp> +#include <memory> + class IDiscreteFunction { public: virtual std::shared_ptr<const IMesh> mesh() const = 0; virtual const IDiscreteFunctionDescriptor& descriptor() const = 0; + virtual ASTNodeDataType dataType() const = 0; IDiscreteFunction() = default;