diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index 8ac7c1bb954f625b6b2eda2be6b94017c308c4d8..b2f17b80877353258360b2b7cd19aad84379b0a6 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -1894,7 +1894,8 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) - ZDRVSATDT(:,:,:) & ) #else -DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU) +!$acc_nv loop independent collapse(3) +DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) PATHETA(JI,JJ,JK)= PAMOIST(JI,JJ,JK) * PEXN(JI,JJ,JK) * & ( ( ZRVSAT(JI,JJ,JK) - PRT(JI,JJ,JK,1) ) * PLOCPEXN(JI,JJ,JK) / & ( 1. + ZDRVSATDT(JI,JJ,JK) * PLOCPEXN(JI,JJ,JK) ) * & @@ -1908,13 +1909,16 @@ DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU) ) ENDDO #endif +!$acc end kernels !* 1.7 Lv/Cph/Exner at t-1 ! - PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:) +!$acc kernels present(PLOCPEXN) +!$acc_nv loop independent collapse(3) +DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + PLOCPEXN(JI,JJ,JK) = PLOCPEXN(JI,JJ,JK) / PEXN(JI,JJ,JK) +END DO !$acc end kernels - - if ( mppdb_initialized ) then !Check all out arrays call Mppdb_check( plocpexn, "Compute_function_thermo end:plocpexn" ) @@ -2038,7 +2042,7 @@ ELSE !* 3.1 BL89 mixing length ! ------------------ CASE ('BL89','RM17') -!$acc kernels +!$acc kernels present(ZSHEAR) ZSHEAR(:, :, : ) = 0. !$acc end kernels CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD) diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90 index 30c95d75eb99c3235eef0d5e00beccdd907d07ad..b4a4fff2c118bea73d1f0c2b74556ab5007ce139 100644 --- a/src/ZSOLVER/turb.f90 +++ b/src/ZSOLVER/turb.f90 @@ -1875,7 +1875,7 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) END DO #endif !$acc end kernels -!$acc kernels present(ZRVSAT,ZDRVSATDT) +!$acc kernels present_cr(ZRVSAT,ZDRVSATDT) ! !* 1.3 saturation mixing ratio at t ! @@ -1906,7 +1906,8 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) - ZDRVSATDT(:,:,:) & ) #else -DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU) +!$acc_nv loop independent collapse(3) +DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) PATHETA(JI,JJ,JK)= PAMOIST(JI,JJ,JK) * PEXN(JI,JJ,JK) * & ( ( ZRVSAT(JI,JJ,JK) - PRT(JI,JJ,JK,1) ) * PLOCPEXN(JI,JJ,JK) / & ( 1. + ZDRVSATDT(JI,JJ,JK) * PLOCPEXN(JI,JJ,JK) ) * & @@ -1920,13 +1921,16 @@ DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU) ) ENDDO #endif +!$acc end kernels !* 1.7 Lv/Cph/Exner at t-1 ! - PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:) +!$acc kernels present(PLOCPEXN) +!$acc_nv loop independent collapse(3) +DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + PLOCPEXN(JI,JJ,JK) = PLOCPEXN(JI,JJ,JK) / PEXN(JI,JJ,JK) +END DO !$acc end kernels - - if ( mppdb_initialized ) then !Check all out arrays call Mppdb_check( plocpexn, "Compute_function_thermo end:plocpexn" ) @@ -2050,7 +2054,7 @@ ELSE !* 3.1 BL89 mixing length ! ------------------ CASE ('BL89','RM17') -!$acc kernels +!$acc kernels present(ZSHEAR) ZSHEAR(:, :, : ) = 0. !$acc end kernels CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD)