Find the normalized residual for each processor
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | file_handler | residual file handler |
||
real(kind=wp), | intent(in), | dimension(:, :, :, :) | :: | residue | Store residue at each cell-center |
|
real(kind=wp), | intent(in), | dimension(:, :, :, :) | :: | F | Store fluxes throught the I faces |
|
real(kind=wp), | intent(in), | dimension(:, :, :, :) | :: | G | Store fluxes throught the J faces |
|
real(kind=wp), | intent(in), | dimension(:, :, :, :) | :: | H | Store fluxes throught the K faces |
|
type(controltype), | intent(inout) | :: | control | Control parameters |
||
type(schemetype), | intent(in) | :: | scheme | finite-volume Schemes |
||
type(extent), | intent(in) | :: | dims | Extent of the domain:imx,jmx,kmx |
subroutine find_resnorm(file_handler, residue, F,G,H, control, scheme, dims)
!< Find the normalized residual for each processor
implicit none
integer, intent(in) :: file_handler
!< residual file handler
type(controltype), intent(inout) :: control
!< Control parameters
type(schemetype) , intent(in) :: scheme
!< finite-volume Schemes
type(extent), intent(in) :: dims
!< Extent of the domain:imx,jmx,kmx
real(wp), dimension(:, :, :, :), intent(in) :: residue
!< Store residue at each cell-center
real(wp), dimension(:, :, :, :), intent(in) :: F
!< Store fluxes throught the I faces
real(wp), dimension(:, :, :, :), intent(in) :: G
!< Store fluxes throught the J faces
real(wp), dimension(:, :, :, :), intent(in) :: H
!< Store fluxes throught the K faces
call get_absolute_resnorm(residue, F,G,H, control, dims)
call collect_resnorm_from_all_blocks(control)
call assemble_resnom_at_each_process(control)
call get_relative_resnorm(control)
if((mod(control%current_iter,control%res_write_interval)==0 .or. &
control%current_iter==Res_itr .or. &
control%current_iter==1) .and. &
process_id ==0) then
call write_resnorm(file_handler, control, scheme)
end if
end subroutine find_resnorm