Changeset 4556


Ignore:
Timestamp:
May 31, 2023, 5:27:03 PM (19 months ago)
Author:
musat
Message:

Correction diagnostic ndayrain
Ionela Musat

Location:
LMDZ6/trunk/libf/phylmd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/calcul_divers.h

    r3435 r4556  
    22! $Id$
    33!
     4! itap : nombre de pas de temps de la physique
     5! itapm1 : somme du nombre de pas de temps du/des mois precedent/s.
     6! (itap - itapm1) : nombre de pas de temps du mois courant
    47!
    5 ! Initialisations diverses au tout debut
     8! Ne pas modifier les IFs ci-dessous impliquant itapm1,
     9! autrement les resultats seront faux !!
     10!
     11! Ici on utilise MOD(itap - itapm1,NINT(mth_len*un_jour/phys_tstep)).EQ.1)
     12! pour detecter le debut de chaque mois lorsque  l on tourne par an.
     13!
     14! IM, 26.05.2023
     15!
     16!
     17! Initialisations itapm1 du premier mois
    618      IF(itap.EQ.1) THEN
    719         itapm1=0
     20!        print*,'initialisation itap=1 itapm1 ',itapm1
    821      ENDIF
    922
     23!
    1024! Initialisation debut de mois
    1125      IF(itap.EQ.itapm1+1) THEN
     26         ndayrain_mth(:)=0.
     27!        print*,'Initialisation ndayrain_mth ',itap
     28      ENDIF
     29!
     30! Initialisation debut de chaque jour
     31      IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN
    1232        nday_rain(:)=0.
    1333!       print*,'initialisation mois suivants day_rain itap',itap
    1434      ENDIF
    15 
    16 ! Calcul fin de journee : total_rain, nday_rain
    17       IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN
    18 !        print*,'calcul nday_rain itap ',itap
     35!
     36! Calcul a chaque pas de temps de la physique
    1937         DO i = 1, klon
    2038            total_rain(i)=rain_fall(i)+snow_fall(i) 
    21             IF(total_rain(i).GT.0.) nday_rain(i)=nday_rain(i)+1.
     39            IF(total_rain(i).GT.0.) nday_rain(i)=1.
     40         ENDDO
     41!
     42! Cumul en fin de journee
     43      IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN
     44         DO i = 1, klon
     45            ndayrain_mth(i)=ndayrain_mth(i)+nday_rain(i)
    2246         ENDDO
    2347      ENDIF
    24 
     48!
    2549! Initialisation fin de mois
     50! Ne pas changer le IF ci-dessous, car le compteur itapm1 est augmente
     51! apres, dans la boucle !!!
     52! IM, 260523
    2653      IF(MOD(itap-itapm1,NINT(mth_len*un_jour/phys_tstep)).EQ.0) THEN
    2754        itapm1=itapm1+NINT(mth_len*un_jour/phys_tstep)
    28 !       print*,'initialisation itapm1 ',itapm1
     55!       print*,'fmois i i1 mjt',itap,itapm1,mth_len,un_jour,phys_tstep
    2956      ENDIF
    3057!
    3158! calcul temperatures minimale et maximale moyennees sur le mois
    3259!
    33 !initialisation debut de mois ou de journee pour les fichiers mensuels
     60!initialisation debut de mois pour les fichiers mensuels annuels
    3461  IF(itap.EQ.itapm1+1) THEN
    3562     t2m_min_mon=0.
    3663     t2m_max_mon=0.
    3764  ENDIF
     65!
     66!initialisation debut de journee pour les fichiers mensuels annuels
    3867  IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN
    3968     zt2m_min_mon=zt2m
    4069     zt2m_max_mon=zt2m
    4170  ENDIF
    42 !calcul a chaque pas de temps pour les fichiers mensuels
     71!
     72!calcul sur tous les pas de temps pour les fichiers mensuels annuels
    4373     DO i = 1, klon
    4474        zt2m_min_mon(i)=MIN(zt2m(i),zt2m_min_mon(i))
    4575        zt2m_max_mon(i)=MAX(zt2m(i),zt2m_max_mon(i))
    4676     ENDDO
    47 !fin de journee
     77!
     78!fin journee
    4879  IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN
    4980   t2m_min_mon=t2m_min_mon+zt2m_min_mon
    5081   t2m_max_mon=t2m_max_mon+zt2m_max_mon
    5182  ENDIF
     83!
    5284!fin mois
    5385  IF(itap==itapm1) THEN
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r4530 r4556  
    247247    USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, bs_fall,&
    248248         qsol, z0m, z0h, fevap, agesno, &
    249          nday_rain, rain_con, snow_con, &
     249         nday_rain, ndayrain_mth, rain_con, snow_con, &
    250250         topsw, toplw, toplw0, swup, swdn, solswfdiff, &
    251251         topsw0, swupc0, swdnc0, swup0, swdn0, SWup200, SWup200clr, &
     
    907907       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
    908908       CALL histwrite_phy(o_rain_fall, rain_fall)
    909        CALL histwrite_phy(o_ndayrain, nday_rain)
     909       CALL histwrite_phy(o_ndayrain, ndayrain_mth)
    910910
    911911       ! epmax_cape:
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r4523 r4556  
    313313      REAL,ALLOCATABLE,SAVE :: total_rain(:), nday_rain(:) 
    314314!$OMP THREADPRIVATE(total_rain,nday_rain)
     315      REAL,ALLOCATABLE,SAVE :: ndayrain_mth(:)
     316!$OMP THREADPRIVATE(ndayrain_mth)
    315317      REAL,ALLOCATABLE,SAVE :: paire_ter(:)
    316318!$OMP THREADPRIVATE(paire_ter)
     
    656658      ALLOCATE(pfrac_1nucl(klon,klev))
    657659      ALLOCATE(total_rain(klon), nday_rain(klon))
     660      ALLOCATE(ndayrain_mth(klon))
    658661      ALLOCATE(paire_ter(klon))
    659662      ALLOCATE(albsol1(klon), albsol2(klon))
     
    836839      DEALLOCATE(pfrac_1nucl)
    837840      DEALLOCATE(total_rain, nday_rain)
     841      DEALLOCATE(ndayrain_mth)
    838842      DEALLOCATE(paire_ter)
    839843      DEALLOCATE(albsol1, albsol2)
Note: See TracChangeset for help on using the changeset viewer.