Helper to integrated boundary flux on MPI-owned partitions.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mesh_t), | intent(in) | :: | mesh | |||
| type(flow_mpi_t), | intent(in) | :: | flow | |||
| type(bc_set_t), | intent(in) | :: | bc | |||
| real(kind=rk), | intent(in) | :: | face_flux(:) | |||
| real(kind=rk), | intent(out) | :: | local_flux |
subroutine compute_boundary_flux(mesh, flow, bc, face_flux, local_flux) type(mesh_t), intent(in) :: mesh type(flow_mpi_t), intent(in) :: flow type(bc_set_t), intent(in) :: bc real(rk), intent(in) :: face_flux(:) real(rk), intent(out) :: local_flux integer :: f, owner, btype local_flux = zero do f = 1, mesh%nfaces if (mesh%faces(f)%neighbor /= 0) cycle btype = patch_type_for_face(mesh, bc, f) if (btype == bc_periodic) cycle owner = mesh%faces(f)%owner if (.not. flow%owned(owner)) cycle local_flux = local_flux + face_flux(f) end do end subroutine compute_boundary_flux