source: LMDZ6/branches/contrails/libf/phylmd/moyglo_aire.f90 @ 5440

Last change on this file since 5440 was 5285, checked in by abarral, 8 weeks ago

As discussed internally, remove generic ONLY: ... for new _mod_h modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.3 KB
Line 
1
2! $Header$
3
4SUBROUTINE moyglo_pondaire(nhori, champ, aire, ok_msk, msk, moyglo)
5
6  USE yomcst_mod_h
7  USE dimphy
8  IMPLICIT NONE
9
10  ! ==================================================================
11  ! I. Musat, 07.2004
12
13  ! Calcul moyenne globale ponderee par l'aire totale, avec ou sans masque
14
15  ! moyenne = Somme_(champ* aire)/Somme_aire
16
17  ! ==================================================================
18
19  INTEGER i, nhori
20  REAL champ(klon), aire(klon), msk(klon)
21  LOGICAL ok_msk
22  REAL moyglo
23
24  ! var locale
25  REAL airetot
26
27  ! PRINT*,'moyglo_pondaire nhori',nhori
28
29  airetot = 0.
30  moyglo = 0.
31
32  IF (ok_msk) THEN
33    DO i = 1, nhori
34      ! IF(msk(i).EQ.1.) THEN
35      IF (msk(i)>0.) THEN
36
37        ! aire totale
38        airetot = airetot + aire(i)*msk(i)
39
40        ! ponderation par la masse
41        moyglo = moyglo + champ(i)*aire(i)*msk(i)
42      END IF
43    END DO
44
45  ELSE !ok_msk
46    DO i = 1, nhori
47
48      ! aire totale
49      airetot = airetot + aire(i)
50
51      ! ponderation par la masse
52      moyglo = moyglo + champ(i)*aire(i)
53    END DO
54
55  END IF
56
57  ! moyenne ponderee par l'aire
58  moyglo = moyglo/airetot
59
60  RETURN
61END SUBROUTINE moyglo_pondaire
62
63SUBROUTINE moyglo_pondaima(nhori, nvert, champ, aire, pbord, moyglo)
64  USE dimphy
65  USE yomcst_mod_h
66  IMPLICIT NONE
67  ! ==================================================================
68  ! I. Musat, 07.2004
69
70  ! Calcul moyenne globale ponderee par la masse d'air, divisee par l'aire
71  ! totale avec ou sans masque
72
73  ! moyenne = Somme_(champ* masse_dair)/Somme_aire
74
75  ! ==================================================================
76  INTEGER i, k, nhori, nvert
77  REAL champ(klon, klev), aire(klon)
78  REAL pbord(klon, klev+1)
79  REAL moyglo
80
81  ! var locale
82  REAL airetot
83
84  ! PRINT*,'moyglo_pondaima RG, nhori, nvert',RG,nhori,nvert
85
86  ! ponderation par la masse
87  moyglo = 0.
88  DO k = 1, nvert
89    DO i = 1, nhori
90      moyglo = moyglo + champ(i, k)*(pbord(i,k)-pbord(i,k+1))/rg*aire(i)
91    END DO
92  END DO
93
94  ! aire totale
95  airetot = 0.
96  DO i = 1, nhori
97    airetot = airetot + aire(i)
98  END DO
99
100  ! moyenne par mettre carre avec ponderation par la masse
101  moyglo = moyglo/airetot
102
103  RETURN
104END SUBROUTINE moyglo_pondaima
105
106SUBROUTINE moyglo_pondmass(nhori, nvert, champ, aire, pbord, moyglo)
107  USE dimphy
108  USE yomcst_mod_h
109  IMPLICIT NONE
110  ! ==================================================================
111  ! I. Musat, 07.2004
112
113  ! Calcul moyenne globale ponderee par la masse d'air, divisee par la
114  ! masse totale d'air, avec ou sans masque
115
116  ! moyenne = Somme_(champ* masse_dair)/Somme_(masse_dair)
117
118  ! ==================================================================
119  INTEGER i, k, nhori, nvert
120  REAL champ(klon, klev), aire(klon)
121  REAL pbord(klon, klev+1)
122  REAL moyglo
123
124  ! var locale
125  REAL massetot
126
127  ! PRINT*,'moyglo_pondmass RG, nhori, nvert',RG,nhori,nvert
128
129  ! ponderation par la masse
130  moyglo = 0.
131  DO k = 1, nvert
132    DO i = 1, nhori
133      moyglo = moyglo + champ(i, k)*(pbord(i,k)-pbord(i,k+1))/rg*aire(i)
134    END DO
135  END DO
136
137  ! masse totale
138  massetot = 0.
139  DO k = 1, nvert
140    DO i = 1, nhori
141      massetot = massetot + (pbord(i,k)-pbord(i,k+1))/rg*aire(i)
142    END DO
143  END DO
144
145  ! moyenne par mettre carre avec ponderation par la masse
146  moyglo = moyglo/massetot
147
148  RETURN
149END SUBROUTINE moyglo_pondmass
150
Note: See TracBrowser for help on using the repository browser.