radiation_check.F90 Source File


This file depends on

sourcefile~~radiation_check.f90~~EfferentGraph sourcefile~radiation_check.f90 radiation_check.F90 sourcefile~parkind1.f90 parkind1.F90 sourcefile~radiation_check.f90->sourcefile~parkind1.f90 sourcefile~radiation_io.f90 radiation_io.F90 sourcefile~radiation_check.f90->sourcefile~radiation_io.f90 sourcefile~yomlun_ifsaux.f90 yomlun_ifsaux.F90 sourcefile~radiation_io.f90->sourcefile~yomlun_ifsaux.f90 sourcefile~yomlun_ifsaux.f90->sourcefile~parkind1.f90

Files dependent on this one

sourcefile~~radiation_check.f90~~AfferentGraph sourcefile~radiation_check.f90 radiation_check.F90 sourcefile~radiation_single_level.f90 radiation_single_level.F90 sourcefile~radiation_single_level.f90->sourcefile~radiation_check.f90 sourcefile~radiation_flux.f90~2 radiation_flux.F90 sourcefile~radiation_flux.f90~2->sourcefile~radiation_check.f90 sourcefile~radiation_thermodynamics.f90 radiation_thermodynamics.F90 sourcefile~radiation_thermodynamics.f90->sourcefile~radiation_check.f90 sourcefile~radiation_gas.f90 radiation_gas.F90 sourcefile~radiation_gas.f90->sourcefile~radiation_check.f90 sourcefile~radiation_aerosol.f90 radiation_aerosol.F90 sourcefile~radiation_aerosol.f90->sourcefile~radiation_check.f90 sourcefile~radiation_gas.f90~2 radiation_gas.F90 sourcefile~radiation_gas.f90~2->sourcefile~radiation_check.f90 sourcefile~radiation_aerosol.f90~2 radiation_aerosol.F90 sourcefile~radiation_aerosol.f90~2->sourcefile~radiation_check.f90 sourcefile~radiation_single_level.f90~2 radiation_single_level.F90 sourcefile~radiation_single_level.f90~2->sourcefile~radiation_check.f90 sourcefile~radiation_cloud.f90 radiation_cloud.F90 sourcefile~radiation_cloud.f90->sourcefile~radiation_check.f90 sourcefile~radiation_cloud.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_flux.f90 radiation_flux.F90 sourcefile~radiation_flux.f90->sourcefile~radiation_check.f90 sourcefile~radiation_cloud.f90~2 radiation_cloud.F90 sourcefile~radiation_cloud.f90~2->sourcefile~radiation_check.f90 sourcefile~radiation_cloud.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_thermodynamics.f90~2 radiation_thermodynamics.F90 sourcefile~radiation_thermodynamics.f90~2->sourcefile~radiation_check.f90 sourcefile~radiation_ecckd_interface.f90 radiation_ecckd_interface.F90 sourcefile~radiation_ecckd_interface.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_ecckd_interface.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_ecckd_interface.f90->sourcefile~radiation_gas.f90 sourcefile~radiation_homogeneous_sw.f90 radiation_homogeneous_sw.F90 sourcefile~radiation_homogeneous_sw.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_homogeneous_sw.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_homogeneous_sw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_tripleclouds_sw.f90~2 radiation_tripleclouds_sw.F90 sourcefile~radiation_tripleclouds_sw.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_tripleclouds_sw.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_tripleclouds_sw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_spartacus_lw.f90 radiation_spartacus_lw.F90 sourcefile~radiation_spartacus_lw.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_spartacus_lw.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_spartacus_lw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_cloudless_sw.f90 radiation_cloudless_sw.F90 sourcefile~radiation_cloudless_sw.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_cloudless_sw.f90->sourcefile~radiation_flux.f90 sourcefile~ecrad_driver.f90 ecrad_driver.F90 sourcefile~ecrad_driver.f90->sourcefile~radiation_single_level.f90 sourcefile~ecrad_driver.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~ecrad_driver.f90->sourcefile~radiation_gas.f90 sourcefile~ecrad_driver.f90->sourcefile~radiation_aerosol.f90 sourcefile~ecrad_driver.f90->sourcefile~radiation_cloud.f90 sourcefile~ecrad_driver.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_general_cloud_optics.f90 radiation_general_cloud_optics.F90 sourcefile~ecrad_driver.f90->sourcefile~radiation_general_cloud_optics.f90 sourcefile~radiation_save.f90 radiation_save.F90 sourcefile~ecrad_driver.f90->sourcefile~radiation_save.f90 sourcefile~radiation_interface.f90 radiation_interface.F90 sourcefile~ecrad_driver.f90->sourcefile~radiation_interface.f90 sourcefile~ecrad_driver_read_input.f90 ecrad_driver_read_input.F90 sourcefile~ecrad_driver.f90->sourcefile~ecrad_driver_read_input.f90 sourcefile~radiation_ecckd_interface.f90~2 radiation_ecckd_interface.F90 sourcefile~radiation_ecckd_interface.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_ecckd_interface.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_ecckd_interface.f90~2->sourcefile~radiation_gas.f90 sourcefile~radiation_spartacus_sw.f90~2 radiation_spartacus_sw.F90 sourcefile~radiation_spartacus_sw.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_spartacus_sw.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_spartacus_sw.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_spartacus_sw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_general_cloud_optics.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_general_cloud_optics.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_tripleclouds_lw.f90~2 radiation_tripleclouds_lw.F90 sourcefile~radiation_tripleclouds_lw.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_tripleclouds_lw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_mcica_lw.f90~2 radiation_mcica_lw.F90 sourcefile~radiation_mcica_lw.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_mcica_lw.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_mcica_lw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_monochromatic.f90~2 radiation_monochromatic.F90 sourcefile~radiation_monochromatic.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_monochromatic.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_monochromatic.f90~2->sourcefile~radiation_gas.f90 sourcefile~radiation_monochromatic.f90~2->sourcefile~radiation_aerosol.f90 sourcefile~radiation_monochromatic.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_scheme.f90~2 radiation_scheme.F90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_gas.f90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_aerosol.f90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_save.f90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_interface.f90 sourcefile~radiation_setup.f90 radiation_setup.F90 sourcefile~radiation_scheme.f90~2->sourcefile~radiation_setup.f90 sourcefile~radiation_cloud_optics.f90~2 radiation_cloud_optics.F90 sourcefile~radiation_cloud_optics.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_cloud_optics.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_mcica_sw.f90 radiation_mcica_sw.F90 sourcefile~radiation_mcica_sw.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_mcica_sw.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_mcica_sw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_scheme_mod.f90 radiation_scheme_mod.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_gas.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_aerosol.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_save.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_interface.f90 sourcefile~radiation_scheme_mod.f90->sourcefile~radiation_setup.f90 sourcefile~radiation_general_cloud_optics.f90~2 radiation_general_cloud_optics.F90 sourcefile~radiation_general_cloud_optics.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_general_cloud_optics.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_mcica_sw.f90~2 radiation_mcica_sw.F90 sourcefile~radiation_mcica_sw.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_mcica_sw.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_mcica_sw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_save.f90~2 radiation_save.F90 sourcefile~radiation_save.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_save.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_save.f90~2->sourcefile~radiation_gas.f90 sourcefile~radiation_save.f90~2->sourcefile~radiation_aerosol.f90 sourcefile~radiation_save.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_save.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_tripleclouds_lw.f90 radiation_tripleclouds_lw.F90 sourcefile~radiation_tripleclouds_lw.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_tripleclouds_lw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_cloudless_lw.f90 radiation_cloudless_lw.F90 sourcefile~radiation_cloudless_lw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_save.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_save.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_save.f90->sourcefile~radiation_gas.f90 sourcefile~radiation_save.f90->sourcefile~radiation_aerosol.f90 sourcefile~radiation_save.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_save.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_mcica_lw.f90 radiation_mcica_lw.F90 sourcefile~radiation_mcica_lw.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_mcica_lw.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_mcica_lw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_cloud_optics.f90 radiation_cloud_optics.F90 sourcefile~radiation_cloud_optics.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_cloud_optics.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_cloudless_lw.f90~2 radiation_cloudless_lw.F90 sourcefile~radiation_cloudless_lw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_monochromatic.f90 radiation_monochromatic.F90 sourcefile~radiation_monochromatic.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_monochromatic.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_monochromatic.f90->sourcefile~radiation_gas.f90 sourcefile~radiation_monochromatic.f90->sourcefile~radiation_aerosol.f90 sourcefile~radiation_monochromatic.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_gas.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_aerosol.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_ecckd_interface.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_homogeneous_sw.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_spartacus_lw.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_cloudless_sw.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_general_cloud_optics.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_mcica_sw.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_tripleclouds_lw.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_cloudless_lw.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_save.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_mcica_lw.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_cloud_optics.f90 sourcefile~radiation_interface.f90->sourcefile~radiation_monochromatic.f90 sourcefile~radiation_aerosol_optics.f90 radiation_aerosol_optics.F90 sourcefile~radiation_interface.f90->sourcefile~radiation_aerosol_optics.f90 sourcefile~radiation_ifs_rrtm.f90 radiation_ifs_rrtm.F90 sourcefile~radiation_interface.f90->sourcefile~radiation_ifs_rrtm.f90 sourcefile~radiation_homogeneous_lw.f90 radiation_homogeneous_lw.F90 sourcefile~radiation_interface.f90->sourcefile~radiation_homogeneous_lw.f90 sourcefile~radiation_spartacus_sw.f90 radiation_spartacus_sw.F90 sourcefile~radiation_interface.f90->sourcefile~radiation_spartacus_sw.f90 sourcefile~radiation_tripleclouds_sw.f90 radiation_tripleclouds_sw.F90 sourcefile~radiation_interface.f90->sourcefile~radiation_tripleclouds_sw.f90 sourcefile~radiation_aerosol_optics.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_aerosol_optics.f90->sourcefile~radiation_gas.f90 sourcefile~radiation_aerosol_optics.f90->sourcefile~radiation_aerosol.f90 sourcefile~ecrad_ifs_driver.f90 ecrad_ifs_driver.F90 sourcefile~ecrad_ifs_driver.f90->sourcefile~radiation_single_level.f90 sourcefile~ecrad_ifs_driver.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~ecrad_ifs_driver.f90->sourcefile~radiation_gas.f90 sourcefile~ecrad_ifs_driver.f90->sourcefile~radiation_aerosol.f90 sourcefile~ecrad_ifs_driver.f90->sourcefile~radiation_cloud.f90 sourcefile~ecrad_ifs_driver.f90->sourcefile~radiation_flux.f90 sourcefile~ecrad_ifs_driver.f90->sourcefile~radiation_save.f90 sourcefile~ecrad_ifs_driver.f90->sourcefile~ecrad_driver_read_input.f90 sourcefile~ecrad_ifs_driver.f90->sourcefile~radiation_setup.f90 sourcefile~radiation_ifs_rrtm.f90~2 radiation_ifs_rrtm.F90 sourcefile~radiation_ifs_rrtm.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_ifs_rrtm.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_ifs_rrtm.f90~2->sourcefile~radiation_gas.f90 sourcefile~aeropt_5wv_ecrad.f90 aeropt_5wv_ecrad.f90 sourcefile~aeropt_5wv_ecrad.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~aeropt_5wv_ecrad.f90->sourcefile~radiation_aerosol.f90 sourcefile~ecrad_ifs_driver_blocked.f90 ecrad_ifs_driver_blocked.F90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~radiation_single_level.f90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~radiation_gas.f90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~radiation_aerosol.f90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~radiation_cloud.f90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~radiation_flux.f90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~radiation_save.f90 sourcefile~ifs_blocking.f90 ifs_blocking.F90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~ifs_blocking.f90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~ecrad_driver_read_input.f90 sourcefile~ecrad_ifs_driver_blocked.f90->sourcefile~radiation_setup.f90 sourcefile~radiation_interface.f90~2 radiation_interface.F90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_gas.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_aerosol.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_ecckd_interface.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_homogeneous_sw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_spartacus_lw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_cloudless_sw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_general_cloud_optics.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_mcica_sw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_tripleclouds_lw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_cloudless_lw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_save.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_mcica_lw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_cloud_optics.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_monochromatic.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_aerosol_optics.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_ifs_rrtm.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_homogeneous_lw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_spartacus_sw.f90 sourcefile~radiation_interface.f90~2->sourcefile~radiation_tripleclouds_sw.f90 sourcefile~radiation_spartacus_lw.f90~2 radiation_spartacus_lw.F90 sourcefile~radiation_spartacus_lw.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_spartacus_lw.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_spartacus_lw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_homogeneous_lw.f90~2 radiation_homogeneous_lw.F90 sourcefile~radiation_homogeneous_lw.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_homogeneous_lw.f90~2->sourcefile~radiation_flux.f90 sourcefile~ifs_blocking.f90->sourcefile~radiation_single_level.f90 sourcefile~ifs_blocking.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~ifs_blocking.f90->sourcefile~radiation_gas.f90 sourcefile~ifs_blocking.f90->sourcefile~radiation_aerosol.f90 sourcefile~ifs_blocking.f90->sourcefile~radiation_cloud.f90 sourcefile~ifs_blocking.f90->sourcefile~radiation_flux.f90 sourcefile~ifs_blocking.f90->sourcefile~radiation_setup.f90 sourcefile~radiation_cloudless_sw.f90~2 radiation_cloudless_sw.F90 sourcefile~radiation_cloudless_sw.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_cloudless_sw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_ifs_rrtm.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_ifs_rrtm.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_ifs_rrtm.f90->sourcefile~radiation_gas.f90 sourcefile~radiation_homogeneous_lw.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_homogeneous_lw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_spartacus_sw.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_spartacus_sw.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_spartacus_sw.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_spartacus_sw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_tripleclouds_sw.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_tripleclouds_sw.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_tripleclouds_sw.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_scheme.f90 radiation_scheme.F90 sourcefile~radiation_scheme.f90->sourcefile~radiation_single_level.f90 sourcefile~radiation_scheme.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_scheme.f90->sourcefile~radiation_gas.f90 sourcefile~radiation_scheme.f90->sourcefile~radiation_aerosol.f90 sourcefile~radiation_scheme.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_scheme.f90->sourcefile~radiation_flux.f90 sourcefile~radiation_scheme.f90->sourcefile~radiation_save.f90 sourcefile~radiation_scheme.f90->sourcefile~radiation_interface.f90 sourcefile~radiation_scheme.f90->sourcefile~radiation_setup.f90 sourcefile~radiation_homogeneous_sw.f90~2 radiation_homogeneous_sw.F90 sourcefile~radiation_homogeneous_sw.f90~2->sourcefile~radiation_single_level.f90 sourcefile~radiation_homogeneous_sw.f90~2->sourcefile~radiation_cloud.f90 sourcefile~radiation_homogeneous_sw.f90~2->sourcefile~radiation_flux.f90 sourcefile~radiation_aerosol_optics.f90~2 radiation_aerosol_optics.F90 sourcefile~radiation_aerosol_optics.f90~2->sourcefile~radiation_thermodynamics.f90 sourcefile~radiation_aerosol_optics.f90~2->sourcefile~radiation_gas.f90 sourcefile~radiation_aerosol_optics.f90~2->sourcefile~radiation_aerosol.f90 sourcefile~ecrad_driver_read_input.f90->sourcefile~radiation_single_level.f90 sourcefile~ecrad_driver_read_input.f90->sourcefile~radiation_thermodynamics.f90 sourcefile~ecrad_driver_read_input.f90->sourcefile~radiation_gas.f90 sourcefile~ecrad_driver_read_input.f90->sourcefile~radiation_aerosol.f90 sourcefile~ecrad_driver_read_input.f90->sourcefile~radiation_cloud.f90 sourcefile~radiation_setup.f90->sourcefile~radiation_interface.f90 sourcefile~radiation_setup.f90->sourcefile~radiation_aerosol_optics.f90 sourcefile~radiation_setup.f90~2 radiation_setup.F90 sourcefile~radiation_setup.f90~2->sourcefile~radiation_interface.f90

