Skip to content

Commit

Permalink
Compute physical qp location for FV flux loop
Browse files Browse the repository at this point in the history
As pointed out in idaholab#15194, we have historically not had the correct
physical location for quadrature points when computing either
`FVElementalKernels` or `FVFluxKernels/FVFluxBCs`. This commit computes
the correct physical quadrature point locations for the FV flux loop, so
we are fixing half the problem outlined in idaholab#15194
  • Loading branch information
lindsayad committed Dec 4, 2020
1 parent b646cb6 commit d0ff267
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions framework/src/base/Assembly.C
Expand Up @@ -1870,6 +1870,17 @@ Assembly::reinitFVFace(const FaceInfo & fi)
if (_current_side_elem)
delete _current_side_elem;
_current_side_elem = _current_elem->build_side_ptr(_current_side).release();

// We've initialized the reference points. Now we need to compute the physical location of the
// quadrature points. We do not do any FE initialization so we cannot simply copy over FE results
// like we do in reinitFEFace. Instead we handle the computation of the physical locations
// manually
const auto num_qp = _current_qrule_face->n_points();
_current_q_points_face.resize(num_qp);
const auto & ref_points = _current_qrule_face->get_points();
for (const auto qp : make_range(num_qp))
_current_q_points_face[qp] =
FEMap::map(_current_side_elem->dim(), _current_side_elem, ref_points[qp]);
}

void
Expand Down

0 comments on commit d0ff267

Please sign in to comment.