feat(hex8): use reference-weighted mean-volume energy
This commit is contained in:
@@ -30,7 +30,7 @@ struct Hex8HighLowResponse {
|
||||
double strain_energy_low{0.0};
|
||||
};
|
||||
|
||||
/// @brief Implements full-integration C3D8 linear and TL StVK mechanics.
|
||||
/// @brief Implements C3D8 full deviatoric and mean-volume Green energy.
|
||||
/// @note Reference geometry is owned and immutable; no trial is committed.
|
||||
class Hex8Element final : public Element {
|
||||
public:
|
||||
@@ -53,14 +53,14 @@ class Hex8Element final : public Element {
|
||||
|
||||
/// @brief Returns f=K0*u and infinitesimal tensor strain at eight points.
|
||||
Result<Hex8Response> EvaluateLinear(const Vector& displacement) const;
|
||||
/// @brief Returns one certified StVK trial and its analytic energy Hessian.
|
||||
/// @brief Returns one certified mean-Green TL trial and its energy Hessian.
|
||||
Result<Hex8Response> EvaluateNonlinear(const Vector& displacement) const;
|
||||
/// @brief Evaluates linear energy/force/Hessian on the complete paired state.
|
||||
/// @note Uses the same reference-relative gradient operator as the paired TL
|
||||
/// path. Inputs must have 24 finite normalized high+low translations.
|
||||
Result<Hex8HighLowResponse> EvaluateLinearHighLow(
|
||||
const Vector& high, const Vector& low) const;
|
||||
/// @brief Evaluates certified TL StVK mechanics without collapsing low state.
|
||||
/// @brief Evaluates mean-Green TL mechanics without collapsing low state.
|
||||
/// @note Failure preserves immutable reference data and all caller state.
|
||||
Result<Hex8HighLowResponse> EvaluateNonlinearHighLow(
|
||||
const Vector& high, const Vector& low) const;
|
||||
@@ -81,7 +81,7 @@ class Hex8Element final : public Element {
|
||||
};
|
||||
/// @brief Constructs an owned candidate before reference validation.
|
||||
Hex8Element(EntityIndex element_index, ElementDofLayout layout,
|
||||
Coordinates coordinates, double lambda, double mu,
|
||||
Coordinates coordinates, double kappa, double mu,
|
||||
std::optional<double> density, SourceLocation location);
|
||||
/// @brief Evaluates without mutating the cached reference or previous values.
|
||||
Result<Hex8Response> Evaluate(const Vector& displacement,
|
||||
@@ -95,7 +95,7 @@ class Hex8Element final : public Element {
|
||||
EntityIndex element_index_;
|
||||
ElementDofLayout layout_;
|
||||
Coordinates coordinates_;
|
||||
double lambda_;
|
||||
double kappa_;
|
||||
double mu_;
|
||||
std::optional<double> density_;
|
||||
SourceLocation location_;
|
||||
|
||||
Reference in New Issue
Block a user