diff --git a/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 index 47c074af7217273741c293c21c3069022d681086..bae778a2d0c21bfc909dcc840f2d103806388767 100644 --- a/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 @@ -195,12 +195,15 @@ !! Author !! ------ ! P. Kloos * CERFACS - CNRM * +!! J.Escobar 21/03/014: add mppd_check for all updated field ! !-------------------------------------------------------------------------------! !* 0. DECLARATIONS ! USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, NHALO2_COM +! + USE MODE_MPPDB ! !* 0.1 declarations of arguments ! @@ -209,6 +212,8 @@ TYPE(HALO2LIST_ll), POINTER :: TPLISTHALO2 ! pointer to the list of ! halo2 to be received INTEGER :: KINFO ! return status +! + TYPE(LIST_ll), POINTER :: TZFIELD ! !------------------------------------------------------------------------------- ! @@ -226,6 +231,20 @@ CALL COPY_CRSPD2(TCRRT_COMDATA%TSEND_HALO2, TCRRT_COMDATA%TRECV_HALO2, & TPLIST, TPLISTHALO2, KINFO) ! +!JUAN MPP_CHECK2D/3D +! + IF (MPPDB_INITIALIZED) THEN + TZFIELD => TPLIST + DO WHILE (ASSOCIATED(TZFIELD)) + IF (TZFIELD%L2D) THEN + CALL MPPDB_CHECK2D(TZFIELD%ARRAY2D,"UPDATE_HALO2_ll",PRECISION) + ELSEIF(TZFIELD%L3D) THEN + CALL MPPDB_CHECK3D(TZFIELD%ARRAY3D,"UPDATE_HALO2_ll",PRECISION) + END IF + TZFIELD => TZFIELD%NEXT + END DO + END IF +! !---------------------------------------------------------------------- ! END SUBROUTINE UPDATE_HALO2_ll diff --git a/src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 b/src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 index a730cabae76be7289205c14335d219835b3d0c7b..67d1be6469bf60f958199a8991d91c1b0f9067e7 100644 --- a/src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 @@ -138,6 +138,7 @@ ! Juan 19/08/2005: distinction Halo NORD/SUD & EST/WEST ! + modification INTENT -> INTENT(INOUT) ! J.Escobar 13/11/2008: correction on size of buffer(IBUFFSIZE) in MPI_RECV +!! J.Escobar 21/03/014: add mppd_check for all updated field ! !------------------------------------------------------------------------------- ! @@ -147,6 +148,9 @@ USE MODD_VAR_ll, ONLY : NHALO_COM, TCRRT_COMDATA ! USE MODE_ARGSLIST_ll ! USE MODD_STRUCTURE_ll, ONLY : CRSPD_ll +! + USE MODE_MPPDB +! ! !* 0.1 declarations of arguments ! @@ -154,6 +158,7 @@ INTEGER :: KINFO ! return status ! !* 0.2 declarations of local variables + TYPE(LIST_ll), POINTER :: TZFIELD ! !------------------------------------------------------------------------------- ! @@ -169,6 +174,20 @@ CALL COPY_CRSPD(TCRRT_COMDATA%TSEND_HALO1, TCRRT_COMDATA%TRECV_HALO1, & TPLIST, TPLIST, KINFO) ! +!JUAN MPP_CHECK2D/3D +! + IF (MPPDB_INITIALIZED) THEN + TZFIELD => TPLIST + DO WHILE (ASSOCIATED(TZFIELD)) + IF (TZFIELD%L2D) THEN + CALL MPPDB_CHECK2D(TZFIELD%ARRAY2D,"UPDATE_HALO_ll",PRECISION) + ELSEIF(TZFIELD%L3D) THEN + CALL MPPDB_CHECK3D(TZFIELD%ARRAY3D,"UPDATE_HALO_ll",PRECISION) + END IF + TZFIELD => TZFIELD%NEXT + END DO + END IF +! !------------------------------------------------------------------------------- ! END SUBROUTINE UPDATE_HALO_ll @@ -1513,6 +1532,8 @@ INTEGER :: NB_REQ ! USE MODD_ARGSLIST_ll, ONLY : LIST_ll USE MODD_STRUCTURE_ll, ONLY : ZONE_ll +! + USE MODE_MPPDB ! IMPLICIT NONE ! diff --git a/src/MNH/advec_4th_order_aux.f90 b/src/MNH/advec_4th_order_aux.f90 index 37772d2843c6a305c55b5406f90980a55da54914..9da1b685187d1ed71f69670f5b10840cd969db92 100644 --- a/src/MNH/advec_4th_order_aux.f90 +++ b/src/MNH/advec_4th_order_aux.f90 @@ -103,6 +103,8 @@ END MODULE MODI_ADVEC_4TH_ORDER_AUX !! MODIFICATIONS !! ------------- !! Original 25/10/05 +!! Modif +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -165,21 +167,21 @@ SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side ! CASE ('CYCL') ! In that case one must have HLBCX(1) == HLBCX(2) ! - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN IW=IIB+1 IE=IIE ! IE=IIE-1 - ELSE - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' - WRITE(ILUOUT,*) 'cannot be used with NHALO=2' - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP -! IW=IIB -! IE=IIE - END IF +!!$ ELSE +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' +!!$ WRITE(ILUOUT,*) 'cannot be used with NHALO=2' +!!$ !callabortstop +!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) +!!$ CALL ABORT +!!$ STOP +!!$! IW=IIB +!!$! IE=IIE +!!$ END IF ! IF(KGRID == 2) THEN IWF=IW-1 @@ -224,13 +226,14 @@ CASE ('OPEN','WALL','NEST') IW=IIB+1 END IF ELSE - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN IW=IIB+1 - ELSE - IW=IIB - ENDIF +!!$ ELSE +!!$ IW=IIB +!!$ ENDIF ENDIF - IF (LEAST_ll() .OR. NHALO == 1) THEN +!!$ IF (LEAST_ll() .OR. NHALO == 1) THEN + IF (LEAST_ll() ) THEN ! T. Maric ! IE=IIE-1 ! original IE=IIE @@ -258,14 +261,16 @@ CASE ('OPEN','WALL','NEST') ! PMEANX(1,:,:) = PMEANX(IWF-1,:,:) ! extrapolate !PMEANX(1,:,:) = 0.5*(3.0*PFIELDT(1,:,:) - PFIELDT(2,:,:)) - ELSEIF (NHALO == 1) THEN +!!$ ELSE IF (NHALO == 1) THEN + ELSE PMEANX(IWF-1,:,:) = (7.0*( PFIELDT(IW-1,:,:)+PFIELDT(IW-2,:,:) ) - & ( PFIELDT(IW,:,:)+TPHALO2%WEST(:,:) ) )/12.0 ENDIF ! IF (LEAST_ll()) THEN PMEANX(IEF+1,:,:) = 0.5*( PFIELDT(IE+1,:,:)+PFIELDT(IE,:,:) ) - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE PMEANX(IEF+1,:,:) = (7.0*( PFIELDT(IE+1,:,:)+PFIELDT(IE,:,:) ) - & ( TPHALO2%EAST(:,:)+PFIELDT(IE-1,:,:) ) )/12.0 ENDIF @@ -289,21 +294,21 @@ IF ( .NOT. L2D ) THEN CASE ('CYCL') ! In that case one must have HLBCY(1) == HLBCY(2) ! ! - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN IS=IJB+1 IN=IJE ! IN=IJE-1 - ELSE - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' - WRITE(ILUOUT,*) 'cannot be used with NHALO=2' -!callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP -! IS=IJB -! IN=IJE - END IF +!!$ ELSE +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' +!!$ WRITE(ILUOUT,*) 'cannot be used with NHALO=2' +!!$!callabortstop +!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) +!!$ CALL ABORT +!!$ STOP +!!$! IS=IJB +!!$! IN=IJE +!!$ END IF ! IF(KGRID == 3) THEN ISF=IS-1 @@ -346,13 +351,14 @@ IF ( .NOT. L2D ) THEN IS=IJB+1 END IF ELSE - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN IS=IJB+1 - ELSE - IS=IJB - ENDIF +!!$ ELSE +!!$ IS=IJB +!!$ ENDIF ENDIF - IF (LNORTH_ll() .OR. NHALO == 1) THEN +!!$ IF (LNORTH_ll() .OR. NHALO == 1) THEN + IF (LNORTH_ll()) THEN ! T. Maric ! IN=IJE-1 ! original IN=IJE @@ -376,7 +382,8 @@ IF ( .NOT. L2D ) THEN ! PMEANY(:,1,:) = PMEANY(:,ISF-1,:) ! extrapolate !PMEANY(:,1,:) = 0.5*(3.0*PFIELDT(:,1,:) - PFIELDT(:,2,:)) - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE !!$ PMEANY(:,ISF-1,:) = (7.0*( PFIELDT(:,IS,:)+PFIELDT(:,IS-1,:)) - & !!$ ( PFIELDT(:,IS+1,:)+TPHALO2%SOUTH(:,:) ))/12.0 PMEANY(:,ISF-1,:) = (7.0*( PFIELDT(:,IS-1,:)+PFIELDT(:,IS-2,:)) - & @@ -385,7 +392,8 @@ IF ( .NOT. L2D ) THEN ! IF (LNORTH_ll()) THEN PMEANY(:,INF+1,:) = 0.5*( PFIELDT(:,IN+1,:)+PFIELDT(:,IN,:) ) - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE !!$ PMEANY(:,INF+1,:) = (7.0*( PFIELDT(:,IN,:)+PFIELDT(:,IN-1,:)) - & !!$ ( TPHALO2%NORTH(:,:)+PFIELDT(:,IN-2,:) ))/12.0 PMEANY(:,INF+1,:) = (7.0*( PFIELDT(:,IN+1,:)+PFIELDT(:,IN,:)) - & diff --git a/src/MNH/advec_weno_k_2_aux.f90 b/src/MNH/advec_weno_k_2_aux.f90 index 988bcc3fee81d67f37f11e71b78b27b2492a165f..38ca927732fd7838474743cee6c07431e98c9215 100644 --- a/src/MNH/advec_weno_k_2_aux.f90 +++ b/src/MNH/advec_weno_k_2_aux.f90 @@ -131,6 +131,7 @@ END MODULE MODI_ADVEC_WENO_K_2_AUX !! !! MODIFICATIONS !! ------------- +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -222,16 +223,16 @@ SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side ! CASE ('CYCL') ! In that case one must have HLBCX(1) == HLBCX(2) ! - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN IW=IIB IE=IIE - ELSE - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case ' - WRITE(ILUOUT,*) 'cannot be used with NHALO=2' - CALL ABORT - STOP - END IF +!!$ ELSE +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case ' +!!$ WRITE(ILUOUT,*) 'cannot be used with NHALO=2' +!!$ CALL ABORT +!!$ STOP +!!$ END IF ! ! r: many left cells in regard to 'i' cell for each stencil ! @@ -295,7 +296,8 @@ CASE ('OPEN','WALL','NEST') IF(LWEST_ll()) THEN PR(IW-1,:,:) = PSRC(IW-1,:,:) * (0.5+SIGN(0.5,PRUCT(IW-1,:,:))) + PSRC(IW,:,:) * (0.5-SIGN(0.5,PRUCT(IW-1,:,:))) ! - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE ZFPOS1(IW-1,:,:) = 0.5 * (3.0*PSRC(IW-1,:,:) - TPHALO2%WEST(:,:)) ZFPOS2(IW-1,:,:) = 0.5 * (PSRC(IW-1, :,:) + PSRC(IW,:,:)) ZBPOS1(IW-1,:,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2 @@ -321,7 +323,8 @@ CASE ('OPEN','WALL','NEST') IF(LEAST_ll()) THEN PR(IE,:,:) = PSRC(IE,:,:) * (0.5+SIGN(0.5,PRUCT(IE,:,:))) + PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE,:,:))) ! - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE ZFPOS1(IE,:,:) = 0.5 * (3.0*PSRC(IE,:,:) - PSRC(IE-1,:,:)) ZFPOS2(IE,:,:) = 0.5 * (PSRC(IE, :,:) + PSRC(IE+1,:,:)) ZBPOS1(IE,:,:) = (PSRC(IE,:,:) - PSRC(IE-1,:,:))**2 @@ -482,16 +485,16 @@ SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side ! CASE ('CYCL') ! In that case one must have HLBCX(1) == HLBCX(2) ! - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN IW=IIB IE=IIE - ELSE - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case ' - WRITE(ILUOUT,*) 'cannot be used with NHALO=2' - CALL ABORT - STOP - END IF +!!$ ELSE +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : 3rd order advection in CYCLic case ' +!!$ WRITE(ILUOUT,*) 'cannot be used with NHALO=2' +!!$ CALL ABORT +!!$ STOP +!!$ END IF ! ! intermediate fluxes for positive wind case ! @@ -554,7 +557,8 @@ CASE ('OPEN','WALL','NEST') IF(LWEST_ll()) THEN PR(IW,:,:) = PSRC(IW-1,:,:) * (0.5+SIGN(0.5,PRUCT(IW,:,:))) + PSRC(IW,:,:) * (0.5-SIGN(0.5,PRUCT(IW,:,:))) ! - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE ZFPOS1(IW,:,:) = 0.5 * (3.0*PSRC(IW-1, :,:) - TPHALO2%WEST(:,:)) ZFPOS2(IW,:,:) = 0.5 * (PSRC(IW-1, :,:) + PSRC(IW, :,:)) ZBPOS1(IW,:,:) = (PSRC(IW-1,:,:) - TPHALO2%WEST(:,:))**2 @@ -580,7 +584,8 @@ CASE ('OPEN','WALL','NEST') IF(LEAST_ll()) THEN PR(IE+1,:,:) = PSRC(IE,:,:) * (0.5+SIGN(0.5,PRUCT(IE+1,:,:))) + PSRC(IE+1,:,:) * (0.5-SIGN(0.5,PRUCT(IE+1,:,:))) ! - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE ZFPOS1(IE+1,:,:) = 0.5 * (3.0*PSRC(IE,:,:) - PSRC(IE-1,:,:)) ZFPOS2(IE+1,:,:) = 0.5 * (PSRC(IE, :,:) + PSRC(IE+1,:,:)) ZBPOS1(IE+1,:,:) = (PSRC(IE,:,:) - PSRC(IE-1,:,:))**2 @@ -742,16 +747,16 @@ SELECT CASE ( HLBCY(1) ) ! ! CASE ('CYCL') ! In that case one must have HLBCY(1) == HLBCY(2) ! - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN IS=IJB IN=IJE - ELSE - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' - WRITE(ILUOUT,*) 'cannot be used with NHALO=2' - CALL ABORT - STOP - END IF +!!$ ELSE +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' +!!$ WRITE(ILUOUT,*) 'cannot be used with NHALO=2' +!!$ CALL ABORT +!!$ STOP +!!$ END IF ! ! intermediate fluxes for positive wind case ! @@ -812,7 +817,8 @@ CASE ('OPEN','WALL','NEST') IF(LSOUTH_ll()) THEN PR(:,IS,:) = PSRC(:,IS-1,:) * (0.5+SIGN(0.5,PRVCT(:,IS,:))) + PSRC(:,IS,:) * (0.5-SIGN(0.5,PRVCT(:,IS,:))) ! - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE ZFPOS1(:,IS,:) = 0.5 * (3.0*PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:)) ZFPOS2(:,IS,:) = 0.5 * (PSRC(:,IS-1,:) + PSRC(:,IS,:)) ZBPOS1(:,IS,:) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2 @@ -838,7 +844,8 @@ CASE ('OPEN','WALL','NEST') IF(LNORTH_ll()) THEN PR(:,IN+1,:) = PSRC(:,IN,:) * (0.5+SIGN(0.5,PRVCT(:,IN+1,:))) + PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN+1,:))) ! - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE ZFPOS1(:,IN+1,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN-1,:)) ZFPOS2(:,IN+1,:) = 0.5 * (PSRC(:,IN, :) + PSRC(:,IN+1,:)) ZBPOS1(:,IN+1,:) = (PSRC(:,IN,:) - PSRC(:,IN-1,:))**2 @@ -996,16 +1003,16 @@ SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side ! CASE ('CYCL') ! In that case one must have HLBCX(1) == HLBCX(2) ! - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN IS=IJB IN=IJE - ELSE - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' - WRITE(ILUOUT,*) 'cannot be used with NHALO=2' - CALL ABORT - STOP - END IF +!!$ ELSE +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' +!!$ WRITE(ILUOUT,*) 'cannot be used with NHALO=2' +!!$ CALL ABORT +!!$ STOP +!!$ END IF ! ! intermediate fluxes for positive wind case ! @@ -1064,7 +1071,8 @@ CASE ('OPEN','WALL','NEST') IF(LSOUTH_ll()) THEN PR(:,IS-1,:) = PSRC(:,IS-1,:) * (0.5+SIGN(0.5,PRVCT(:,IS-1,:))) + PSRC(:,IS,:) * (0.5-SIGN(0.5,PRVCT(:,IS-1,:))) ! - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE ZFPOS1(:,IS-1,:) = 0.5 * (3.0*PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:)) ZFPOS2(:,IS-1,:) = 0.5 * (PSRC(:,IS-1, :) + PSRC(:,IS,:)) ZBPOS1(:,IS-1,:) = (PSRC(:,IS-1,:) - TPHALO2%SOUTH(:,:))**2 @@ -1090,7 +1098,8 @@ CASE ('OPEN','WALL','NEST') IF(LNORTH_ll()) THEN PR(:,IN,:) = PSRC(:,IN,:) * (0.5+SIGN(0.5,PRVCT(:,IN,:))) + PSRC(:,IN+1,:) * (0.5-SIGN(0.5,PRVCT(:,IN,:))) ! - ELSEIF (NHALO == 1) THEN +!!$ ELSEIF (NHALO == 1) THEN + ELSE ZFPOS1(:,IN,:) = 0.5 * (3.0*PSRC(:,IN,:) - PSRC(:,IN-1,:)) ZFPOS2(:,IN,:) = 0.5 * (PSRC(:,IN, :) + PSRC(:,IN+1,:)) ZBPOS1(:,IN,:) = (PSRC(:,IN, :) - PSRC(:,IN-1,:))**2 diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90 index 466266f103fba9f5d9183e89636e109f4253eb1b..845038e1964876390439191973152f3bf348ccc2 100644 --- a/src/MNH/advection_uvw.f90 +++ b/src/MNH/advection_uvw.f90 @@ -88,6 +88,7 @@ END MODULE MODI_ADVECTION_UVW !! 25/10/05 (JP Pinty) 4th order scheme !! 04/2011 (V. Masson & C. Lac) splits the routine and adds !! time splitting +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -205,23 +206,23 @@ ZRVT = PVT(:,:,:) * ZMYM_RHODJ ZRWT = PWT(:,:,:) * ZMZM_RHODJ ! NULLIFY(TZFIELD_ll) -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZFIELD_ll, ZRUT) CALL ADD3DFIELD_ll(TZFIELD_ll, ZRVT) CALL UPDATE_HALO_ll(TZFIELD_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELD_ll) -END IF +!!$END IF ! CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,4) ! NULLIFY(TZFIELDS_ll) -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRWCT) CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRUCT) CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRVCT) CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELDS_ll) -END IF +!!$END IF ! !------------------------------------------------------------------------------- ! @@ -241,13 +242,13 @@ CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRWS_OTHER) ZRWS_OTHER(:,:,IKE+1) = 0. NULLIFY(TZFIELDS0_ll) -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRUS_OTHER) CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRVS_OTHER) CALL ADD3DFIELD_ll(TZFIELDS0_ll, ZRWS_OTHER) CALL UPDATE_HALO_ll(TZFIELDS0_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELDS0_ll) -END IF +!!$END IF ! ! ! diff --git a/src/MNH/advection_uvw_cen.f90 b/src/MNH/advection_uvw_cen.f90 index 377da7e5590b8b33a599970ce0ee3180f1084c3b..7b4b7e9fe784ad69890bf133c8a2a5b570dfde1c 100644 --- a/src/MNH/advection_uvw_cen.f90 +++ b/src/MNH/advection_uvw_cen.f90 @@ -86,6 +86,8 @@ END MODULE MODI_ADVECTION_UVW_CEN !! MODIFICATIONS !! ------------- !! Original 01/2013 (from ADVECTION routine) +!! Modif +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test ! !! !------------------------------------------------------------------------------- @@ -196,13 +198,13 @@ END IF ! NULLIFY(TZFIELDS_ll) -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRWCT) CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRUCT) CALL ADD3DFIELD_ll(TZFIELDS_ll, ZRVCT) CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELDS_ll) -END IF +!!$END IF ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/advecuvw_4th.f90 b/src/MNH/advecuvw_4th.f90 index c730b259fd6e52974d0f54cbdf5cb6e02ea6c399..468515c425232c47bac036f26b642220c6ff9968 100644 --- a/src/MNH/advecuvw_4th.f90 +++ b/src/MNH/advecuvw_4th.f90 @@ -103,6 +103,8 @@ END MODULE MODI_ADVECUVW_4TH !! MODIFICATIONS !! ------------- !! Original 25/10/05 +!! Modif +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -164,13 +166,13 @@ IKU=SIZE(XZHAT) ! -------------------------------------------------- ! IGRID = 2 -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN TZHALO2LIST => TPHALO2LIST CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PUT, IGRID, ZMEANX, ZMEANY, & TZHALO2LIST%HALO2 ) -ELSE - CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PUT, IGRID, ZMEANX, ZMEANY) -ENDIF +!!$ELSE +!!$ CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PUT, IGRID, ZMEANX, ZMEANY) +!!$ENDIF ! PRUS(:,:,:) = PRUS(:,:,:) & -DXM( MXF(PRUCT(:,:,:))*ZMEANX(:,:,:) ) @@ -183,13 +185,13 @@ PRUS(:,:,:) = PRUS(:,:,:) & ! ! IGRID = 3 -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN TZHALO2LIST => TZHALO2LIST%NEXT CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PVT, IGRID, ZMEANX, ZMEANY, & TZHALO2LIST%HALO2 ) -ELSE - CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PVT, IGRID, ZMEANX, ZMEANY) -ENDIF +!!$ELSE +!!$ CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PVT, IGRID, ZMEANX, ZMEANY) +!!$ENDIF ! PRVS(:,:,:) = PRVS(:,:,:) & -DXF( MYM(PRUCT(:,:,:))*ZMEANX(:,:,:) ) @@ -203,13 +205,13 @@ PRVS(:,:,:) = PRVS(:,:,:) & ! IGRID = 4 ! -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN TZHALO2LIST => TZHALO2LIST%NEXT CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PWT, IGRID, ZMEANX, ZMEANY, & TZHALO2LIST%HALO2 ) -ELSE - CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PWT, IGRID, ZMEANX, ZMEANY) -ENDIF +!!$ELSE +!!$ CALL ADVEC_4TH_ORDER_ALGO(HLBCX, HLBCY, PWT, IGRID, ZMEANX, ZMEANY) +!!$ENDIF ! PRWS(:,:,:) = PRWS(:,:,:) & -DXF( MZM(1,IKU,1,PRUCT(:,:,:))*ZMEANX(:,:,:) ) diff --git a/src/MNH/advecuvw_rk.f90 b/src/MNH/advecuvw_rk.f90 index c642994a9887af6287925d192d7a3e49d563b06a..df64c1fd13de01d598bf55b41dce36029ef6e15a 100644 --- a/src/MNH/advecuvw_rk.f90 +++ b/src/MNH/advecuvw_rk.f90 @@ -100,6 +100,7 @@ END MODULE MODI_ADVECUVW_RK !! 08/06 (T.Maric) PPM scheme !! 04/2011 (V. Masson & C. Lac) splits the routine and adds !! time splitting +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -259,16 +260,17 @@ ZV = PV ZW = PW ! NULLIFY(TZFIELDMT_ll) -IF( NHALO==1 ) THEN +!!$IF( NHALO==1 ) THEN ! CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZUT) CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZVT) CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZWT) ! INBVAR = 3 - IF( NHALO==1 ) CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3)) +!!$ IF( NHALO==1 ) + CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3)) ! - END IF +!!$ END IF ! ZRUS = 0. ZRVS = 0. @@ -286,10 +288,10 @@ ZRWS = 0. CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZWT, PWT, 'W' ) ZW (:,:,IKE+1 ) = 0. !JUAN - IF ( NHALO == 1 ) THEN +!!$ IF ( NHALO == 1 ) THEN CALL UPDATE_HALO_ll(TZFIELDMT_ll,IINFO_ll) CALL UPDATE_HALO2_ll(TZFIELDMT_ll, TZHALO2MT_ll, IINFO_ll) - ENDIF +!!$ ENDIF !JUAN ! !* 4. Advection with WENO @@ -304,13 +306,13 @@ ZRWS = 0. ! ==> verifier si c'est utile ! ! NULLIFY(TZFIELDS4_ll) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRUS(:,:,:,JS)) CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRVS(:,:,:,JS)) CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRWS(:,:,:,JS)) CALL UPDATE_HALO_ll(TZFIELDS4_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELDS4_ll) - END IF +!!$ END IF IF ( JS /= ISPL ) THEN ! diff --git a/src/MNH/advecuvw_weno_k.f90 b/src/MNH/advecuvw_weno_k.f90 index 88ea0c1fdc74a008b4acaf6dc5685317c718b3ad..edd69512758d444263d3d279dca9102bc6ce2f86 100644 --- a/src/MNH/advecuvw_weno_k.f90 +++ b/src/MNH/advecuvw_weno_k.f90 @@ -45,6 +45,7 @@ END MODULE MODI_ADVECUVW_WENO_K !! !! MODIFICATIONS !! ------------- +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -62,6 +63,8 @@ USE MODI_ADVEC_WENO_K_1_AUX USE MODI_ADVEC_WENO_K_2_AUX USE MODI_ADVEC_WENO_K_3_AUX ! +USE MODD_CONF, ONLY : NHALO +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -134,21 +137,21 @@ CASE(3) ! U component ! ZWORK = MXF(PRUCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_2_UX(HLBCX, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2) - ELSE - CALL ADVEC_WENO_K_2_UX(HLBCX, PUT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_2_UX(HLBCX, PUT, ZWORK, ZMEAN) +!!$ ENDIF PRUS = PRUS - DXM(ZMEAN) ! IF (.NOT.L2D) THEN ZWORK = MXM(PRVCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_2_MY(HLBCY, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2) - ELSE - CALL ADVEC_WENO_K_2_MY(HLBCY, PUT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_2_MY(HLBCY, PUT, ZWORK, ZMEAN) +!!$ ENDIF PRUS = PRUS - DYF(ZMEAN) END IF ! @@ -158,19 +161,19 @@ CASE(3) ! IF (.NOT.L2D) THEN ZWORK = MYM(PRUCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_2_MX(HLBCX, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2) - ELSE - CALL ADVEC_WENO_K_2_MX(HLBCX, PVT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_2_MX(HLBCX, PVT, ZWORK, ZMEAN) +!!$ ENDIF PRVS = PRVS - DXF(ZMEAN) ! ZWORK = MYF(PRVCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2) - ELSE - CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_2_VY(HLBCY, PVT, ZWORK, ZMEAN) +!!$ ENDIF PRVS = PRVS - DYM(ZMEAN) ! PRVS = PRVS - DZF(1,IKU,1,WENO_K_2_MZ(PVT, MYM(PRWCT))) @@ -179,20 +182,20 @@ CASE(3) ! W component ! ZWORK = MZM(1,IKU,1,PRUCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2) - ELSE - CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_2_MX(HLBCX, PWT, ZWORK, ZMEAN) +!!$ ENDIF PRWS = PRWS - DXF(ZMEAN) ! IF (.NOT.L2D) THEN ZWORK = MZM(1,IKU,1,PRVCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2) - ELSE - CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_2_MY(HLBCY, PWT, ZWORK, ZMEAN) +!!$ ENDIF PRWS = PRWS - DYF(ZMEAN) END IF ! @@ -204,20 +207,20 @@ CASE(5) ! U component ! ZWORK = MXF(PRUCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_3_UX(HLBCX, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2) - ELSE - CALL ADVEC_WENO_K_3_UX(HLBCX, PUT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_3_UX(HLBCX, PUT, ZWORK, ZMEAN) +!!$ ENDIF PRUS = PRUS - DXM(ZMEAN) ! IF (.NOT.L2D) THEN ZWORK = MXM(PRVCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN, TZHALO2_UT%HALO2) - ELSE - CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN) +!!$ ENDIF PRUS = PRUS - DYM(ZMEAN) END IF ! @@ -227,19 +230,19 @@ CASE(5) ! IF (.NOT.L2D) THEN ZWORK = MYM(PRUCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_3_MX(HLBCX, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2) - ELSE - CALL ADVEC_WENO_K_3_MX(HLBCX, PVT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_3_MX(HLBCX, PVT, ZWORK, ZMEAN) +!!$ ENDIF PRVS = PRVS - DXF(ZMEAN) ! ZWORK = MYF(PRVCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_3_VY(HLBCY, PVT, ZWORK, ZMEAN, TZHALO2_VT%HALO2) - ELSE - CALL ADVEC_WENO_K_3_VY(HLBCY, PVT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_3_VY(HLBCY, PVT, ZWORK, ZMEAN) +!!$ ENDIF PRVS = PRVS - DYM(ZMEAN) ! PRVS = PRVS - DZF(1,IKU,1,WENO_K_3_MZ(PVT, MYM(PRWCT))) @@ -248,20 +251,20 @@ CASE(5) ! W component ! ZWORK = MZM(1,IKU,1,PRUCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2) - ELSE - CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_3_MX(HLBCX, PWT, ZWORK, ZMEAN) +!!$ ENDIF PRWS = PRWS - DXF(ZMEAN) ! IF (.NOT.L2D) THEN ZWORK = MZM(1,IKU,1,PRVCT) - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN, TZHALO2_WT%HALO2) - ELSE - CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN) - ENDIF +!!$ ELSE +!!$ CALL ADVEC_WENO_K_3_MY(HLBCY, PWT, ZWORK, ZMEAN) +!!$ ENDIF PRWS = PRWS - DYF(ZMEAN) END IF ! diff --git a/src/MNH/contrav.f90 b/src/MNH/contrav.f90 index 94bb5066ebef1f9fc91bbf570f052550e465f79a..bc28c4906bfc8bcaa5271a228b3cdcbf80649897 100644 --- a/src/MNH/contrav.f90 +++ b/src/MNH/contrav.f90 @@ -104,6 +104,7 @@ END MODULE MODI_CONTRAV !! Corrections 17/10/94 (by J.P. Lafore) WC modified for w-advection !! Corrections 19/01/11 (by J.P. Pinty) WC 4th order !! Corrections 28/03/11 (by V.Masson) // of WC 4th order +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !---------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -118,6 +119,8 @@ USE MODE_ll USE MODI_SHUMAN USE MODI_GET_HALO ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 declarations of arguments @@ -160,6 +163,8 @@ REAL :: XPRECISION !* 1. Compute the horizontal contravariant components ! ----------------------------------------------- ! +CALL MPPDB_CHECK3DM("contrav big ::PRU/V/WT",PRECISION,PRUT,PRVT,PRWT) +! IIU= SIZE(PDXX,1) IJU= SIZE(PDXX,2) IKU= SIZE(PDXX,3) @@ -180,7 +185,7 @@ IF (KADV_ORDER == 4 ) THEN CALL ADD3DFIELD_ll(TZFIELD_V, PRVCT) CALL UPDATE_HALO_ll(TZFIELD_U,IINFO_ll) CALL UPDATE_HALO_ll(TZFIELD_V,IINFO_ll) - IF( NHALO==1 ) THEN +!!$ IF( NHALO==1 ) THEN NULLIFY(TZFIELD_DZX) NULLIFY(TZFIELD_DZY) CALL ADD3DFIELD_ll(TZFIELD_DZX, PDZX) @@ -197,7 +202,7 @@ IF (KADV_ORDER == 4 ) THEN CALL UPDATE_HALO2_ll(TZFIELD_V, TZHALO2_V, IINFO_ll) CALL UPDATE_HALO2_ll(TZFIELD_DZX, TZHALO2_DZX, IINFO_ll) CALL UPDATE_HALO2_ll(TZFIELD_DZY, TZHALO2_DZY, IINFO_ll) - END IF +!!$ END IF END IF END IF ! @@ -238,48 +243,48 @@ IF (KADV_ORDER == 2 ) THEN ! ELSE IF (KADV_ORDER == 4 ) THEN ! - IF(NHALO == 1) THEN - IF ( LWEST_ll() .AND. HLBCX(1)/='CYCL' ) THEN - IW=IIB+2 -1 - ELSE - IW=IIB+1 -1 - END IF - IE=IIE-1 - ELSE - IF (LWEST_ll()) THEN - IW=IIB+1 - ELSE - IW=IIB - END IF - IF (LEAST_ll() .AND. HLBCX(2)/='CYCL' ) THEN - IE=IIE-1 - ELSE - IE=IIE - END IF - END IF -! - IF(NHALO == 1) THEN - IF ( LSOUTH_ll() .AND. HLBCY(1)/='CYCL' ) THEN - IS=IJB+2 -1 - ELSE - IS=IJB+1 -1 - END IF - IN=IJE-1 - ELSE - IF (LSOUTH_ll()) THEN - IS=IJB+1 - ELSE - IS=IJB - END IF - IF (LNORTH_ll() .AND. HLBCY(2)/='CYCL' ) THEN - IN=IJE-1 - ELSE - IN=IJE - END IF - END IF -! -! -!* 3.1 interior of the processor subdomain +!!$ IF (NHALO == 1) THEN + IF ( LWEST_ll() .AND. HLBCX(1)/='CYCL' ) THEN + IW=IIB+2 -1 + ELSE + IW=IIB+1 -1 + END IF + IE=IIE-1 +!!$ ELSE +!!$ IF (LWEST_ll()) THEN +!!$ IW=IIB+1 +!!$ ELSE +!!$ IW=IIB +!!$ END IF +!!$ IF (LEAST_ll() .AND. HLBCX(2)/='CYCL' ) THEN +!!$ IE=IIE-1 +!!$ ELSE +!!$ IE=IIE +!!$ END IF +!!$ END IF + ! +!!$ IF(NHALO == 1) THEN + IF ( LSOUTH_ll() .AND. HLBCY(1)/='CYCL' ) THEN + IS=IJB+2 -1 + ELSE + IS=IJB+1 -1 + END IF + IN=IJE-1 +!!$ ELSE +!!$ IF (LSOUTH_ll()) THEN +!!$ IS=IJB+1 +!!$ ELSE +!!$ IS=IJB +!!$ END IF +!!$ IF (LNORTH_ll() .AND. HLBCY(2)/='CYCL' ) THEN +!!$ IN=IJE-1 +!!$ ELSE +!!$ IN=IJE +!!$ END IF +!!$ END IF + ! + ! + !* 3.1 interior of the processor subdomain ! ! Z1(IW:IE,:,IKB:IKE+1)= & @@ -309,7 +314,7 @@ ELSE IF (KADV_ORDER == 4 ) THEN ! !* 3.2 limits of the processor subdomain (inside the whole domain or in cyclic conditions) ! - IF (NHALO==1) THEN +!!$ IF (NHALO==1) THEN Z1(IIE,:,IKB:IKE+1)= & 7.0*( (PRUCT(IIE,:,IKB:IKE+1)+PRUCT(IIE,:,IKB-1:IKE)) & @@ -334,7 +339,7 @@ ELSE IF (KADV_ORDER == 4 ) THEN *PDZY(:,IJE-1,IKB:IKE+1) *0.5 & +(TZHALO2_V%HALO2%NORTH(:,IKB:IKE+1)+TZHALO2_V%HALO2%NORTH(:,IKB-1:IKE)) & *TZHALO2_DZY%HALO2%NORTH(:,IKB:IKE+1) *0.5)/12.0 - END IF +!!$ END IF ! !* 3.3 non-CYCLIC CASE IN THE X DIRECTION: 2nd order case ! @@ -381,6 +386,10 @@ ELSE IF (KADV_ORDER == 4 ) THEN !* 3.5 Vertical contyravariant wind ! ! +!!$ CALL GET_HALO(Z1) +!!$ CALL GET_HALO(Z2) +!!$ +!!$ CALL MPPDB_CHECK3DM("contrav ::Z1/Z2/ PDZZ",PRECISION,Z1,Z2,PDZZ) PRWCT=0. PRWCT(IIB:IIE,IJB:IJE,IKB:IKE+1) = & ( PRWT(IIB:IIE,IJB:IJE,IKB:IKE+1) & @@ -395,15 +404,16 @@ PRWCT(:,:,1) = - PRWCT(:,:,3) ! Mirror hypothesis IF (KADV_ORDER == 4 ) THEN CALL CLEANLIST_ll(TZFIELD_U) CALL CLEANLIST_ll(TZFIELD_V) - IF (NHALO==1) THEN +!!$ IF (NHALO==1) THEN CALL CLEANLIST_ll(TZFIELD_DZX) CALL CLEANLIST_ll(TZFIELD_DZY) CALL DEL_HALO2_ll(TZHALO2_U) CALL DEL_HALO2_ll(TZHALO2_V) CALL DEL_HALO2_ll(TZHALO2_DZX) CALL DEL_HALO2_ll(TZHALO2_DZY) - END IF +!!$ END IF END IF !----------------------------------------------------------------------- +CALL MPPDB_CHECK3DM("contrav end ::PRU/V/WCT",PRECISION,PRUCT,PRVCT,PRWCT) ! END SUBROUTINE CONTRAV diff --git a/src/MNH/fast_terms.f90 b/src/MNH/fast_terms.f90 index 5b319413d9b7df3d0fad7a19f4dbafc3440c1160..d13b5e8eb025b0f953eda59e26a915646f75206e 100644 --- a/src/MNH/fast_terms.f90 +++ b/src/MNH/fast_terms.f90 @@ -157,6 +157,7 @@ END MODULE MODI_FAST_TERMS !! November 6, 2002 (S. Malardel,J.Pergaud) Cloud Fract + Rc of !! Mass flux convection !! Scheme +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -248,10 +249,11 @@ CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! ------------- ! CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP) -IIB = 1 + JPHEXT -IIE = SIZE(PRHODJ,1) - JPHEXT -IJB = 1 + JPHEXT -IJE = SIZE(PRHODJ,2) - JPHEXT +!!$IIB = 1 + JPHEXT +!!$IIE = SIZE(PRHODJ,1) - JPHEXT +!!$IJB = 1 + JPHEXT +!!$IJE = SIZE(PRHODJ,2) - JPHEXT +CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IPLAN = (SIZE(PRHODJ,1)-2*JPHEXT)*(SIZE(PRHODJ,2)-2*JPHEXT) IKB = 1 + JPVEXT IKE = SIZE(PRHODJ,3) - JPVEXT diff --git a/src/MNH/mnhget_surf_paramn.f90 b/src/MNH/mnhget_surf_paramn.f90 index d01981526bcb6be6bf9573ea78a2b83150283a3d..a482baf01a6acfce2382e4c49b72ac2dad7389b1 100644 --- a/src/MNH/mnhget_surf_paramn.f90 +++ b/src/MNH/mnhget_surf_paramn.f90 @@ -72,7 +72,9 @@ END MODULE MODI_MNHGET_SURF_PARAM_n !! ------------- !! Original 01/2003 !! 10/09 (P. Aumond) Add possibility to get H_tree and Leaf area index - +!! Modif +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test +!! & correction of index linearisation for NHALO<>1 !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -242,7 +244,7 @@ POUT=XUNDEF ! DO JJ=IJB,IJE DO JI=IIB,IIE - POUT(JI,JJ) = PFIELD(JI-1+NHALO+(JJ-1+NHALO-1)*(IIE-IIB+1+2*NHALO)) + POUT(JI,JJ) = PFIELD( JI-IIB+1 + NHALO + (JJ-IJB+NHALO)*(IIE-IIB+1+2*NHALO)) END DO END DO ! diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index 1337404880a189ffb79ca096ca3fa411d22e37be..5050904daf0ab7143d20673f1eba41bed15154ee 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -225,6 +225,7 @@ END MODULE MODI_MODEL_n !! July 2010 (M. Leriche) add ice phase chemical species !! April 2011 (C.Lac) : Remove instant M !! April 2011 (C.Lac, V.Masson) : Time splitting for advection +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -372,6 +373,8 @@ USE MODE_UTIL #endif USE MODI_GET_HALO ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 declarations of arguments @@ -570,7 +573,8 @@ IF (KTCOUNT == 1) THEN ENDDO IF (SIZE(XSRCT,1) /= 0) CALL ADD3DFIELD_ll(TZFIELDS_ll, XSRCT) ! - IF ((LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV) .AND. NHALO==1 ) THEN +!!$ IF ((LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV) .AND. NHALO==1 ) THEN + IF ((LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV) ) THEN ! ! b) LS fields ! @@ -600,12 +604,16 @@ IF (KTCOUNT == 1) THEN ! INBVAR = 4+NRR+NSV IF (SIZE(XRTKES,1) /= 0) INBVAR=INBVAR+1 - IF( NHALO==1 ) CALL INIT_HALO2_ll(TZHALO2T_ll,INBVAR,IIU,IJU,IKU) - IF( NHALO==1 ) CALL INIT_HALO2_ll(TZLSHALO2_ll,4+MIN(1,NRR),IIU,IJU,IKU) +!!$ IF( NHALO==1 ) + CALL INIT_HALO2_ll(TZHALO2T_ll,INBVAR,IIU,IJU,IKU) +!!$ IF( NHALO==1 ) + CALL INIT_HALO2_ll(TZLSHALO2_ll,4+MIN(1,NRR),IIU,IJU,IKU) ! !* 1.6 Initialise the 2nd layer of the halo of the LS fields ! - IF ( LSTEADYLS .AND. NHALO==1 ) CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll) +!!$ IF ( LSTEADYLS .AND. NHALO==1 ) CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll) + IF ( LSTEADYLS ) CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll) + END IF ! ! @@ -1133,10 +1141,10 @@ XTIME_LES_BU_PROCESS = 0. ! IF ( LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV ) THEN ! - IF( NHALO==1 ) THEN +!!$ IF( NHALO==1 ) THEN CALL UPDATE_HALO2_ll(TZFIELDT_ll, TZHALO2T_ll, IINFO_ll) IF ( .NOT. LSTEADYLS) CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll) - ENDIF +!!$ ENDIF CALL NUM_DIFF ( CLBCX, CLBCY, NRR, NSV, & XDK2U, XDK4U, XDK2TH, XDK4TH, XDK2SV, XDK4SV, IMI, & XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, & @@ -1456,7 +1464,8 @@ XTIME_BU_PROCESS = 0. XTIME_LES_BU_PROCESS = 0. ! IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN - IF (NHALO==1 .AND. CUVW_ADV_SCHEME=='CEN4TH') THEN +!!$ IF (NHALO==1 .AND. CUVW_ADV_SCHEME=='CEN4TH') THEN + IF (CUVW_ADV_SCHEME=='CEN4TH') THEN NULLIFY(TZFIELDC_ll) NULLIFY(TZHALO2C_ll) CALL ADD3DFIELD_ll(TZFIELDC_ll, XUT) @@ -1466,6 +1475,7 @@ IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN CALL UPDATE_HALO_ll(TZFIELDC_ll,IINFO_ll) CALL UPDATE_HALO2_ll(TZFIELDC_ll, TZHALO2C_ll, IINFO_ll) END IF + CALL MPPDB_CHECK3D(XRUS,"modeln:before adv_uvw_cen:XRUS",PRECISION) CALL ADVECTION_UVW_CEN(CUVW_ADV_SCHEME, & CLBCX, CLBCY, & XTSTEP, KTCOUNT, & @@ -1474,7 +1484,8 @@ IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY, & XRUS,XRVS, XRWS, & TZHALO2C_ll ) - IF (NHALO==1 .AND. CUVW_ADV_SCHEME=='CEN4TH') THEN +!!$ IF (NHALO==1 .AND. CUVW_ADV_SCHEME=='CEN4TH') THEN + IF (CUVW_ADV_SCHEME=='CEN4TH') THEN CALL CLEANLIST_ll(TZFIELDC_ll) NULLIFY(TZFIELDC_ll) CALL DEL_HALO2_ll(TZHALO2C_ll) @@ -1516,6 +1527,7 @@ ZRUS=XRUS ZRVS=XRVS ZRWS=XRWS ! + CALL MPPDB_CHECK3D(XRUS,"modeln:before rad_bound:XRUS",PRECISION) CALL RAD_BOUND (CLBCX,CLBCY,CTURB,XRIMKMAX, & XTSTEP, & XDXHAT, XDYHAT, XZHAT, & @@ -1547,6 +1559,7 @@ IF(.NOT. L1D) THEN XRVS_PRES = XRVS XRWS_PRES = XRWS ! + CALL MPPDB_CHECK3D(XRUS,"modeln:before pressurez:XRUS",PRECISION) CALL PRESSUREZ( CLUOUT, & CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,KTCOUNT, XRELAX,IMI, & XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY,XDXHATM,XDYHATM,XRHOM, & diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90 index 448be8fc044b85b66ad26344234a5258648fce87..85877225729cd42c389a7cf2eae84cab7cd823a7 100644 --- a/src/MNH/phys_paramn.f90 +++ b/src/MNH/phys_paramn.f90 @@ -219,6 +219,7 @@ END MODULE MODI_PHYS_PARAM_n !! 01/2014 (C.Lac) correction for the nesting of 2D surface !! fields if the number of the son model does not !! follow the number of the dad model +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1244,7 +1245,7 @@ IF ( CTURB == 'TKEL' ) THEN !* 6.1 complete surface fluxe fields on the border ! - IF(NHALO == 1) THEN +!!$ IF(NHALO == 1) THEN CALL ADD2DFIELD_ll(TZFIELDS_ll,ZSFTH) CALL ADD2DFIELD_ll(TZFIELDS_ll,ZSFRV) CALL ADD2DFIELD_ll(TZFIELDS_ll,ZSFU) @@ -1257,7 +1258,7 @@ IF ( CTURB == 'TKEL' ) THEN CALL ADD2DFIELD_ll(TZFIELDS_ll,ZSFCO2) CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELDS_ll) - END IF +!!$ END IF ! IF ( CLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN ZSFTH(IIB-1,:)=ZSFTH(IIB,:) diff --git a/src/MNH/ppm.f90 b/src/MNH/ppm.f90 index 917c34bdf475e0007d30e9ed5bc3f22566bc3c8c..fabe9abd4b3db3974b616215681d5bebef2ee4fe 100644 --- a/src/MNH/ppm.f90 +++ b/src/MNH/ppm.f90 @@ -188,6 +188,7 @@ END MODULE MODI_PPM !! ------------- !! !! 11.5.2006. T. Maric - original version +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -252,15 +253,15 @@ IJN=IJE ! !* initialise & update halo & halo2 for PSRC ! -IF(NHALO /= 1) THEN - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' - WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP -ENDIF +!!$IF(NHALO /= 1) THEN +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' +!!$ WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' +!!$ !callabortstop +!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) +!!$ CALL ABORT +!!$ STOP +!!$ENDIF CALL GET_HALO(PSRC) PR=PSRC ZQL=PSRC @@ -635,6 +636,7 @@ END FUNCTION PPM_01_X !! ------------- !! !! 11.5.2006. T. Maric - original version +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -694,15 +696,15 @@ INTEGER :: IIW,IIA CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) IIW=IIB IIA=IIE -IF(NHALO /= 1) THEN - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' - WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP -ENDIF +!!$IF(NHALO /= 1) THEN +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' +!!$ WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' +!!$ !callabortstop +!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) +!!$ CALL ABORT +!!$ STOP +!!$ENDIF CALL GET_HALO(PSRC) ! @@ -1286,6 +1288,7 @@ END FUNCTION PPM_01_Z !! ------------- !! !! 20.6.2006. T. Maric - original version +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -1348,15 +1351,15 @@ IJN=IJE ! !* initialise & update halo & halo2 for PSRC ! -IF(NHALO /= 1) THEN - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) - WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' - WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP -ENDIF +!!$IF(NHALO /= 1) THEN +!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) +!!$ WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' +!!$ WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' +!!$ !callabortstop +!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) +!!$ CALL ABORT +!!$ STOP +!!$ENDIF ! CALL GET_HALO2(PSRC,TZ_PSRC_HALO2_ll) ZPHAT=PSRC diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index 951c7f53bda34d4a502cee2deb02d1eda402a485..22aaa363e3c459b46c4dbe994be1fce038b94f26 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.f90 @@ -457,6 +457,8 @@ USE MODI_READ_ALL_NAMELISTS USE MODI_GOTO_SURFEX USE MODI_DEALLOC_SURFEX ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declaration of local variables @@ -529,6 +531,8 @@ TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL() ! list of fields to exchange !------------------------------------------------------------------------------- ! +CALL MPPDB_INIT() +! CALL GOTO_MODEL(1) ! ZDIAG = 0. @@ -1194,6 +1198,9 @@ END IF CALL CLOSE_ll(CLUOUT0, IOSTAT=IRESP) CALL FMCLOS_ll(CINIFILE,'KEEP',CLUOUT0,IRESP) ! + CALL MPPDB_BARRIER() + CALL MPPDB_BARRIER() + ! CALL END_PARA_ll(IINFO_ll) !------------------------------------------------------------------------------- diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index e31bc0f4013420593d9aa662516f0a303c3d3ec8..1f22ba9f1a27de91b53db24253d9f90bd645126f 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -1149,6 +1149,7 @@ CONTAINS !! MODIFICATIONS !! ------------- !! Original 24/06/99 +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! !------------------------------------------------------------------------------- ! @@ -1179,12 +1180,12 @@ CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) ! ! 2 Update halo if necessary ! -IF (NHALO == 1) THEN +!!$IF (NHALO == 1) THEN CALL ADD2DFIELD_ll(TZFIELDS_ll,PUSLOPE) CALL ADD2DFIELD_ll(TZFIELDS_ll,PVSLOPE) CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll) CALL CLEANLIST_ll(TZFIELDS_ll) -ENDIF +!!$ENDIF ! ! 3 Boundary conditions for non cyclic case ! diff --git a/src/MNH/update_metrics.f90 b/src/MNH/update_metrics.f90 index de7473f693a0a15d02622df892e47c27da08252d..e4a18893ae783325bbd4a8a42f6ac11d480d3c72 100644 --- a/src/MNH/update_metrics.f90 +++ b/src/MNH/update_metrics.f90 @@ -60,6 +60,7 @@ END MODULE MODI_UPDATE_METRICS !! MODIFICATIONS !! ------------- !! Original april 2006 +!! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -108,7 +109,7 @@ NULLIFY(TZMETRICS_ll) ! ------------- ! ! -IF(NHALO == 1) THEN +!!$IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZMETRICS_ll,PDXX) CALL ADD3DFIELD_ll(TZMETRICS_ll,PDYY) CALL ADD3DFIELD_ll(TZMETRICS_ll,PDZX) @@ -116,7 +117,7 @@ IF(NHALO == 1) THEN CALL ADD3DFIELD_ll(TZMETRICS_ll,PDZZ) CALL UPDATE_HALO_ll(TZMETRICS_ll,IINFO_ll) CALL CLEANLIST_ll(TZMETRICS_ll) -END IF +!!$END IF ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index a8ed3b7cea3869fb772c703f859401773caef454..dfe2e2435395bf030573934bd62da812a848ee0a 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -134,6 +134,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG !! G.Tanguy/ JP Pinty/ JP Chabureau 18/05/2011 : add lidar simulator !! S.Bielli 12/2012 : add latitude and longitude !! F. Duffourg 02/2013 : add new fields +!! J.Escobar 21/03/2013: for HALOK get correctly local array dim/bound !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -306,12 +307,14 @@ REAL, DIMENSION(SIZE(XZZ,1),SIZE(XZZ,2),SIZE(XZZ,3)) :: ZDELTAZ ! interval (m) b ! !* 0. ARRAYS BOUNDS INITIALIZATION ! -IIB=1+JPHEXT -IJB=1+JPHEXT -IIU=NIMAX+2*JPHEXT -IJU=NJMAX+2*JPHEXT -IIE=IIU-JPHEXT -IJE=IJU-JPHEXT +CALL GET_DIM_EXT_ll ('B',IIU,IJU) +CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) +!!$IIB=1+JPHEXT +!!$IJB=1+JPHEXT +!!$IIU=NIMAX+2*JPHEXT +!!$IJU=NJMAX+2*JPHEXT +!!$IIE=IIU-JPHEXT +!!$IJE=IJU-JPHEXT IKU=NKMAX+2*JPVEXT IKB=1+JPVEXT IKE=IKU-JPVEXT