Corrects face fluxes using the pressure potential gradient.
| 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 | |||
| type(case_params_t), | intent(in) | :: | params | |||
| type(transport_properties_t), | intent(in) | :: | transport | |||
| real(kind=rk), | intent(in) | :: | predicted_flux(:) | |||
| real(kind=rk), | intent(in) | :: | phi(:) | |||
| real(kind=rk), | intent(out) | :: | face_flux(:) |
subroutine correct_face_flux(mesh, flow, bc, params, transport, predicted_flux, phi, face_flux) type(mesh_t), intent(in) :: mesh type(flow_mpi_t), intent(in) :: flow type(bc_set_t), intent(in) :: bc type(case_params_t), intent(in) :: params type(transport_properties_t), intent(in) :: transport real(rk), intent(in) :: predicted_flux(:) real(rk), intent(in) :: phi(:) real(rk), intent(out) :: face_flux(:) integer :: i, f, owner, nb real(rk) :: dist, beta_face 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) face_flux(f) = predicted_flux(f) if (nb > 0) then dist = face_normal_distance(mesh, bc, f, owner, nb) if (params%enable_variable_density) then beta_face = pressure_face_inverse_density(transport, owner, nb) face_flux(f) = predicted_flux(f) - params%dt * beta_face * & mesh%faces(f)%area * (phi(nb) - phi(owner)) / dist else face_flux(f) = predicted_flux(f) - params%dt / params%rho * & mesh%faces(f)%area * (phi(nb) - phi(owner)) / dist end if else if (boundary_pressure_type(mesh, bc, f) == bc_dirichlet) then dist = face_normal_distance(mesh, bc, f, owner, 0) if (params%enable_variable_density) then beta_face = pressure_face_inverse_density(transport, owner, 0) face_flux(f) = predicted_flux(f) - params%dt * beta_face * & mesh%faces(f)%area * (zero - phi(owner)) / dist else face_flux(f) = predicted_flux(f) - params%dt / params%rho * & mesh%faces(f)%area * (zero - phi(owner)) / dist end if end if end if end do end subroutine correct_face_flux