source: LMDZ4/trunk/libf/phylmd/moy_undefSTD.F @ 766

Last change on this file since 766 was 766, checked in by Laurent Fairhead, 17 years ago

Merge entre la version V3_conv et le HEAD
YM, JG, LF

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.2 KB
Line 
1      SUBROUTINE moy_undefSTD(nlevSTD,itap,
2     $           dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
3     $           tnondef,tsumSTD)
4      USE dimphy
5      IMPLICIT none
6c
7c====================================================================
8c
9c I. Musat : 09.2004
10c
11c Moyenne - a des frequences differentes - des valeurs bien definies
12c         (.NE.1.E+20) des variables interpolees a un niveau de
13c         pression.
14c 1) les variables de type "day" (nout=1) ou "mth" (nout=2) sont sommees
15c    tous les pas de temps de la physique
16c
17c 2) les variables de type "NMC" (nout=3) sont calculees a partir
18c    des valeurs instantannees toutes les 6 heures
19c
20c
21c NB: mettre "inst(X)" dans le write_histXXX.h !
22c====================================================================
23cym#include "dimensions.h"
24cym      integer jjmp1
25cym      parameter (jjmp1=jjm+1-1/jjm)
26cym#include "dimphy.h"
27c
28c variables Input
29      INTEGER nlevSTD, klevSTD, itap
30      PARAMETER(klevSTD=17)
31      REAL dtime, ecrit_day, ecrit_mth, ecrit_hf2mth
32c
33c variables locales
34      INTEGER i, k, nout
35      PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC
36c
37c variables Output
38      REAL tnondef(klon,klevSTD,nout)
39      REAL tsumSTD(klon,klevSTD,nout)
40c
41c calcul 1 fois par jour
42c
43      IF(MOD(itap,NINT(ecrit_day/dtime)).EQ.0) THEN
44       DO k=1, nlevSTD
45        DO i=1, klon
46         IF(tnondef(i,k,1).NE.(ecrit_day/dtime)) THEN
47          tsumSTD(i,k,1)=tsumSTD(i,k,1)/
48     $    (ecrit_day/dtime-tnondef(i,k,1))
49         ELSE
50          tsumSTD(i,k,1)=1.E+20
51         ENDIF !tnondef
52        ENDDO !i
53       ENDDO !k
54      ENDIF !MOD(itap,ecrit_day).EQ.0
55c
56c calcul 1 fois par mois
57c
58      IF(MOD(itap,NINT(ecrit_mth/dtime)).EQ.0) THEN
59       DO k=1, nlevSTD
60        DO i=1, klon
61         IF(tnondef(i,k,2).NE.ecrit_mth/dtime) THEN
62          tsumSTD(i,k,2)=tsumSTD(i,k,2)/
63     $    (ecrit_mth/dtime-tnondef(i,k,2))
64         ELSE
65          tsumSTD(i,k,2)=1.E+20
66         ENDIF !tnondef
67c
68         IF(tnondef(i,k,3).NE.NINT(ecrit_hf2mth)) THEN
69          tsumSTD(i,k,3)=tsumSTD(i,k,3)/
70     $    (ecrit_hf2mth-tnondef(i,k,3))
71         ELSE
72          tsumSTD(i,k,3)=1.E+20
73         ENDIF !tnondef
74c
75        ENDDO !i
76       ENDDO !k
77      ENDIF !MOD
78c
79      RETURN
80      END 
Note: See TracBrowser for help on using the repository browser.