plan.hpp tuple type_traits serif/discretization/blocks/system_layout.hpp serif/equations/registry.hpp serif/operators/plan.hpp src/include/serif/backend/mfem/model/graph.hpp src/include/serif/backend/mfem/model/inputs.hpp src/include/serif/backend/mfem/model/state.hpp src/include/serif/model/equilibrium_plan.hpp src/include/serif/model/validation.hpp serif::model::detail::OperandTerms< utils::types::TypeList< Operands... > > serif::model::detail::InteriorPlan< equations::EquationRegistry< Equations... > > serif::model::detail::RemoveKeys< utils::dependencies::KeyList< Keys... >, Excluded > serif::model::ModelPlan serif serif::model serif::model::detail #pragmaonce #include<tuple> #include<type_traits> #include"serif/discretization/blocks/system_layout.hpp" #include"serif/equations/registry.hpp" #include"serif/operators/plan.hpp" namespaceserif::model { namespacedetail { template<typenameOperands> structOperandTerms; template<typename...Operands> structOperandTerms<utils::types::TypeList<Operands...>> { usingType=utils::dependencies::CombinedKeyList<utils::dependencies::KeyList<typename Operands::term_type>...>; }; template<typenameRegistry> structInteriorPlan; template<operators::VolumeEquation...Equations> structInteriorPlan<equations::EquationRegistry<Equations...>> { usingEquationsList=utils::types::TypeList<Equations...>; usingRows=utils::dependencies::KeyList<typenameEquations::Test...>; usingCoefficients=utils::dependencies::CombinedKeyList<typename OperandTerms<typename operators::EquationPlan<Equations>::Columns>::Type...>; }; template<typenameKeys,typenameExcluded> structRemoveKeys; template<typename...Keys,typenameExcluded> structRemoveKeys<utils::dependencies::KeyList<Keys...>,Excluded> { usingType=utils::dependencies::CombinedKeyList<std::conditional_t<utils::dependencies::ContainsKey<Keys, Excluded>,utils::dependencies::KeyList<>,utils::dependencies::KeyList<Keys>>...>; }; } template<typenameRegistry> conceptExecutableInteriorEquations=requires { typenamedetail::InteriorPlan<std::remove_cvref_t<Registry>>::Rows; }; template<ExecutableInteriorEquationsRegistry,utils::dependencies::IsKeyListPrescribed=utils::dependencies::KeyList<>, utils::dependencies::IsKeyListAdditionalValues=utils::dependencies::KeyList<>, utils::dependencies::IsKeyListAdditionalRows=utils::dependencies::KeyList<>> structModelPlanfinal:detail::InteriorPlan<std::remove_cvref_t<Registry>> { usingInterior=detail::InteriorPlan<std::remove_cvref_t<Registry>>; usingPrescribedCoefficients=Prescribed; usingValues=utils::dependencies::CombinedKeyList<typename detail::RemoveKeys<typename Interior::Coefficients, Prescribed>::Type,AdditionalValues>; usingResiduals=utils::dependencies::CombinedKeyList<typename Interior::Rows, AdditionalRows>; usingLayout=discretization::blocks::SystemLayout<Values, Residuals>; }; }