feat(solid): add Hex8 input and three-DOF semantics
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user