@@ -999,11 +999,8 @@ subroutine atm_srk3(domain, dt, itimestep, exchange_halo_group)
999
999
1000
1000
!$OMP PARALLEL DO
1001
1001
do thread= 1 ,nThreads
1002
- call atm_set_smlstep_pert_variables( tend, diag, mesh, block % configs, &
1003
- cellThreadStart(thread), cellThreadEnd(thread), &
1004
- edgeThreadStart(thread), edgeThreadEnd(thread), &
1005
- cellSolveThreadStart(thread), cellSolveThreadEnd(thread), &
1006
- edgeSolveThreadStart(thread), edgeSolveThreadEnd(thread))
1002
+ call atm_set_smlstep_pert_variables( tend, mesh, &
1003
+ cellSolveThreadStart(thread), cellSolveThreadEnd(thread))
1007
1004
end do
1008
1005
!$OMP END PARALLEL DO
1009
1006
call mpas_timer_stop(' small_step_prep' )
@@ -2006,9 +2003,7 @@ subroutine atm_compute_vert_imp_coefs_work(nCells, moist_start, moist_end, dts,
2006
2003
end subroutine atm_compute_vert_imp_coefs_work
2007
2004
2008
2005
2009
- subroutine atm_set_smlstep_pert_variables ( tend , diag , mesh , configs , &
2010
- cellStart , cellEnd , edgeStart , edgeEnd , &
2011
- cellSolveStart , cellSolveEnd , edgeSolveStart , edgeSolveEnd )
2006
+ subroutine atm_set_smlstep_pert_variables ( tend , mesh , cellSolveStart , cellSolveEnd )
2012
2007
2013
2008
! following Klemp et al MWR 2007 , we use preturbation variables
2014
2009
! in the acoustic- step integration. This routine computes those
@@ -2019,91 +2014,58 @@ subroutine atm_set_smlstep_pert_variables( tend, diag, mesh, configs, &
2019
2014
implicit none
2020
2015
2021
2016
type (mpas_pool_type), intent (inout ) :: tend
2022
- type (mpas_pool_type), intent (inout ) :: diag
2023
2017
type (mpas_pool_type), intent (inout ) :: mesh
2024
- type (mpas_pool_type) , intent (in ) :: configs
2025
- integer , intent ( in ) :: cellStart, cellEnd, edgeStart, edgeEnd
2026
- integer , intent ( in ) :: cellSolveStart, cellSolveEnd, edgeSolveStart, edgeSolveEnd
2018
+ integer , intent (in ) :: cellSolveStart, cellSolveEnd
2019
+
2020
+ integer , pointer :: nCells, nEdges
2027
2021
2028
- integer , pointer :: nCells, nEdges, nCellsSolve
2029
2022
integer , dimension (:), pointer :: nEdgesOnCell
2030
2023
integer , dimension (:,:), pointer :: cellsOnEdge, edgesOnCell
2024
+ real (kind= RKIND), dimension (:,:), pointer :: edgesOnCell_sign
2025
+ integer , dimension (:), pointer :: bdyMaskCell ! regional_MPAS
2026
+
2031
2027
real (kind= RKIND), dimension (:), pointer :: fzm, fzp
2032
- real (kind= RKIND), dimension (:,:), pointer :: ruAvg, wwAvg
2033
2028
real (kind= RKIND), dimension (:,:,:), pointer :: zb, zb3, zb_cell, zb3_cell
2034
2029
real (kind= RKIND), dimension (:,:), pointer :: zz
2035
- real (kind= RKIND), dimension (:,:), pointer :: w_tend, u_tend
2036
- real (kind= RKIND), dimension (:,:), pointer :: rho_pp, rho_p_save, rho_p
2037
- real (kind= RKIND), dimension (:,:), pointer :: ru_p, ru, ru_save
2038
- real (kind= RKIND), dimension (:,:), pointer :: rtheta_pp, rtheta_p_save, rtheta_p, rtheta_pp_old
2039
- real (kind= RKIND), dimension (:,:), pointer :: rw_p, rw_save, rw
2040
- real (kind= RKIND), dimension (:,:), pointer :: edgesOnCell_sign
2041
2030
2042
- integer , dimension (:), pointer :: bdyMaskCell ! regional_MPAS
2031
+ real (kind = RKIND) , dimension (:,: ), pointer :: w_tend, u_tend
2043
2032
2044
2033
call mpas_pool_get_dimension(mesh, ' nCells' , nCells)
2045
- call mpas_pool_get_dimension(mesh, ' nCellsSolve' , nCellsSolve)
2046
2034
call mpas_pool_get_dimension(mesh, ' nEdges' , nEdges)
2047
2035
2036
+ call mpas_pool_get_array(mesh, ' nEdgesOnCell' , nEdgesOnCell)
2037
+ call mpas_pool_get_array(mesh, ' cellsOnEdge' , cellsOnEdge)
2038
+ call mpas_pool_get_array(mesh, ' edgesOnCell' , edgesOnCell)
2039
+ call mpas_pool_get_array(mesh, ' edgesOnCell_sign' , edgesOnCell_sign)
2048
2040
! regional_MPAS: get specified zone cell mask
2049
2041
call mpas_pool_get_array(mesh, ' bdyMaskCell' , bdyMaskCell)
2050
2042
2051
- call mpas_pool_get_array(mesh, ' zz' , zz)
2043
+ call mpas_pool_get_array(mesh, ' fzm' , fzm)
2044
+ call mpas_pool_get_array(mesh, ' fzp' , fzp)
2052
2045
call mpas_pool_get_array(mesh, ' zb' , zb)
2053
2046
call mpas_pool_get_array(mesh, ' zb3' , zb3)
2054
2047
call mpas_pool_get_array(mesh, ' zb_cell' , zb_cell)
2055
2048
call mpas_pool_get_array(mesh, ' zb3_cell' , zb3_cell)
2056
- call mpas_pool_get_array(mesh, ' fzm' , fzm)
2057
- call mpas_pool_get_array(mesh, ' fzp' , fzp)
2058
- call mpas_pool_get_array(mesh, ' cellsOnEdge' , cellsOnEdge)
2059
- call mpas_pool_get_array(mesh, ' nEdgesOnCell' , nEdgesOnCell)
2060
- call mpas_pool_get_array(mesh, ' edgesOnCell' , edgesOnCell)
2061
- call mpas_pool_get_array(mesh, ' edgesOnCell_sign' , edgesOnCell_sign)
2049
+ call mpas_pool_get_array(mesh, ' zz' , zz)
2062
2050
2063
2051
call mpas_pool_get_array(tend, ' w' , w_tend)
2064
2052
call mpas_pool_get_array(tend, ' u' , u_tend)
2065
2053
2066
- call mpas_pool_get_array(diag, ' ruAvg' , ruAvg)
2067
- call mpas_pool_get_array(diag, ' wwAvg' , wwAvg)
2068
-
2069
- call mpas_pool_get_array(diag, ' rho_pp' , rho_pp)
2070
- call mpas_pool_get_array(diag, ' rho_p_save' , rho_p_save)
2071
- call mpas_pool_get_array(diag, ' rho_p' , rho_p)
2072
-
2073
- call mpas_pool_get_array(diag, ' ru_p' , ru_p)
2074
- call mpas_pool_get_array(diag, ' ru_save' , ru_save)
2075
- call mpas_pool_get_array(diag, ' ru' , ru)
2076
-
2077
- call mpas_pool_get_array(diag, ' rtheta_pp' , rtheta_pp)
2078
- call mpas_pool_get_array(diag, ' rtheta_p_save' , rtheta_p_save)
2079
- call mpas_pool_get_array(diag, ' rtheta_p' , rtheta_p)
2080
- call mpas_pool_get_array(diag, ' rtheta_pp_old' , rtheta_pp_old)
2081
-
2082
- call mpas_pool_get_array(diag, ' rw_p' , rw_p)
2083
- call mpas_pool_get_array(diag, ' rw_save' , rw_save)
2084
- call mpas_pool_get_array(diag, ' rw' , rw)
2085
-
2086
- call atm_set_smlstep_pert_variables_work(nCells, nEdges, nCellsSolve, &
2087
- nEdgesOnCell, cellsOnEdge, edgesOnCell, fzm, fzp, ruAvg, wwAvg, zb, zb3, zb_cell, zb3_cell, &
2088
- zz, w_tend, u_tend, rho_pp, rho_p_save, rho_p, ru_p, ru, ru_save, &
2089
- rtheta_pp, rtheta_p_save, rtheta_p, rtheta_pp_old, rw_p, rw_save, rw, &
2090
- bdyMaskCell, & ! added for regional_MPAS
2091
- edgesOnCell_sign, &
2092
- cellStart, cellEnd, edgeStart, edgeEnd, &
2093
- cellSolveStart, cellSolveEnd, edgeSolveStart, edgeSolveEnd)
2054
+ call atm_set_smlstep_pert_variables_work(nCells, nEdges, &
2055
+ nEdgesOnCell, cellsOnEdge, edgesOnCell, edgesOnCell_sign, bdyMaskCell, &
2056
+ fzm, fzp, zb, zb3, zb_cell, zb3_cell, zz, &
2057
+ w_tend, u_tend, &
2058
+ cellSolveStart, cellSolveEnd)
2094
2059
2095
2060
2096
2061
end subroutine atm_set_smlstep_pert_variables
2097
2062
2098
2063
2099
- subroutine atm_set_smlstep_pert_variables_work (nCells , nEdges , nCellsSolve , &
2100
- nEdgesOnCell , cellsOnEdge , edgesOnCell , fzm , fzp , ruAvg , wwAvg , zb , zb3 , zb_cell , zb3_cell , &
2101
- zz , w_tend , u_tend , rho_pp , rho_p_save , rho_p , ru_p , ru , ru_save , &
2102
- rtheta_pp , rtheta_p_save , rtheta_p , rtheta_pp_old , rw_p , rw_save , rw , &
2103
- bdyMaskCell , & ! added for regional_MPAS
2104
- edgesOnCell_sign , &
2105
- cellStart , cellEnd , edgeStart , edgeEnd , &
2106
- cellSolveStart , cellSolveEnd , edgeSolveStart , edgeSolveEnd )
2064
+ subroutine atm_set_smlstep_pert_variables_work (nCells , nEdges , &
2065
+ nEdgesOnCell , cellsOnEdge , edgesOnCell , edgesOnCell_sign , bdyMaskCell , &
2066
+ fzm , fzp , zb , zb3 , zb_cell , zb3_cell , zz , &
2067
+ w_tend , u_tend , &
2068
+ cellSolveStart , cellSolveEnd )
2107
2069
2108
2070
use mpas_atm_dimensions
2109
2071
@@ -2113,41 +2075,26 @@ subroutine atm_set_smlstep_pert_variables_work(nCells, nEdges, nCellsSolve, &
2113
2075
!
2114
2076
! Dummy arguments
2115
2077
!
2116
- integer , intent (in ) :: nCells, nEdges, nCellsSolve
2117
-
2118
- integer , intent (in ) :: cellStart, cellEnd, edgeStart, edgeEnd
2119
- integer , intent (in ) :: cellSolveStart, cellSolveEnd, edgeSolveStart, edgeSolveEnd
2078
+ integer , intent (in ) :: nCells, nEdges
2079
+ integer , intent (in ) :: cellSolveStart, cellSolveEnd
2120
2080
2121
2081
integer , dimension (nCells+1 ) :: nEdgesOnCell
2122
2082
integer , dimension (2 ,nEdges+1 ) :: cellsOnEdge
2123
2083
integer , dimension (maxEdges,nCells+1 ) :: edgesOnCell
2084
+ real (kind= RKIND), dimension (maxEdges,nCells+1 ) :: edgesOnCell_sign
2085
+ integer , dimension (nCells+1 ), intent (in ) :: bdyMaskCell ! added for regional_MPAS
2086
+
2124
2087
real (kind= RKIND), dimension (nVertLevels) :: fzm
2125
2088
real (kind= RKIND), dimension (nVertLevels) :: fzp
2126
- real (kind= RKIND), dimension (nVertLevels,nEdges+1 ) :: ruAvg
2127
- real (kind= RKIND), dimension (nVertLevels+1 ,nCells+1 ) :: wwAvg
2128
2089
real (kind= RKIND), dimension (nVertLevels+1 ,2 ,nEdges+1 ) :: zb
2129
2090
real (kind= RKIND), dimension (nVertLevels+1 ,2 ,nEdges+1 ) :: zb3
2130
2091
real (kind= RKIND), dimension (nVertLevels+1 ,maxEdges,nCells+1 ) :: zb_cell
2131
2092
real (kind= RKIND), dimension (nVertLevels+1 ,maxEdges,nCells+1 ) :: zb3_cell
2132
2093
real (kind= RKIND), dimension (nVertLevels,nCells+1 ) :: zz
2094
+
2133
2095
real (kind= RKIND), dimension (nVertLevels+1 ,nCells+1 ) :: w_tend
2134
2096
real (kind= RKIND), dimension (nVertLevels,nEdges+1 ) :: u_tend
2135
- real (kind= RKIND), dimension (nVertLevels,nCells+1 ) :: rho_pp
2136
- real (kind= RKIND), dimension (nVertLevels,nCells+1 ) :: rho_p_save
2137
- real (kind= RKIND), dimension (nVertLevels,nCells+1 ) :: rho_p
2138
- real (kind= RKIND), dimension (nVertLevels,nEdges+1 ) :: ru_p
2139
- real (kind= RKIND), dimension (nVertLevels,nEdges+1 ) :: ru
2140
- real (kind= RKIND), dimension (nVertLevels,nEdges+1 ) :: ru_save
2141
- real (kind= RKIND), dimension (nVertLevels,nCells+1 ) :: rtheta_pp
2142
- real (kind= RKIND), dimension (nVertLevels,nCells+1 ) :: rtheta_p_save
2143
- real (kind= RKIND), dimension (nVertLevels,nCells+1 ) :: rtheta_p
2144
- real (kind= RKIND), dimension (nVertLevels,nCells+1 ) :: rtheta_pp_old
2145
- real (kind= RKIND), dimension (nVertLevels+1 ,nCells+1 ) :: rw_p
2146
- real (kind= RKIND), dimension (nVertLevels+1 ,nCells+1 ) :: rw_save
2147
- real (kind= RKIND), dimension (nVertLevels+1 ,nCells+1 ) :: rw
2148
- real (kind= RKIND), dimension (maxEdges,nCells+1 ) :: edgesOnCell_sign
2149
2097
2150
- integer , dimension (nCells+1 ), intent (in ) :: bdyMaskCell ! added for regional_MPAS
2151
2098
2152
2099
!
2153
2100
! Local variables
@@ -2165,7 +2112,6 @@ subroutine atm_set_smlstep_pert_variables_work(nCells, nEdges, nCellsSolve, &
2165
2112
! here we need to compute the omega tendency in a manner consistent with our diagnosis of omega.
2166
2113
! this requires us to use the same flux divergence as is used in the theta eqn - see Klemp et al MWR 2003 .
2167
2114
2168
- !! do iCell= cellStart,cellEnd
2169
2115
!$acc parallel default(present)
2170
2116
!$acc loop gang worker
2171
2117
do iCell= cellSolveStart,cellSolveEnd
0 commit comments