hgardfou.F90 Source File


This file depends on

sourcefile~~hgardfou.f90~2~~EfferentGraph sourcefile~hgardfou.f90~2 hgardfou.F90 sourcefile~yomcst_mod_h.f90 yomcst_mod_h.f90 sourcefile~hgardfou.f90~2->sourcefile~yomcst_mod_h.f90 sourcefile~indice_sol_mod.f90 indice_sol_mod.f90 sourcefile~hgardfou.f90~2->sourcefile~indice_sol_mod.f90 sourcefile~dimphy.f90 dimphy.f90 sourcefile~hgardfou.f90~2->sourcefile~dimphy.f90 sourcefile~phys_state_var_mod.f90 phys_state_var_mod.F90 sourcefile~hgardfou.f90~2->sourcefile~phys_state_var_mod.f90 sourcefile~geometry_mod.f90 geometry_mod.f90 sourcefile~hgardfou.f90~2->sourcefile~geometry_mod.f90 sourcefile~print_control_mod.f90 print_control_mod.f90 sourcefile~hgardfou.f90~2->sourcefile~print_control_mod.f90 sourcefile~phys_state_var_mod.f90->sourcefile~indice_sol_mod.f90 sourcefile~phys_state_var_mod.f90->sourcefile~dimphy.f90 sourcefile~surface_data.f90 surface_data.f90 sourcefile~phys_state_var_mod.f90->sourcefile~surface_data.f90 sourcefile~config_ocean_skin_m.f90 config_ocean_skin_m.F90 sourcefile~phys_state_var_mod.f90->sourcefile~config_ocean_skin_m.f90 sourcefile~aero_mod.f90 aero_mod.f90 sourcefile~phys_state_var_mod.f90->sourcefile~aero_mod.f90 sourcefile~dimsoil_mod_h.f90 dimsoil_mod_h.f90 sourcefile~phys_state_var_mod.f90->sourcefile~dimsoil_mod_h.f90 sourcefile~clesphys_mod_h.f90 clesphys_mod_h.f90 sourcefile~phys_state_var_mod.f90->sourcefile~clesphys_mod_h.f90 sourcefile~infotrac_phy.f90 infotrac_phy.F90 sourcefile~phys_state_var_mod.f90->sourcefile~infotrac_phy.f90 sourcefile~mod_grid_phy_lmdz.f90 mod_grid_phy_lmdz.f90 sourcefile~geometry_mod.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~nrtype.f90 nrtype.f90 sourcefile~geometry_mod.f90->sourcefile~nrtype.f90 sourcefile~mod_phys_lmdz_para.f90 mod_phys_lmdz_para.f90 sourcefile~infotrac_phy.f90->sourcefile~mod_phys_lmdz_para.f90 sourcefile~iniprint_mod_h.f90 iniprint_mod_h.f90 sourcefile~infotrac_phy.f90->sourcefile~iniprint_mod_h.f90 sourcefile~strings_mod.f90 strings_mod.f90 sourcefile~infotrac_phy.f90->sourcefile~strings_mod.f90 sourcefile~readtracfiles_mod.f90 readTracFiles_mod.f90 sourcefile~infotrac_phy.f90->sourcefile~readtracfiles_mod.f90 sourcefile~lmdz_reprobus_wrappers.f90 lmdz_reprobus_wrappers.F90 sourcefile~infotrac_phy.f90->sourcefile~lmdz_reprobus_wrappers.f90 sourcefile~ioipsl_getin_p_mod.f90 ioipsl_getin_p_mod.f90 sourcefile~infotrac_phy.f90->sourcefile~ioipsl_getin_p_mod.f90 sourcefile~lmdz_cppkeys_wrapper.f90 lmdz_cppkeys_wrapper.F90 sourcefile~infotrac_phy.f90->sourcefile~lmdz_cppkeys_wrapper.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~print_control_mod.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~mod_phys_lmdz_mpi_data.f90 mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_omp_data.f90 mod_phys_lmdz_omp_data.F90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_phys_lmdz_omp_data.f90 sourcefile~mod_phys_lmdz_transfert_para.f90 mod_phys_lmdz_transfert_para.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_phys_lmdz_transfert_para.f90 sourcefile~readtracfiles_mod.f90->sourcefile~strings_mod.f90 sourcefile~readtracfiles_mod.f90->sourcefile~ioipsl_getin_p_mod.f90 sourcefile~lmdz_reprobus_wrappers.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~mod_phys_lmdz_para.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~strings_mod.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~mod_phys_lmdz_transfert_para.f90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~print_control_mod.f90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~lmdz_cppkeys_wrapper.f90 sourcefile~lmdz_mpi.f90 lmdz_mpi.F90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~lmdz_mpi.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~dimphy.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~print_control_mod.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_transfert_para.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_omp_transfert.f90 mod_phys_lmdz_omp_transfert.f90 sourcefile~mod_phys_lmdz_transfert_para.f90->sourcefile~mod_phys_lmdz_omp_transfert.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90 mod_phys_lmdz_mpi_transfert.f90 sourcefile~mod_phys_lmdz_transfert_para.f90->sourcefile~mod_phys_lmdz_mpi_transfert.f90 sourcefile~mod_phys_lmdz_omp_transfert.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_omp_transfert.f90->sourcefile~mod_phys_lmdz_omp_data.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90->sourcefile~lmdz_mpi.f90

