compute_predicted_face_flux Subroutine

private subroutine compute_predicted_face_flux(mesh, flow, bc, ustar, face_flux)

Linearly interpolates cell-centered intermediate velocity to mesh faces.

Arguments

Type IntentOptional 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) :: ustar(:,:)
real(kind=rk), intent(out) :: face_flux(:)

Calls

proc~~compute_predicted_face_flux~~CallsGraph proc~compute_predicted_face_flux mod_flow_projection::compute_predicted_face_flux proc~boundary_velocity mod_bc::boundary_velocity proc~compute_predicted_face_flux->proc~boundary_velocity proc~face_effective_neighbor mod_bc::face_effective_neighbor proc~compute_predicted_face_flux->proc~face_effective_neighbor proc~face_linear_vector mod_flow_projection::face_linear_vector proc~compute_predicted_face_flux->proc~face_linear_vector proc~is_periodic_face mod_bc::is_periodic_face proc~face_effective_neighbor->proc~is_periodic_face proc~face_neighbor_weight mod_flow_projection::face_neighbor_weight proc~face_linear_vector->proc~face_neighbor_weight proc~fatal_error mod_kinds::fatal_error proc~face_neighbor_weight->proc~fatal_error proc~outward_normal mod_flow_projection::outward_normal proc~face_neighbor_weight->proc~outward_normal proc~patch_type_for_face mod_bc::patch_type_for_face proc~face_neighbor_weight->proc~patch_type_for_face proc~is_periodic_face->proc~patch_type_for_face

Called by

proc~~compute_predicted_face_flux~~CalledByGraph proc~compute_predicted_face_flux mod_flow_projection::compute_predicted_face_flux proc~advance_projection_step mod_flow_projection::advance_projection_step proc~advance_projection_step->proc~compute_predicted_face_flux program~lowmach_react_hex lowmach_react_hex program~lowmach_react_hex->proc~advance_projection_step

Source Code

   subroutine compute_predicted_face_flux(mesh, flow, bc, ustar, face_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) :: ustar(:,:)
      real(rk), intent(out) :: face_flux(:)

      integer :: i, f, owner, nb
      real(rk) :: uf(3), ub(3)

      face_flux = zero

      do i = 1, size(flow%owned_faces)
         f = flow%owned_faces(i)
         owner = mesh%faces(f)%owner

         nb = face_effective_neighbor(mesh, bc, f, owner)

         if (nb > 0) then
            uf = face_linear_vector(mesh, bc, f, owner, nb, ustar(:, owner), ustar(:, nb))
         else
            call boundary_velocity(mesh, bc, f, ustar(:, owner), ub)
            uf = ub
         end if

         face_flux(f) = dot_product(uf, mesh%faces(f)%normal) * mesh%faces(f)%area
      end do
   end subroutine compute_predicted_face_flux