45 lines
1.5 KiB
C++
45 lines
1.5 KiB
C++
#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_
|