source: LMDZ6/branches/Amaury_dev/libf/phylmd/moyglo_aire.F90 @ 5159

Last change on this file since 5159 was 5144, checked in by abarral, 8 weeks ago

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