Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove unused arguments to atm_set_smlstep_pert_variables_work #1227

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from
Open
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
140 changes: 43 additions & 97 deletions src/core_atmosphere/dynamics/mpas_atm_time_integration.F
Original file line number Diff line number Diff line change
Expand Up @@ -970,11 +970,8 @@ subroutine atm_srk3(domain, dt, itimestep, exchange_halo_group)

!$OMP PARALLEL DO
do thread=1,nThreads
call atm_set_smlstep_pert_variables( tend, diag, mesh, block % configs, &
cellThreadStart(thread), cellThreadEnd(thread), &
edgeThreadStart(thread), edgeThreadEnd(thread), &
cellSolveThreadStart(thread), cellSolveThreadEnd(thread), &
edgeSolveThreadStart(thread), edgeSolveThreadEnd(thread))
call atm_set_smlstep_pert_variables( tend, mesh, &
cellSolveThreadStart(thread), cellSolveThreadEnd(thread))
end do
!$OMP END PARALLEL DO
call mpas_timer_stop('small_step_prep')
Expand Down Expand Up @@ -2065,9 +2062,7 @@ subroutine atm_compute_vert_imp_coefs_work(nCells, moist_start, moist_end, dts,
end subroutine atm_compute_vert_imp_coefs_work


subroutine atm_set_smlstep_pert_variables( tend, diag, mesh, configs, &
cellStart, cellEnd, edgeStart, edgeEnd, &
cellSolveStart, cellSolveEnd, edgeSolveStart, edgeSolveEnd)
subroutine atm_set_smlstep_pert_variables( tend, mesh, cellSolveStart, cellSolveEnd)

! following Klemp et al MWR 2007, we use preturbation variables
! in the acoustic-step integration. This routine computes those
Expand All @@ -2078,91 +2073,58 @@ subroutine atm_set_smlstep_pert_variables( tend, diag, mesh, configs, &
implicit none

type (mpas_pool_type), intent(inout) :: tend
type (mpas_pool_type), intent(inout) :: diag
type (mpas_pool_type), intent(inout) :: mesh
type (mpas_pool_type), intent(in) :: configs
integer, intent(in) :: cellStart, cellEnd, edgeStart, edgeEnd
integer, intent(in) :: cellSolveStart, cellSolveEnd, edgeSolveStart, edgeSolveEnd
integer, intent(in) :: cellSolveStart, cellSolveEnd

integer, pointer :: nCells, nEdges

integer, pointer :: nCells, nEdges, nCellsSolve
integer, dimension(:), pointer :: nEdgesOnCell
integer, dimension(:,:), pointer :: cellsOnEdge, edgesOnCell
real (kind=RKIND), dimension(:,:), pointer :: edgesOnCell_sign
integer, dimension(:), pointer :: bdyMaskCell ! regional_MPAS

real (kind=RKIND), dimension(:), pointer :: fzm, fzp
real (kind=RKIND), dimension(:,:), pointer :: ruAvg, wwAvg
real (kind=RKIND), dimension(:,:,:), pointer :: zb, zb3, zb_cell, zb3_cell
real (kind=RKIND), dimension(:,:), pointer :: zz
real (kind=RKIND), dimension(:,:), pointer :: w_tend, u_tend
real (kind=RKIND), dimension(:,:), pointer :: rho_pp, rho_p_save, rho_p
real (kind=RKIND), dimension(:,:), pointer :: ru_p, ru, ru_save
real (kind=RKIND), dimension(:,:), pointer :: rtheta_pp, rtheta_p_save, rtheta_p, rtheta_pp_old
real (kind=RKIND), dimension(:,:), pointer :: rw_p, rw_save, rw
real (kind=RKIND), dimension(:,:), pointer :: edgesOnCell_sign

integer, dimension(:), pointer :: bdyMaskCell ! regional_MPAS
real (kind=RKIND), dimension(:,:), pointer :: w_tend, u_tend

call mpas_pool_get_dimension(mesh, 'nCells', nCells)
call mpas_pool_get_dimension(mesh, 'nCellsSolve', nCellsSolve)
call mpas_pool_get_dimension(mesh, 'nEdges', nEdges)

call mpas_pool_get_array(mesh, 'nEdgesOnCell', nEdgesOnCell)
call mpas_pool_get_array(mesh, 'cellsOnEdge', cellsOnEdge)
call mpas_pool_get_array(mesh, 'edgesOnCell', edgesOnCell)
call mpas_pool_get_array(mesh, 'edgesOnCell_sign', edgesOnCell_sign)
! regional_MPAS: get specified zone cell mask
call mpas_pool_get_array(mesh, 'bdyMaskCell', bdyMaskCell)

call mpas_pool_get_array(mesh, 'zz', zz)
call mpas_pool_get_array(mesh, 'fzm', fzm)
call mpas_pool_get_array(mesh, 'fzp', fzp)
call mpas_pool_get_array(mesh, 'zb', zb)
call mpas_pool_get_array(mesh, 'zb3', zb3)
call mpas_pool_get_array(mesh, 'zb_cell', zb_cell)
call mpas_pool_get_array(mesh, 'zb3_cell', zb3_cell)
call mpas_pool_get_array(mesh, 'fzm', fzm)
call mpas_pool_get_array(mesh, 'fzp', fzp)
call mpas_pool_get_array(mesh, 'cellsOnEdge', cellsOnEdge)
call mpas_pool_get_array(mesh, 'nEdgesOnCell', nEdgesOnCell)
call mpas_pool_get_array(mesh, 'edgesOnCell', edgesOnCell)
call mpas_pool_get_array(mesh, 'edgesOnCell_sign', edgesOnCell_sign)
call mpas_pool_get_array(mesh, 'zz', zz)

call mpas_pool_get_array(tend, 'w', w_tend)
call mpas_pool_get_array(tend, 'u', u_tend)

call mpas_pool_get_array(diag, 'ruAvg', ruAvg)
call mpas_pool_get_array(diag, 'wwAvg', wwAvg)

call mpas_pool_get_array(diag, 'rho_pp', rho_pp)
call mpas_pool_get_array(diag, 'rho_p_save', rho_p_save)
call mpas_pool_get_array(diag, 'rho_p', rho_p)

call mpas_pool_get_array(diag, 'ru_p', ru_p)
call mpas_pool_get_array(diag, 'ru_save', ru_save)
call mpas_pool_get_array(diag, 'ru', ru)

call mpas_pool_get_array(diag, 'rtheta_pp', rtheta_pp)
call mpas_pool_get_array(diag, 'rtheta_p_save', rtheta_p_save)
call mpas_pool_get_array(diag, 'rtheta_p', rtheta_p)
call mpas_pool_get_array(diag, 'rtheta_pp_old', rtheta_pp_old)

call mpas_pool_get_array(diag, 'rw_p', rw_p)
call mpas_pool_get_array(diag, 'rw_save', rw_save)
call mpas_pool_get_array(diag, 'rw', rw)

call atm_set_smlstep_pert_variables_work(nCells, nEdges, nCellsSolve, &
nEdgesOnCell, cellsOnEdge, edgesOnCell, fzm, fzp, ruAvg, wwAvg, zb, zb3, zb_cell, zb3_cell, &
zz, w_tend, u_tend, rho_pp, rho_p_save, rho_p, ru_p, ru, ru_save, &
rtheta_pp, rtheta_p_save, rtheta_p, rtheta_pp_old, rw_p, rw_save, rw, &
bdyMaskCell, & ! added for regional_MPAS
edgesOnCell_sign, &
cellStart, cellEnd, edgeStart, edgeEnd, &
cellSolveStart, cellSolveEnd, edgeSolveStart, edgeSolveEnd)
call atm_set_smlstep_pert_variables_work(nCells, nEdges, &
nEdgesOnCell, cellsOnEdge, edgesOnCell, edgesOnCell_sign, bdyMaskCell, &
fzm, fzp, zb, zb3, zb_cell, zb3_cell, zz, &
w_tend, u_tend, &
cellSolveStart, cellSolveEnd)


end subroutine atm_set_smlstep_pert_variables


subroutine atm_set_smlstep_pert_variables_work(nCells, nEdges, nCellsSolve, &
nEdgesOnCell, cellsOnEdge, edgesOnCell, fzm, fzp, ruAvg, wwAvg, zb, zb3, zb_cell, zb3_cell, &
zz, w_tend, u_tend, rho_pp, rho_p_save, rho_p, ru_p, ru, ru_save, &
rtheta_pp, rtheta_p_save, rtheta_p, rtheta_pp_old, rw_p, rw_save, rw, &
bdyMaskCell, & ! added for regional_MPAS
edgesOnCell_sign, &
cellStart, cellEnd, edgeStart, edgeEnd, &
cellSolveStart, cellSolveEnd, edgeSolveStart, edgeSolveEnd)
subroutine atm_set_smlstep_pert_variables_work(nCells, nEdges, &
nEdgesOnCell, cellsOnEdge, edgesOnCell, edgesOnCell_sign, bdyMaskCell, &
fzm, fzp, zb, zb3, zb_cell, zb3_cell, zz, &
w_tend, u_tend, &
cellSolveStart, cellSolveEnd)

use mpas_atm_dimensions

Expand All @@ -2172,41 +2134,26 @@ subroutine atm_set_smlstep_pert_variables_work(nCells, nEdges, nCellsSolve, &
!
! Dummy arguments
!
integer, intent(in) :: nCells, nEdges, nCellsSolve

integer, intent(in) :: cellStart, cellEnd, edgeStart, edgeEnd
integer, intent(in) :: cellSolveStart, cellSolveEnd, edgeSolveStart, edgeSolveEnd
integer, intent(in) :: nCells, nEdges
integer, intent(in) :: cellSolveStart, cellSolveEnd

integer, dimension(nCells+1) :: nEdgesOnCell
integer, dimension(2,nEdges+1) :: cellsOnEdge
integer, dimension(maxEdges,nCells+1) :: edgesOnCell
real (kind=RKIND), dimension(maxEdges,nCells+1) :: edgesOnCell_sign
integer, dimension(nCells+1), intent(in) :: bdyMaskCell ! added for regional_MPAS

real (kind=RKIND), dimension(nVertLevels) :: fzm
real (kind=RKIND), dimension(nVertLevels) :: fzp
real (kind=RKIND), dimension(nVertLevels,nEdges+1) :: ruAvg
real (kind=RKIND), dimension(nVertLevels+1,nCells+1) :: wwAvg
real (kind=RKIND), dimension(nVertLevels+1,2,nEdges+1) :: zb
real (kind=RKIND), dimension(nVertLevels+1,2,nEdges+1) :: zb3
real (kind=RKIND), dimension(nVertLevels+1,maxEdges,nCells+1) :: zb_cell
real (kind=RKIND), dimension(nVertLevels+1,maxEdges,nCells+1) :: zb3_cell
real (kind=RKIND), dimension(nVertLevels,nCells+1) :: zz

real (kind=RKIND), dimension(nVertLevels+1,nCells+1) :: w_tend
real (kind=RKIND), dimension(nVertLevels,nEdges+1) :: u_tend
real (kind=RKIND), dimension(nVertLevels,nCells+1) :: rho_pp
real (kind=RKIND), dimension(nVertLevels,nCells+1) :: rho_p_save
real (kind=RKIND), dimension(nVertLevels,nCells+1) :: rho_p
real (kind=RKIND), dimension(nVertLevels,nEdges+1) :: ru_p
real (kind=RKIND), dimension(nVertLevels,nEdges+1) :: ru
real (kind=RKIND), dimension(nVertLevels,nEdges+1) :: ru_save
real (kind=RKIND), dimension(nVertLevels,nCells+1) :: rtheta_pp
real (kind=RKIND), dimension(nVertLevels,nCells+1) :: rtheta_p_save
real (kind=RKIND), dimension(nVertLevels,nCells+1) :: rtheta_p
real (kind=RKIND), dimension(nVertLevels,nCells+1) :: rtheta_pp_old
real (kind=RKIND), dimension(nVertLevels+1,nCells+1) :: rw_p
real (kind=RKIND), dimension(nVertLevels+1,nCells+1) :: rw_save
real (kind=RKIND), dimension(nVertLevels+1,nCells+1) :: rw
real (kind=RKIND), dimension(maxEdges,nCells+1) :: edgesOnCell_sign

integer, dimension(nCells+1), intent(in) :: bdyMaskCell ! added for regional_MPAS

!
! Local variables
Expand All @@ -2220,23 +2167,22 @@ subroutine atm_set_smlstep_pert_variables_work(nCells, nEdges, nCellsSolve, &
! here we need to compute the omega tendency in a manner consistent with our diagnosis of omega.
! this requires us to use the same flux divergence as is used in the theta eqn - see Klemp et al MWR 2003.

!! do iCell=cellStart,cellEnd
do iCell=cellSolveStart,cellSolveEnd

if (bdyMaskCell(iCell) <= nRelaxZone) then ! no conversion in specified zone, regional_MPAS
do i=1,nEdgesOnCell(iCell)
iEdge = edgesOnCell(i,iCell)
do i=1,nEdgesOnCell(iCell)
iEdge = edgesOnCell(i,iCell)
!DIR$ IVDEP
do k = 2, nVertLevels
flux = edgesOnCell_sign(i,iCell) * (fzm(k) * u_tend(k,iEdge) + fzp(k) * u_tend(k-1,iEdge))
w_tend(k,iCell) = w_tend(k,iCell) &
- (zb_cell(k,i,iCell) + sign(1.0_RKIND, u_tend(k,iEdge)) * zb3_cell(k,i,iCell)) * flux
do k = 2, nVertLevels
flux = edgesOnCell_sign(i,iCell) * (fzm(k) * u_tend(k,iEdge) + fzp(k) * u_tend(k-1,iEdge))
w_tend(k,iCell) = w_tend(k,iCell) &
- (zb_cell(k,i,iCell) + sign(1.0_RKIND, u_tend(k,iEdge)) * zb3_cell(k,i,iCell)) * flux
end do
end do
end do
!DIR$ IVDEP
do k = 2, nVertLevels
w_tend(k,iCell) = ( fzm(k) * zz(k,iCell) + fzp(k) * zz(k-1,iCell) ) * w_tend(k,iCell)
end do
do k = 2, nVertLevels
w_tend(k,iCell) = ( fzm(k) * zz(k,iCell) + fzp(k) * zz(k-1,iCell) ) * w_tend(k,iCell)
end do
end if ! no conversion in specified zone
end do

Expand Down