#ifndef FESA_PROPERTIES_SOLID_SECTION_H_ #define FESA_PROPERTIES_SOLID_SECTION_H_ #include #include #include "fesa/properties/element_property.h" namespace fesa { /// @brief Owns a homogeneous Solid material assignment without thickness. class SolidSection final : public ElementProperty { public: /// @brief Constructs a parser-validated ELSET and material assignment. SolidSection(SourceEntityId source, std::string name, EntityIndex material_index, SourceLocation location) : source_id_{std::move(source)}, name_{std::move(name)}, material_index_{material_index}, location_{std::move(location)} {} ElementPropertyKind Kind() const noexcept override { return ElementPropertyKind::kSolidSection; } const SourceEntityId& SourceId() const noexcept override { return source_id_; } const SourceLocation& Location() const noexcept override { return location_; } /// @brief Returns the source ELSET spelling. const std::string& Name() const noexcept { return name_; } /// @brief Returns the stable Domain material index. EntityIndex MaterialIndex() const noexcept { return material_index_; } private: SourceEntityId source_id_; std::string name_; EntityIndex material_index_; SourceLocation location_; }; } // namespace fesa #endif // FESA_PROPERTIES_SOLID_SECTION_H_