calcul_divers_mod_h.f90 Source File


This file depends on

sourcefile~~calcul_divers_mod_h.f90~~EfferentGraph sourcefile~calcul_divers_mod_h.f90 calcul_divers_mod_h.f90 sourcefile~dimphy.f90 dimphy.f90 sourcefile~calcul_divers_mod_h.f90->sourcefile~dimphy.f90 sourcefile~phys_state_var_mod.f90 phys_state_var_mod.F90 sourcefile~calcul_divers_mod_h.f90->sourcefile~phys_state_var_mod.f90 sourcefile~phys_local_var_mod.f90 phys_local_var_mod.F90 sourcefile~calcul_divers_mod_h.f90->sourcefile~phys_local_var_mod.f90 sourcefile~phys_cal_mod.f90 phys_cal_mod.f90 sourcefile~calcul_divers_mod_h.f90->sourcefile~phys_cal_mod.f90 sourcefile~phys_state_var_mod.f90->sourcefile~dimphy.f90 sourcefile~indice_sol_mod.f90 indice_sol_mod.f90 sourcefile~phys_state_var_mod.f90->sourcefile~indice_sol_mod.f90 sourcefile~surface_data.f90 surface_data.f90 sourcefile~phys_state_var_mod.f90->sourcefile~surface_data.f90 sourcefile~dimsoil_mod_h.f90 dimsoil_mod_h.f90 sourcefile~phys_state_var_mod.f90->sourcefile~dimsoil_mod_h.f90 sourcefile~aero_mod.f90 aero_mod.f90 sourcefile~phys_state_var_mod.f90->sourcefile~aero_mod.f90 sourcefile~clesphys_mod_h.f90 clesphys_mod_h.f90 sourcefile~phys_state_var_mod.f90->sourcefile~clesphys_mod_h.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~infotrac_phy.f90 infotrac_phy.F90 sourcefile~phys_state_var_mod.f90->sourcefile~infotrac_phy.f90 sourcefile~phys_local_var_mod.f90->sourcefile~dimphy.f90 sourcefile~phys_local_var_mod.f90->sourcefile~phys_state_var_mod.f90 sourcefile~phys_local_var_mod.f90->sourcefile~indice_sol_mod.f90 sourcefile~phys_output_var_mod.f90 phys_output_var_mod.f90 sourcefile~phys_local_var_mod.f90->sourcefile~phys_output_var_mod.f90 sourcefile~lmdz_cppkeys_wrapper.f90 lmdz_cppkeys_wrapper.F90 sourcefile~phys_local_var_mod.f90->sourcefile~lmdz_cppkeys_wrapper.f90 sourcefile~phys_local_var_mod.f90->sourcefile~aero_mod.f90 sourcefile~phys_local_var_mod.f90->sourcefile~infotrac_phy.f90 sourcefile~mod_phys_lmdz_para.f90 mod_phys_lmdz_para.f90 sourcefile~phys_cal_mod.f90->sourcefile~mod_phys_lmdz_para.f90 sourcefile~ioipsl_getin_p_mod.f90 ioipsl_getin_p_mod.f90 sourcefile~phys_cal_mod.f90->sourcefile~ioipsl_getin_p_mod.f90 sourcefile~phys_output_var_mod.f90->sourcefile~dimphy.f90 sourcefile~phys_output_var_mod.f90->sourcefile~clesphys_mod_h.f90 sourcefile~phys_output_var_mod.f90->sourcefile~config_ocean_skin_m.f90 sourcefile~strings_mod.f90 strings_mod.f90 sourcefile~phys_output_var_mod.f90->sourcefile~strings_mod.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_transfert_para.f90 mod_phys_lmdz_transfert_para.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_phys_lmdz_transfert_para.f90 sourcefile~mod_grid_phy_lmdz.f90 mod_grid_phy_lmdz.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~print_control_mod.f90 print_control_mod.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~print_control_mod.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~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~infotrac_phy.f90->sourcefile~mod_phys_lmdz_para.f90 sourcefile~infotrac_phy.f90->sourcefile~lmdz_cppkeys_wrapper.f90 sourcefile~infotrac_phy.f90->sourcefile~ioipsl_getin_p_mod.f90 sourcefile~iniprint_mod_h.f90 iniprint_mod_h.f90 sourcefile~infotrac_phy.f90->sourcefile~iniprint_mod_h.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~mod_phys_lmdz_mpi_data.f90->sourcefile~lmdz_cppkeys_wrapper.f90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~print_control_mod.f90 sourcefile~lmdz_mpi.f90 lmdz_mpi.F90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~lmdz_mpi.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~readtracfiles_mod.f90->sourcefile~ioipsl_getin_p_mod.f90 sourcefile~readtracfiles_mod.f90->sourcefile~strings_mod.f90 sourcefile~lmdz_reprobus_wrappers.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~dimphy.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~print_control_mod.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_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90->sourcefile~lmdz_mpi.f90

Files dependent on this one

