!> \file moy_mxmy.f90 !! Fait la moyenne ponderee d'un tableau X2D sur les mailles staggered !< !> SUBROUTINE: moy_mxmy() !! \author ... !! \date ... !! @note Cette routine permet de faire la moyenne ponderee d'un tableau X2D sur les mailles staggered !! \param n1 [in] dimension des tableaux !! \param n2 [in] dimension des tableaux !! \param X2D [in] tableau sur les noeuds majeurs !! \param X_mx [out] tableau sur les noeuds mineurs x !! \param X_my [out] tableau sur les noeuds mineurs y !! \return X_mx, X_my !< subroutine moy_mxmy(n1,n2,X2D,X_mx,X_my) ! fait la moyenne ponderee d'un tableau X2D sur les mailles staggered !$ USE OMP_LIB implicit none integer, intent(in) :: n1,n2 !< dimension des tableaux real, dimension(n1,n2),intent(in) :: X2D !< tableau sur les noeuds majeurs real, dimension(n1,n2),intent(out) :: X_mx !< tableau sur les noeuds mineurs x real, dimension(n1,n2),intent(out) :: X_my !< tableau sur les noeuds mineurs y integer :: i,j integer :: i_moins1,j_moins1,i_plus1,j_plus1 !$OMP PARALLEL PRIVATE(i_moins1,j_moins1,i_plus1,j_plus1) !$OMP DO do j=1,n2 do i=1,n1 i_moins1=max(1,i-1) j_moins1=max(1,j-1) i_plus1=min(n1,i+1) j_plus1=min(n2,j+1) X_mx(i,j)=0.25*(X2D(i,j)+X2D(i_moins1,j)) & + 0.125*((X2D(i_moins1,j_plus1)+X2D(i,j_plus1)) & + (X2D(i_moins1,j_moins1)+X2D(i,j_moins1))) X_my(i,j)=0.25*(X2D(i,j)+X2D(i,j_moins1)) & + 0.125*((X2D(i_plus1,j_moins1)+X2D(i_plus1,j)) & + (X2D(i_moins1,j_moins1)+X2D(i_moins1,j))) end do end do !$OMP END DO !$OMP END PARALLEL return end subroutine moy_mxmy