From c55797d86461beed73dc75c6ce8cd480ffe22263 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 25 May 2021 15:57:36 -0600 Subject: [PATCH] Optimize use of auxiliary arrays --- physics/module_mp_thompson.F90 | 7 ++----- physics/mp_thompson.F90 | 24 +++++++++--------------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/physics/module_mp_thompson.F90 b/physics/module_mp_thompson.F90 index 5f2125557..c0e40971a 100644 --- a/physics/module_mp_thompson.F90 +++ b/physics/module_mp_thompson.F90 @@ -1267,11 +1267,8 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & nr1d(k) = nr(i,k,j) rho(k) = 0.622*p1d(k)/(R*t1d(k)*(qv1d(k)+0.622)) vtsk1(k) = 0. - vts1(i,k,j) = 0. prw_vcdc1(k) = 0. - prw_vcdc(i,k,j) = 0. prw_vcde1(k) = 0. - prw_vcde(i,k,j) = 0. enddo if (is_aerosol_aware) then do k = kts, kte @@ -1350,8 +1347,8 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & ni(i,k,j) = ni1d(k) nr(i,k,j) = nr1d(k) vts1(i,k,j) = vtsk1(k) - prw_vcdc(i,k,j) = prw_vcdc1(k) - prw_vcde(i,k,j) = prw_vcde1(k) + prw_vcdc(i,k,j) = prw_vcdc(i,k,j) + prw_vcdc1(k) + prw_vcde(i,k,j) = prw_vcde(i,k,j) + prw_vcde1(k) if (present(tt)) then; tt(i,k,j) = t1d(k) diff --git a/physics/mp_thompson.F90 b/physics/mp_thompson.F90 index 4444abca7..daa492aa9 100644 --- a/physics/mp_thompson.F90 +++ b/physics/mp_thompson.F90 @@ -431,9 +431,6 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte - !Auxillary fields - real(kind_phys) :: vts1(1:ncol,1:nlev),prw_vcdc(1:ncol,1:nlev),prw_vcde(1:ncol,1:nlev) - ! Initialize the CCPP error handling variables errmsg = '' errflg = 0 @@ -572,8 +569,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & - errmsg=errmsg, errflg=errflg, reset=reset, vts1=vts1, & - prw_vcdc=prw_vcdc, prw_vcde=prw_vcde) + errmsg=errmsg, errflg=errflg, reset=reset, vts1=aux3d(:,:,1), & + prw_vcdc=aux3d(:,:,2), prw_vcde=aux3d(:,:,3)) else call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & nc=nc, nwfa=nwfa, nifa=nifa, nwfa2d=nwfa2d, nifa2d=nifa2d, & @@ -592,8 +589,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & - errmsg=errmsg, errflg=errflg, reset=reset, vts1=vts1, & - prw_vcdc=prw_vcdc, prw_vcde=prw_vcde) + errmsg=errmsg, errflg=errflg, reset=reset, vts1=aux3d(:,:,1), & + prw_vcdc=aux3d(:,:,2), prw_vcde=aux3d(:,:,3)) end if else if (do_effective_radii) then @@ -614,8 +611,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & - errmsg=errmsg, errflg=errflg, reset=reset, vts1=vts1, & - prw_vcdc=prw_vcdc, prw_vcde=prw_vcde) + errmsg=errmsg, errflg=errflg, reset=reset, vts1=aux3d(:,:,1), & + prw_vcdc=aux3d(:,:,2), prw_vcde=aux3d(:,:,3)) else call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, & tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtp, & @@ -633,8 +630,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & ids=ids, ide=ide, jds=jds, jde=jde, kds=kds, kde=kde, & ims=ims, ime=ime, jms=jms, jme=jme, kms=kms, kme=kme, & its=its, ite=ite, jts=jts, jte=jte, kts=kts, kte=kte, & - errmsg=errmsg, errflg=errflg, reset=reset, vts1=vts1, & - prw_vcdc=prw_vcdc, prw_vcde=prw_vcde) + errmsg=errmsg, errflg=errflg, reset=reset, vts1=aux3d(:,:,1), & + prw_vcdc=aux3d(:,:,2), prw_vcde=aux3d(:,:,3)) end if end if if (errflg/=0) return @@ -665,10 +662,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & ice = ice + max(0.0, delta_ice_mp/1000.0_kind_phys) snow = snow + max(0.0, delta_snow_mp/1000.0_kind_phys) rain = rain + max(0.0, (delta_rain_mp - (delta_graupel_mp + delta_ice_mp + delta_snow_mp))/1000.0_kind_phys) -!Diagnostics - aux3d(:,:,1) = vts1 - aux3d(:,:,2) = aux3d(:,:,2) + prw_vcdc - aux3d(:,:,3) = aux3d(:,:,3) + prw_vcde + end subroutine mp_thompson_run !>@}