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

New spatially-variable horizontal upwind capability #122

Draft
wants to merge 49 commits into
base: master
Choose a base branch
from
Draft
Changes from 1 commit
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
75f4052
Unify FM over all grids
tcclevenger Jan 8, 2025
bddf0cf
Fix rrtmgp standalone build
tcclevenger Feb 12, 2025
e0950ac
Create shortcut functions in FM with a single grid
tcclevenger Feb 12, 2025
3e77a07
No need to change name on grid clone
tcclevenger Feb 12, 2025
eb67ba6
Remove redundant field_layout::get_dim_names
tcclevenger Feb 12, 2025
08db442
Remove irrelevent change
tcclevenger Feb 12, 2025
0ccfd19
Fix indexing for subfields
tcclevenger Feb 12, 2025
2bacb7d
remove unneeded "Preffered" bundling definition
tcclevenger Feb 12, 2025
7c8cbe7
Fix unit test creation of FM, add check in AtmosphereInput that FM GM…
tcclevenger Feb 13, 2025
bdd9e87
Allow to change grid name in field clone
tcclevenger Feb 13, 2025
e0f9284
Register trivial group for field requests which include a group
tcclevenger Feb 17, 2025
63a878b
Correct group expectation in unit tests
tcclevenger Feb 18, 2025
2a063ea
Match grid name to field names when cloning in MAM tracer data reader
tcclevenger Feb 18, 2025
dd9a2fd
Fix 2x defined var after rebase
tcclevenger Feb 19, 2025
e899d85
Another error fix after rebase
tcclevenger Feb 19, 2025
0469923
Fix the FieldGroupInfo for groups which span grids
tcclevenger Feb 20, 2025
1e06484
Fix variable name after rebase
tcclevenger Feb 20, 2025
47acef0
Only add field to FieldGroupInfo if it doesn't exist
tcclevenger Feb 20, 2025
6237c87
Convert bundling to bool
tcclevenger Feb 20, 2025
f678280
Remove option for FM registering incomplete FieldRequest
tcclevenger Feb 21, 2025
f5bfe4d
Remove grids_mgr_type typedef
tcclevenger Feb 21, 2025
808d40d
Use equivalent_layout in AbstractRemapper::create_layout to reduce code
tcclevenger Feb 21, 2025
7344384
Purge FieldManager::size()
tcclevenger Feb 21, 2025
e0b7581
FieldManager::init_fields_time_stamp all grids at once
tcclevenger Feb 21, 2025
ddf26b1
Simplify subview indices check
tcclevenger Mar 3, 2025
8f71fd8
Add break to avoid unecessary queries to bundled group
tcclevenger Mar 3, 2025
afd13b0
Add todo for investigating possibly unecessary code
tcclevenger Mar 3, 2025
f57a733
Remove incomplete FR from AD_UT
tcclevenger Mar 3, 2025
92102b0
Use correct name for input grid in mam's tracer reader
tcclevenger Mar 5, 2025
514759a
Change get_groups_info -> get_group_info
tcclevenger Mar 5, 2025
2c54e67
Remove FM::get_field_ptr and FM::get_field_id.
tcclevenger Mar 5, 2025
1f33c0f
Chane logic in OutputManager to differentiate between types of parame…
tcclevenger Mar 5, 2025
05c7265
Merge branch 'master' into tcclevenger/eamxx/single_fm_multiple_grids
tcclevenger Mar 6, 2025
ae98638
Change back to FieldTracking::get_groups_info
tcclevenger Mar 6, 2025
b946a9c
Fix equivalent_layout tensor call
tcclevenger Mar 6, 2025
74cc9ab
EAMxx: simplify yaml syntax to allow skipping restart for an output s…
bartgol Feb 26, 2025
49bb138
EAMxx: better handle RUN_TYPE=branch
bartgol Feb 26, 2025
b3ac5bc
EAMxx: fix compilation error in rrtmgp with certain compilers
bartgol Feb 26, 2025
7e0cb14
EAMxx: fix setup of output managers in case of no output
bartgol Feb 26, 2025
6a70f62
EAMxx: fix docs linting
bartgol Feb 26, 2025
8a8f9cb
Use small kernels as default for shoc/p3 for pm-gpu
ndkeen Mar 7, 2025
3431067
accidentally checked in with these options OFF and we want them ON
ndkeen Mar 7, 2025
7c43a73
Merge branch 'tcclevenger/tcclevenger/eamxx/single_fm_multiple_grids'…
tcclevenger Mar 10, 2025
c9cba71
Merge branch 'bartgol/eamxx/io-branch-run-fixes' (PR #7063)
bartgol Mar 10, 2025
c617ec5
Merge branch E3SM-Project/ndk/machinefiles/pm-gpu-make-SMALL_KERNELS_…
ndkeen Mar 10, 2025
b57fbcd
New spatially variable upwinding capability
cbegeman Jan 28, 2025
32b09e5
Set upwind factor in diagnostics every time step
cbegeman Jan 28, 2025
1e9b4d0
Change minimum column thickness for centered-weighting based on dryin…
cbegeman Jan 28, 2025
32afa1b
Update build files
cbegeman Mar 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix rrtmgp standalone build
  • Loading branch information
tcclevenger committed Mar 3, 2025
commit bddf0cf40189a105581a42b1f03a194387f9f0f4
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ TEST_CASE("rrtmgp_scream_standalone", "") {

// Get dimension sizes from the field manager
const auto& grid = ad.get_grids_manager()->get_grid("Point Grid");
const auto& field_mgr = *ad.get_field_mgr(grid->name());
const auto& field_mgr = *ad.get_field_mgr();
int ncol = grid->get_num_local_dofs();
int nlay = grid->get_num_vertical_levels();

Expand Down Expand Up @@ -234,30 +234,30 @@ TEST_CASE("rrtmgp_scream_standalone", "") {
// copies is necessary since the yakl::Array take in data arranged with ncol
// as the fastest index, but the field manager expects the 2nd dimension as
// the fastest index.
auto d_pmid = field_mgr.get_field("p_mid").get_view<Real**>();
auto d_tmid = field_mgr.get_field("T_mid").get_view<Real**>();
auto d_pint = field_mgr.get_field("p_int").get_view<Real**>();
auto d_pdel = field_mgr.get_field("pseudo_density").get_view<Real**>();
auto d_sfc_alb_dir_vis = field_mgr.get_field("sfc_alb_dir_vis").get_view<Real*>();
auto d_sfc_alb_dir_nir = field_mgr.get_field("sfc_alb_dir_nir").get_view<Real*>();
auto d_sfc_alb_dif_vis = field_mgr.get_field("sfc_alb_dif_vis").get_view<Real*>();
auto d_sfc_alb_dif_nir = field_mgr.get_field("sfc_alb_dif_nir").get_view<Real*>();
auto d_surf_lw_flux_up = field_mgr.get_field("surf_lw_flux_up").get_view<Real*>();
auto d_qc = field_mgr.get_field("qc").get_view<Real**>();
auto d_nc = field_mgr.get_field("nc").get_view<Real**>();
auto d_qi = field_mgr.get_field("qi").get_view<Real**>();
auto d_rel = field_mgr.get_field("eff_radius_qc").get_view<Real**>();
auto d_rei = field_mgr.get_field("eff_radius_qi").get_view<Real**>();
auto d_cld = field_mgr.get_field("cldfrac_tot").get_view<Real**>();

auto d_qv = field_mgr.get_field("qv").get_view<Real**>();
auto d_co2 = field_mgr.get_field("co2_volume_mix_ratio").get_view<Real**>();
auto d_o3 = field_mgr.get_field("o3_volume_mix_ratio").get_view<Real**>();
auto d_n2o = field_mgr.get_field("n2o_volume_mix_ratio").get_view<Real**>();
auto d_co = field_mgr.get_field("co_volume_mix_ratio").get_view<Real**>();
auto d_ch4 = field_mgr.get_field("ch4_volume_mix_ratio").get_view<Real**>();
auto d_o2 = field_mgr.get_field("o2_volume_mix_ratio").get_view<Real**>();
auto d_n2 = field_mgr.get_field("n2_volume_mix_ratio").get_view<Real**>();
auto d_pmid = field_mgr.get_field("p_mid", grid->name()).get_view<Real**>();
auto d_tmid = field_mgr.get_field("T_mid", grid->name()).get_view<Real**>();
auto d_pint = field_mgr.get_field("p_int", grid->name()).get_view<Real**>();
auto d_pdel = field_mgr.get_field("pseudo_density", grid->name()).get_view<Real**>();
auto d_sfc_alb_dir_vis = field_mgr.get_field("sfc_alb_dir_vis", grid->name()).get_view<Real*>();
auto d_sfc_alb_dir_nir = field_mgr.get_field("sfc_alb_dir_nir", grid->name()).get_view<Real*>();
auto d_sfc_alb_dif_vis = field_mgr.get_field("sfc_alb_dif_vis", grid->name()).get_view<Real*>();
auto d_sfc_alb_dif_nir = field_mgr.get_field("sfc_alb_dif_nir", grid->name()).get_view<Real*>();
auto d_surf_lw_flux_up = field_mgr.get_field("surf_lw_flux_up", grid->name()).get_view<Real*>();
auto d_qc = field_mgr.get_field("qc", grid->name()).get_view<Real**>();
auto d_nc = field_mgr.get_field("nc", grid->name()).get_view<Real**>();
auto d_qi = field_mgr.get_field("qi", grid->name()).get_view<Real**>();
auto d_rel = field_mgr.get_field("eff_radius_qc", grid->name()).get_view<Real**>();
auto d_rei = field_mgr.get_field("eff_radius_qi", grid->name()).get_view<Real**>();
auto d_cld = field_mgr.get_field("cldfrac_tot", grid->name()).get_view<Real**>();

auto d_qv = field_mgr.get_field("qv", grid->name()).get_view<Real**>();
auto d_co2 = field_mgr.get_field("co2_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_o3 = field_mgr.get_field("o3_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_n2o = field_mgr.get_field("n2o_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_co = field_mgr.get_field("co_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_ch4 = field_mgr.get_field("ch4_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_o2 = field_mgr.get_field("o2_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_n2 = field_mgr.get_field("n2_volume_mix_ratio", grid->name()).get_view<Real**>();

// Gather molecular weights of all the active gases in the test for conversion
// to mass-mixing-ratio.
Expand Down Expand Up @@ -316,11 +316,11 @@ TEST_CASE("rrtmgp_scream_standalone", "") {

// Check values; The correct values have been stored in the field manager, we need to
// copy back to YAKL::Array.
auto d_sw_flux_up = field_mgr.get_field("sw_flux_up").get_view<Real**>();
auto d_sw_flux_dn = field_mgr.get_field("sw_flux_dn").get_view<Real**>();
auto d_sw_flux_dn_dir = field_mgr.get_field("sw_flux_dn_dir").get_view<Real**>();
auto d_lw_flux_up = field_mgr.get_field("lw_flux_up").get_view<Real**>();
auto d_lw_flux_dn = field_mgr.get_field("lw_flux_dn").get_view<Real**>();
auto d_sw_flux_up = field_mgr.get_field("sw_flux_up", grid->name()).get_view<Real**>();
auto d_sw_flux_dn = field_mgr.get_field("sw_flux_dn", grid->name()).get_view<Real**>();
auto d_sw_flux_dn_dir = field_mgr.get_field("sw_flux_dn_dir", grid->name()).get_view<Real**>();
auto d_lw_flux_up = field_mgr.get_field("lw_flux_up", grid->name()).get_view<Real**>();
auto d_lw_flux_dn = field_mgr.get_field("lw_flux_dn", grid->name()).get_view<Real**>();
auto sw_flux_up_test = real2d("sw_flux_up_test", ncol, nlay+1);
auto sw_flux_dn_test = real2d("sw_flux_dn_test", ncol, nlay+1);
auto sw_flux_dn_dir_test = real2d("sw_flux_dn_dir_test", ncol, nlay+1);
Expand Down Expand Up @@ -479,7 +479,7 @@ TEST_CASE("rrtmgp_scream_standalone_k", "") {

// Get dimension sizes from the field manager
const auto& grid = ad.get_grids_manager()->get_grid("Point Grid");
const auto& field_mgr = *ad.get_field_mgr(grid->name());
const auto& field_mgr = *ad.get_field_mgr();
int ncol = grid->get_num_local_dofs();
int nlay = grid->get_num_vertical_levels();

Expand Down Expand Up @@ -605,30 +605,30 @@ TEST_CASE("rrtmgp_scream_standalone_k", "") {
// copies is necessary since the yakl::Array take in data arranged with ncol
// as the fastest index, but the field manager expects the 2nd dimension as
// the fastest index.
auto d_pmid = field_mgr.get_field("p_mid").get_view<Real**>();
auto d_tmid = field_mgr.get_field("T_mid").get_view<Real**>();
auto d_pint = field_mgr.get_field("p_int").get_view<Real**>();
auto d_pdel = field_mgr.get_field("pseudo_density").get_view<Real**>();
auto d_sfc_alb_dir_vis = field_mgr.get_field("sfc_alb_dir_vis").get_view<Real*>();
auto d_sfc_alb_dir_nir = field_mgr.get_field("sfc_alb_dir_nir").get_view<Real*>();
auto d_sfc_alb_dif_vis = field_mgr.get_field("sfc_alb_dif_vis").get_view<Real*>();
auto d_sfc_alb_dif_nir = field_mgr.get_field("sfc_alb_dif_nir").get_view<Real*>();
auto d_surf_lw_flux_up = field_mgr.get_field("surf_lw_flux_up").get_view<Real*>();
auto d_qc = field_mgr.get_field("qc").get_view<Real**>();
auto d_nc = field_mgr.get_field("nc").get_view<Real**>();
auto d_qi = field_mgr.get_field("qi").get_view<Real**>();
auto d_rel = field_mgr.get_field("eff_radius_qc").get_view<Real**>();
auto d_rei = field_mgr.get_field("eff_radius_qi").get_view<Real**>();
auto d_cld = field_mgr.get_field("cldfrac_tot").get_view<Real**>();

auto d_qv = field_mgr.get_field("qv").get_view<Real**>();
auto d_co2 = field_mgr.get_field("co2_volume_mix_ratio").get_view<Real**>();
auto d_o3 = field_mgr.get_field("o3_volume_mix_ratio").get_view<Real**>();
auto d_n2o = field_mgr.get_field("n2o_volume_mix_ratio").get_view<Real**>();
auto d_co = field_mgr.get_field("co_volume_mix_ratio").get_view<Real**>();
auto d_ch4 = field_mgr.get_field("ch4_volume_mix_ratio").get_view<Real**>();
auto d_o2 = field_mgr.get_field("o2_volume_mix_ratio").get_view<Real**>();
auto d_n2 = field_mgr.get_field("n2_volume_mix_ratio").get_view<Real**>();
auto d_pmid = field_mgr.get_field("p_mid", grid->name()).get_view<Real**>();
auto d_tmid = field_mgr.get_field("T_mid", grid->name()).get_view<Real**>();
auto d_pint = field_mgr.get_field("p_int", grid->name()).get_view<Real**>();
auto d_pdel = field_mgr.get_field("pseudo_density", grid->name()).get_view<Real**>();
auto d_sfc_alb_dir_vis = field_mgr.get_field("sfc_alb_dir_vis", grid->name()).get_view<Real*>();
auto d_sfc_alb_dir_nir = field_mgr.get_field("sfc_alb_dir_nir", grid->name()).get_view<Real*>();
auto d_sfc_alb_dif_vis = field_mgr.get_field("sfc_alb_dif_vis", grid->name()).get_view<Real*>();
auto d_sfc_alb_dif_nir = field_mgr.get_field("sfc_alb_dif_nir", grid->name()).get_view<Real*>();
auto d_surf_lw_flux_up = field_mgr.get_field("surf_lw_flux_up", grid->name()).get_view<Real*>();
auto d_qc = field_mgr.get_field("qc", grid->name()).get_view<Real**>();
auto d_nc = field_mgr.get_field("nc", grid->name()).get_view<Real**>();
auto d_qi = field_mgr.get_field("qi", grid->name()).get_view<Real**>();
auto d_rel = field_mgr.get_field("eff_radius_qc", grid->name()).get_view<Real**>();
auto d_rei = field_mgr.get_field("eff_radius_qi", grid->name()).get_view<Real**>();
auto d_cld = field_mgr.get_field("cldfrac_tot", grid->name()).get_view<Real**>();

auto d_qv = field_mgr.get_field("qv", grid->name()).get_view<Real**>();
auto d_co2 = field_mgr.get_field("co2_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_o3 = field_mgr.get_field("o3_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_n2o = field_mgr.get_field("n2o_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_co = field_mgr.get_field("co_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_ch4 = field_mgr.get_field("ch4_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_o2 = field_mgr.get_field("o2_volume_mix_ratio", grid->name()).get_view<Real**>();
auto d_n2 = field_mgr.get_field("n2_volume_mix_ratio", grid->name()).get_view<Real**>();

// Gather molecular weights of all the active gases in the test for conversion
// to mass-mixing-ratio.
Expand Down Expand Up @@ -687,11 +687,11 @@ TEST_CASE("rrtmgp_scream_standalone_k", "") {

// Check values; The correct values have been stored in the field manager, we need to
// copy back to YAKL::Array.
auto d_sw_flux_up = field_mgr.get_field("sw_flux_up").get_view<Real**>();
auto d_sw_flux_dn = field_mgr.get_field("sw_flux_dn").get_view<Real**>();
auto d_sw_flux_dn_dir = field_mgr.get_field("sw_flux_dn_dir").get_view<Real**>();
auto d_lw_flux_up = field_mgr.get_field("lw_flux_up").get_view<Real**>();
auto d_lw_flux_dn = field_mgr.get_field("lw_flux_dn").get_view<Real**>();
auto d_sw_flux_up = field_mgr.get_field("sw_flux_up", grid->name()).get_view<Real**>();
auto d_sw_flux_dn = field_mgr.get_field("sw_flux_dn", grid->name()).get_view<Real**>();
auto d_sw_flux_dn_dir = field_mgr.get_field("sw_flux_dn_dir", grid->name()).get_view<Real**>();
auto d_lw_flux_up = field_mgr.get_field("lw_flux_up", grid->name()).get_view<Real**>();
auto d_lw_flux_dn = field_mgr.get_field("lw_flux_dn", grid->name()).get_view<Real**>();
auto sw_flux_up_test = real2dk("sw_flux_up_test", ncol, nlay+1);
auto sw_flux_dn_test = real2dk("sw_flux_dn_test", ncol, nlay+1);
auto sw_flux_dn_dir_test = real2dk("sw_flux_dn_dir_test", ncol, nlay+1);
Expand Down