fields.cpp serif/discretization/blocks/concepts.hpp serif/discretization/blocks/traits.hpp serif/dimensions/dimensions.hpp #include"serif/discretization/blocks/concepts.hpp" #include"serif/discretization/blocks/traits.hpp" #include"serif/dimensions/dimensions.hpp" namespace{ usingnamespaceserif::discretization; usingDensity=blocks::density::mass; usingDisplacement=blocks::displacement::vector; usingCoefficients=blocks::surface_deformation::coefficients; static_assert(blocks::SpatialTerm<Density>,"Densityshouldbeaspatialterm"); static_assert(blocks::SpatialTerm<Displacement>,"Displacementshouldbeaspatialterm"); static_assert(!blocks::SpatialTerm<Coefficients>,"Coefficientsshouldnotbeaspatialterm"); static_assert(blocks::HasQuantity<Density>,"Densityshouldhaveaquantity"); static_assert(blocks::HasValueBlock<Coefficients>,"Coefficientsshouldhaveavalueblock"); static_assert(!blocks::HasResidualBlock<Coefficients>,"Coefficientsshouldnothavearesidualblock"); usingDensitySpace=blocks::FunctionalSpaceOf<Density>; static_assert(DensitySpace::functional_space.family==functional_space::Family::h1,"DensityshouldbeinanH1space"); static_assert(DensitySpace::order==3,"Densityshouldbeinathirdorderspace"); static_assert(DensitySpace::rank::value==0,"Densityshouldbeascalarfield"); static_assert(std::same_as<blocks::SupportOf<Density>,domain::StellarDomains>,"Densityshouldbesupportedonstellardomains"); static_assert(std::same_as<blocks::QuantityOf<Density>,serif::dimensions::MassDensity>,"DensityshouldhaveaquantityoftypeDensity"); static_assert(blocks::SpatialTermTraits<Density>::family==functional_space::Family::h1,"DensityshouldbeinanH1space"); static_assert(blocks::SpatialTermTraits<Density>::order==3,"Densityshouldbeinathirdorderspace"); static_assert(blocks::SpatialTermTraits<Density>::rank==0,"Densityshouldbeascalarfield"); static_assert(blocks::SpatialTermTraits<Displacement>::family==functional_space::Family::h1,"DisplacementshouldbeinanH1space"); static_assert(blocks::SpatialTermTraits<Displacement>::order==3,"Displacementshouldbeinathirdorderspace"); static_assert(blocks::SpatialTermTraits<Displacement>::rank==1,"Displacementshouldbeavectorfield"); static_assert(blocks::SpatialTermTraits<blocks::gravity::potential>::family==functional_space::Family::h1,"GravitypotentialshouldbeinanH1space"); static_assert(blocks::SpatialTermTraits<blocks::gravity::potential>::order==4,"Gravitypotentialshouldbeinafourthorderspace"); static_assert(blocks::SpatialTermTraits<blocks::gravity::potential>::rank==0,"Gravitypotentialshouldbeascalarfield"); }