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_050: Implement CCPPized check_energy_chng and check_energy_fix #1180

Merged
merged 24 commits into from
Dec 31, 2024

Conversation

jimmielin
Copy link
Member

Closes #1138

Purpose of changes

  • CCPPize check_energy_chng and check_energy_fix
    CAM interfaces have been kept in check_energy.F90 instead of a new module because check_tracers is not yet CCPPized, there are other non-CCPPized routines in module, and for compatibility with FV3 external calls
  • Save air_composition cp_or_cv_dycore into state snapshot
  • Separate out "energy_formula_physics"/"energy_formula_dycore" definitions used in get_hydrostatic_energy from dyn_tests_utils "vcoord" for an eventual change in SIMA.

Related issues

Files changed:

List all files eliminated: N/A

List all files added and what they do:
- separate out energy formula definitions used in get_hydrostatic_energy from dyn_tests_utils "vcoord"
A       src/utils/cam_thermo_formula.F90

List all existing files that have been modified, and describe the changes:

Update atmos_phys external with CCPPized check_energy
M       .gitmodules
M       bld/configure
M       src/atmos_phys

Save cp_or_cv_dycore in state snapshot
M       src/control/cam_snapshot_common.F90

New CAM interfaces to CCPPized routines, when avaialble
M       src/physics/cam/check_energy.F90

Update calls to CCPPized routines, when available
M       src/physics/cam/physpkg.F90
M       src/physics/cam/zm_conv_intr.F90
M       src/physics/cam7/physpkg.F90
M       src/physics/simple/physpkg.F90
M       src/physics/spcam/crm_physics.F90
M       src/physics/spcam/spcam_drivers.F90

jimmielin added a commit to ESCOMP/atmospheric_physics that referenced this pull request Nov 18, 2024
Fixes #114 

* Companion PR in CAM: ESCOMP/CAM#1180
* Companion PR in CAM-SIMA: ESCOMP/CAM-SIMA#316

This PR fixes the following NCAR/atmospheric_physics Github issues: #114

- Implements check_energy_chng. The routine computes total energies
using physics and dycore formula and takes in boundary fluxes of vapor,
liquid+ice, ice, sensible heat, and writes to log significant energy
conservation errors.
In order to take in the scheme name and fluxes from the last calling
physics scheme (usually zero) a check_energy_zero_fluxes has to be ran
before the scheme, then the physics scheme to be checked, then
check_energy_chng.

- Implements check_energy_fix. The routine computes the heating rate
required for global mean total energy conservation which is later
applied by apply_heating_rate.
Supporting routines include the global mean calculator for total energy
(check_energy_gmean) - stored in separate folder to prevent CAM from
building it.
The global means are very useful for diagnosing model state (as the
computed energy numbers include all model state incl. constituents)
through a simple one-line printout. check_energy_gmean_diagnostics
implements this.
At the end of the timestep check_energy_save_teout has to be ran in
order to save total energies at the end of the timestep for use in the
next timestep.

- Diagnostics of intermediate quantities used in
check_energy_diagnostics.

List all existing files that have been added (A), modified (M), or
deleted (D),
and describe the changes:

```
- Docs:
M       doc/ChangeLog

- check_energy_chng and supporting routines:
A       schemes/check_energy/check_energy_chng.F90
A       schemes/check_energy/check_energy_chng.meta
A       schemes/check_energy/check_energy_chng_namelist.xml
A       schemes/check_energy/check_energy_scaling.F90
A       schemes/check_energy/check_energy_scaling.meta
A       schemes/check_energy/check_energy_zero_fluxes.F90
A       schemes/check_energy/check_energy_zero_fluxes.meta

- check_energy_fix and supporting routines:
A       schemes/check_energy/check_energy_fix.F90
A       schemes/check_energy/check_energy_fix.meta
A       schemes/check_energy/check_energy_gmean/check_energy_gmean.F90
A       schemes/check_energy/check_energy_gmean/check_energy_gmean.meta
A       schemes/check_energy/check_energy_save_teout.F90
A       schemes/check_energy/check_energy_save_teout.meta

- check_energy related diagnostics:
A       schemes/sima_diagnostics/check_energy_diagnostics.F90
A       schemes/sima_diagnostics/check_energy_diagnostics.meta

- check_energy_gmean "nstep, te" atm.log output:
A       schemes/sima_diagnostics/check_energy_gmean_diagnostics.F90
A       schemes/sima_diagnostics/check_energy_gmean_diagnostics.meta

- test SDF including all functionality:
A       test/test_suites/suite_check_energy.xml
```

List and Describe any test failures: N/A

Summarize any changes to answers: none
.gitmodules Outdated Show resolved Hide resolved
src/utils/cam_thermo_formula.F90 Show resolved Hide resolved
Copy link
Collaborator

@nusbaume nusbaume left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Just had a few requests, almost entirely related to comments.

src/control/cam_snapshot_common.F90 Outdated Show resolved Hide resolved
src/physics/simple/physpkg.F90 Show resolved Hide resolved
src/physics/cam/check_energy.F90 Show resolved Hide resolved
src/physics/cam/check_energy.F90 Outdated Show resolved Hide resolved
src/physics/cam/check_energy.F90 Outdated Show resolved Hide resolved
src/physics/cam/check_energy.F90 Outdated Show resolved Hide resolved
Copy link
Collaborator

@nusbaume nusbaume left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great to me now. Thanks @jimmielin!

@jimmielin
Copy link
Member Author

Thanks @nusbaume and @cacraigucar for the code reviews! I will wait for my turn to make a tag and run the test suite again.

If before my turn to make a tag, ESCOMP/atmospheric_physics#160 is incorporated in a atmos_phys tag, I will use that tag and update the subroutine call for check_energy_fix_run to include dummy arguments for errmsg and errflg. Otherwise I will keep this on atmos_phys0_07_000.

@cacraigucar cacraigucar changed the title Implement CCPPized check_energy_chng and check_energy_fix cam6_4_50: Implement CCPPized check_energy_chng and check_energy_fix Dec 31, 2024
@jimmielin jimmielin merged commit b4c6463 into ESCOMP:cam_development Dec 31, 2024
2 checks passed
@cacraigucar cacraigucar changed the title cam6_4_50: Implement CCPPized check_energy_chng and check_energy_fix cam6_4_050: Implement CCPPized check_energy_chng and check_energy_fix Jan 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Tag
Development

Successfully merging this pull request may close these issues.

3 participants