#pragma once #include "fesa/model/domain.h" #include namespace fesa { // Provides the sole active-step view while the referenced Domain retains all // semantic ownership and must outlive this object. class AnalysisModel { public: static Result create(const Domain& domain); const Domain& domain() const noexcept; const StaticStepDefinition& step() const noexcept; const std::vector& activeElements() const noexcept; const std::vector& activeMaterials() const noexcept; const std::vector& activeSections() const noexcept; const std::vector& activeBoundaryConditions() const noexcept; const std::vector& activeLoads() const noexcept; private: explicit AnalysisModel(const Domain& domain); const Domain* domain_; std::vector activeElements_; std::vector activeMaterials_; std::vector activeSections_; std::vector activeBoundaryConditions_; std::vector activeLoads_; }; } // namespace fesa