feat(solid): add Hex8 input and three-DOF semantics

This commit is contained in:
KOKO\Mimi
2026-10-09 01:12:30 +09:00
parent df0388ae2f
commit 9acf18db4b
16 changed files with 1468 additions and 98 deletions
+5 -1
View File
@@ -6,7 +6,11 @@
namespace fesa {
/// @brief Identifies the supported concrete element-property semantics.
enum class ElementPropertyKind { kGeneralBeamSection, kShellSection };
enum class ElementPropertyKind {
kGeneralBeamSection,
kShellSection,
kSolidSection
};
/// @brief Provides stable identity for a Domain-owned element property.
class ElementProperty {
+39
View File
@@ -0,0 +1,39 @@
#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_