#pragma once #include #include #include #include namespace fesa { struct DomainBuildResult final { std::optional domain; std::vector diagnostics; }; class DomainBuilder final { public: void add_node(Node value); void add_material(IsotropicElastic value); void add_section(BeamSection value); void add_beam_element(BeamElement value); void add_node_set(NodeSet value); void add_element_set(ElementSet value); void set_step(StepDefinition value); [[nodiscard]] DomainBuildResult build() &&; private: std::vector nodes_; std::vector beam_elements_; std::vector materials_; std::vector sections_; std::vector node_sets_; std::vector element_sets_; std::optional step_; }; } // namespace fesa