SUBROUTINE global_mean(field,airephy,laire,mfield) ! I.Musat: 05.2011 ! calcul moyenne globale d'un champ pondere par l'aire de la maille ! (laire=.TRUE.) ou somme globale du champ (laire=.FALSE.) USE dimphy USE lmdz_phys_para, ONLY: is_sequential USE lmdz_phys_transfert_para, ONLY: reduce_sum USE lmdz_phys_mpi_data, ONLY: is_mpi_root USE ioipsl IMPLICIT NONE REAL,DIMENSION(klon),INTENT(IN) :: field REAL,DIMENSION(klon),INTENT(IN) :: airephy LOGICAL, INTENT(IN) :: laire REAL, INTENT(OUT) :: mfield REAL :: airetot ! Total area the earth REAL :: sumtmp INTEGER :: i IF (is_sequential) THEN airetot = 0. sumtmp = 0. DO i=1, klon airetot = airetot + airephy(i) sumtmp = sumtmp + field(i) END DO IF (laire) THEN IF(airetot/=0.) THEN mfield=sumtmp/airetot endif else mfield=sumtmp endif else CALL reduce_sum(SUM(airephy),airetot) CALL reduce_sum(SUM(field),sumtmp) !$OMP MASTER IF (is_mpi_root) THEN IF (laire) THEN ! PRINT*,'gmean airetot=',airetot IF(airetot/=0.) THEN mfield=sumtmp/airetot ! else ! mfield=sumtmp endif else mfield=sumtmp ENDIF ! PRINT*,'gmean sumtmp mfield=',sumtmp,mfield ENDIF !(is_mpi_root) THEN !$OMP END MASTER ENDIF END SUBROUTINE global_mean