-
Notifications
You must be signed in to change notification settings - Fork 16
Complete CCPPization of RK microphysics #377
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
Changes from 4 commits
53c67d8
eceef56
af2efc9
9cdfc64
7473b4f
0652c91
20fba9f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
./xmlchange CAM_CONFIG_OPTS="--dyn none --physics-suites rasch_kristjansson" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
! these are QPC4 snapshots and require custom physical constant definitions. | ||
ncdata = '/glade/campaign/cesm/community/amwg/sima_baselines/cam_sima_test_snapshots/cam_ne3pg3_rasch_kristjansson_rk_stratiform_snapshot_derecho_gnu_before_c20250328.nc' | ||
ncdata_check = '/glade/campaign/cesm/community/amwg/sima_baselines/cam_sima_test_snapshots/cam_ne3pg3_rasch_kristjansson_rk_stratiform_snapshot_derecho_gnu_after_c20250328.nc' | ||
|
||
! qpc4 | ||
pver = 26 | ||
user_defined_cpwv = 1.846e3 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why is the value specified in namelist_definition_physconst.xml being overriden? I would suggest that the baseline which gets stored from this tests depend on the settings in that structure. That way if the field gets changed, then the test will have a baseline difference indicating that this routine has been impacted. I've not checked the other values below, but I believe that all of them specified in physconst should not be listed (changed or unchanged) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The snapshots are taken from a CAM4 aquaplanet compset (QPC4) and aquaplanet simulations have a specific set of physical constants overriding the defaults. ref. <!-- Revised physics constants for ape experiments -->
<sday >86164.10063718943</sday>
<rearth >6.37100e6</rearth>
<gravit >9.79764</gravit>
<mwdry >28.96623324623746</mwdry>
<mwh2o >18.01618112892741</mwh2o>
<cpwv >1.846e3</cpwv> There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks @cacraigucar, I've added an issue to create this test in the near future! #397 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Intentionally not resolving this so #397 can more easily see this discussion |
||
user_defined_gravit = 9.79764 | ||
user_defined_mwdry = 28.96623324623746 | ||
user_defined_mwh2o = 18.01618112892741 | ||
user_defined_rearth = 6.37100e6 | ||
user_defined_sday = 86164.10063718943 | ||
|
||
! rk | ||
cldfrc_dp1 = 0.10D0 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe there are a number of these fields which should be specified via a namelist.xml file. Thoughts? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The snapshots are taken from a CAM4 aquaplanet configuration; the cldfrc scheme tuning parameter defaults in <cldfrc_dp1 > 0.14D0 </cldfrc_dp1>
<cldfrc_dp1 phys="cam5" > 0.10D0 </cldfrc_dp1>
<cldfrc_dp1 phys="cam6" > 0.10D0 </cldfrc_dp1>
<cldfrc_dp1 phys="cam7" > 0.10D0 </cldfrc_dp1>
<cldfrc_dp1 dyn="fv" phys="cam4" > 0.10D0 </cldfrc_dp1>
<cldfrc_dp1 dyn="se" phys="cam4" > 0.10D0 </cldfrc_dp1> There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps we need two tests
I believe there also needs to be a namelist.xml file, doesn't there to support the reading of RK namelist variables (and this would be needed by test 2). I would suggest that this also would be a good discussion topic for Monday's hackathon There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks @cacraigucar! The namelist variables are read by the framework, they're defined here for dp1, dp2, etc: RK namelist variables are in the prognostic_cloud_water and cloud_particle_sedimentation schemes: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added an issue for this in the near future: #397 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Intentionally not resolving this so #397 can more easily see this discussion |
||
cldfrc_dp2 = 500.0D0 | ||
cldfrc_freeze_dry = .true. | ||
cldfrc_ice = .false. | ||
cldfrc_icecrit = 0.95D0 | ||
cldfrc_iceopt = 1 | ||
cldfrc_premib = 750.0D2 | ||
cldfrc_premit = 75000.0D0 | ||
cldfrc_rhminh = 0.800D0 | ||
cldfrc_rhminl = 0.910D0 | ||
cldfrc_rhminl_adj_land = 0.100D0 | ||
cldfrc_sh1 = 0.04D0 | ||
cldfrc_sh2 = 500.0D0 | ||
|
||
! sima only: | ||
cldfrc_inversion_cld_off = .false. | ||
|
||
cldsed_ice_stokes_fac = 1.0D0 | ||
|
||
rk_strat_conke = 5.0e-6 | ||
rk_strat_icritc = 18.0e-6 | ||
rk_strat_icritw = 2.0e-4 | ||
rk_strat_r3lcrit = 10.0e-6 | ||
! sima only: | ||
rk_strat_polstrat_dorhmin = .false. | ||
|
||
hist_output_frequency;h1: 1*nsteps | ||
hist_max_frames;h1: 1 | ||
hist_add_inst_fields;h1:DQSED,DISED,DLSED,HSED,PRECSED,SNOWSED,RAINSED | ||
hist_add_inst_fields;h1:SH_CLD,DP_CLD,CONCLD,AST | ||
hist_add_inst_fields;h1:FICE,REPARTICE,REPARTLIQ,HREPART | ||
hist_add_inst_fields;h1:FWAUT,FSAUT,FRACW,FSACW,FSACI,PCSNOW,CME,CMEICE,CMELIQ | ||
hist_add_inst_fields;h1:ICE2PR,LIQ2PR,HPROGCLD,HEVAP,HMELT,HCME,HFREEZ | ||
hist_add_inst_fields;h1:PRODPREC,EVAPPREC,EVAPSNOW,LS_FLXPRC,LS_FLXSNW,PRACWO,PSACWO,PSACIO | ||
hist_add_inst_fields;h1:CLDLIQSTR,CLDICESTR,CLDLIQCON,CLDICECON | ||
hist_add_inst_fields;h1:IWC,LWC,ICIMR,ICWMR,REI,REL | ||
hist_precision;h1: REAL64 | ||
cacraigucar marked this conversation as resolved.
Show resolved
Hide resolved
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I recently realized that when possible we should have the model exit (and thus induce a test failure) whenever the snapshot file comparison finds significant differences. I believe this can be done for this test by adding the following namelist setting to this file:
ncdata_check_err = .true.
Of course if that ends up not working for this particular test please let me know!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @nusbaume! Sadly I can't enable this option because it'll abort the model even with round-off differences. Right now the physics check data has round-off level differences against the snapshot
It will run for all the time slices in the snapshot to completion with comparable round-off differences but the model will abort on timestep 1 if
ncdata_check_err = .true.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @jimmielin, what happens if you add the following namelist option as well:
min_difference = 1e-15
It looks like by default any difference counts as a "failure", but I think with this option only differences greater than the
min_difference
value will count (which based off the print out should be none of them).Of course if you don't have time for this then no worries! Just thought it might be worth it if it is easy to test. Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @nusbaume that is useful to know! Will test when Derecho is back up!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding my +1 for this feature
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @nusbaume and @cacraigucar! I had to relax the constraint to
min_difference = 2e-15
since this will trip1e-15
However if I enable
min_difference
the log output will change; it seems like if a difference is < min_difference, it'll be ignored by the log output as well:I'm not sure if we want to "see" the differences in the logs, even if they are smaller than the min_difference. I think I would prefer to since it'll help distinguish between a truly bit-for-bit vs. a ~1e-15 difference due to differences in how SIMA and CAM do things. Please let me know which way you'd prefer!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I too would like to see roundoff differences even if we allow them to "pass" the test. Perhaps we should bring this up as a discussion topic on Monday?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
happy to chat about it on monday. I don't think it'd be a big lift to still include the diffs, but I lean towards keeping it the way it is because:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now added!