message: Fix QuadratureFunction for rho in DGTraceIntegrator
diff: @@ -167,15 +167,16 @@ void DGTraceIntegrator::SetupPA(const FiniteElementSpace &fes, FaceType type)
  dynamic_cast<VectorQuadratureFunctionCoefficient*>(u))
  {
  // Assumed to be in lexicographical ordering
  - const QuadratureFunction &qFun = qf_u->GetQuadFunction();
  - MFEM_VERIFY(qFun.Size() == dim * nq * nf,
  + const QuadratureFunctionBase &qf_base = qf_u->GetQuadFunction();
  + auto *qf = dynamic_cast<const QuadratureFunction*>(&qf_base);
  + MFEM_VERIFY(qf->Size() == dim * nq * nf,
  "Incompatible QuadratureFunction dimension \n");
  - MFEM_VERIFY(ir == &qFun.GetSpace()->GetElementIntRule(0),
  + MFEM_VERIFY(ir == &qf->GetSpace()->GetElementIntRule(0),
  "IntegrationRule used within integrator and in"
  " QuadratureFunction appear to be different");
  - qFun.Read();
  - vel.MakeRef(const_cast<QuadratureFunction &>(qFun),0);
  + qf->Read();
  + vel.MakeRef(const_cast<QuadratureFunction&>(*qf),0);
  }
  else
  {
  @@ -230,15 +231,17 @@ void DGTraceIntegrator::SetupPA(const FiniteElementSpace &fes, FaceType type)
  else if (QuadratureFunctionCoefficient* qf_rho =
  dynamic_cast<QuadratureFunctionCoefficient*>(rho))
  {
  - const QuadratureFunction &qFun = qf_rho->GetQuadFunction();
  - MFEM_VERIFY(qFun.Size() == nq * nf,
  + const QuadratureFunctionBase &qf_base = qf_rho->GetQuadFunction();
  + const auto *qf = dynamic_cast<const QuadratureFunction*>(&qf_base);
  + MFEM_VERIFY(qf != nullptr, "Wrong type of QuadratureFunction");
  + MFEM_VERIFY(qf->Size() == nq * nf,
  "Incompatible QuadratureFunction dimension \n");
  - MFEM_VERIFY(ir == &qFun.GetSpace()->GetElementIntRule(0),
  + MFEM_VERIFY(ir == &qf->GetSpace()->GetElementIntRule(0),
  "IntegrationRule used within integrator and in"
  " QuadratureFunction appear to be different");
  - qFun.Read();
  - r.MakeRef(const_cast<QuadratureFunction &>(qFun),0);
  + qf->Read();
  + r.MakeRef(const_cast<QuadratureFunction&>(*qf),0);
  }
  else
  {
  