Jy/larcform1 case merge#4567
Conversation
There was a problem hiding this comment.
Pull request overview
Adds the LARCFORM1 Arctic winter boundary-layer SCM case to ClimaAtmos, wiring it into the setup/config system, providing a dedicated “polar night” insolation option, and adding a basic test plus a runnable model config/TOML parameter overlay.
Changes:
- Add
Setups.Larcform1SCM setup backed by AtmosphericProfilesLibrary profiles, plus config plumbing to select it viainitial_condition: Larcform1. - Add
Larcform1Insolationand config parsing support (insolation: larcform1), with RRTMGP callback dispatch. - Add a new SCM model config + TOML overlay and a targeted test entry.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
src/setups/Larcform1.jl |
Implements the new Larcform1 SCM setup (profiles, IC, surface/coriolis hooks). |
src/setups/Setups.jl |
Registers the new setup via include("Larcform1.jl"). |
src/types.jl |
Adds Larcform1Insolation type for dispatch. |
src/config/type_getters.jl |
Enables initial_condition == "Larcform1" to construct the setup. |
src/config/model_getters.jl |
Enables insolation == "larcform1" to construct the insolation model. |
src/callbacks/callbacks.jl |
Adds set_insolation_variables! dispatch for Larcform1Insolation. |
config/model_configs/larcform1_1M_prognostic_edmfx.yml |
Adds a runnable 20-day column config for the case. |
toml/larcform1_1M_prognostic_edmfx.toml |
Adds a small TOML overlay for 1M microphysics timescales. |
test/larcform1.jl |
Adds a setup-level test validating key profile values/coriolis. |
test/runtests.jl |
Hooks the new test into the infrastructure group. |
fcbd879 to
a4a035e
Compare
|
📖 Docs preview for this PR: https://clima.github.io/ClimaAtmos.jl/previews/PR4567/ |
nefrathenrici
left a comment
There was a problem hiding this comment.
This looks good to me. I think we need an APL release before merging this.
| FT = eltype(thermo_params) | ||
| T_prof = APL.Larcform1_T(FT) | ||
| RH_prof = APL.Larcform1_RH(FT) | ||
| p_apl = APL.Larcform1_p(FT) # analytic pressure used for RH → q_tot conversion |
There was a problem hiding this comment.
Is there a reason you're not using this pressure profile directly? What is the difference between the two?
There was a problem hiding this comment.
The p_apl is the dry hydrostatic balance profile given by Pithan 2016 and defined in AtmosphericalProfilesLibrary.jl, which is used to calculate q_tot from RH. The specific humidity profile q_tot is then used in Atmos' hydrostatic_pressure_profile to calculate the pressurep used by the model itself.
Since this case is fairly dry in terms of specific humidity, I expect the difference between the two pressure profiles is negligible; I chose to instantiate the model with the hydrostatic_pressure_profile to follow convention from the other cases in ClimaAtmos.
|
Implements the single-column model setup for the Larcform1 arctic winter boundary layer case following Pithan et al. (2016). Includes: - `Larcform1` setup struct with initial conditions and surface boundary from AtmosphericProfilesLibrary profiles (T, RH→q_tot, u/v geostrophic) - `Larcform1Insolation` type with zero TOA flux and cos(60°) zenith angle (representing Arctic January conditions at 80°N) - Hydrostatic pressure profile computed from liquid-water-relative RH - Coriolis forcing at 80°N (f = 1.432×10⁻⁴ s⁻¹) - Config YAML/TOML for the 1M prognostic EDMFx configuration - Wired into `get_insolation_form`, `get_setup_type`, and `Setups.jl` - Test suite entry in `runtests.jl`
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Add in missing factor of RH. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Haakon Ludvig Langeland Ervik <45243236+haakon-e@users.noreply.github.com>
Co-authored-by: Haakon Ludvig Langeland Ervik <45243236+haakon-e@users.noreply.github.com>
Co-authored-by: Nat Efrat-Henrici <60049837+nefrathenrici@users.noreply.github.com>
e4d0764 to
e6bc876
Compare
Purpose
Add the LARCFORM1 arctic boundary layer single-column model (SCM) case to ClimaAtmos, based on the Pithan et al. (2016) SCM intercomparison for Arctic boundary layer processes (80°N, wintertime, sea ice surface).
Content
New SCM setup (src/setups/Larcform1.jl): Larcform1 initial condition struct drawing temperature, humidity, pressure, and geostrophic wind profiles from AtmosphericProfilesLibrary.jl (jy/Larcform1 branch, see CliMA/AtmosphericProfilesLibrary.jl#51).
New surface temperature models (src/solver/types.jl, src/prognostic_equations/surface_temp.jl):
New insolation type: Larcform1Insolation (zero solar insolation, appropriate for 80°N in January).
Current surface model is a modified SlabSST model used for testing until a simple sea ice model is implemented.
New model config and corresponding TOML parameter files:
larcform1_1M_prognostic_edmfx — 1M + full prognostic EDMFx
CI plots (post_processing/ci_plots.jl): make_plots dispatch for any larcform1* job ID, producing time-height profiles (thermodynamic state, EDMF updraft/environment variables, TKE, mixing length) and time-series (radiation fluxes, precip, surface fluxes, LWP/IWP).
To-do
I have:
In the Content, I have included
relevant unit tests, and integration tests,
appropriate docstrings on all functions, structs, and modules, and included relevant documentation.
I have read and checked the items on the review checklist.