source: LMDZ4/trunk/libf/phylmd/undefSTD.F @ 1274

Last change on this file since 1274 was 1233, checked in by musat, 15 years ago

Pour la coherence avec netcdf : on met les memes _Fillvalue pour les variables a un niveau de pression
IM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1!
2! $Header$
3!
4      SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD,
5     $           dtime,ecrit_hf,
6     $           oknondef,tnondef,tsumSTD)
7      USE netcdf
8      USE dimphy
9      IMPLICIT none
10c
11c====================================================================
12c
13c I. Musat : 09.2004
14c
15c Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef))
16c          ou la variable tlevSTD est bien definie (.NE.missing_val),
17c et
18c        * de la somme de tlevSTD => tsumSTD
19c
20c nout=1 !var. journaliere "day" moyenne sur tous les pas de temps
21c        ! de la physique
22c nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps
23c        ! de la physique
24c nout=3 !var. mensuelle "NMC" moyennee toutes les 6heures
25c
26c
27c NB: mettre "inst(X)" dans le write_histXXX.h !
28c====================================================================
29c
30cym#include "dimensions.h"
31cym      integer jjmp1
32cym      parameter (jjmp1=jjm+1-1/jjm)
33cym#include "dimphy.h"
34c variables Input
35      INTEGER nlevSTD, klevSTD, itap
36      PARAMETER(klevSTD=17)
37      REAL dtime, ecrit_hf
38c
39c variables locales
40      INTEGER i, k, nout
41      PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
42c
43c variables Output
44      REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)
45      LOGICAL oknondef(klon,klevSTD,nout)
46      REAL tnondef(klon,klevSTD,nout)
47c
48      REAL missing_val
49c
50      missing_val=nf90_fill_real
51c
52c calcul variables tous les pas de temps de la physique
53c
54      DO k=1, nlevSTD
55       DO i=1, klon
56        IF(tlevSTD(i,k).EQ.missing_val) THEN
57         IF(oknondef(i,k,1)) THEN         
58          tnondef(i,k,1)=tnondef(i,k,1)+1.
59         ENDIF !oknondef(i,k)
60c
61         IF(oknondef(i,k,2)) THEN         
62          tnondef(i,k,2)=tnondef(i,k,2)+1.
63         ENDIF !oknondef(i,k)
64c
65        ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
66         tsumSTD(i,k,1)=tsumSTD(i,k,1)+tlevSTD(i,k)
67         tsumSTD(i,k,2)=tsumSTD(i,k,2)+tlevSTD(i,k)
68        ENDIF
69       ENDDO !i
70      ENDDO !k
71c
72c calcul variables toutes les 6h
73c
74      IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN
75c
76       DO k=1, nlevSTD
77        DO i=1, klon
78         IF(tlevSTD(i,k).EQ.missing_val) THEN
79          IF(oknondef(i,k,3)) THEN         
80           tnondef(i,k,3)=tnondef(i,k,3)+1.
81          ENDIF !oknondef(i,k)
82c
83         ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
84         tsumSTD(i,k,3)=tsumSTD(i,k,3)+tlevSTD(i,k)
85         ENDIF
86        ENDDO !i
87       ENDDO !k
88
89      ENDIF !MOD(itap,NINT(ecrit_hf/dtime)).EQ.0
90c
91      RETURN
92      END 
Note: See TracBrowser for help on using the repository browser.