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
RevLine 
[776]1!
2! $Header$
3!
[644]4      SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD,
[684]5     $           dtime,ecrit_hf,
[644]6     $           oknondef,tnondef,tsumSTD)
[1233]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))
[1233]16c          ou la variable tlevSTD est bien definie (.NE.missing_val),
[644]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
35      INTEGER nlevSTD, klevSTD, itap
36      PARAMETER(klevSTD=17)
[684]37      REAL dtime, ecrit_hf
[644]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
[1233]48      REAL missing_val
49c
50      missing_val=nf90_fill_real
51c
[644]52c calcul variables tous les pas de temps de la physique
53c
54      DO k=1, nlevSTD
55       DO i=1, klon
[1233]56        IF(tlevSTD(i,k).EQ.missing_val) THEN
[644]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
[1233]65        ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
[644]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
[684]74      IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN
[644]75c
76       DO k=1, nlevSTD
77        DO i=1, klon
[1233]78         IF(tlevSTD(i,k).EQ.missing_val) THEN
[644]79          IF(oknondef(i,k,3)) THEN         
80           tnondef(i,k,3)=tnondef(i,k,3)+1.
81          ENDIF !oknondef(i,k)
82c
[1233]83         ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
[644]84         tsumSTD(i,k,3)=tsumSTD(i,k,3)+tlevSTD(i,k)
85         ENDIF
86        ENDDO !i
87       ENDDO !k
88
[684]89      ENDIF !MOD(itap,NINT(ecrit_hf/dtime)).EQ.0
[644]90c
91      RETURN
92      END 
Note: See TracBrowser for help on using the repository browser.