diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index 813cf6347fc6b2e6fc781a463aca5d877d759149..01ee3ad898e99ca1a2b5cf899ac97823218c3966 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 328e6fd57bfbf2e97e4f11127a6d469f7b2180b6..9866f9adf5f7b3534164d3eb18cecb3a1738812c 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 !