45 lines
978 B
C++
45 lines
978 B
C++
#pragma once
|
|
|
|
#include "fesa/core/status.hpp"
|
|
#include "fesa/model/model_types.hpp"
|
|
|
|
#include <array>
|
|
#include <cstddef>
|
|
#include <vector>
|
|
|
|
namespace fesa {
|
|
|
|
enum class ShellGeometryPointKind {
|
|
center,
|
|
stiffness,
|
|
tying,
|
|
recovery
|
|
};
|
|
|
|
struct ShellGeometryValidationPoint {
|
|
ShellGeometryPointKind kind;
|
|
std::size_t locationIndex;
|
|
std::array<double, 3> naturalCoordinates;
|
|
};
|
|
|
|
struct ShellElementGeometryData {
|
|
EntityIndex elementIndex;
|
|
std::array<double, 3> normalCandidate;
|
|
double surfaceAreaWeight;
|
|
};
|
|
|
|
struct ShellGeometry {
|
|
std::vector<ShellNodeInitialFrame> nodalFrames;
|
|
std::vector<ShellElementGeometryData> elementData;
|
|
};
|
|
|
|
const std::array<ShellGeometryValidationPoint, 17>&
|
|
shellGeometryValidationPoints() noexcept;
|
|
|
|
Result<ShellGeometry> preprocessShellGeometry(
|
|
const std::vector<Node>& nodes,
|
|
const std::vector<Mitc4ShellDefinition>& elements,
|
|
const std::vector<ShellSection>& sections);
|
|
|
|
} // namespace fesa
|