feat(shell-surface-pressure-load): step 3 - evaluate-shell-pressure-kernel

This commit is contained in:
KOKO\Mimi
2026-09-01 14:31:41 +09:00
parent 47d7b721e0
commit 04762fd7da
5 changed files with 897 additions and 0 deletions
@@ -0,0 +1,44 @@
#ifndef FESA_LOADS_SHELL_SURFACE_PRESSURE_H_
#define FESA_LOADS_SHELL_SURFACE_PRESSURE_H_
#include <array>
#include <string>
#include "fesa/core/status.h"
#include "fesa/math/vector3.h"
#include "fesa/model/model_types.h"
namespace fesa {
/// @brief Selects the surface geometry used to evaluate uniform pressure.
enum class SurfacePressureConfiguration { kReference, kCurrent };
/// @brief Supplies one four-node shell facet pressure evaluation.
struct ShellSurfacePressureInput {
std::array<Vector3, 4> reference_coordinates;
std::array<Vector3, 4> translational_displacements;
ShellSurfaceSide side;
double pressure_magnitude;
double load_factor;
SurfacePressureConfiguration configuration;
SourceLocation location;
std::string entity_identity;
};
/// @brief Stores one fixed-order pressure force and external tangent.
struct ShellSurfacePressureContribution {
std::array<double, 24> force;
std::array<double, 24 * 24> external_tangent;
};
/// @brief Evaluates one four-node reference or follower surface pressure.
/// @param input Geometry, pressure, side, load factor, and diagnostic identity.
/// @return A finite 24-DOF force and external tangent or a structured failure.
/// @note Translation DOFs occupy components zero through two of each node.
/// @warning The returned tangent is the positive derivative of external force.
Result<ShellSurfacePressureContribution> EvaluateShellSurfacePressure(
const ShellSurfacePressureInput& input);
} // namespace fesa
#endif // FESA_LOADS_SHELL_SURFACE_PRESSURE_H_