source: LMDZ6/branches/Amaury_dev/libf/phylmd/calcul_divers.h @ 5134

Last change on this file since 5134 was 5103, checked in by abarral, 4 months ago

Handle CPP_INLANDSIS in lmdz_cppkeys_wrapper.F90
Remove obsolete key wrgrads_thermcell, _ADV_HALO, _ADV_HALLO, isminmax
Remove redundant uses of CPPKEY_INCA (thanks acozic)
Remove obsolete misc/write_field.F90
Remove unused ioipsl_* wrappers
Remove calls to WriteField_u with wrong signature
Convert .F -> .[fF]90
(lint) uppercase fortran operators
[note: 1d and iso still broken - working on it]

  • 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 5103 2024-07-23 13:29:36Z 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! Initialisation debut de mois
24      IF(itap.EQ.itapm1+1) THEN
25         ndayrain_mth(:)=0.
26!        PRINT*,'Initialisation ndayrain_mth ',itap
27      ENDIF
28
29! Initialisation debut de chaque jour
30      IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN
31        nday_rain(:)=0.
32!       PRINT*,'initialisation mois suivants day_rain itap',itap
33      ENDIF
34
35! Calcul a chaque pas de temps de la physique
36         DO i = 1, klon
37            total_rain(i)=rain_fall(i)+snow_fall(i) 
38            IF(total_rain(i).GT.0.) nday_rain(i)=1.
39         ENDDO
40
41! Cumul en fin de journee
42      IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN
43         DO i = 1, klon
44            ndayrain_mth(i)=ndayrain_mth(i)+nday_rain(i)
45         ENDDO
46      ENDIF
47
48! Initialisation fin de mois
49! Ne pas changer le IF ci-dessous, car le compteur itapm1 est augmente
50! apres, dans la boucle !!!
51! IM, 260523
52      IF(MOD(itap-itapm1,NINT(mth_len*un_jour/phys_tstep)).EQ.0) THEN
53        itapm1=itapm1+NINT(mth_len*un_jour/phys_tstep)
54!       PRINT*,'fmois i i1 mjt',itap,itapm1,mth_len,un_jour,phys_tstep
55      ENDIF
56
57! calcul temperatures minimale et maximale moyennees sur le mois
58
59!initialisation debut de mois pour les fichiers mensuels annuels
60  IF(itap.EQ.itapm1+1) THEN
61     t2m_min_mon=0.
62     t2m_max_mon=0.
63  ENDIF
64
65!initialisation debut de journee pour les fichiers mensuels annuels
66  IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN
67     zt2m_min_mon=zt2m
68     zt2m_max_mon=zt2m
69  ENDIF
70
71!calcul sur tous les pas de temps pour les fichiers mensuels annuels
72     DO i = 1, klon
73        zt2m_min_mon(i)=MIN(zt2m(i),zt2m_min_mon(i))
74        zt2m_max_mon(i)=MAX(zt2m(i),zt2m_max_mon(i))
75     ENDDO
76
77!fin journee
78  IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN
79   t2m_min_mon=t2m_min_mon+zt2m_min_mon
80   t2m_max_mon=t2m_max_mon+zt2m_max_mon
81  ENDIF
82
83!fin mois
84  IF(itap==itapm1) THEN
85   t2m_min_mon=t2m_min_mon/mth_len
86   t2m_max_mon=t2m_max_mon/mth_len
87  ENDIF
Note: See TracBrowser for help on using the repository browser.