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

Last change on this file since 1349 was 1279, checked in by Laurent Fairhead, 15 years ago

Merged LMDZ4-dev branch changes r1241:1278 into the trunk
Running trunk and LMDZ4-dev in LMDZOR configuration on local
machine (sequential) and SX8 (4-proc) yields identical results
(restart and restartphy are identical binarily)
Log history from r1241 to r1278 is available by switching to
source:LMDZ4/branches/LMDZ4-dev-20091210

  • 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.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
30cym#include "dimensions.h"
31cym      integer jjmp1
32cym      parameter (jjmp1=jjm+1-1/jjm)
33cym#include "dimphy.h"
34c variables Input
35c
36      INTEGER nlevSTD, klevSTD, itap
37      PARAMETER(klevSTD=17)
38      REAL dtime, ecrit_hf
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
49      REAL missing_val
50c
51      missing_val=nf90_fill_real
52c
53c calcul variables tous les pas de temps de la physique
54c
55      DO k=1, nlevSTD
56       DO i=1, klon
57        IF(tlevSTD(i,k).EQ.missing_val) THEN
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
66        ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
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
75      IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN
76c
77       DO k=1, nlevSTD
78        DO i=1, klon
79         IF(tlevSTD(i,k).EQ.missing_val) THEN
80          IF(oknondef(i,k,3)) THEN         
81           tnondef(i,k,3)=tnondef(i,k,3)+1.
82          ENDIF !oknondef(i,k)
83c
84         ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
85         tsumSTD(i,k,3)=tsumSTD(i,k,3)+tlevSTD(i,k)
86         ENDIF
87        ENDDO !i
88       ENDDO !k
89
90      ENDIF !MOD(itap,NINT(ecrit_hf/dtime)).EQ.0
91c
92      RETURN
93      END 
Note: See TracBrowser for help on using the repository browser.