source: LMDZ4/branches/LMDZ4-dev/libf/phylmd/undefSTD.F @ 1271

Last change on this file since 1271 was 1234, 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
RevLine 
[776]1!
2! $Header$
3!
[644]4      SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD,
[684]5     $           dtime,ecrit_hf,
[644]6     $           oknondef,tnondef,tsumSTD)
[1234]7      USE netcdf
[766]8      USE dimphy
[644]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.1.E+20),
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
[766]30cym#include "dimensions.h"
31cym      integer jjmp1
32cym      parameter (jjmp1=jjm+1-1/jjm)
33cym#include "dimphy.h"
[644]34c variables Input
[1234]35c
[644]36      INTEGER nlevSTD, klevSTD, itap
37      PARAMETER(klevSTD=17)
[684]38      REAL dtime, ecrit_hf
[644]39c
40c variables locales
41      INTEGER i, k, nout
42      PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
43c
44c variables Output
45      REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)
46      LOGICAL oknondef(klon,klevSTD,nout)
47      REAL tnondef(klon,klevSTD,nout)
48c
[1234]49      REAL missing_val
50c
51      missing_val=nf90_fill_real
52c
[644]53c calcul variables tous les pas de temps de la physique
54c
55      DO k=1, nlevSTD
56       DO i=1, klon
[1234]57        IF(tlevSTD(i,k).EQ.missing_val) THEN
[644]58         IF(oknondef(i,k,1)) THEN         
59          tnondef(i,k,1)=tnondef(i,k,1)+1.
60         ENDIF !oknondef(i,k)
61c
62         IF(oknondef(i,k,2)) THEN         
63          tnondef(i,k,2)=tnondef(i,k,2)+1.
64         ENDIF !oknondef(i,k)
65c
[1234]66        ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
[644]67         tsumSTD(i,k,1)=tsumSTD(i,k,1)+tlevSTD(i,k)
68         tsumSTD(i,k,2)=tsumSTD(i,k,2)+tlevSTD(i,k)
69        ENDIF
70       ENDDO !i
71      ENDDO !k
72c
73c calcul variables toutes les 6h
74c
[684]75      IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN
[644]76c
77       DO k=1, nlevSTD
78        DO i=1, klon
[1234]79         IF(tlevSTD(i,k).EQ.missing_val) THEN
[644]80          IF(oknondef(i,k,3)) THEN         
81           tnondef(i,k,3)=tnondef(i,k,3)+1.
82          ENDIF !oknondef(i,k)
83c
[1234]84         ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
[644]85         tsumSTD(i,k,3)=tsumSTD(i,k,3)+tlevSTD(i,k)
86         ENDIF
87        ENDDO !i
88       ENDDO !k
89
[684]90      ENDIF !MOD(itap,NINT(ecrit_hf/dtime)).EQ.0
[644]91c
92      RETURN
93      END 
Note: See TracBrowser for help on using the repository browser.