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
+22 -1
View File
@@ -3,6 +3,8 @@
#include <array>
#include <cstddef>
#include <optional>
#include <string>
#include "fesa/core/diagnostic.h"
#include "fesa/loads/load.h"
@@ -21,7 +23,10 @@ class ConcentratedNodalLoad final : public Load {
/// @brief Creates one parsed CLOAD component while preserving diagnostics.
ConcentratedNodalLoad(SourceTargetQuery target, int source_dof,
double magnitude, std::size_t source_order,
SourceLocation location);
SourceLocation location,
std::optional<EntityIndex> amplitude_index = {},
std::string amplitude_name_raw = {},
SourceLocation amplitude_location = {});
/// @brief Computes target-major, component-minor full-DOF contributions.
Result<std::vector<LoadContribution>> ComputeContributions(
@@ -39,12 +44,28 @@ class ConcentratedNodalLoad final : public Load {
/// @brief Returns the source location used by structured diagnostics.
const SourceLocation& Location() const noexcept;
/// @brief Returns a model-level amplitude index when one was specified.
std::optional<EntityIndex> AmplitudeIndex() const noexcept {
return amplitude_index_;
}
/// @brief Returns preserved CLOAD amplitude option spelling.
const std::string& AmplitudeName() const noexcept {
return amplitude_name_raw_;
}
/// @brief Returns the source location of the CLOAD amplitude option.
const SourceLocation& AmplitudeLocation() const noexcept {
return amplitude_location_;
}
private:
SourceTargetQuery target_;
std::array<double, 6> global_components_{};
std::size_t source_order_;
SourceLocation location_{};
int source_dof_{0};
std::optional<EntityIndex> amplitude_index_;
std::string amplitude_name_raw_;
SourceLocation amplitude_location_;
};
} // namespace fesa
+2
View File
@@ -26,6 +26,8 @@ struct LoadContext {
const Domain& domain;
const DofManager& dof_manager;
const SourceTargetResolver& target_resolver;
/// @brief Supplies the actual dynamic endpoint time for amplitude sampling.
double step_time{0.0};
};
/// @brief Produces local ordered load contributions without global mutation.