source: LMDZ5/trunk/libf/phylmd/moyglo_aire.F90 @ 2306

Last change on this file since 2306 was 1992, checked in by lguez, 11 years ago

Converted to free source form files in libf/phylmd which were still in
fixed source form. The conversion was done using the polish mode of
the NAG Fortran Compiler.

In addition to converting to free source form, the processing of the
files also:

-- indented the code (including comments);

-- set Fortran keywords to uppercase, and set all other identifiers
to lower case;

-- added qualifiers to end statements (for example "end subroutine
conflx", instead of "end");

-- changed the terminating statements of all DO loops so that each
loop ends with an ENDDO statement (instead of a labeled continue).

-- replaced #include by include.

  • 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.