feat(shell-surface-pressure-load): step 3 - evaluate-shell-pressure-kernel
This commit is contained in:
@@ -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_
|
||||
Reference in New Issue
Block a user