Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 7 additions & 18 deletions science/physics_schemes/source/boundary_layer/imp_mix.F90
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ subroutine imp_mix ( &
use atm_fields_bounds_mod, only: pdims, array_dims
use yomhook, only: lhook, dr_hook
use parkind1, only: jprb, jpim
!$ use omp_lib, only: omp_get_max_threads
use tuning_segments_mod, only: bl_segment_size
implicit none

! Inputs :-
Expand Down Expand Up @@ -109,13 +109,7 @@ subroutine imp_mix ( &
! K minus 1.
kp1, &
! K plus 1.
ii, &
! omp blocking counter
pdims_omp_block, &
! omp block size
pdims_seg_block, &
! omp segment length
max_threads
ii ! omp blocking counter

integer(kind=jpim), parameter :: zhook_in = 0
integer(kind=jpim), parameter :: zhook_out = 1
Expand All @@ -127,12 +121,7 @@ subroutine imp_mix ( &

blm1 = bl_levels-1

max_threads = 1
!$ max_threads = omp_get_max_threads()
pdims_omp_block = ceiling(real(pdims%i_end)/max_threads)
pdims_seg_block = min(pdims_omp_block, pdims%i_len)

!$OMP PARALLEL DEFAULT(none) SHARED(pdims_seg_block, f_field, dtrdz, field, pdims, &
!$OMP PARALLEL DEFAULT(none) SHARED(bl_segment_size, f_field, dtrdz, field, pdims, &
!$OMP gamma_rhokh_rdz, r_rho_levels, surf_dep_flux, d_field, af, &
!$OMP r_theta_levels, gamma_rhok_dep, bl_levels, blm1) &
!$OMP private(r_sq, cf, rbf, kp1, km1, ii, k, j, i, rr_sq)
Expand Down Expand Up @@ -195,12 +184,12 @@ subroutine imp_mix ( &
!-----------------------------------------------------------------------

!$OMP do SCHEDULE(STATIC)
do ii = pdims%i_start, pdims%i_end, pdims_seg_block
do ii = pdims%i_start, pdims%i_end, bl_segment_size
do k = 2, blm1
kp1 = k+1
km1 = k-1
do j = pdims%j_start, pdims%j_end
do i = ii, min(ii+pdims_seg_block-1, pdims%i_end)
do i = ii, min(ii+bl_segment_size-1, pdims%i_end)

! "Explicit" flux divergence across layer giving explicit FIELD
! increment due to mixing
Expand Down Expand Up @@ -249,10 +238,10 @@ subroutine imp_mix ( &
!-----------------------------------------------------------------------

!$OMP do SCHEDULE(STATIC)
do ii = pdims%i_start, pdims%i_end, pdims_seg_block
do ii = pdims%i_start, pdims%i_end, bl_segment_size
do k = blm1, 1, -1
do j = pdims%j_start, pdims%j_end
do i = ii, min(ii+pdims_seg_block-1,pdims%i_end)
do i = ii, min(ii+bl_segment_size-1,pdims%i_end)
d_field(i,j,k) = d_field(i,j,k) - &
af(i,j,k)*d_field(i,j,k+1)
field(i,j,k) = field(i,j,k) + d_field(i,j,k)
Expand Down
Loading