find_resnorm Subroutine

public subroutine find_resnorm(file_handler, residue, F, G, H, control, scheme, dims)

Find the normalized residual for each processor

Arguments

Type IntentOptional AttributesName
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


Calls

proc~~find_resnorm~~CallsGraph proc~find_resnorm find_resnorm proc~write_resnorm write_resnorm proc~find_resnorm->proc~write_resnorm proc~collect_resnorm_from_all_blocks collect_resnorm_from_all_blocks proc~find_resnorm->proc~collect_resnorm_from_all_blocks proc~get_absolute_resnorm get_absolute_resnorm proc~find_resnorm->proc~get_absolute_resnorm proc~get_relative_resnorm get_relative_resnorm proc~find_resnorm->proc~get_relative_resnorm proc~assemble_resnom_at_each_process assemble_resnom_at_each_process proc~find_resnorm->proc~assemble_resnom_at_each_process mpi_allgather mpi_allgather proc~collect_resnorm_from_all_blocks->mpi_allgather

Called by

proc~~find_resnorm~~CalledByGraph proc~find_resnorm find_resnorm proc~iterate_one_more_time_step iterate_one_more_time_step proc~iterate_one_more_time_step->proc~find_resnorm program~main main program~main->proc~iterate_one_more_time_step

Contents

Source Code


Source Code

    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