#pragma once #include "fesa/Boundary/Boundary.hpp" #include "fesa/Core/Types.hpp" #include "fesa/Load/Load.hpp" #include "fesa/Math/Vector.hpp" #include "fesa/Property/Property.hpp" #include "fesa/Util/String.hpp" #include #include #include #include namespace fesa { struct Node { GlobalId id = 0; Vec3 coordinates; }; enum class ElementType { MITC4 }; inline std::string elementTypeLabel(ElementType type) { switch (type) { case ElementType::MITC4: return "MITC4"; } return "UNKNOWN"; } struct Element { GlobalId id = 0; ElementType type = ElementType::MITC4; std::array node_ids{}; std::string source_elset; }; struct NodeSet { std::string name; std::vector node_ids; }; struct ElementSet { std::string name; std::vector element_ids; }; struct Material { std::string name; Real elastic_modulus = 0.0; Real poisson_ratio = 0.0; }; struct StepDefinition { std::string name = "Step-1"; std::string analysis_type = "linear_static"; }; struct Domain { std::map nodes; std::map elements; std::map node_sets; std::map element_sets; std::map materials; std::vector shell_sections; std::vector boundary_conditions; std::vector loads; std::vector steps; static std::string key(const std::string& label) { return lower(trim(label)); } }; } // namespace fesa