feat: map fixed-step HHT shell dynamics input

This commit is contained in:
KOKO\Mimi
2026-09-22 21:18:15 +09:00
parent 1dbd8cc5a0
commit 0820259d50
7 changed files with 554 additions and 25 deletions
+13
View File
@@ -88,9 +88,15 @@ class StepDefinition {
/// @brief Reports whether this step defines the frequency procedure.
bool IsFrequency() const noexcept;
/// @brief Reports whether this step defines the HHT dynamic procedure.
bool IsDynamic() const noexcept;
/// @brief Returns frequency source semantics when this is a frequency step.
const FrequencyStepDefinition* Frequency() const noexcept;
/// @brief Returns dynamic source semantics when this is a dynamic step.
const DynamicStepDefinition* Dynamic() const noexcept;
/// @brief Reports the source NLGEOM setting for this static step.
bool UsesNonlinearGeometry() const noexcept;
@@ -118,6 +124,9 @@ class StepDefinition {
/// @brief Converts one parsed frequency-step record to owned semantics.
explicit StepDefinition(FrequencyStepDefinition definition);
/// @brief Converts one parsed dynamic-step record to owned semantics.
explicit StepDefinition(DynamicStepDefinition definition);
std::string name_;
std::vector<std::unique_ptr<BoundaryCondition>> boundary_conditions_;
BoundaryConditionView boundary_conditions_view_;
@@ -135,6 +144,7 @@ class StepDefinition {
double maximum_increment_;
SourceLocation location_;
std::optional<FrequencyStepDefinition> frequency_;
std::optional<DynamicStepDefinition> dynamic_;
};
/// @brief Owns the complete immutable semantic model definition.
@@ -204,6 +214,9 @@ class Domain {
/// @brief Returns the sole frequency source definition when present.
const FrequencyStepDefinition* Frequency() const noexcept;
/// @brief Returns the sole dynamic source definition when present.
const DynamicStepDefinition* Dynamic() const noexcept;
/// @brief Returns sorted nonfatal mapping diagnostics.
const std::vector<Diagnostic>& Warnings() const noexcept;
+19
View File
@@ -208,6 +208,24 @@ struct FrequencyStepDefinition {
std::vector<PrescribedDisplacementDefinition> boundaries;
};
/// @brief Stores the sole supported HHT direct-integration step semantics.
struct DynamicStepDefinition {
std::string source_step_name_raw;
std::string source_step_name_canonical;
SourceLocation step_location;
SourceLocation dynamic_location;
SourceLocation data_location;
double initial_increment{0.0};
double time_period{0.0};
std::uint32_t increment_count{0U};
std::uint32_t maximum_increments{100U};
double alpha{-0.05};
double beta{0.275625};
double gamma{0.55};
std::vector<PrescribedDisplacementDefinition> boundaries;
std::vector<NodalLoad> loads;
};
/// @brief Stores a stable resolved node-set membership list.
struct NodeSet {
std::string name;
@@ -271,6 +289,7 @@ struct ModelDefinition {
std::vector<StaticStepDefinition> steps;
std::vector<MaterialDensityDefinition> densities;
std::optional<FrequencyStepDefinition> frequency_step;
std::optional<DynamicStepDefinition> dynamic_step;
std::vector<Diagnostic> warnings;
};