Contents

Source Code


Source Code

! radiation_check.F90 - Checking routines
!
! (C) Copyright 2020- ECMWF.
!
! This software is licensed under the terms of the Apache Licence Version 2.0
! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
!
! In applying this licence, ECMWF does not waive the privileges and immunities
! granted to it by virtue of its status as an intergovernmental organisation
! nor does it submit to any jurisdiction.
!
! Author:  Robin Hogan
! Email:   r.j.hogan@ecmwf.int
! License: see the COPYING file for details
!

module radiation_check

  use parkind1, only : jprb

  implicit none
  public

contains

  !---------------------------------------------------------------------
  ! Return .true. if 1D allocatable array "var" is out of physical
  ! range specified by boundmin and boundmax, and issue a warning.
  ! "do_fix" determines whether erroneous values are fixed to lie
  ! within the physical range. To check only a subset of the array,
  ! specify i1 and i2 for the range.
  function out_of_bounds_1d(var, var_name, boundmin, boundmax, do_fix, i1, i2) result (is_bad)

    use radiation_io,     only : nulout

    real(jprb), allocatable, intent(inout) :: var(:)
    character(len=*),        intent(in) :: var_name
    real(jprb),              intent(in) :: boundmin, boundmax
    logical,                 intent(in) :: do_fix
    integer,       optional, intent(in) :: i1, i2

    logical                       :: is_bad

    real(jprb) :: varmin, varmax

    is_bad = .false.

    if (allocated(var)) then

      if (present(i1) .and. present(i2)) then
        varmin = minval(var(i1:i2))
        varmax = maxval(var(i1:i2))
      else
        varmin = minval(var)
        varmax = maxval(var)
      end if

      if (varmin < boundmin .or. varmax > boundmax) then
        write(nulout,'(a,a,a,g12.4,a,g12.4,a,g12.4,a,g12.4)',advance='no') &
             &  '*** Warning: ', var_name, ' range', varmin, ' to', varmax, &
             &  ' is out of physical range', boundmin, 'to', boundmax
        is_bad = .true.
        if (do_fix) then
          if (present(i1) .and. present(i2)) then
            var(i1:i2) = max(boundmin, min(boundmax, var(i1:i2)))
          else
            var = max(boundmin, min(boundmax, var))
          end if
          write(nulout,'(a)') ': corrected'
        else
          write(nulout,'(1x)')
        end if
      end if

    end if
    
  end function out_of_bounds_1d


  !---------------------------------------------------------------------
  ! Return .true. if 2D allocatable array "var" is out of physical
  ! range specified by boundmin and boundmax, and issue a warning.  To
  ! check only a subset of the array, specify i1 and i2 for the range
  ! of the first dimension and j1 and j2 for the range of the second.
  function out_of_bounds_2d(var, var_name, boundmin, boundmax, do_fix, &
       &                    i1, i2, j1, j2) result (is_bad)

    use radiation_io,     only : nulout

    real(jprb), allocatable, intent(inout) :: var(:,:)
    character(len=*),        intent(in) :: var_name
    real(jprb),              intent(in) :: boundmin, boundmax
    logical,                 intent(in) :: do_fix
    integer,       optional, intent(in) :: i1, i2, j1, j2

    ! Local copies of indices
    integer :: ii1, ii2, jj1, jj2

    logical                       :: is_bad

    real(jprb) :: varmin, varmax

    is_bad = .false.

    if (allocated(var)) then

      if (present(i1) .and. present(i2)) then
        ii1 = i1
        ii2 = i2
      else
        ii1 = lbound(var,1)
        ii2 = ubound(var,1)
      end if
      if (present(j1) .and. present(j2)) then
        jj1 = j1
        jj2 = j2
      else
        jj1 = lbound(var,2)
        jj2 = ubound(var,2)
      end if
      varmin = minval(var(ii1:ii2,jj1:jj2))
      varmax = maxval(var(ii1:ii2,jj1:jj2))

      if (varmin < boundmin .or. varmax > boundmax) then
        write(nulout,'(a,a,a,g12.4,a,g12.4,a,g12.4,a,g12.4)',advance='no') &
             &  '*** Warning: ', var_name, ' range', varmin, ' to', varmax,&
             &  ' is out of physical range', boundmin, 'to', boundmax
        is_bad = .true.
        if (do_fix) then
          var(ii1:ii2,jj1:jj2) = max(boundmin, min(boundmax, var(ii1:ii2,jj1:jj2)))
          write(nulout,'(a)') ': corrected'
        else
          write(nulout,'(1x)')
        end if
      end if

    end if
    
  end function out_of_bounds_2d


  !---------------------------------------------------------------------
  ! Return .true. if 3D allocatable array "var" is out of physical
  ! range specified by boundmin and boundmax, and issue a warning.  To
  ! check only a subset of the array, specify i1 and i2 for the range
  ! of the first dimension, j1 and j2 for the second and k1 and k2 for
  ! the third.
  function out_of_bounds_3d(var, var_name, boundmin, boundmax, do_fix, &
       &                    i1, i2, j1, j2, k1, k2) result (is_bad)

    use radiation_io,     only : nulout

    real(jprb), allocatable, intent(inout) :: var(:,:,:)
    character(len=*),        intent(in) :: var_name
    real(jprb),              intent(in) :: boundmin, boundmax
    logical,                 intent(in) :: do_fix
    integer,       optional, intent(in) :: i1, i2, j1, j2, k1, k2

    ! Local copies of indices
    integer :: ii1, ii2, jj1, jj2, kk1, kk2

    logical                       :: is_bad

    real(jprb) :: varmin, varmax

    is_bad = .false.

    if (allocated(var)) then

      if (present(i1) .and. present(i2)) then
        ii1 = i1
        ii2 = i2
      else
        ii1 = lbound(var,1)
        ii2 = ubound(var,1)
      end if
      if (present(j1) .and. present(j2)) then
        jj1 = j1
        jj2 = j2
      else
        jj1 = lbound(var,2)
        jj2 = ubound(var,2)
      end if
      if (present(k1) .and. present(k2)) then
        kk1 = k1
        kk2 = k2
      else
        kk1 = lbound(var,3)
        kk2 = ubound(var,3)
      end if
      varmin = minval(var(ii1:ii2,jj1:jj2,kk1:kk2))
      varmax = maxval(var(ii1:ii2,jj1:jj2,kk1:kk2))

      if (varmin < boundmin .or. varmax > boundmax) then
        write(nulout,'(a,a,a,g12.4,a,g12.4,a,g12.4,a,g12.4)',advance='no') &
             &  '*** Warning: ', var_name, ' range', varmin, ' to', varmax,&
             &  ' is out of physical range', boundmin, 'to', boundmax
        is_bad = .true.
        if (do_fix) then
          var(ii1:ii2,jj1:jj2,kk1:kk2) = max(boundmin, min(boundmax, &
               &                             var(ii1:ii2,jj1:jj2,kk1:kk2)))
          write(nulout,'(a)') ': corrected'
        else
          write(nulout,'(1x)')
        end if
      end if

    end if
    
  end function out_of_bounds_3d

end module radiation_check