source: LMDZ6/trunk/libf/phylmd/undefSTD.F90 @ 5171

Last change on this file since 5171 was 5084, checked in by Laurent Fairhead, 12 months ago

Reverting to r4065. Updating fortran standard broke too much stuff. Will do it by smaller chunks
AB, LF

  • 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: 3.2 KB
Line 
1
2! $Id: undefSTD.F90 5084 2024-07-19 16:40:44Z evignon $
3
4SUBROUTINE undefstd(itap, read_climoz)
5  USE netcdf
6  USE dimphy
7#ifdef CPP_IOIPSL
8  USE phys_state_var_mod
9#endif
10  USE wxios, ONLY: missing_val_xios => missing_val, using_xios
11
12  IMPLICIT NONE
13  include "clesphys.h"
14  REAL :: missing_val
15
16  ! ====================================================================
17
18  ! I. Musat : 09.2004
19
20  ! Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef))
21  ! ou la variable tlevSTD est bien definie (.NE.missing_val),
22  ! et
23  ! * de la somme de tlevSTD => tsumSTD
24
25  ! nout=1 !var. journaliere "day" moyenne sur tous les pas de temps
26  ! ! de la physique
27  ! nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps
28  ! ! de la physique
29  ! nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf
30
31
32  ! NB: mettre "inst(X)" dans le write_hist*NMC.h !
33  ! ====================================================================
34
35  ! ymINCLUDE "dimphy.h"
36  ! variables Input
37
38  ! INTEGER nlevSTD, klevSTD, itap
39  ! PARAMETER(klevSTD=17)
40  INTEGER itap
41
42  ! variables locales
43  ! INTEGER i, k, nout, n
44  ! PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
45  INTEGER i, k, n
46  ! REAL freq_calNMC(nout)
47  INTEGER read_climoz
48
49  ! variables Output
50  ! REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)
51  ! LOGICAL oknondef(klon,klevSTD,nout)
52  ! REAL tnondef(klon,klevSTD,nout)
53
54! REAL missing_val
55
56! missing_val = nf90_fill_real
57  IF (using_xios) THEN
58    missing_val=missing_val_xios
59  ELSE
60      missing_val=missing_val_nf90
61  ENDIF
62
63  DO n = 1, nout
64
65
66    ! calcul variables tous les freq_calNMC(n)/phys_tstep pas de temps
67    ! de la physique
68
69    IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
70      DO k = 1, nlevstd
71        DO i = 1, klon
72          IF (tlevstd(i,k)==missing_val) THEN
73            ! IF(oknondef(i,k,n)) THEN
74            tnondef(i, k, n) = tnondef(i, k, n) + 1.
75            ! ENDIF !oknondef(i,k)
76
77          ELSE IF (tlevstd(i,k)/=missing_val) THEN
78            tsumstd(i, k, n) = tsumstd(i, k, n) + tlevstd(i, k)
79            usumstd(i, k, n) = usumstd(i, k, n) + ulevstd(i, k)
80            vsumstd(i, k, n) = vsumstd(i, k, n) + vlevstd(i, k)
81            wsumstd(i, k, n) = wsumstd(i, k, n) + wlevstd(i, k)
82            phisumstd(i, k, n) = phisumstd(i, k, n) + philevstd(i, k)
83            qsumstd(i, k, n) = qsumstd(i, k, n) + qlevstd(i, k)
84            rhsumstd(i, k, n) = rhsumstd(i, k, n) + rhlevstd(i, k)
85            uvsumstd(i, k, n) = uvsumstd(i, k, n) + uvstd(i, k)
86            vqsumstd(i, k, n) = vqsumstd(i, k, n) + vqstd(i, k)
87            vtsumstd(i, k, n) = vtsumstd(i, k, n) + vtstd(i, k)
88            wqsumstd(i, k, n) = wqsumstd(i, k, n) + wqstd(i, k)
89            vphisumstd(i, k, n) = vphisumstd(i, k, n) + vphistd(i, k)
90            wtsumstd(i, k, n) = wtsumstd(i, k, n) + wtstd(i, k)
91            u2sumstd(i, k, n) = u2sumstd(i, k, n) + u2std(i, k)
92            v2sumstd(i, k, n) = v2sumstd(i, k, n) + v2std(i, k)
93            t2sumstd(i, k, n) = t2sumstd(i, k, n) + t2std(i, k)
94            o3sumstd(i, k, n) = o3sumstd(i, k, n) + o3std(i, k)
95            IF (read_climoz==2) o3daysumstd(i, k, n) = o3daysumstd(i, k, n) + &
96              o3daystd(i, k)
97
98          END IF
99        END DO !i
100      END DO !k
101
102    END IF !MOD(itap,NINT(freq_calNMC(n)/phys_tstep)).EQ.0
103
104  END DO !n
105
106  RETURN
107END SUBROUTINE undefstd
Note: See TracBrowser for help on using the repository browser.