source: LMDZ6/branches/LMDZ_cdrag_LSCE/libf/phylmd/calcul_divers.h @ 5098

Last change on this file since 5098 was 4669, checked in by Laurent Fairhead, 15 months ago

Merged with trunk revision 4586 corresponding to june 2023 testing

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1!
2! $Id: calcul_divers.h 4669 2023-09-04 08:17:16Z abarral $
3!
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
7!
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
18      IF(itap.EQ.1) THEN
19         itapm1=0
20!        print*,'initialisation itap=1 itapm1 ',itapm1
21      ENDIF
22
23!
24! Initialisation debut de mois
25      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
32        nday_rain(:)=0.
33!       print*,'initialisation mois suivants day_rain itap',itap
34      ENDIF
35!
36! Calcul a chaque pas de temps de la physique
37         DO i = 1, klon
38            total_rain(i)=rain_fall(i)+snow_fall(i) 
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)
46         ENDDO
47      ENDIF
48!
49! 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
53      IF(MOD(itap-itapm1,NINT(mth_len*un_jour/phys_tstep)).EQ.0) THEN
54        itapm1=itapm1+NINT(mth_len*un_jour/phys_tstep)
55!       print*,'fmois i i1 mjt',itap,itapm1,mth_len,un_jour,phys_tstep
56      ENDIF
57!
58! calcul temperatures minimale et maximale moyennees sur le mois
59!
60!initialisation debut de mois pour les fichiers mensuels annuels
61  IF(itap.EQ.itapm1+1) THEN
62     t2m_min_mon=0.
63     t2m_max_mon=0.
64  ENDIF
65!
66!initialisation debut de journee pour les fichiers mensuels annuels
67  IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN
68     zt2m_min_mon=zt2m
69     zt2m_max_mon=zt2m
70  ENDIF
71!
72!calcul sur tous les pas de temps pour les fichiers mensuels annuels
73     DO i = 1, klon
74        zt2m_min_mon(i)=MIN(zt2m(i),zt2m_min_mon(i))
75        zt2m_max_mon(i)=MAX(zt2m(i),zt2m_max_mon(i))
76     ENDDO
77!
78!fin journee
79  IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN
80   t2m_min_mon=t2m_min_mon+zt2m_min_mon
81   t2m_max_mon=t2m_max_mon+zt2m_max_mon
82  ENDIF
83!
84!fin mois
85  IF(itap==itapm1) THEN
86   t2m_min_mon=t2m_min_mon/mth_len
87   t2m_max_mon=t2m_max_mon/mth_len
88  ENDIF
89!
Note: See TracBrowser for help on using the repository browser.