source: dynamico_lmdz/aquaplanet/LMDZ5/libf/phylmd/undefSTD.F90 @ 4080

Last change on this file since 4080 was 3990, checked in by millour, 8 years ago

An updated LMDZ5 (based on LMDZ rev 2786) to play with.
EM

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