From c77eedf145a5d2e065dfc4c40bf4e9b2c272276c Mon Sep 17 00:00:00 2001 From: JUan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Fri, 16 Oct 2020 15:17:54 +0200 Subject: [PATCH] Juan 16/10/2020: turb_hor_dyn_corr/uv.f90, OpenACC opti -> DO CONCURRENT for BR_P2 --- src/MNH/turb_hor_dyn_corr.f90 | 48 ++++++++++++++++++++--------------- src/MNH/turb_hor_uv.f90 | 22 ++++++++-------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index 813cf6347..01ee3ad89 100644 --- a/src/MNH/turb_hor_dyn_corr.f90 +++ b/src/MNH/turb_hor_dyn_corr.f90 @@ -613,14 +613,16 @@ ZFLX(:,:,IKB-1) = & PVSLOPEM(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:) & - PUSLOPEM(:,:) * PCOSSLOPE(:,:)**2 * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) ) #else -ZFLX(:,:,IKB-1) = & - PTAU11M(:,:) * BR_P2(PCOSSLOPE(:,:)) * BR_P2(PDIRCOSZW(:,:)) & - -2. * PTAU12M(:,:) * PCOSSLOPE(:,:)* PSINSLOPE(:,:) * PDIRCOSZW(:,:) & - + PTAU22M(:,:) * BR_P2(PSINSLOPE(:,:)) & - + PTAU33M(:,:) * BR_P2(PCOSSLOPE(:,:)) * BR_P2(ZDIRSINZW(:,:)) & - +2. * PCDUEFF(:,:) * ( & - PVSLOPEM(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:) & - - PUSLOPEM(:,:) * BR_P2(PCOSSLOPE(:,:)) * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) ) +DO CONCURRENT ( JI=1:JIU,JJ=1:JJU ) +ZFLX(JI,JJ,IKB-1) = & + PTAU11M(JI,JJ) * BR_P2(PCOSSLOPE(JI,JJ)) * BR_P2(PDIRCOSZW(JI,JJ)) & + -2. * PTAU12M(JI,JJ) * PCOSSLOPE(JI,JJ)* PSINSLOPE(JI,JJ) * PDIRCOSZW(JI,JJ) & + + PTAU22M(JI,JJ) * BR_P2(PSINSLOPE(JI,JJ)) & + + PTAU33M(JI,JJ) * BR_P2(PCOSSLOPE(JI,JJ)) * BR_P2(ZDIRSINZW(JI,JJ)) & + +2. * PCDUEFF(JI,JJ) * ( & + PVSLOPEM(JI,JJ) * PCOSSLOPE(JI,JJ) * PSINSLOPE(JI,JJ) * ZDIRSINZW(JI,JJ) & + - PUSLOPEM(JI,JJ) * BR_P2(PCOSSLOPE(JI,JJ)) * ZDIRSINZW(JI,JJ) * PDIRCOSZW(JI,JJ) ) +END DO ! CONCURRENT #endif !$acc end kernels ! @@ -827,14 +829,16 @@ ZFLX(:,:,IKB-1) = & PUSLOPEM(:,:) * PSINSLOPE(:,:)**2 * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) & + PVSLOPEM(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:) ) #else -ZFLX(:,:,IKB-1) = & - PTAU11M(:,:) * BR_P2(PSINSLOPE(:,:)) * BR_P2(PDIRCOSZW(:,:)) & - +2. * PTAU12M(:,:) * PCOSSLOPE(:,:)* PSINSLOPE(:,:) * PDIRCOSZW(:,:) & - + PTAU22M(:,:) * BR_P2(PCOSSLOPE(:,:)) & - + PTAU33M(:,:) * BR_P2(PSINSLOPE(:,:)) * BR_P2(ZDIRSINZW(:,:)) & - -2. * PCDUEFF(:,:)* ( & - PUSLOPEM(:,:) * BR_P2(PSINSLOPE(:,:)) * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) & - + PVSLOPEM(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:) ) +DO CONCURRENT ( JI=1:JIU,JJ=1:JJU ) +ZFLX(JI,JJ,IKB-1) = & + PTAU11M(JI,JJ) * BR_P2(PSINSLOPE(JI,JJ)) * BR_P2(PDIRCOSZW(JI,JJ)) & + +2. * PTAU12M(JI,JJ) * PCOSSLOPE(JI,JJ)* PSINSLOPE(JI,JJ) * PDIRCOSZW(JI,JJ) & + + PTAU22M(JI,JJ) * BR_P2(PCOSSLOPE(JI,JJ)) & + + PTAU33M(JI,JJ) * BR_P2(PSINSLOPE(JI,JJ)) * BR_P2(ZDIRSINZW(JI,JJ)) & + -2. * PCDUEFF(JI,JJ)* ( & + PUSLOPEM(JI,JJ) * BR_P2(PSINSLOPE(JI,JJ)) * ZDIRSINZW(JI,JJ) * PDIRCOSZW(JI,JJ) & + + PVSLOPEM(JI,JJ) * PCOSSLOPE(JI,JJ) * PSINSLOPE(JI,JJ) * ZDIRSINZW(JI,JJ) ) +END DO ! CONCURRENT #endif !$acc end kernels ! @@ -1029,15 +1033,19 @@ ZFLX(:,:,IKB) = (2./3.) * PTKEM(:,:,IKB) & ! (-2./3.) * PTP(:,:,IKB:IKB) ! extrapolates this flux under the ground with the surface flux !$acc kernels async(3) -ZFLX(:,:,IKB-1) = & #ifndef MNH_BITREP +ZFLX(:,:,IKB-1) = & PTAU11M(:,:) * ZDIRSINZW(:,:)**2 & + PTAU33M(:,:) * PDIRCOSZW(:,:)**2 & + +2. * PCDUEFF(:,:)* PUSLOPEM(:,:) * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) #else - PTAU11M(:,:) * BR_P2(ZDIRSINZW(:,:)) & - + PTAU33M(:,:) * BR_P2(PDIRCOSZW(:,:)) & +DO CONCURRENT ( JI=1:JIU,JJ=1:JJU ) +ZFLX(JI,JJ,IKB-1) = & + PTAU11M(JI,JJ) * BR_P2(ZDIRSINZW(JI,JJ)) & + + PTAU33M(JI,JJ) * BR_P2(PDIRCOSZW(JI,JJ)) & + +2. * PCDUEFF(JI,JJ)* PUSLOPEM(JI,JJ) * ZDIRSINZW(JI,JJ) * PDIRCOSZW(JI,JJ) +END DO ! CONCURRENT #endif - +2. * PCDUEFF(:,:)* PUSLOPEM(:,:) * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) !$acc end kernels ! ! diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90 index 328e6fd57..9866f9adf 100644 --- a/src/MNH/turb_hor_uv.f90 +++ b/src/MNH/turb_hor_uv.f90 @@ -450,16 +450,18 @@ ZFLX(:,:,IKB-1) = & PDIRCOSZW(:,:) * ZDIRSINZW(:,:) & +PVSLOPEM(:,:) * (PCOSSLOPE(:,:)**2 - PSINSLOPE(:,:)**2) * ZDIRSINZW(:,:) ) #else -ZFLX(:,:,IKB-1) = & - PTAU11M(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * BR_P2(PDIRCOSZW(:,:)) & - +PTAU12M(:,:) * (BR_P2(PCOSSLOPE(:,:)) - BR_P2(PSINSLOPE(:,:))) * & - BR_P2(PDIRCOSZW(:,:)) & - -PTAU22M(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) & - +PTAU33M(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * BR_P2(ZDIRSINZW(:,:)) & - -PCDUEFF(:,:) * ( & - 2. * PUSLOPEM(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * & - PDIRCOSZW(:,:) * ZDIRSINZW(:,:) & - +PVSLOPEM(:,:) * (BR_P2(PCOSSLOPE(:,:)) - BR_P2(PSINSLOPE(:,:))) * ZDIRSINZW(:,:) ) +DO CONCURRENT ( JI=1:JIU,JJ=1:JJU ) +ZFLX(JI,JJ,IKB-1) = & + PTAU11M(JI,JJ) * PCOSSLOPE(JI,JJ) * PSINSLOPE(JI,JJ) * BR_P2(PDIRCOSZW(JI,JJ)) & + +PTAU12M(JI,JJ) * (BR_P2(PCOSSLOPE(JI,JJ)) - BR_P2(PSINSLOPE(JI,JJ))) * & + BR_P2(PDIRCOSZW(JI,JJ)) & + -PTAU22M(JI,JJ) * PCOSSLOPE(JI,JJ) * PSINSLOPE(JI,JJ) & + +PTAU33M(JI,JJ) * PCOSSLOPE(JI,JJ) * PSINSLOPE(JI,JJ) * BR_P2(ZDIRSINZW(JI,JJ)) & + -PCDUEFF(JI,JJ) * ( & + 2. * PUSLOPEM(JI,JJ) * PCOSSLOPE(JI,JJ) * PSINSLOPE(JI,JJ) * & + PDIRCOSZW(JI,JJ) * ZDIRSINZW(JI,JJ) & + +PVSLOPEM(JI,JJ) * (BR_P2(PCOSSLOPE(JI,JJ)) - BR_P2(PSINSLOPE(JI,JJ))) * ZDIRSINZW(JI,JJ) ) +END DO ! CONCURRENT #endif !$acc end kernels ! -- GitLab