sourcefile~~calcul_divers_mod_h.f90~~AfferentGraph sourcefile~calcul_divers_mod_h.f90 calcul_divers_mod_h.f90 sourcefile~physiq_mod.f90 physiq_mod.F90 sourcefile~physiq_mod.f90->sourcefile~calcul_divers_mod_h.f90 sourcefile~physiq_mod.f90~2 physiq_mod.F90 sourcefile~physiq_mod.f90~2->sourcefile~calcul_divers_mod_h.f90 sourcefile~old_lmdz1d.f90 old_lmdz1d.f90 sourcefile~old_lmdz1d.f90->sourcefile~physiq_mod.f90 sourcefile~scm.f90 scm.f90 sourcefile~scm.f90->sourcefile~physiq_mod.f90 sourcefile~callphysiq_mod.f90 callphysiq_mod.f90 sourcefile~callphysiq_mod.f90->sourcefile~physiq_mod.f90 sourcefile~callphysiq_mod.f90~2 callphysiq_mod.f90 sourcefile~callphysiq_mod.f90~2->sourcefile~physiq_mod.f90 sourcefile~calfis.f90 calfis.f90 sourcefile~calfis.f90->sourcefile~callphysiq_mod.f90

Contents


Source Code

MODULE calcul_divers_mod_h
  IMPLICIT NONE; PRIVATE
  PUBLIC calcul_divers

CONTAINS

  SUBROUTINE calcul_divers(itap, itapm1, un_jour)
    ! IM, 26.05.2023
    ! Ne pas modifier les IFs ci-dessous impliquant itapm1,
    ! autrement les resultats seront faux !!

    ! On utilise MOD(itap - itapm1,NINT(mth_len*un_jour/phys_tstep)).EQ.1)
    ! pour detecter le debut de chaque mois lorsque l'on tourne par an.

    ! itap : nombre de pas de temps de la physique
    ! itapm1 : somme du nombre de pas de temps du/des mois precedent/s.
    ! (itap - itapm1) : nombre de pas de temps du mois courant
    USE dimphy, ONLY: klon
    USE phys_state_var_mod, ONLY: phys_tstep, ndayrain_mth, nday_rain, total_rain, rain_fall, snow_fall
    USE phys_local_var_mod, ONLY: t2m_min_mon, t2m_max_mon, zt2m_min_mon, zt2m_max_mon, zt2m
    USE phys_cal_mod, ONLY: mth_len

    IMPLICIT NONE

    INTEGER, INTENT(IN) :: itap
    INTEGER, INTENT(INOUT) :: itapm1
    REAL, INTENT(IN) :: un_jour

    INTEGER :: i

    ! Initialisations itapm1 du premier mois
    IF(itap==1) THEN
      itapm1 = 0
      !        PRINT*,'initialisation itap=1 itapm1 ',itapm1
    ENDIF

    ! Initialisation debut de mois
    IF(itap==itapm1 + 1) THEN
      ndayrain_mth(:) = 0.
      !        PRINT*,'Initialisation ndayrain_mth ',itap
    ENDIF

    ! Initialisation debut de chaque jour
    IF(MOD(itap, NINT(un_jour / phys_tstep))==1) THEN
      nday_rain(:) = 0.
      !       PRINT*,'initialisation mois suivants day_rain itap',itap
    ENDIF

    ! Calcul a chaque pas de temps de la physique
    DO i = 1, klon
      total_rain(i) = rain_fall(i) + snow_fall(i)
      IF(total_rain(i)>0.) nday_rain(i) = 1.
    ENDDO

    ! Cumul en fin de journee
    IF(MOD(itap, NINT(un_jour / phys_tstep))==0) THEN
      DO i = 1, klon
        ndayrain_mth(i) = ndayrain_mth(i) + nday_rain(i)
      ENDDO
    ENDIF

    ! Initialisation fin de mois
    ! Ne pas changer le IF ci-dessous, car le compteur itapm1 est augmente
    ! apres, dans la boucle !!!
    ! IM, 260523
    IF(MOD(itap - itapm1, NINT(mth_len * un_jour / phys_tstep))==0) THEN
      itapm1 = itapm1 + NINT(mth_len * un_jour / phys_tstep)
      !       PRINT*,'fmois i i1 mjt',itap,itapm1,mth_len,un_jour,phys_tstep
    ENDIF

    ! calcul temperatures minimale et maximale moyennees sur le mois

    !initialisation debut de mois pour les fichiers mensuels annuels
    IF(itap==itapm1 + 1) THEN
      t2m_min_mon = 0.
      t2m_max_mon = 0.
    ENDIF

    !initialisation debut de journee pour les fichiers mensuels annuels
    IF(MOD(itap, NINT(un_jour / phys_tstep))==1) THEN
      zt2m_min_mon = zt2m
      zt2m_max_mon = zt2m
    ENDIF

    !calcul sur tous les pas de temps pour les fichiers mensuels annuels
    DO i = 1, klon
      zt2m_min_mon(i) = MIN(zt2m(i), zt2m_min_mon(i))
      zt2m_max_mon(i) = MAX(zt2m(i), zt2m_max_mon(i))
    ENDDO

    !fin journee
    IF(MOD(itap, NINT(un_jour / phys_tstep))==0) THEN
      t2m_min_mon = t2m_min_mon + zt2m_min_mon
      t2m_max_mon = t2m_max_mon + zt2m_max_mon
    ENDIF

    !fin mois
    IF(itap==itapm1) THEN
      t2m_min_mon = t2m_min_mon / mth_len
      t2m_max_mon = t2m_max_mon / mth_len
    ENDIF

  END SUBROUTINE calcul_divers

END MODULE calcul_divers_mod_h