source: LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/moyglo_aire.F90 @ 5434

Last change on this file since 5434 was 2346, checked in by Ehouarn Millour, 9 years ago

Physics/dynamics separation:

  • remove all references to dimensions.h from physics. nbp_lon (==iim) , nbp_lat (==jjm+1) and nbp_lev (==llm) from mod_grid_phy_lmdz should be used instead.
  • added module regular_lonlat_mod in phy_common to store information about the global (lon-lat) grid cell boundaries and centers.

EM

  • 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.2 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  INTEGER i, nhori
19  REAL champ(klon), aire(klon), msk(klon)
20  LOGICAL ok_msk
21  REAL moyglo
22
23  ! var locale
24  REAL airetot
25
26  ! PRINT*,'moyglo_pondaire nhori',nhori
27
28  airetot = 0.
29  moyglo = 0.
30
31  IF (ok_msk) THEN
32    DO i = 1, nhori
33      ! IF(msk(i).EQ.1.) THEN
34      IF (msk(i)>0.) THEN
35
36        ! aire totale
37        airetot = airetot + aire(i)*msk(i)
38
39        ! ponderation par la masse
40        moyglo = moyglo + champ(i)*aire(i)*msk(i)
41      END IF
42    END DO
43
44  ELSE !ok_msk
45    DO i = 1, nhori
46
47      ! aire totale
48      airetot = airetot + aire(i)
49
50      ! ponderation par la masse
51      moyglo = moyglo + champ(i)*aire(i)
52    END DO
53
54  END IF
55
56  ! moyenne ponderee par l'aire
57  moyglo = moyglo/airetot
58
59  RETURN
60END SUBROUTINE moyglo_pondaire
61
62SUBROUTINE moyglo_pondaima(nhori, nvert, champ, aire, pbord, moyglo)
63  USE dimphy
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  include "YOMCST.h"
75  INTEGER i, k, nhori, nvert
76  REAL champ(klon, klev), aire(klon)
77  REAL pbord(klon, klev+1)
78  REAL moyglo
79
80  ! var locale
81  REAL airetot
82
83  ! PRINT*,'moyglo_pondaima RG, nhori, nvert',RG,nhori,nvert
84
85  ! ponderation par la masse
86  moyglo = 0.
87  DO k = 1, nvert
88    DO i = 1, nhori
89      moyglo = moyglo + champ(i, k)*(pbord(i,k)-pbord(i,k+1))/rg*aire(i)
90    END DO
91  END DO
92
93  ! aire totale
94  airetot = 0.
95  DO i = 1, nhori
96    airetot = airetot + aire(i)
97  END DO
98
99  ! moyenne par mettre carre avec ponderation par la masse
100  moyglo = moyglo/airetot
101
102  RETURN
103END SUBROUTINE moyglo_pondaima
104
105SUBROUTINE moyglo_pondmass(nhori, nvert, champ, aire, pbord, moyglo)
106  USE dimphy
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  include "YOMCST.h"
118  INTEGER i, k, nhori, nvert
119  REAL champ(klon, klev), aire(klon)
120  REAL pbord(klon, klev+1)
121  REAL moyglo
122
123  ! var locale
124  REAL massetot
125
126  ! PRINT*,'moyglo_pondmass RG, nhori, nvert',RG,nhori,nvert
127
128  ! ponderation par la masse
129  moyglo = 0.
130  DO k = 1, nvert
131    DO i = 1, nhori
132      moyglo = moyglo + champ(i, k)*(pbord(i,k)-pbord(i,k+1))/rg*aire(i)
133    END DO
134  END DO
135
136  ! masse totale
137  massetot = 0.
138  DO k = 1, nvert
139    DO i = 1, nhori
140      massetot = massetot + (pbord(i,k)-pbord(i,k+1))/rg*aire(i)
141    END DO
142  END DO
143
144  ! moyenne par mettre carre avec ponderation par la masse
145  moyglo = moyglo/massetot
146
147  RETURN
148END SUBROUTINE moyglo_pondmass
149
Note: See TracBrowser for help on using the repository browser.