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

Last change on this file since 5132 was 5103, checked in by abarral, 11 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
RevLine 
[5099]1
[3435]2! $Id: calcul_divers.h 5103 2024-07-23 13:29:36Z abarral $
[5099]3
[4556]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
[5099]7
[4556]8! Ne pas modifier les IFs ci-dessous impliquant itapm1,
9! autrement les resultats seront faux !!
[5099]10
[4556]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.
[5099]13
[4556]14! IM, 26.05.2023
[5099]15
16
[4556]17! Initialisations itapm1 du premier mois
[1912]18      IF(itap.EQ.1) THEN
19         itapm1=0
[5103]20!        PRINT*,'initialisation itap=1 itapm1 ',itapm1
[1454]21      ENDIF
22
[1912]23! Initialisation debut de mois
24      IF(itap.EQ.itapm1+1) THEN
[4556]25         ndayrain_mth(:)=0.
[5103]26!        PRINT*,'Initialisation ndayrain_mth ',itap
[4556]27      ENDIF
[5099]28
[4556]29! Initialisation debut de chaque jour
30      IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN
[1912]31        nday_rain(:)=0.
[5103]32!       PRINT*,'initialisation mois suivants day_rain itap',itap
[1912]33      ENDIF
[5099]34
[4556]35! Calcul a chaque pas de temps de la physique
[1454]36         DO i = 1, klon
37            total_rain(i)=rain_fall(i)+snow_fall(i) 
[4556]38            IF(total_rain(i).GT.0.) nday_rain(i)=1.
[1454]39         ENDDO
[5099]40
[4556]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
[1454]46      ENDIF
[5099]47
[1912]48! Initialisation fin de mois
[4556]49! Ne pas changer le IF ci-dessous, car le compteur itapm1 est augmente
50! apres, dans la boucle !!!
51! IM, 260523
[3435]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)
[5103]54!       PRINT*,'fmois i i1 mjt',itap,itapm1,mth_len,un_jour,phys_tstep
[1912]55      ENDIF
[5099]56
[2103]57! calcul temperatures minimale et maximale moyennees sur le mois
[5099]58
[4556]59!initialisation debut de mois pour les fichiers mensuels annuels
[2103]60  IF(itap.EQ.itapm1+1) THEN
61     t2m_min_mon=0.
62     t2m_max_mon=0.
63  ENDIF
[5099]64
[4556]65!initialisation debut de journee pour les fichiers mensuels annuels
[3435]66  IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN
[2103]67     zt2m_min_mon=zt2m
68     zt2m_max_mon=zt2m
69  ENDIF
[5099]70
[4556]71!calcul sur tous les pas de temps pour les fichiers mensuels annuels
[2103]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
[5099]76
[4556]77!fin journee
[3435]78  IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN
[2103]79   t2m_min_mon=t2m_min_mon+zt2m_min_mon
80   t2m_max_mon=t2m_max_mon+zt2m_max_mon
81  ENDIF
[5099]82
[2103]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.