Skip to content

Commit

Permalink
Upgrading to atmos_phys0_07_000 (#158)
Browse files Browse the repository at this point in the history
Tag name (The PR title should also include the tag name):
`atmos_phys0_07_000`
Originator(s): @jimmielin

List all `development` PR URLs included in this PR and a short
description of each:
* #141 by @mattldawson @boulderdaze 
* #147 by @peverwhee 
* #144 by @mwaxmonsky 
* #151 by @mattldawson 
* #145 by @jimmielin 

List all test failures: N/A
  • Loading branch information
jimmielin authored Nov 19, 2024
2 parents 67927f1 + 79df94a commit e10f811
Show file tree
Hide file tree
Showing 58 changed files with 3,457 additions and 685 deletions.
72 changes: 72 additions & 0 deletions .github/workflows/unit-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: unit-test-code-coverage

on:
push:
branches:
- development
- main
workflow_dispatch:
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true

jobs:
gcc-toolchain:
runs-on: ubuntu-latest
steps:
- name: Checkout atmospheric_physics
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt update && sudo apt -y install libopenmpi-dev openmpi-bin
- name: Build pFUnit
run: |
git clone --depth 1 --branch v4.10.0 https://github.com/Goddard-Fortran-Ecosystem/pFUnit.git
cd pFUnit
pwd
cmake -B./build -S.
cd build
make install
- name: Build atmospheric_physics
run: |
cmake \
-DCMAKE_PREFIX_PATH=/home/runner/work/atmospheric_physics/atmospheric_physics/pFUnit/build/installed \
-DATMOSPHERIC_PHYSICS_ENABLE_CODE_COVERAGE=ON \
-B./build \
-S./test/unit-test
cd build
make
- name: Run tests
run: |
cd build && ctest -V --output-on-failure --output-junit test_results.xml
- name: Upload unit test results
uses: actions/upload-artifact@v4
with:
name: unit-test-results
path: build/test_results.xml

- name: Setup GCov
run: |
python3 -m venv venv
source venv/bin/activate
pip3 install gcovr
- name: Run Gcov
run: |
source venv/bin/activate
cd build
gcovr -r .. --filter '\.\./schemes' --html atmospheric_physics_code_coverage.html --txt
- name: Upload code coverage results
uses: actions/upload-artifact@v4
with:
name: code-coverage-results
path: build/atmospheric_physics_code_coverage.html

7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
**/*.DS_Store
**/*.pyc
**/build/
**/CMakeCache.txt
**/CMakeFiles/
.vscode
xcode/
72 changes: 72 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,77 @@
===============================================================

Tag name: atmos_phys0_07_000
Originator(s): jimmielin
Date: November 18, 2024
One-line Summary: Implement CCPPized check_energy_chng and check_energy_fix
Github PR URL:

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.

- Implements dycore_energy_consistency_adjust which adjusts temperature and temperature tendencies for the MPAS and SE dynamical cores.

Code reviewed by:

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

- dycore_energy_consistency_adjust and applications in simple physics:
A schemes/check_energy/dycore_energy_consistency_adjust.F90
A schemes/check_energy/dycore_energy_consistency_adjust.meta
M suites/suite_held_suarez_1994.xml
M suites/suite_kessler.xml

- add check_energy to SDFs:
M suites/suite_cam7.xml

- adiabatic SDF:
A suites/suite_adiabatic.xml


List and Describe any test failures: N/A

Summarize any changes to answers: none

===============================================================

Tag name:
Originator(s): jimmielin
Date: October 17, 2024
Expand Down
Loading

0 comments on commit e10f811

Please sign in to comment.