Skip to content
Snippets Groups Projects
Commit 70b71bef authored by ESCOBAR Juan's avatar ESCOBAR Juan
Browse files

Juan 10/03/2022:ZSOLVER/modeln.f90, Cray bug bypass + add mppdb_check & for NO...

Juan 10/03/2022:ZSOLVER/modeln.f90, Cray bug bypass + add mppdb_check & for NO MANAGED kernels/update on RUS/V/W/PABST
parent ec3e5174
Branches
Tags
1 merge request!4Jean Wurtz 30/04/2025 : Bugfixes mainly for TEB and for simple precision
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment