LMDZ
global_mean.F90
Go to the documentation of this file.
1  subroutine global_mean(field,airephy,laire,mfield)
2 !
3 ! I.Musat: 05.2011
4 ! calcul moyenne globale d'un champ pondere par l'aire de la maille
5 ! (laire=.TRUE.) ou somme globale du champ (laire=.FALSE.)
6 !
7  USE dimphy
11  USE ioipsl
12  implicit none
13 
14  real,dimension(klon),intent(in) :: field
15  real,dimension(klon),intent(in) :: airephy
16  LOGICAL, intent(in) :: laire
17  REAL, intent(out) :: mfield
18  REAL :: airetot ! Total area the earth
19  REAL :: sumtmp
20  INTEGER :: i
21 
22  if (is_sequential) then
23 
24  airetot = 0.
25  sumtmp = 0.
26  DO i=1, klon
27  airetot = airetot + airephy(i)
28  sumtmp = sumtmp + field(i)
29  END DO
30  if (laire) THEN
31  if(airetot.NE.0.) THEN
32  mfield=sumtmp/airetot
33  endif
34  else
35  mfield=sumtmp
36  endif
37 
38  else
39 
40  CALL reduce_sum(sum(airephy),airetot)
41  CALL reduce_sum(sum(field),sumtmp)
42 
43 !$OMP MASTER
44  if (is_mpi_root) THEN
45  if (laire) THEN
46 ! print*,'gmean airetot=',airetot
47  if(airetot.NE.0.) THEN
48  mfield=sumtmp/airetot
49 ! else
50 ! mfield=sumtmp
51  endif
52  else
53  mfield=sumtmp
54  endif
55 
56 ! print*,'gmean sumtmp mfield=',sumtmp,mfield
57 
58  endif !(is_mpi_root) THEN
59 !$OMP END MASTER
60 
61  endif
62 
63  end subroutine global_mean
integer, save klon
Definition: dimphy.F90:3
subroutine global_mean(field, airephy, laire, mfield)
Definition: global_mean.F90:2
logical, save is_sequential
Definition: dimphy.F90:1