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

cam6_4_051: Age of air diagnostics #1198

Merged
merged 6 commits into from
Jan 2, 2025
Merged
Show file tree
Hide file tree
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
92 changes: 92 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,4 +1,96 @@
===============================================================

Tag name: cam6_4_051
Originator(s): fvitt
Date: 2 Jan 2025
One-line Summary: Updates to age of air tracers history output
Github PR URL: https://github.com/ESCOMP/CAM/pull/1198

Purpose of changes (include the issue number and title text for each relevant GitHub issue):

Changes to age of air output #1197
. Output age of air tracers mix ratios to history as soon as the tendencies are update,
before the tracers are transported in the time loop
. Rename history field 'AOAMF' as 'AOA1'

Describe any changes made to build system: N/A

Describe any changes made to the namelist: N/A

List any changes to the defaults for the boundary datasets: N/A

Describe any substantial timing or memory changes: N/A

Code reviewed by: cacraigucar

List all files eliminated: N/A

List all files added and what they do: N/A

List all existing files that have been modified, and describe the changes:
M src/physics/cam/aoa_tracers.F90
- add outfld calls for AOA tracers
- rename 'AOAMF' as 'AOA1'

If there were any failures reported from running test_driver.sh on any test
platform, and checkin with these failures has been OK'd by the gatekeeper,
then copy the lines from the td.*.status files for the failed tests to the
appropriate machine below. All failed tests must be justified.

derecho/intel/aux_cam:

PEND SMS_D_Ln9.f19_f19_mg17.FXHIST.derecho_intel.cam-outfrq9s_amie
FAIL SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s
- pre-existing failures due to build-namelist error requiring CLM/CTSM external update.

DIFF SMS_Lh12.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq3h
FAIL ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s
- pre-existing failure due to HEMCO not having reproducible results issues #1018 and #856

DIFF ERC_D_Ln9.f19_f19_mg17.QPX2000.derecho_intel.cam-outfrq3s
DIFF ERP_Ld3.f09_f09_mg17.FWHIST.derecho_intel.cam-reduced_hist1d
DIFF ERP_Ld3.ne30pg3_ne30pg3_mg17.FHISTC_MTt4s.derecho_intel.cam-outfrq1d_aoa
DIFF ERP_Lh12.f19_f19_mg17.FW4madSD.derecho_intel.cam-outfrq3h
DIFF ERP_Ln9.f19_f19_mg17.FWsc1850.derecho_intel.cam-outfrq9s
DIFF ERP_Ln9.ne30pg3_ne30pg3_mg17.FCnudged.derecho_intel.cam-outfrq9s
DIFF ERP_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s
DIFF ERS_Ln9.f09_f09_mg17.FX2000.derecho_intel.cam-outfrq9s
DIFF ERS_Ln9.f19_f19_mg17.FXSD.derecho_intel.cam-outfrq9s
DIFF SMS_D_Ln9.f09_f09_mg17.FCts2nudged.derecho_intel.cam-outfrq9s_leapday
DIFF SMS_D_Ln9.f09_f09_mg17.FCvbsxHIST.derecho_intel.cam-outfrq9s
DIFF SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s
DIFF SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s_waccm_ma_mam4
DIFF SMS_D_Ln9.f19_f19_mg17.QPC2000climo.derecho_intel.cam-outfrq3s_usecase
DIFF SMS_D_Ln9.ne16_ne16_mg17.QPX2000.derecho_intel.cam-outfrq9s
DIFF SMS_D_Ln9.ne16pg3_ne16pg3_mg17.FX2000.derecho_intel.cam-outfrq9s
DIFF SMS_Ld1.f09_f09_mg17.FW2000climo.derecho_intel.cam-outfrq1d
DIFF SMS_Ld1.ne30pg3_ne30pg3_mg17.FC2010climo.derecho_intel.cam-outfrq1d
DIFF SMS_Ln9.f09_f09_mg17.FW1850.derecho_intel.cam-reduced_hist3s
DIFF SMS_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s_rrtmgp
- expected differences in AOA history fields, otherwise bit-for-bit unchanged

derecho/nvhpc/aux_cam: All PASS

izumi/nag/aux_cam:
FAIL DAE.f45_f45_mg37.FHS94.izumi_nag.cam-dae
- pre-existing failure -- issue #670

DIFF ERC_D_Ln9.f10_f10_mg37.QPWmaC6.izumi_nag.cam-outfrq3s
DIFF SMS_D_Ln3.ne5pg3_ne5pg3_mg37.QPX2000.izumi_nag.cam-outfrq3s
DIFF SMS_D_Ln6.ne5_ne5_mg37.QPWmaC4.izumi_nag.cam-outfrq3s_physgrid_tem
- expected differences in AOA history fields, otherwise bit-for-bit unchanged

