Changeset 4557 for LMDZ6


Ignore:
Timestamp:
Jun 1, 2023, 4:44:02 PM (18 months ago)
Author:
musat
Message:

Correction diagnostic ndayrain branche IPSL-CM6A-MR
Ionela Musat

Location:
LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd/calcul_divers.h

    r3435 r4557  
    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/branches/IPSL-CM6A-MR/libf/phylmd/phys_output_write_mod.F90

    r3842 r4557  
    225225    USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, &
    226226         qsol, z0m, z0h, fevap, agesno, &
    227          nday_rain, rain_con, snow_con, &
     227         nday_rain, ndayrain_mth, rain_con, snow_con, &
    228228         topsw, toplw, toplw0, swup, swdn, &
    229229         topsw0, swupc0, swdnc0, swup0, swdn0, SWup200, SWup200clr, &
     
    845845       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
    846846       CALL histwrite_phy(o_rain_fall, rain_fall)
    847        CALL histwrite_phy(o_ndayrain, nday_rain)
     847       CALL histwrite_phy(o_ndayrain, ndayrain_mth)
    848848
    849849       ! epmax_cape:
  • LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd/phys_state_var_mod.F90

    r3496 r4557  
    288288      REAL,ALLOCATABLE,SAVE :: total_rain(:), nday_rain(:) 
    289289!$OMP THREADPRIVATE(total_rain,nday_rain)
     290      REAL,ALLOCATABLE,SAVE :: ndayrain_mth(:)
     291!$OMP THREADPRIVATE(ndayrain_mth)
    290292      REAL,ALLOCATABLE,SAVE :: paire_ter(:)
    291293!$OMP THREADPRIVATE(paire_ter)
     
    568570      ALLOCATE(pfrac_1nucl(klon,klev))
    569571      ALLOCATE(total_rain(klon), nday_rain(klon))
     572      ALLOCATE(ndayrain_mth(klon))
    570573      ALLOCATE(paire_ter(klon))
    571574      ALLOCATE(albsol1(klon), albsol2(klon))
     
    719722      deallocate(pfrac_1nucl)
    720723      deallocate(total_rain, nday_rain)
     724      deallocate(ndayrain_mth)
    721725      deallocate(paire_ter)
    722726      deallocate(albsol1, albsol2)
Note: See TracChangeset for help on using the changeset viewer.