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