source: LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_undefstd.f90 @ 5225

Last change on this file since 5225 was 5160, checked in by abarral, 3 months ago

Put .h into modules

  • 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.5 KB
Line 
1MODULE lmdz_undefstd
2  IMPLICIT NONE; PRIVATE
3  PUBLIC undefstd
4CONTAINS
5
6  SUBROUTINE undefstd(itap, read_climoz)
7    USE netcdf, ONLY: nf90_fill_real
8    USE dimphy
9    USE phys_state_var_mod
10    USE lmdz_wxios, ONLY: missing_val_xios => missing_val, using_xios
11    USE lmdz_clesphys
12
13    IMPLICIT NONE
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  END SUBROUTINE undefstd
107END MODULE lmdz_undefstd
Note: See TracBrowser for help on using the repository browser.