      !***********************************************************************!
      SUBROUTINE  calcul(  u,  f  )
      !***********************************************************************!
!
      USE MPI
!
      USE numerics
!
      IMPLICIT  NONE
!
!--Declaration des arguments
!
!Solution  u  a  l'iteration  n  et  n+1
      REAL(rp),  DIMENSION(sx-1:ex+1,sy-1:ey+1,sz-1:ez+1,0:1),  INTENT(INOUT)   ::  u
!
!Second  membre
      REAL(rp),  DIMENSION(sx-1:ex+1,sy-1:ey+1,sz-1:ez+1),      INTENT(IN)      ::  f
!
!--Declaration des variales locales
!
! Poids
      REAL(rp)  ::  den
      REAL(rp)  ::  c1, c2, c3, c4
!
!Compteurs
      INTEGER   ::  i,  j,  k
!
      !***********************************************************************!
!
      den = 1.0_rp / ( ( hx * hy * hz ) **2 &
                     + 2.0_rp * rlambda * ( &
                        ( hx * hz ) **2 + ( hx * hy ) **2 + ( hy * hz ) **2 ) )
      c1 = rlambda * ( hy * hz ) **2 * den
      c2 = rlambda * ( hx * hz ) **2 * den
      c3 = rlambda * ( hx * hy ) **2 * den
      c4 =           ( hx * hy * hz ) **2 * den
!
      IF ( inew == 0 ) THEN
!
      DO  k  =  sz,  ez
         DO  j  =  sy,  ey
            DO i  =  sx,  ex
                u(i,j,k,0) = &
                  c1 * ( u(i+1,j  ,k  ,1) + u(i-1,j  ,k  ,1) ) &
                + c2 * ( u(i  ,j+1,k  ,1) + u(i  ,j-1,k  ,1) ) &
                + c3 * ( u(i  ,j  ,k+1,1) + u(i  ,j  ,k-1,1) ) &
                + c4 * f(i,j,k)
            END  DO
         END  DO
      END  DO
!
      ELSE
!
      DO  k  =  sz,  ez
         DO  j  =  sy,  ey
            DO i  =  sx,  ex
                u(i,j,k,1) = &
                  c1 * ( u(i+1,j  ,k  ,0) + u(i-1,j  ,k  ,0) ) &
                + c2 * ( u(i  ,j+1,k  ,0) + u(i  ,j-1,k  ,0) ) &
                + c3 * ( u(i  ,j  ,k+1,0) + u(i  ,j  ,k-1,0) ) &
                + c4 * f(i,j,k)
            END  DO
         END  DO
      END  DO
!
      END IF
!
      RETURN
      END SUBROUTINE calcul

