Skip to content

Conversation

ericmpham
Copy link
Contributor

Purpose

Additional configuration variables were added to pass arguments to redefined APL functions that allow for changes in the initial conditions profiles.

To-do

  • Maybe we want to move some of the other documentation pages into examples. It may be out of the scope of this PR.
  • Maybe we might rewrite the APL functions to allow for additional arguments, but that involves modifying that library. It may also be out of the scope of this PR.

Content

  • Update initial_conditions.jl, type_getters.jl, and default diagnostics.jl to allow for values to be passed to specify total water mixing ratio (qtot), liquid ice potential temperature (theta), and initial boundary layer height (zi).
  • Add documentation, specifically an examples page.

  • I have read and checked the items on the review checklist.

@ericmpham ericmpham force-pushed the ep/modify_dycoms_rf02 branch 2 times, most recently from 4188840 to 8daca0f Compare August 15, 2025 23:09
@ericmpham ericmpham closed this Aug 15, 2025
@ericmpham ericmpham force-pushed the ep/modify_dycoms_rf02 branch from 8daca0f to 25240aa Compare August 15, 2025 23:12
@ericmpham ericmpham reopened this Aug 15, 2025
@ericmpham
Copy link
Contributor Author

"Is there a way to collapse the if-else statements for selecting initial conditions down into something cleaner?" was something that was sort of being discussed.

@ericmpham ericmpham force-pushed the ep/modify_dycoms_rf02 branch 4 times, most recently from aec6dfe to a854f35 Compare August 25, 2025 21:54
@ericmpham ericmpham marked this pull request as ready for review August 25, 2025 21:58
@ericmpham ericmpham requested a review from oalcabes August 25, 2025 22:38
@ericmpham
Copy link
Contributor Author

@akshaysridhar, @oalcabes, I think this is ready for review. Off the top of my head, I can't figure out a way to make the type_getters.jl ifelse statements less verbose.

I was also wondering if maybe it would be better to directly update the APL library functions instead of importing them, then overwriting them, but that might be more trouble than it's worth. It kinda defeats the purpose of allowing other people to make similar modifications because then that means that updating the APL functions becomes part of the steps, and that means it's no longer contained within just ClimaAtmos.

Thanks guys!

edmfx_filter: true
prognostic_tke: true
moist: "nonequil"
cloud_model: "quadrature_sgs"
Copy link
Member

Choose a reason for hiding this comment

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

oops, this should be getting ran with grid_scale instead

Copy link
Contributor Author

Choose a reason for hiding this comment

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

is this the case for both prognostic and diagnostic or only diagnostic? This is referring to cloud_model right?

# Creating custom arguments for perturbation experiments
In cases where it is of interest to run ensembles of the same model configuration but with perturbed initial conditions, it may be of use to add new keyword arguments to the .yml file. The idea is to allow modifications to initial conditions to be passed directly through the .yml file and then creating multiple copies of the files but with different variations and combinations of these parameters.

As an example, we will explore modifying the total water mixing ratio (`q_tot_0`), liquid-ice potential temperature profiles (`theta_0` & `theta_i`), and initial boundary layer height (`z_i`) in the DYCOMS-RF02 simulation setup.
Copy link
Member

@oalcabes oalcabes Aug 27, 2025

Choose a reason for hiding this comment

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

It might be useful to talk to Nat, Costa & Julian about how they've implemented this for calibration -- I don't know how similar what you've done is to that?

Copy link
Member

Choose a reason for hiding this comment

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

@nefrathenrici @costachris what are your opinions of doing things this way?

Copy link
Member

@nefrathenrici nefrathenrici Aug 28, 2025

Choose a reason for hiding this comment

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

I think this is a great start (especially the initial conditions) but modifying the source code is probably time consuming and error-prone. I think the perturbation variables should be specified via parameters rather than parsed args, with an extra dycoms initial condition to read them in automatically.

Copy link
Member

Choose a reason for hiding this comment

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

If you want to merge this quickly, I would request a test case that can run as part of buildkite to ensure that this feature stays supported.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@nefrathenrici is what I put in the pipeline.yml okay? I consulted with Sajjad cause I was not really sure what to put for a test case.

I agree that it's also a tedious process, I wish I had more time to restructure it.

@ericmpham ericmpham force-pushed the ep/modify_dycoms_rf02 branch from 2671d4f to 957694a Compare August 29, 2025 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants