58 lines
2.1 KiB
C++
58 lines
2.1 KiB
C++
#ifndef FESA_PROPERTIES_SHELL_SECTION_H_
|
|
#define FESA_PROPERTIES_SHELL_SECTION_H_
|
|
|
|
#include <string>
|
|
|
|
#include "fesa/core/status.h"
|
|
#include "fesa/properties/element_property.h"
|
|
|
|
namespace fesa {
|
|
|
|
/// @brief Stores a centered constant-thickness shell section assignment.
|
|
class ShellSection final : public ElementProperty {
|
|
public:
|
|
/// @brief Creates a validated shell section.
|
|
/// @param thickness Positive thickness in the active consistent unit system.
|
|
/// @param material_index Stable Domain material collection position.
|
|
/// @return A section or a structured model failure.
|
|
static Result<ShellSection> Create(SourceEntityId source_id, std::string name,
|
|
double thickness,
|
|
EntityIndex material_index,
|
|
SourceLocation location);
|
|
|
|
/// @brief Constructs an already validated parser-owned shell record.
|
|
/// @note This compatibility seam preserves current consumers until Domain
|
|
/// polymorphic ownership is migrated.
|
|
ShellSection(std::string name, double thickness, EntityIndex material_index,
|
|
SourceLocation location);
|
|
|
|
ElementPropertyKind Kind() const noexcept override;
|
|
const SourceEntityId& SourceId() const noexcept override;
|
|
const SourceLocation& Location() const noexcept override;
|
|
|
|
/// @brief Returns the source shell-section name.
|
|
const std::string& Name() const noexcept;
|
|
/// @brief Returns centered shell thickness.
|
|
double Thickness() const noexcept;
|
|
/// @brief Returns the stable Domain material collection position.
|
|
EntityIndex MaterialIndex() const noexcept;
|
|
|
|
// Public storage preserves the current semantic-record API until Domain
|
|
// ownership migrates in the next approved Step.
|
|
std::string name;
|
|
double thickness;
|
|
EntityIndex material_index;
|
|
SourceLocation location;
|
|
|
|
private:
|
|
/// @brief Constructs a candidate whose fields have already been checked.
|
|
ShellSection(SourceEntityId source_id, std::string name, double thickness,
|
|
EntityIndex material_index, SourceLocation location);
|
|
|
|
SourceEntityId source_id_;
|
|
};
|
|
|
|
} // namespace fesa
|
|
|
|
#endif // FESA_PROPERTIES_SHELL_SECTION_H_
|