Files

40 lines
1.3 KiB
C++

#ifndef FESA_PROPERTIES_SOLID_SECTION_H_
#define FESA_PROPERTIES_SOLID_SECTION_H_
#include <string>
#include <utility>
#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_