fields.hpp array string_view serif/dimensions/dimensions.hpp serif/discretization/blocks/base.hpp serif/discretization/functional_space/space.hpp serif/discretization/domain/concepts.hpp serif/discretization/domain/physical_domains.hpp serif/utils/types/type_list.hpp serif/meta/names.hpp src/compile_time_checks/serif/solver/preconditioner/layout.cpp src/include/serif/backend/mfem/discretization/reconstruction.hpp src/include/serif/discretization/blocks/blocks.hpp src/include/serif/discretization/blocks/concepts.hpp src/include/serif/equations/barotropic_density.hpp src/include/serif/equations/barycenter.hpp src/include/serif/equations/primal_gravity.hpp src/include/serif/equations/surface_potential.hpp src/include/serif/solver/preconditioner/default_preconditioners.hpp src/include/serif/utils/serialize/model.hpp serif::discretization::blocks::field serif::discretization::blocks::term_base serif::discretization::blocks::term serif::discretization::blocks::global_scalar serif::discretization::blocks::global_scalar::value serif::discretization::blocks::global_scalar::residual serif::discretization::blocks::barotropic_constant serif::discretization::blocks::barotropic_constant::mass_normalization serif::discretization::blocks::frame_acceleration serif::discretization::blocks::frame_acceleration::component serif::discretization::blocks::rotation serif::discretization::blocks::rotation::angular_velocity serif::discretization::blocks::density serif::discretization::blocks::density::mass serif::discretization::blocks::density::mass::value serif::discretization::blocks::density::mass::residual serif::discretization::blocks::displacement serif::discretization::blocks::displacement::vector serif::discretization::blocks::displacement::vector::value serif::discretization::blocks::displacement::vector::residual serif::discretization::blocks::surface_deformation serif::discretization::blocks::surface_deformation::coefficients serif::discretization::blocks::surface_deformation::coefficients::value serif::discretization::blocks::surface_deformation::shape_equilibrium serif::discretization::blocks::surface_deformation::shape_equilibrium::residual serif::discretization::blocks::gravity serif::discretization::blocks::gravity::potential serif::discretization::blocks::gravity::potential::value serif::discretization::blocks::gravity::potential::residual serif serif::discretization serif::discretization::blocks Define the fields and their associated terms for the discretization. This is a key file to understand if you are to understand SERiF's numerics. Each of these field types should contain all the information needed for the compiler to generate the correct. Emily M. Boudreaux blocks functional spaces support domains quantities symbols and any other information needed to generate the correct weak form for the field Broadly you can think of these as where we define the "physics" that we want to solve for or the unknowns of the system. If you find yourself adding any sort of unknown to the system and you are not adding it to this file you should step back and reconsider\ if that belongs here instead. #pragmaonce #include<array> #include<string_view> #include"serif/dimensions/dimensions.hpp" #include"serif/discretization/blocks/base.hpp" #include"serif/discretization/functional_space/space.hpp" #include"serif/discretization/domain/concepts.hpp" #include"serif/discretization/domain/physical_domains.hpp" #include"serif/utils/types/type_list.hpp" #include"serif/meta/names.hpp" namespaceserif::discretization::blocks{ structfield{}; structterm_base{}; template<typenameFieldT> structterm:term_base{ usingfield_type=FieldT; }; structglobal_scalar{ structvaluefinal:value_block_base{ staticconstexprintstatic_block_size=1; }; structresidualfinal:residual_block_base{ staticconstexprintstatic_block_size=1; }; }; structbarotropic_constantfinal:field{ staticconstexprstd::string_viewname=meta::type_name<barotropic_constant>(); structmass_normalizationfinal:term<barotropic_constant>,global_scalar{ staticconstexprstd::string_viewname=meta::type_name<mass_normalization>(); usingSupport=domain::StellarDomains; usingQuantity=dimensions::GravitationalPotential; staticconstexprstd::string_viewsymbol="Us"; }; staticconstexprmass_normalizationmass_normalization_term{}; usingTerms=utils::types::TypeList<mass_normalization>; }; structframe_accelerationfinal:field{ staticconstexprstd::string_viewname="frameacceleration"; template<intAxis> structcomponentfinal:term<frame_acceleration>,global_scalar{ static_assert(Axis>=0&&Axis<3,"ACartesianreactioncomponentrequiresanaxisfrom0through2."); staticconstexprstd::string_viewname=meta::type_name<component>(); staticconstexprstd::string_viewstable_id=std::array<std::string_view,3>{ "field.frame_acceleration.x","field.frame_acceleration.y","field.frame_acceleration.z"}[Axis]; staticconstexprstd::string_viewsymbol=std::array<std::string_view,3>{"gamma_x","gamma_y","gamma_z"}[Axis]; usingSupport=domain::StellarDomains; usingQuantity=dimensions::Acceleration; }; usingTerms=utils::types::TypeList<component<0>,component<1>,component<2>>; }; structrotationfinal:field{ staticconstexprstd::string_viewname=meta::type_name<rotation>(); structangular_velocityfinal:term<rotation>,global_scalar{ staticconstexprstd::string_viewname=meta::type_name<angular_velocity>(); usingSupport=domain::StellarDomains; usingQuantity=dimensions::AngularVelocity; staticconstexprstd::string_viewsymbol="Ω"; }; staticconstexprangular_velocityangular_velocity_term{}; usingTerms=utils::types::TypeList<angular_velocity>; }; structdensityfinal:field{ staticconstexprstd::string_viewname=meta::type_name<density>(); structmassfinal:term<density>{ staticconstexprstd::string_viewname=meta::type_name<mass>(); usingFunctionalSpace=functional_space::DiscreteFunctionalSpace<functional_space::H1, 3, 0>; usingSupport=domain::StellarDomains; usingQuantity=dimensions::MassDensity; staticconstexprstd::string_viewsymbol="ρ"; structvaluefinal:value_block_base{}; structresidualfinal:residual_block_base{}; }; staticconstexprmassmass_density_term{}; usingTerms=utils::types::TypeList<mass>; }; structdisplacementfinal:field{ staticconstexprstd::string_viewname=meta::type_name<displacement>(); structvectorfinal:term<displacement>{ staticconstexprstd::string_viewname=meta::type_name<vector>(); usingFunctionalSpace=functional_space::DiscreteFunctionalSpace<functional_space::H1, 3, 1>; usingSupport=domain::AllDomains; usingQuantity=dimensions::Length; staticconstexprstd::string_viewsymbol="d"; structvaluefinal:value_block_base{}; structresidualfinal:residual_block_base{}; }; staticconstexprvectorvector_term{}; usingTerms=utils::types::TypeList<vector>; }; structsurface_deformationfinal:field{ staticconstexprstd::string_viewname=meta::type_name<surface_deformation>(); structcoefficientsfinal:term<surface_deformation>{ staticconstexprstd::string_viewname=meta::type_name<coefficients>(); structvaluefinal:value_block_base{}; }; structshape_equilibriumfinal:term<surface_deformation>{ staticconstexprstd::string_viewname=meta::type_name<shape_equilibrium>(); structresidualfinal:residual_block_base{}; }; staticconstexprcoefficientscoefficients_term{}; staticconstexprshape_equilibriumshape_equilibrium_term{}; usingTerms=utils::types::TypeList<coefficients, shape_equilibrium>; }; structgravityfinal:field{ staticconstexprstd::string_viewname=meta::type_name<gravity>(); structpotentialfinal:term<gravity>{ staticconstexprstd::string_viewname=meta::type_name<potential>(); usingFunctionalSpace=functional_space::DiscreteFunctionalSpace<functional_space::H1, 4, 0>; usingSupport=domain::AllDomains; usingQuantity=dimensions::GravitationalPotential; staticconstexprstd::string_viewsymbol="φ"; structvaluefinal:value_block_base{}; structresidualfinal:residual_block_base{}; }; staticconstexprpotentialpotential_term{}; usingTerms=utils::types::TypeList<potential>; }; }