compilation.hpp serif/geometry/surface/detail/relations.hpp serif/geometry/surface/isobaric.hpp src/include/serif/backend/mfem/geometry/surface/boundary_data.hpp src/include/serif/geometry/surface/detail/automatic_relations.hpp src/include/serif/geometry/surface/linearization.hpp src/include/serif/geometry/surface/surface.hpp serif::geometry::surface::detail::PressureSurfaceDescription serif::geometry::surface::PressureSurfaceFormulation serif::geometry::surface::InversePressureSurfaceFormulation serif::geometry::surface::DirectPressureSurfaceFormulation serif::geometry::surface::PressureFieldSurfaceFormulation serif serif::geometry serif::geometry::surface serif::geometry::surface::detail #pragmaonce #include"serif/geometry/surface/detail/relations.hpp" #include"serif/geometry/surface/isobaric.hpp" namespaceserif::geometry::surface { template<typenameEOS,typenameBindings,typenameCarrier=void> conceptPressureSurfaceCompilable=eos::models::EOSModel<EOS>&&SurfaceStateBindings<Bindings>&& (detail::MatchingPressureRelations<std::remove_cvref_t<EOS>,std::remove_cvref_t<Bindings>,Carrier,typenamestd::remove_cvref_t<EOS>::Relations>::count==1); template<typenameEOS,typenameBindings,typenameCarrier=void> requiresPressureSurfaceCompilable<EOS, Bindings, Carrier> usingpressure_relation_t=std::tuple_element_t<0,typenamedetail::MatchingPressureRelations<std::remove_cvref_t<EOS>,std::remove_cvref_t<Bindings>,Carrier,typenamestd::remove_cvref_t<EOS>::Relations>::Matches>; namespacedetail { template<typenameEOS,typenameBindings,typenameRowQuantity,typenameRelationT,boolResolveCarrier> structPressureSurfaceDescription { usingEquationOfState=std::remove_cvref_t<EOS>; usingStateBindings=std::remove_cvref_t<Bindings>; usingRelation=RelationT; usingPhysicalQuantity=dimensions::Pressure; usingResidualQuantity=std::conditional_t<ResolveCarrier,RowQuantity,dimensions::Pressure>; usingCarrierQuantity=RowQuantity; usingCarrierTerm=utils::dependencies::bound_type_t<StateBindings, RowQuantity>; usingTest=CarrierTerm; usingSupport=discretization::domain::StellarSurfaceBoundary; usingEOSStateQuantities=std::conditional_t<ResolveCarrier,typenameRelationQuantities<Relation>::NonPressureInputs,typenameRelationQuantities<Relation>::AllInputs>; usingStateQuantities=utils::dependencies::CombinedKeyList<utils::dependencies::KeyList<RowQuantity>,EOSStateQuantities>; usingStateTerms=BoundTerms<StateBindings, StateQuantities>; usingEOSStateTerms=BoundTerms<StateBindings, EOSStateQuantities>; usingOperands=typenameSurfaceOperands<StateTerms>::Type; staticconstexprboolresolves_carrier=ResolveCarrier; staticconstexprbooluses_eos=true; }; } template<typenameEOS,typenameBindings,typenameCarrier=void> requiresPressureSurfaceCompilable<EOS, Bindings, Carrier> structPressureSurfaceFormulationfinal:detail::PressureSurfaceDescription<EOS,Bindings,typenamepressure_relation_t<EOS,Bindings,Carrier>::OutputQuantity,pressure_relation_t<EOS,Bindings,Carrier>,true> { }; template<eos::models::EOSModelEOS,SurfaceStateBindingsBindings,typenameRelation> requireseos::relations::CatalogContainingRelation<typename EOS::Relations, Relation>&&(detail::matches_pressure_relation<EOS, Bindings, void, Relation>()) structInversePressureSurfaceFormulationfinal:detail::PressureSurfaceDescription<EOS,Bindings,typenameRelation::OutputQuantity,Relation,true> { }; template<typenameEOS,typenameBindings,typenameRowQuantity,typenameRelation> conceptDirectPressureSurfaceCompilable=eos::models::EOSModel<EOS>&&SurfaceStateBindings<Bindings>&&eos::relations::ValidThermodynamicRelation<Relation>&& eos::relations::CatalogContainingRelation<typename std::remove_cvref_t<EOS>::Relations,Relation>&& std::same_as<typenameRelation::OutputQuantity,dimensions::Pressure>&&eos::relations::RelationContainingInput<Relation, RowQuantity>&& SurfaceResidualRow<Bindings, RowQuantity>&& utils::dependencies::SatisfiesKeyList<Bindings, typename detail::RelationQuantities<Relation>::AllInputs>&& detail::supports_partials<EOS, Relation>(typenamedetail::RelationQuantities<Relation>::AllInputs{}); template<typenameEOS,typenameBindings,typenameRowQuantity,typenameRelation> requiresDirectPressureSurfaceCompilable<EOS, Bindings, RowQuantity, Relation> structDirectPressureSurfaceFormulationfinal:detail::PressureSurfaceDescription<EOS,Bindings,RowQuantity,Relation,false> { }; template<typenameEOS,SurfaceStateBindingsBindings> requiresSurfaceResidualRow<Bindings, dimensions::Pressure> structPressureFieldSurfaceFormulationfinal:detail::PressureSurfaceDescription<EOS,Bindings,dimensions::Pressure,eos::relations::Relation<dimensions::Pressure,dimensions::Pressure>,true> { staticconstexprbooluses_eos=false; }; namespacedetail { template<typenameCandidate> inlineconstexprboolis_pressure_surface_formulation=false; template<typenameEOS,typenameBindings,typenameCarrier> inlineconstexprboolis_pressure_surface_formulation<PressureSurfaceFormulation<EOS, Bindings, Carrier>>=true; template<typenameEOS,typenameBindings,typenameRelation> inlineconstexprboolis_pressure_surface_formulation<InversePressureSurfaceFormulation<EOS, Bindings, Relation>>=true; template<typenameEOS,typenameBindings,typenameRowQuantity,typenameRelation> inlineconstexprboolis_pressure_surface_formulation<DirectPressureSurfaceFormulation<EOS, Bindings, RowQuantity, Relation>>=true; template<typenameEOS,typenameBindings> inlineconstexprboolis_pressure_surface_formulation<PressureFieldSurfaceFormulation<EOS, Bindings>>=true; } template<typenameCandidate> conceptPressureSurfaceFormulationType=detail::is_pressure_surface_formulation<Candidate>; }