diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90 index 5356753d1f0ee3372c4e6ee9e517e71af10267dc..28b3d7cbbb229b182a0f30d753e5def5ab16b47e 100644 --- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 +++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90 @@ -1164,7 +1164,8 @@ MODULE MODE_MPPDB REAL :: ZPRECISION REAL,DIMENSION(NMAXPAS) :: MAX_DIFF, MAX_VAL REAL,DIMENSION(SIZE(PTAB,1),SIZE(PTAB,2),SIZE(PTAB,3)) :: ZTAB - REAL,DIMENSION(:,:,:),ALLOCATABLE,TARGET :: TAB_ll,TAB_SON_ll + REAL,DIMENSION(:,:,:,:),ALLOCATABLE,TARGET :: TAB_ll + REAL,DIMENSION(:,:,:),ALLOCATABLE,TARGET :: TAB_SON_ll #ifdef MNH_SP4 !pas de mpi_spawn sur IBM-SP ni MPI_ARGV_NULL etc ... @@ -1227,8 +1228,8 @@ MODULE MODE_MPPDB IIU_ll = IIMAX_ll+2*JPHEXT IJU_ll = IJMAX_ll+2*JPHEXT IKU_ll = SIZE(PTAB,3) - IF (.NOT. ALLOCATED(TAB_ll)) ALLOCATE(TAB_ll(IIU_ll,IJU_ll,IKU_ll)) - CALL GATHERALL_FIELD_ll('XY',ZTAB,TAB_ll,IINFO_ll) + IF (.NOT. ALLOCATED(TAB_ll)) ALLOCATE(TAB_ll(IIU_ll,IJU_ll,IKU_ll,NPAS_ll)) + CALL GATHERALL_FIELD_ll('XY',ZTAB,TAB_ll(:,:,:,IPAS),IINFO_ll) IF (MPPDB_IRANK_WORLD.EQ.0) THEN ! @@ -1255,18 +1256,18 @@ MODULE MODE_MPPDB CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MNHREAL_MPI,I_FIRST_SON, & NTAG,MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) ! - TAB_ll = ABS ( TAB_ll - TAB_SON_ll ) + TAB_ll(:,:,:,IPAS) = ABS ( TAB_ll(:,:,:,IPAS) - TAB_SON_ll(:,:,:) ) ! ! Set corners values to zero if we want to check the halos without the corners IF ( MPPDB_CHECK_LB .AND. .NOT.MPPDB_CHECK_LB_CORNERS ) THEN - TAB_ll(1:JPHEXT, 1:JPHEXT, 1:IKU_ll) = 0d0 - TAB_ll(1:JPHEXT, 1:JPHEXT, 1:IKU_ll) = 0d0 - TAB_ll(1:JPHEXT, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll) = 0d0 - TAB_ll(1:JPHEXT, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll) = 0d0 - TAB_ll(IIU_ll-JPHEXT:IIU_ll, 1:JPHEXT, 1:IKU_ll) = 0d0 - TAB_ll(IIU_ll-JPHEXT:IIU_ll, 1:JPHEXT, 1:IKU_ll) = 0d0 - TAB_ll(IIU_ll-JPHEXT:IIU_ll, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll) = 0d0 - TAB_ll(IIU_ll-JPHEXT:IIU_ll, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll) = 0d0 + TAB_ll(1:JPHEXT, 1:JPHEXT, 1:IKU_ll,IPAS) = 0d0 + TAB_ll(1:JPHEXT, 1:JPHEXT, 1:IKU_ll,IPAS) = 0d0 + TAB_ll(1:JPHEXT, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll,IPAS) = 0d0 + TAB_ll(1:JPHEXT, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll,IPAS) = 0d0 + TAB_ll(IIU_ll-JPHEXT:IIU_ll, 1:JPHEXT, 1:IKU_ll,IPAS) = 0d0 + TAB_ll(IIU_ll-JPHEXT:IIU_ll, 1:JPHEXT, 1:IKU_ll,IPAS) = 0d0 + TAB_ll(IIU_ll-JPHEXT:IIU_ll, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll,IPAS) = 0d0 + TAB_ll(IIU_ll-JPHEXT:IIU_ll, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll,IPAS) = 0d0 TAB_SON_ll(1:JPHEXT, 1:JPHEXT, 1:IKU_ll) = 0d0 TAB_SON_ll(1:JPHEXT, 1:JPHEXT, 1:IKU_ll) = 0d0 TAB_SON_ll(1:JPHEXT, IJU_ll-JPHEXT:IJU_ll, 1:IKU_ll) = 0d0 @@ -1290,7 +1291,7 @@ MODULE MODE_MPPDB MAX_VAL(IPAS) = MAXVAL( ABS (TAB_SON_ll(IIB_SON_ll-IDIFF_HEXT:IIE_SON_ll+IDIFF_HEXT,& IJB_SON_ll-IDIFF_HEXT:IJE_SON_ll+IDIFF_HEXT,1:IKU_SON_ll) ) ) - MAX_DIFF(IPAS) = MAXVAL( TAB_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IJB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT,1:IKU_ll)) + MAX_DIFF(IPAS) = MAXVAL( TAB_ll(IIB_ll-IDIFF_HEXT:IIE_ll+IDIFF_HEXT,IJB_ll-IDIFF_HEXT:IJE_ll+IDIFF_HEXT,1:IKU_ll,IPAS)) ! IF ( MAX_VAL(IPAS) .EQ. 0.0 ) THEN ZDIV=1.0 @@ -1317,8 +1318,8 @@ MODULE MODE_MPPDB IIU_ll = IIMAX_ll+2*JPHEXT IJU_ll = IJMAX_ll+2*JPHEXT IKU_ll = SIZE(PTAB,3) - IF (.NOT. ALLOCATED(TAB_ll)) ALLOCATE(TAB_ll(IIU_ll,IJU_ll,IKU_ll)) - CALL GATHERALL_FIELD_ll('XY',ZTAB,TAB_ll,IINFO_ll) + IF (.NOT. ALLOCATED(TAB_ll)) ALLOCATE(TAB_ll(IIU_ll,IJU_ll,IKU_ll,NPAS_ll)) + CALL GATHERALL_FIELD_ll('XY',ZTAB,TAB_ll(:,:,:,IPAS),IINFO_ll) ! ! SON WORLD ! @@ -1331,7 +1332,7 @@ MODULE MODE_MPPDB CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) - CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MNHREAL_MPI,I_FIRST_FATHER, & + CALL MPI_BSEND(TAB_ll(:,:,:,IPAS),SIZE(TAB_ll(:,:,:,IPAS)),MNHREAL_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) END IF END IF