diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90 index 9451c5fbf499ed7621af282cf45f439484ea4a35..f6e1f9bfe75b25a0b8987f9c2fafec36c1b84c95 100644 --- a/src/MNH/advection_uvw.f90 +++ b/src/MNH/advection_uvw.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -107,7 +107,7 @@ use mode_budget, only: Budget_store_init, Budget_store_end USE MODE_ll #ifdef MNH_OPENACC USE MODE_DEVICE -USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D, MNH_GET_ZT4D , MNH_REL_ZT4D +USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_ALLOCATE_ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D, MNH_GET_ZT4D , MNH_REL_ZT4D #endif use mode_mppdb @@ -198,11 +198,18 @@ INTEGER :: ISPL, IZUT, IZVT, IZWT, IZ1, IZ2 INTEGER :: IZRUSB, IZRUSE, IZRVSB, IZRVSE, IZRWSB, IZRWSE, IIBMS, IIBME #endif ! +INTEGER :: IIU,IJU,IKU ! !------------------------------------------------------------------------------- ! !* 0. INITIALIZATION ! -------------- +! +! +IIU = SIZE(PUT,1) +IJU = SIZE(PUT,2) +IKU = SIZE(PUT,3) +! !$acc data present( PUT, PVT, PWT, PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY, PRUS, PRVS, PRWS, PRUS_PRES, PRVS_PRES, PRWS_PRES ) IF (MPPDB_INITIALIZED) THEN @@ -225,24 +232,24 @@ IF (MPPDB_INITIALIZED) THEN CALL MPPDB_CHECK(PRWS,"ADVECTION_UVW beg:PRWS") END IF -ALLOCATE( ZRUT ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRVT ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRWT ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRUCT ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRVCT ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRWCT ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZU ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZV ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZW ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRUS_OTHER( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRVS_OTHER( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRWS_OTHER( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRUS_ADV ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRVS_ADV ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZRWS_ADV ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZMXM_RHODJ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZMYM_RHODJ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) -ALLOCATE( ZMZM_RHODJ( SIZE(PUT,1), SIZE(PUT,2), SIZE(PUT,3) ) ) +ALLOCATE( ZRUT ( IIU,IJU,IKU ) ) +ALLOCATE( ZRVT ( IIU,IJU,IKU ) ) +ALLOCATE( ZRWT ( IIU,IJU,IKU ) ) +ALLOCATE( ZRUCT ( IIU,IJU,IKU ) ) +ALLOCATE( ZRVCT ( IIU,IJU,IKU ) ) +ALLOCATE( ZRWCT ( IIU,IJU,IKU ) ) +ALLOCATE( ZU ( IIU,IJU,IKU ) ) +ALLOCATE( ZV ( IIU,IJU,IKU ) ) +ALLOCATE( ZW ( IIU,IJU,IKU ) ) +ALLOCATE( ZRUS_OTHER( IIU,IJU,IKU ) ) +ALLOCATE( ZRVS_OTHER( IIU,IJU,IKU ) ) +ALLOCATE( ZRWS_OTHER( IIU,IJU,IKU ) ) +ALLOCATE( ZRUS_ADV ( IIU,IJU,IKU ) ) +ALLOCATE( ZRVS_ADV ( IIU,IJU,IKU ) ) +ALLOCATE( ZRWS_ADV ( IIU,IJU,IKU ) ) +ALLOCATE( ZMXM_RHODJ( IIU,IJU,IKU ) ) +ALLOCATE( ZMYM_RHODJ( IIU,IJU,IKU ) ) +ALLOCATE( ZMZM_RHODJ( IIU,IJU,IKU ) ) !$acc data create( zrut, zrvt, zrwt, zruct, zrvct, zrwct, zu, zv, zw, & !$acc & zrus_other, zrvs_other, zrws_other, zrus_adv, zrvs_adv, zrws_adv, & diff --git a/src/MNH/advecuvw_rk.f90 b/src/MNH/advecuvw_rk.f90 index 6ef1387325652e0bcc6d914e19ecfa783a0d4156..49c53ed6b5dc65d5ae9f7b74990821e15a0e9ed4 100644 --- a/src/MNH/advecuvw_rk.f90 +++ b/src/MNH/advecuvw_rk.f90 @@ -254,7 +254,9 @@ IF (MPPDB_INITIALIZED) THEN CALL MPPDB_CHECK(PRWS_OTHER,"ADVECUVW_RK beg:PRWS_OTHER") END IF +#ifdef MNH_OPENACC if ( LIBM ) call Print_msg( NVERB_FATAL, 'GEN', 'ADVECUVW_RK', 'OpenACC: LIBM=T not yet implemented' ) +#endif ! !* 0. INITIALIZATION ! --------------------- @@ -531,11 +533,10 @@ RKLOOP: DO JS = 1, ISPL WHERE(XIBM_LS(:,:,:,4).GT.-XIBM_EPSI) ZRWS(:,:,:,JS)=ZIBM(:,:,:,3) ZIBM(:,:,:,:)=1. ENDIF -! - NULLIFY(TZFIELDS4_ll) ! write ( ynum, '( I3 )' ) js #ifndef MNH_OPENACC + NULLIFY(TZFIELDS4_ll) CALL ADD3DFIELD_ll( TZFIELDS4_ll, ZRUS(:,:,:,JS), 'ADVECUVW_RK::ZRUS(:,:,:,'//trim( adjustl( ynum ) )//')' ) CALL ADD3DFIELD_ll( TZFIELDS4_ll, ZRVS(:,:,:,JS), 'ADVECUVW_RK::ZRVS(:,:,:,'//trim( adjustl( ynum ) )//')' ) CALL ADD3DFIELD_ll( TZFIELDS4_ll, ZRWS(:,:,:,JS), 'ADVECUVW_RK::ZRWS(:,:,:,'//trim( adjustl( ynum ) )//')' ) @@ -625,7 +626,7 @@ CALL MNH_REL_ZT3D(IZMEAN,IZWORK) #endif ! CALL CLEANLIST_ll(TZFIELDMT_ll) -CALL DEL_HALO2_ll(TZHALO2MT_ll) +CALL DEL_HALO2_ll(TZHALO2MT_ll) !$acc update self(PRUS_ADV,PRVS_ADV,PRWS_ADV) !------------------------------------------------------------------------------- ! diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90 index 1f597f1046fe54250debe75b86c1098f011be758..e9d0240e72efbe4f907eb6373c4573ad8cb16340 100644 --- a/src/MNH/pressurez.f90 +++ b/src/MNH/pressurez.f90 @@ -392,7 +392,7 @@ ILUOUT = TLUOUT%NLU ! CALL GET_GLOBALDIMS_ll (IIMAX_ll,IJMAX_ll) IF ( ( MIN(IIMAX_ll,IJMAX_ll) < NPROC ) .AND. ( HPRESOPT /= 'ZRESI' ) ) THEN - WRITE(UNIT=ILUOUT,FMT=*) 'ERROR IN PRESSUREZ:: YOU WANT TO USE TO MANY PROCESSOR WITHOUT CPRESOPT="ZRESI" ' + WRITE(UNIT=ILUOUT,FMT=*) 'ERROR IN PRESSUREZ:: YOU WANT TO USE TO MANY PROCESSES WITHOUT CPRESOPT="ZRESI" ' WRITE(UNIT=ILUOUT,FMT=*) 'MIN(IIMAX_ll,IJMAX_ll)=',MIN(IIMAX_ll,IJMAX_ll),' < NPROC =', NPROC WRITE(UNIT=ILUOUT,FMT=*) 'YOU HAVE TO SET CPRESOPT="ZRESI => JOB ABORTED ' CALL PRINT_MSG(NVERB_FATAL,'GEN','PRESSUREZ','') diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index ff8b8437d750c364d711bea14db6e906e96a300f..0eeef1423af41e5355ef41beac926864578654b7 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -2146,7 +2146,7 @@ IF (ODZ) THEN PLM(:,:,KKA) = PZZ(:,:,KKB) - PZZ(:,:,KKA) !$acc end kernels IF ( HTURBDIM /= '1DIM' ) THEN ! 3D turbulence scheme - IF ( L2D) THEN + IF ( L2D ) THEN #ifndef MNH_OPENACC PLM(:,:,:) = SQRT( PLM(:,:,:)*MXF(PDXX(:,:,:)) ) #else