#ifndef FESA_MATERIALS_ISOTROPIC_THERMAL_MATERIAL_H_ #define FESA_MATERIALS_ISOTROPIC_THERMAL_MATERIAL_H_ #include #include "fesa/core/status.h" #include "fesa/materials/material.h" namespace fesa { /// @brief Stores homogeneous isotropic heat-conduction material properties. class IsotropicThermalMaterial final : public Material { public: /// @brief Creates a material with finite positive conductivity, density, and /// specific heat. static Result Create( SourceEntityId source_id, std::string name, double conductivity, double density, double specific_heat, SourceLocation location); MaterialKind Kind() const noexcept override; const SourceEntityId& SourceId() const noexcept override; const SourceLocation& Location() const noexcept override; /// @brief Returns the source material name. const std::string& Name() const noexcept; /// @brief Returns conductivity in the active consistent unit system. double Conductivity() const noexcept; /// @brief Returns mass density in the active consistent unit system. double Density() const noexcept; /// @brief Returns specific heat in the active consistent unit system. double SpecificHeat() const noexcept; private: IsotropicThermalMaterial(SourceEntityId source_id, std::string name, double conductivity, double density, double specific_heat, SourceLocation location); SourceEntityId source_id_; std::string name_; double conductivity_; double density_; double specific_heat_; SourceLocation location_; }; } // namespace fesa #endif // FESA_MATERIALS_ISOTROPIC_THERMAL_MATERIAL_H_