diff --git a/src/ZSOLVER/modeln.f90 b/src/ZSOLVER/modeln.f90 index 083d1adad140066fc63d2894a99adda19ffa48e4..71f868206338e1a4e4432f62216dc875e1628f28 100644 --- a/src/ZSOLVER/modeln.f90 +++ b/src/ZSOLVER/modeln.f90 @@ -362,7 +362,10 @@ USE MODD_TIME_n USE MODD_TIMEZ USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD,CTURBLEN_CLOUD,XCEI USE MODD_TURB_n -USE MODD_VISCOSITY +#ifdef MNH_COMPILER_CCE +USE MODD_TURB_n, ONLY: VSIGQSAT_MODD => VSIGQSAT +#endif + USE MODD_VISCOSITY ! use mode_budget, only: Budget_store_init, Budget_store_end USE MODE_DATETIME @@ -559,6 +562,12 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZWETDEPAER ! TYPE(TFILEDATA),POINTER :: TZBAKFILE, TZOUTFILE ! TYPE(TFILEDATA),SAVE :: TZDIACFILE +! +#ifdef MNH_COMPILER_CCE +!Bypass cray bug with scalar pointer +REAL :: VSIGQSAT +VSIGQSAT = VSIGQSAT_MODD +#endif !------------------------------------------------------------------------------- ! TZBAKFILE=> NULL() @@ -1614,15 +1623,15 @@ XTIME_LES_BU_PROCESS = 0. ! !$acc update device(XRTHS) ! +!XRWS_PRES copy and not copyout (hidden in UPDATE_HALO) !$acc data create (XUT, XVT, XWT) & -!$acc & copyin (XTHT, XPABST, XRT, XSVT, XRTHS_CLD, XRRS_CLD, XTHVREF) & -!$acc & copy (XRRS, XRUS, XRVS, XRWS) & -!$acc & copy (XRWS_PRES) & !XRWS_PRES copy and not copyout (hidden in UPDATE_HALO) -!$acc & present(XDXX, XDYY, XDZZ, XDZX, XDZY, XRHODJ) +!$acc & copyin (XTHT, XRT, XSVT, XRTHS_CLD, XRRS_CLD, XTHVREF) & +!$acc & copy (XRRS, XRWS_PRES) & +!$acc & present(XDXX, XDYY, XDZZ, XDZX, XDZY, XRHODJ, XRUS, XRVS, XRWS ) ! !$acc update device(XUT, XVT, XWT, XRHODJ) - -! +!$acc update device(XRUS, XRVS, XRWS) +!$acc update device(XPABST) ! !$acc data copyin (XTKET, XRSVS_CLD) & !$acc & copy (XRTKES, XRSVS) & @@ -1751,16 +1760,24 @@ END IF ZTIME1 = ZTIME2 ! !$acc update self( XRUS, XRVS, XRWS ) +!$acc kernels ZRUS=XRUS ZRVS=XRVS ZRWS=XRWS - +!$acc end kernels +! if ( .not. l1d ) then if ( lbudget_u ) call Budget_store_init( tbudgets(NBUDGET_U), 'PRES', xrus(:, :, :) ) if ( lbudget_v ) call Budget_store_init( tbudgets(NBUDGET_V), 'PRES', xrvs(:, :, :) ) if ( lbudget_w ) call Budget_store_init( tbudgets(NBUDGET_W), 'PRES', xrws(:, :, :) ) end if - +! +CALL MPPDB_CHECK3DM("before RAD_BOUND : other var",PRECISION,XUT,XVT,XRHODJ,XTKET) +CALL MPPDB_CHECKLB(XLBXUM,"modeln XLBXUM",PRECISION,'LBXU',NRIMX) +CALL MPPDB_CHECKLB(XLBYVM,"modeln XLBYVM",PRECISION,'LBYV',NRIMY) +CALL MPPDB_CHECKLB(XLBXUS,"modeln XLBXUS",PRECISION,'LBXU',NRIMX) +CALL MPPDB_CHECKLB(XLBYVS,"modeln XLBYVS",PRECISION,'LBYV',NRIMY) +! CALL RAD_BOUND (CLBCX,CLBCY,CTURB,XCARPKMAX, & XTSTEP, & XDXHAT, XDYHAT, XZHAT, & @@ -1770,9 +1787,11 @@ CALL RAD_BOUND (CLBCX,CLBCY,CTURB,XCARPKMAX, & XCPHASE, XCPHASE_PBL, XRHODJ, & XTKET,XRUS, XRVS, XRWS ) !$acc update device( XRUS, XRVS, XRWS ) +!$acc kernels ZRUS=XRUS-ZRUS ZRVS=XRVS-ZRVS ZRWS=XRWS-ZRWS +!$acc end kernels ! CALL SECOND_MNH2(ZTIME2) ! @@ -1787,15 +1806,19 @@ ZTIME1 = ZTIME2 XTIME_BU_PROCESS = 0. XTIME_LES_BU_PROCESS = 0. ! -ZPABST = XPABST +!$acc kernels +ZPABST(:,:,:) = XPABST(:,:,:) +!$acc end kernels ! IF(.NOT. L1D) THEN ! - XRUS_PRES = XRUS - XRVS_PRES = XRVS - XRWS_PRES = XRWS -! - CALL PRESSUREZ( CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,KTCOUNT, XRELAX,IMI, & + !$acc kernels + XRUS_PRES = XRUS + XRVS_PRES = XRVS + XRWS_PRES = XRWS + !$acc end kernels + ! + CALL PRESSUREZ( CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,KTCOUNT, XRELAX,IMI, & XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY,XDXHATM,XDYHATM,XRHOM, & XAF,XBFY,XCF,XTRIGSX,XTRIGSY,NIFAXX,NIFAXY, & NRR,NRRL,NRRI,XDRYMASST,XREFMASS,XMASS_O_PHI0, & @@ -1806,10 +1829,18 @@ IF(.NOT. L1D) THEN XAF_ZS,XBF_ZS,XCF_ZS, & XDXATH_ZS,XDYATH_ZS,XRHO_ZS, & XA_K,XB_K,XC_K,XD_K) !JUAN FULL ZSOLVER -! - XRUS_PRES = XRUS - XRUS_PRES + ZRUS - XRVS_PRES = XRVS - XRVS_PRES + ZRVS - XRWS_PRES = XRWS - XRWS_PRES + ZRWS + ! + !$acc update host(XPABST) + !$acc kernels + XRUS_PRES = XRUS - XRUS_PRES + ZRUS + XRVS_PRES = XRVS - XRVS_PRES + ZRVS + XRWS_PRES = XRWS - XRWS_PRES + ZRWS + !$acc end kernels + !$acc update host(XRUS,XRVS,XRWS) + CALL MPPDB_CHECK3DM("after pressurez:XRU/V/WS",PRECISION,XRUS,XRVS,XRWS) + CALL MPPDB_CHECK3DM("after pressurez:ZRU/V/WS",PRECISION,ZRUS,ZRVS,ZRWS) + CALL MPPDB_CHECK3DM("after pressurez:XRU/V/WS_PRES",PRECISION,& + XRUS_PRES,XRVS_PRES,XRWS_PRES ) ! END IF ! @@ -2399,7 +2430,7 @@ IF (OEXIT) THEN END IF #ifndef MNH_OPENACC -IF ( ALLOCATED( ZSEA ) ) DEALLOCATE( ZSEA ) +IF ( ASSOCIATED( ZSEA ) ) DEALLOCATE( ZSEA ) DEALLOCATE( ZRWS ) DEALLOCATE( ZPABST ) #else