izumi/gnu/aux_cam:
DIFF ERP_Ln9_P24x2.f45_f45_mg37.QPWmaC6.izumi_gnu.cam-outfrq9s_mee_fluxes
DIFF SMS_D_Ln9.f10_f10_mg37.QPWmaC4.izumi_gnu.cam-outfrq9s_apmee
DIFF SMS_P48x1_D_Ln9.f19_f19_mg17.FW4madSD.izumi_gnu.cam-outfrq9s
- expected differences in AOA history fields, otherwise bit-for-bit unchanged

Summarize any changes to answers:
Differences in AOA history fields, otherwise bit-for-bit unchanged

===============================================================
===============================================================
Tag name: cam6_4_050
Originator(s): jimmielin
Date: 31 Dec 2024
Expand Down
27 changes: 19 additions & 8 deletions src/physics/cam/aoa_tracers.F90
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ module aoa_tracers
integer, parameter :: ncnst=3 ! number of constituents implemented by this module

! constituent names
character(len=6), parameter :: c_names(ncnst) = (/'AOAMF ', 'HORZ ', 'VERT '/)
character(len=4), parameter :: c_names(ncnst) = (/'AOA1', 'HORZ', 'VERT'/)

! constituent source/sink names
character(len=8), parameter :: src_names(ncnst) = (/'AOAMFSRC', 'HORZSRC ', 'VERTSRC '/)
character(len=7), parameter :: src_names(ncnst) = (/'AOA1SRC', 'HORZSRC', 'VERTSRC'/)

integer :: ifirst = -1 ! global index of first constituent
integer :: ixaoa = -1 ! global index for AOAMFSRC tracer
integer :: ixaoa = -1 ! global index for AOA1SRC tracer
integer :: ixht = -1 ! global index for HORZ tracer
integer :: ixvt = -1 ! global index for VERT tracer

Expand Down Expand Up @@ -132,12 +132,12 @@ subroutine aoa_tracers_register
if (.not. aoa_tracers_flag) return

call cnst_add(c_names(1), mwdry, cpair, 0._r8, ixaoa, readiv=aoa_read_from_ic_file, &
longname='mixing ratio LB tracer')
longname='mixing ratio LB tracer', cam_outfld=.false.)

call cnst_add(c_names(2), mwdry, cpair, 1._r8, ixht, readiv=aoa_read_from_ic_file, &
longname='horizontal tracer')
longname='horizontal tracer', cam_outfld=.false.)
call cnst_add(c_names(3), mwdry, cpair, 0._r8, ixvt, readiv=aoa_read_from_ic_file, &
longname='vertical tracer')
longname='vertical tracer', cam_outfld=.false.)

ifirst = ixaoa

Expand Down Expand Up @@ -324,6 +324,8 @@ subroutine aoa_tracers_timestep_tend(state, ptend, dt)
real(r8), parameter :: mmr0 = 1.0e-6_r8 ! initial lower boundary mmr
real(r8), parameter :: per_yr = 0.02_r8 ! fractional increase per year

real(r8) :: mmr_out(pcols,pver,ncnst)

!------------------------------------------------------------------

teul = .5_r8*dt/(86400._r8 * treldays) ! 1/2 for the semi-implicit scheme if dt=time step
Expand All @@ -345,7 +347,7 @@ subroutine aoa_tracers_timestep_tend(state, ptend, dt)
lchnk = state%lchnk
ncol = state%ncol

! AOAMF
! AOA1
xmmr = mmr0*(1._r8 + per_yr*years)
ptend%q(1:ncol,pver,ixaoa) = (xmmr - state%q(1:ncol,pver,ixaoa)) / dt

Expand All @@ -371,6 +373,15 @@ subroutine aoa_tracers_timestep_tend(state, ptend, dt)
call outfld (src_names(2), ptend%q(:,:,ixht), pcols, lchnk)
call outfld (src_names(3), ptend%q(:,:,ixvt), pcols, lchnk)

! output mixing ratios to history
mmr_out(:ncol,:,1) = state%q(:ncol,:,ixaoa) + dt*ptend%q(1:ncol,:,ixaoa)
mmr_out(:ncol,:,2) = state%q(:ncol,:,ixht) + dt*ptend%q(1:ncol,:,ixht)
mmr_out(:ncol,:,3) = state%q(:ncol,:,ixvt) + dt*ptend%q(1:ncol,:,ixvt)

call outfld (c_names(1), mmr_out(:,:,1), pcols, lchnk)
call outfld (c_names(2), mmr_out(:,:,2), pcols, lchnk)
call outfld (c_names(3), mmr_out(:,:,3), pcols, lchnk)

end subroutine aoa_tracers_timestep_tend

!===========================================================================
Expand All @@ -392,7 +403,7 @@ subroutine init_cnst_3d(m, latvals, lonvals, mask, q)

if (m == ixaoa) then

! AOAMF
! AOA1
q(:,:) = 0.0_r8

else if (m == ixht) then
Expand Down
Loading