mfem_resolver.cpp serif/backend/mfem/discretization/quadrature/mfem_resolver.hpp serif/backend/mfem/discretization/quadrature/mfem_static_order.hpp serif/utils/error/errors.hpp serif/utils/types/strings.hpp #include"serif/backend/mfem/discretization/quadrature/mfem_resolver.hpp" #include"serif/backend/mfem/discretization/quadrature/mfem_static_order.hpp" #include"serif/utils/error/errors.hpp" #include"serif/utils/types/strings.hpp" namespace{ usingnamespaceserif::discretization; usingnamespaceserif::utils::errors; usingnamespacequadrature::backend::mfem; usingnamespaceserif::utils::types; usingDensityProjectionForm=forms::projection<blocks::density::mass, blocks::density::mass>; //Notewhenusingserif_assert(sinceitisaconstevalfunction)itmustbewithin //afunction(C++doesnotallowarbitrarycallstoconstevalfunctionsoutsideofafunctioncontext).Thisiswhywehavethisfunctionhere.Itisnotcalled,butitisusedtoforcethecompilertoevaluatetheconstevalfunctionandthustriggerthecompiletimechecks. constevalvoidcompile_checks(){ constexprautodensity_projection_error_msg=ct_format<"DensityProjectionFormshouldhaveastatic,compiletime,orderof6,insteadgot{}">(mfem_form_static_order<DensityProjectionForm>); serif::utils::errors::serif_ensure<SERiFErrorCode::FAILED_TYPE_INVARIANT, mfem_form_static_order<DensityProjectionForm>==6,density_projection_error_msg>(); } }