module; #include export module mean_field:operators.kernels.barotropic_closure; export import :eos.polytrope; export import :fem; export import :mapping.domain_mapper; export namespace mean_field::operators::kernels { /* * Stateless full-MFEM reference kernels for * * R_rho = \int_{Omega_star} (rho - rho_EOS(h)) q_rho dV. * * These functions intentionally remain expressed in complete MFEM true * vectors. Solver/prepared-facing support reduction belongs to * PreparedBarotropicClosureOperator through FieldDofMap. Keeping this * layer full-space preserves an independent reference implementation for * R K P tests of the reduced prepared operator. */ void apply_barotropic_closure( const fem::FEM &f, const mapping::DomainMapper &domainMapper, const eos::Polytrope &equationOfState, const mfem::Vector &densityTrue, const mfem::Vector &enthalpyTrue, const mfem::Vector &displacementTrue, mfem::Vector &residual ); void apply_barotropic_closure_density_action( const fem::FEM &f, const mapping::DomainMapper &domainMapper, const eos::Polytrope &equationOfState, const mfem::Vector &densityVariationTrue, const mfem::Vector &displacementTrue, mfem::Vector &action ); void apply_barotropic_closure_enthalpy_action( const fem::FEM &f, const mapping::DomainMapper &domainMapper, const eos::Polytrope &equationOfState, const mfem::Vector &baseEnthalpyTrue, const mfem::Vector &enthalpyVariationTrue, const mfem::Vector &displacementTrue, mfem::Vector &action ); void apply_barotropic_closure_displacement_action( const fem::FEM &f, const mapping::DomainMapper &domainMapper, const eos::Polytrope &equationOfState, const mfem::Vector &baseDensityTrue, const mfem::Vector &baseEnthalpyTrue, const mfem::Vector &displacementTrue, const mfem::Vector &displacementVariationTrue, mfem::Vector &action ); } // namespace mean_field::operators::kernels