Files
MeanField/libmeanfield/interface/operators/kernels/barotropic_closure_kernels.cppm
Emily Boudreaux 0f3ca8050b feat(field-support): added field support system, mid migration
currently the barotope and the pressure force operator are migrated to the new support system
2026-08-23 10:13:53 -04:00

63 lines
2.2 KiB
C++

module;
#include <mfem.hpp>
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::DomainMapperStateless &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::DomainMapperStateless &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::DomainMapperStateless &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::DomainMapperStateless &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