! $Header$ SUBROUTINE moyglo_pondaire(nhori, champ, aire, ok_msk, msk, moyglo) USE yomcst_mod_h USE dimphy IMPLICIT NONE ! ================================================================== ! I. Musat, 07.2004 ! Calcul moyenne globale ponderee par l'aire totale, avec ou sans masque ! moyenne = Somme_(champ* aire)/Somme_aire ! ================================================================== INTEGER i, nhori REAL champ(klon), aire(klon), msk(klon) LOGICAL ok_msk REAL moyglo ! var locale REAL airetot ! PRINT*,'moyglo_pondaire nhori',nhori airetot = 0. moyglo = 0. IF (ok_msk) THEN DO i = 1, nhori ! IF(msk(i).EQ.1.) THEN IF (msk(i)>0.) THEN ! aire totale airetot = airetot + aire(i)*msk(i) ! ponderation par la masse moyglo = moyglo + champ(i)*aire(i)*msk(i) END IF END DO ELSE !ok_msk DO i = 1, nhori ! aire totale airetot = airetot + aire(i) ! ponderation par la masse moyglo = moyglo + champ(i)*aire(i) END DO END IF ! moyenne ponderee par l'aire moyglo = moyglo/airetot RETURN END SUBROUTINE moyglo_pondaire SUBROUTINE moyglo_pondaima(nhori, nvert, champ, aire, pbord, moyglo) USE dimphy USE yomcst_mod_h IMPLICIT NONE ! ================================================================== ! I. Musat, 07.2004 ! Calcul moyenne globale ponderee par la masse d'air, divisee par l'aire ! totale avec ou sans masque ! moyenne = Somme_(champ* masse_dair)/Somme_aire ! ================================================================== INTEGER i, k, nhori, nvert REAL champ(klon, klev), aire(klon) REAL pbord(klon, klev+1) REAL moyglo ! var locale REAL airetot ! PRINT*,'moyglo_pondaima RG, nhori, nvert',RG,nhori,nvert ! ponderation par la masse moyglo = 0. DO k = 1, nvert DO i = 1, nhori moyglo = moyglo + champ(i, k)*(pbord(i,k)-pbord(i,k+1))/rg*aire(i) END DO END DO ! aire totale airetot = 0. DO i = 1, nhori airetot = airetot + aire(i) END DO ! moyenne par mettre carre avec ponderation par la masse moyglo = moyglo/airetot RETURN END SUBROUTINE moyglo_pondaima SUBROUTINE moyglo_pondmass(nhori, nvert, champ, aire, pbord, moyglo) USE dimphy USE yomcst_mod_h IMPLICIT NONE ! ================================================================== ! I. Musat, 07.2004 ! Calcul moyenne globale ponderee par la masse d'air, divisee par la ! masse totale d'air, avec ou sans masque ! moyenne = Somme_(champ* masse_dair)/Somme_(masse_dair) ! ================================================================== INTEGER i, k, nhori, nvert REAL champ(klon, klev), aire(klon) REAL pbord(klon, klev+1) REAL moyglo ! var locale REAL massetot ! PRINT*,'moyglo_pondmass RG, nhori, nvert',RG,nhori,nvert ! ponderation par la masse moyglo = 0. DO k = 1, nvert DO i = 1, nhori moyglo = moyglo + champ(i, k)*(pbord(i,k)-pbord(i,k+1))/rg*aire(i) END DO END DO ! masse totale massetot = 0. DO k = 1, nvert DO i = 1, nhori massetot = massetot + (pbord(i,k)-pbord(i,k+1))/rg*aire(i) END DO END DO ! moyenne par mettre carre avec ponderation par la masse moyglo = moyglo/massetot RETURN END SUBROUTINE moyglo_pondmass