Cover both density mass and EOS source in closure quadrature

This commit is contained in:
2026-09-19 10:47:58 -04:00
parent d6554cae6b
commit dd955abca5
8 changed files with 98 additions and 14 deletions

View File

@@ -102,7 +102,18 @@ namespace {
mean_field::quadrature::MappingKind::general
);
const auto resolution = f.quadratureFactory->get(query, transformation.GetGeometryType());
const auto sourceResolution = f.quadratureFactory->get(query, transformation.GetGeometryType());
// The reference kernel must also cover the density mass degree when
// density is enriched independently of the EOS source field.
const auto massQuery = mean_field::field::Field<mean_field::field::Density>::make_query<
mean_field::field::Density::Form::EosClosureMass>(
mean_field::quadrature::QuadratureRole::discretization, transformation.OrderW(), {},
mean_field::utils::DOMAINS::STELLAR, mean_field::quadrature::MappingKind::general
);
const auto massResolution = f.quadratureFactory->get(massQuery, transformation.GetGeometryType());
const auto &resolution = sourceResolution.resolution.order >= massResolution.resolution.order
? sourceResolution
: massResolution;
MFEM_VERIFY(
resolution.integration_rule != nullptr, "The quadrature policy did not return an "