source: LMDZ5/branches/testing/libf/phylmd/moyglo_aire.F90 @ 2056

Last change on this file since 2056 was 1999, checked in by Laurent Fairhead, 11 years ago

Merged trunk changes r1920:1997 into testing branch

  • 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.4 KB
Line 
1
2! $Header$
3
4SUBROUTINE moyglo_pondaire(nhori, champ, aire, ok_msk, msk, moyglo)
5
6  USE dimphy
7  IMPLICIT NONE
8
9  ! ==================================================================
10  ! I. Musat, 07.2004
11
12  ! Calcul moyenne globale ponderee par l'aire totale, avec ou sans masque
13
14  ! moyenne = Somme_(champ* aire)/Somme_aire
15
16  ! ==================================================================
17
18  include "dimensions.h"
19  ! ym#include "dimphy.h"
20  INTEGER i, nhori
21  REAL champ(klon), aire(klon), msk(klon)
22  LOGICAL ok_msk
23  REAL moyglo
24
25  ! var locale
26  REAL airetot
27
28  ! PRINT*,'moyglo_pondaire nhori',nhori
29
30  airetot = 0.
31  moyglo = 0.
32
33  IF (ok_msk) THEN
34    DO i = 1, nhori
35      ! IF(msk(i).EQ.1.) THEN
36      IF (msk(i)>0.) THEN
37
38        ! aire totale
39        airetot = airetot + aire(i)*msk(i)
40
41        ! ponderation par la masse
42        moyglo = moyglo + champ(i)*aire(i)*msk(i)
43      END IF
44    END DO
45
46  ELSE !ok_msk
47    DO i = 1, nhori
48
49      ! aire totale
50      airetot = airetot + aire(i)
51
52      ! ponderation par la masse
53      moyglo = moyglo + champ(i)*aire(i)
54    END DO
55
56  END IF
57
58  ! moyenne ponderee par l'aire
59  moyglo = moyglo/airetot
60
61  RETURN
62END SUBROUTINE moyglo_pondaire
63
64SUBROUTINE moyglo_pondaima(nhori, nvert, champ, aire, pbord, moyglo)
65  USE dimphy
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  include "dimensions.h"
77  ! ym#include "dimphy.h"
78  include "YOMCST.h"
79  INTEGER i, k, nhori, nvert
80  REAL champ(klon, klev), aire(klon)
81  REAL pbord(klon, klev+1)
82  REAL moyglo
83
84  ! var locale
85  REAL airetot
86
87  ! PRINT*,'moyglo_pondaima RG, nhori, nvert',RG,nhori,nvert
88
89  ! ponderation par la masse
90  moyglo = 0.
91  DO k = 1, nvert
92    DO i = 1, nhori
93      moyglo = moyglo + champ(i, k)*(pbord(i,k)-pbord(i,k+1))/rg*aire(i)
94    END DO
95  END DO
96
97  ! aire totale
98  airetot = 0.
99  DO i = 1, nhori
100    airetot = airetot + aire(i)
101  END DO
102
103  ! moyenne par mettre carre avec ponderation par la masse
104  moyglo = moyglo/airetot
105
106  RETURN
107END SUBROUTINE moyglo_pondaima
108
109SUBROUTINE moyglo_pondmass(nhori, nvert, champ, aire, pbord, moyglo)
110  USE dimphy
111  IMPLICIT NONE
112  ! ==================================================================
113  ! I. Musat, 07.2004
114
115  ! Calcul moyenne globale ponderee par la masse d'air, divisee par la
116  ! masse totale d'air, avec ou sans masque
117
118  ! moyenne = Somme_(champ* masse_dair)/Somme_(masse_dair)
119
120  ! ==================================================================
121  include "dimensions.h"
122  ! ym#include "dimphy.h"
123  include "YOMCST.h"
124  INTEGER i, k, nhori, nvert
125  REAL champ(klon, klev), aire(klon)
126  REAL pbord(klon, klev+1)
127  REAL moyglo
128
129  ! var locale
130  REAL massetot
131
132  ! PRINT*,'moyglo_pondmass RG, nhori, nvert',RG,nhori,nvert
133
134  ! ponderation par la masse
135  moyglo = 0.
136  DO k = 1, nvert
137    DO i = 1, nhori
138      moyglo = moyglo + champ(i, k)*(pbord(i,k)-pbord(i,k+1))/rg*aire(i)
139    END DO
140  END DO
141
142  ! masse totale
143  massetot = 0.
144  DO k = 1, nvert
145    DO i = 1, nhori
146      massetot = massetot + (pbord(i,k)-pbord(i,k+1))/rg*aire(i)
147    END DO
148  END DO
149
150  ! moyenne par mettre carre avec ponderation par la masse
151  moyglo = moyglo/massetot
152
153  RETURN
154END SUBROUTINE moyglo_pondmass
155
Note: See TracBrowser for help on using the repository browser.