Select Git revision
ScalarHybridScheme.cpp
ScalarHybridScheme.cpp 70.50 KiB
#include <scheme/ScalarHybridScheme.hpp>
#include <scheme/DiscreteFunctionP0.hpp>
#include <scheme/DiscreteFunctionUtils.hpp>
class ScalarHybridSchemeHandler::IScalarHybridScheme
{
public:
virtual std::tuple<std::shared_ptr<const IDiscreteFunction>, std::shared_ptr<const IDiscreteFunction>> getSolution()
const = 0;
// virtual std::shared_ptr<const IDiscreteFunction> getSolution() const = 0;
IScalarHybridScheme() = default;
virtual ~IScalarHybridScheme() = default;
};
template <size_t Dimension>
class ScalarHybridSchemeHandler::ScalarHybridScheme : public ScalarHybridSchemeHandler::IScalarHybridScheme
{
private:
using ConnectivityType = Connectivity<Dimension>;
using MeshType = Mesh<ConnectivityType>;
using MeshDataType = MeshData<Dimension>;
std::shared_ptr<const DiscreteFunctionP0<Dimension, double>> m_cell_temperature;
std::shared_ptr<const DiscreteFunctionP0<Dimension, double>> m_node_temperature;
// std::shared_ptr<const DiscreteFunctionP0<Dimension, double>> m_solution;
class DirichletBoundaryCondition
{
private:
const Array<const double> m_node_value_list;
const Array<const double> m_face_value_list;
const Array<const FaceId> m_face_list;
const Array<const NodeId> m_node_list;
public:
const Array<const NodeId>&
nodeList() const
{
return m_node_list;
}
const Array<const FaceId>&
faceList() const
{
return m_face_list;
}
const Array<const double>&
nodeValueList() const
{
return m_node_value_list;
}
const Array<const double>&
faceValueList() const
{
return m_face_value_list;
}
DirichletBoundaryCondition(const Array<const FaceId>& face_list,
const Array<const NodeId>& node_list,
const Array<const double>& node_value_list,
const Array<const double>& face_value_list)
: m_node_value_list{node_value_list},
m_face_value_list{face_value_list},
m_face_list{face_list},
m_node_list{node_list}