Contents

Source Code


Source Code

! $Id: hgardfou.F90 5285 2024-10-28 13:33:29Z abarral $
SUBROUTINE hgardfou(t, tsol, text,abortphy)
  USE dimphy, ONLY: klon, klev
  USE phys_state_var_mod, ONLY: pctsrf
  USE geometry_mod, ONLY: longitude_deg, latitude_deg
  USE indice_sol_mod, ONLY: nbsrf
  USE print_control_mod, ONLY: lunout
  USE yomcst_mod_h
IMPLICIT NONE
  ! ======================================================================
  ! Verifier la temperature
  ! ======================================================================

  REAL t(klon, klev), tsol(klon, nbsrf)
  CHARACTER(len=*), intent(in):: text
  CHARACTER (LEN=20) :: modname = 'hgardfou'
  INTEGER abortphy

  INTEGER i, k, nsrf
  REAL zt(klon)
  INTEGER jadrs(klon), jbad
  LOGICAL ok

  LOGICAL firstcall
  SAVE firstcall
  DATA firstcall/.TRUE./
  !$OMP THREADPRIVATE(firstcall)

  IF (firstcall) THEN
    WRITE (lunout, *) 'hgardfou garantit la temperature dans [100,370] K'
    firstcall = .FALSE.
    ! DO i = 1, klon
    ! WRITE(lunout,*)'i=',i,'rlon=',rlon(i),'rlat=',rlat(i)
    ! ENDDO

  END IF

  ok = .TRUE.
  DO k = 1, klev
    DO i = 1, klon
      zt(i) = t(i, k)
    END DO
#ifdef CRAY
    CALL whenfgt(klon, zt, 1, 370.0, jadrs, jbad)
#else
    jbad = 0
    DO i = 1, klon
      IF (zt(i)>370.) THEN
        jbad = jbad + 1
        jadrs(jbad) = i
      END IF
    END DO
#endif
    IF (jbad>0) THEN
      ok = .FALSE.
      DO i = 1, jbad
        WRITE (lunout, *) 'i,k,temperature,lon,lat,pourc ter,lic,oce,sic =', &
          jadrs(i), k, zt(jadrs(i)), longitude_deg(jadrs(i)), &
          latitude_deg(jadrs(i)),(pctsrf(jadrs(i),nsrf), nsrf=1, nbsrf)
      END DO
    END IF
#ifdef CRAY
    CALL whenflt(klon, zt, 1, 100.0, jadrs, jbad)
#else
    jbad = 0
    DO i = 1, klon
      ! IF (zt(i).LT.100.0) THEN
      IF (zt(i)<50.0) THEN
        jbad = jbad + 1
        jadrs(jbad) = i
      END IF
    END DO
#endif
    IF (jbad>0) THEN
      ok = .FALSE.
      DO i = 1, jbad
        WRITE (lunout, *) 'i,k,temperature,lon,lat,pourc ter,lic,oce,sic =', &
          jadrs(i), k, zt(jadrs(i)), longitude_deg(jadrs(i)), &
          latitude_deg(jadrs(i)), (pctsrf(jadrs(i),nsrf), nsrf=1, nbsrf)
      END DO
    END IF
  END DO

  DO nsrf = 1, nbsrf
    DO i = 1, klon
      zt(i) = tsol(i, nsrf)
    END DO
#ifdef CRAY
    CALL whenfgt(klon, zt, 1, 370.0, jadrs, jbad)
#else
    jbad = 0
    DO i = 1, klon
      IF (zt(i)>370.0) THEN
        jbad = jbad + 1
        jadrs(jbad) = i
      END IF
    END DO
#endif
    IF (jbad>0) THEN
      ok = .FALSE.
      DO i = 1, jbad
        WRITE (lunout, *) &
          'i,nsrf,temperature,lon,lat,pourc ter,lic,oce,sic =', jadrs(i), &
          nsrf, zt(jadrs(i)), longitude_deg(jadrs(i)), &
          latitude_deg(jadrs(i)), pctsrf(jadrs(i), nsrf)
      END DO
    END IF
#ifdef CRAY
    CALL whenflt(klon, zt, 1, 100.0, jadrs, jbad)
#else
    jbad = 0
    DO i = 1, klon
      ! IF (zt(i).LT.100.0) THEN
      IF (zt(i)<50.0) THEN
        jbad = jbad + 1
        jadrs(jbad) = i
      END IF
    END DO
#endif
    IF (jbad>0) THEN
      ok = .FALSE.
      DO i = 1, jbad
        WRITE (lunout, *) &
          'i,nsrf,temperature,lon,lat,pourc ter,lic,oce,sic =', jadrs(i), &
          nsrf, zt(jadrs(i)), longitude_deg(jadrs(i)), &
          latitude_deg(jadrs(i)), pctsrf(jadrs(i), nsrf)
      END DO
    END IF
  END DO

!  IF (.NOT. ok) CALL abort_physic(modname, text, 1)
  IF (.NOT. ok) abortphy=1

END SUBROUTINE hgardfou