1 |
SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD, |
2 |
$ ecrit_hf, |
3 |
$ oknondef,tnondef,tsumSTD) |
4 |
use dimens_m |
5 |
use dimphy |
6 |
IMPLICIT none |
7 |
c |
8 |
c==================================================================== |
9 |
c |
10 |
c I. Musat : 09.2004 |
11 |
c |
12 |
c Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef)) |
13 |
c ou la variable tlevSTD est bien definie (.NE.1.E+20), |
14 |
c et |
15 |
c * de la somme de tlevSTD => tsumSTD |
16 |
c |
17 |
c nout=1 !var. journaliere "day" moyenne sur tous les pas de temps |
18 |
c ! de la physique |
19 |
c nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps |
20 |
c ! de la physique |
21 |
c nout=3 !var. mensuelle "NMC" moyennee toutes les 6heures |
22 |
c |
23 |
c |
24 |
c NB: mettre "inst(X)" dans le write_histXXX.h ! |
25 |
c==================================================================== |
26 |
c |
27 |
integer jjmp1 |
28 |
parameter (jjmp1=jjm+1-1/jjm) |
29 |
c variables Input |
30 |
INTEGER nlevSTD, klevSTD |
31 |
integer, intent(in):: itap |
32 |
PARAMETER(klevSTD=17) |
33 |
INTEGER, intent(in):: ecrit_hf |
34 |
c |
35 |
c variables locales |
36 |
INTEGER i, k, nout |
37 |
PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC |
38 |
c |
39 |
c variables Output |
40 |
REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout) |
41 |
LOGICAL oknondef(klon,klevSTD,nout) |
42 |
REAL tnondef(klon,klevSTD,nout) |
43 |
c |
44 |
c calcul variables tous les pas de temps de la physique |
45 |
c |
46 |
DO k=1, nlevSTD |
47 |
DO i=1, klon |
48 |
IF(tlevSTD(i,k).EQ.1E+20) THEN |
49 |
IF(oknondef(i,k,1)) THEN |
50 |
tnondef(i,k,1)=tnondef(i,k,1)+1. |
51 |
ENDIF !oknondef(i,k) |
52 |
c |
53 |
IF(oknondef(i,k,2)) THEN |
54 |
tnondef(i,k,2)=tnondef(i,k,2)+1. |
55 |
ENDIF !oknondef(i,k) |
56 |
c |
57 |
ELSE IF(tlevSTD(i,k).NE.1E+20) THEN |
58 |
tsumSTD(i,k,1)=tsumSTD(i,k,1)+tlevSTD(i,k) |
59 |
tsumSTD(i,k,2)=tsumSTD(i,k,2)+tlevSTD(i,k) |
60 |
ENDIF |
61 |
ENDDO !i |
62 |
ENDDO !k |
63 |
c |
64 |
c calcul variables toutes les 6h |
65 |
c |
66 |
IF(MOD(itap,ecrit_hf).EQ.0) THEN |
67 |
c |
68 |
DO k=1, nlevSTD |
69 |
DO i=1, klon |
70 |
IF(tlevSTD(i,k).EQ.1E+20) THEN |
71 |
IF(oknondef(i,k,3)) THEN |
72 |
tnondef(i,k,3)=tnondef(i,k,3)+1. |
73 |
ENDIF !oknondef(i,k) |
74 |
c |
75 |
ELSE IF(tlevSTD(i,k).NE.1E+20) THEN |
76 |
tsumSTD(i,k,3)=tsumSTD(i,k,3)+tlevSTD(i,k) |
77 |
ENDIF |
78 |
ENDDO !i |
79 |
ENDDO !k |
80 |
|
81 |
ENDIF !MOD(itap,ecrit_hf).EQ.0 |
82 |
c |
83 |
RETURN |
84 |
END |