Skip to content

Commit

Permalink
Merge branch 'stormspeed' into build_kokkos_from_scratch
Browse files Browse the repository at this point in the history
  • Loading branch information
sjsprecious committed Feb 19, 2025
2 parents c6d4d47 + 1be120a commit 13bfcfd
Show file tree
Hide file tree
Showing 404 changed files with 55,273 additions and 4,644 deletions.
24 changes: 12 additions & 12 deletions Externals_CAM.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,24 @@ required = True

[cosp2]
local_path = src/physics/cosp2/src
protocol = svn
repo_url = https://github.com/CFMIP/COSPv2.0/tags/
tag = v2.1.4cesm/src
required = False
protocol = git
repo_url = https://github.com/jtruesdal/COSPv2.0
branch = v2.1.4cesm_src
required = True

[clubb]
local_path = src/physics/clubb
protocol = svn
repo_url = https://github.com/larson-group/clubb_release/tags/
tag = clubb_4ncar_20220311_f51de38/src/CLUBB_core
required = False
protocol = git
repo_url = https://github.com/jtruesdal/clubb_release
branch = clubb_4ncar_20220311_f51de38_stormspeed
required = True

[silhs]
local_path = src/physics/silhs
protocol = svn
repo_url = https://github.com/larson-group/clubb_release/tags/
tag = clubb_4ncar_20220311_f51de38/src/SILHS
required = False
protocol = git
repo_url = https://github.com/jtruesdal/clubb_release
branch = clubb_4ncar_20220311_f51de38_SILHS_stormspeed
required = True

[pumas]
local_path = src/physics/pumas
Expand Down
197 changes: 121 additions & 76 deletions bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -3753,6 +3753,7 @@ if ($dyn =~ /se/) {
# namelist group: dyn_se_inparm (for CAM_SE) #
####################################################

my $se_dyn_target = $cfg->get('se_dyn_target');
my $csne = $cfg->get('csne');
my $se_ne = $nl->get_value('se_ne');
if (defined($se_ne) and $se_ne != $csne) {
Expand All @@ -3765,86 +3766,130 @@ if ($dyn =~ /se/) {
if (defined($se_fv_nphys) and $se_fv_nphys != $npg) {
die "$ProgName - ERROR: se_fv_nphys should not be set by the user\n";
}
# add_default($nl, 'se_fv_nphys', 'val'=>$npg);

my @vars = qw( se_cubed_sphere_map
se_dt_remap_factor
se_dt_tracer_factor
se_hypervis_order
se_hypervis_scaling
se_hypervis_subcycle
se_hypervis_subcycle_q
se_hypervis_subcycle_tom
se_integration
se_mesh_file
se_nu
se_nu_div
se_nu_p
se_nu_q
se_nu_s
se_nu_top
se_qsplit
se_rsplit
se_ftype
se_geometry
se_limiter_option
se_lx
se_ly
se_ne
se_ne_x
se_ne_y
se_nsplit
se_partmethod
se_topology
se_tstep
se_statefreq
se_theta_advect_form
se_theta_hydrostatic_mode
se_transport_alg
se_tstep_type
se_vert_remap_q_alg
se_vthreads
);

my %opts;

# # Settings for refined mesh.
# add_default($nl, 'se_refined_mesh');
# my $refined_mesh = $nl->get_value('se_refined_mesh');
# if ($refined_mesh =~ m/$TRUE/i) {
# $opts{'se_refined_mesh'} = "1";

# add_default($nl, 'se_mesh_file');
# my $se_mesh_file = $nl->get_value('se_mesh_file');
# if (!defined $se_mesh_file or ($se_mesh_file =~ m/none/i) or ((length $se_mesh_file) == 0)) {
# die "$ProgName - ERROR: se_mesh_file is required for a refined mesh run\n";
# }

# # We are in a refined mesh situation, set appropriate defaults
# $nl->set_variable_value('dyn_se_inparm', 'se_ne', 0);

# add_default($nl, 'se_hypervis_power');
# my $hypervis_power = $nl->get_value('se_hypervis_power');
# if ($hypervis_power == 0) {
# # Configure default tensor hyperviscosity
# $opts{'hypervis_type'} = 'tensor';
# push @vars, 'se_hypervis_scaling';
# }
# else {
# # Configure scalar hyperviscosity
# $opts{'hypervis_type'} = 'scalar';
# if ($hypervis_power != 3.322) {
# # This is unsupported territory, allow chaos to reign
# print "$ProgName - WARNING: Unsupported value for hypervis_power, assuming scalar hyperviscosity\n";
# }
# push @vars, 'se_fine_ne';
# push @vars, 'se_max_hypervis_courant';
# }
# }
# Add the collected vars
foreach my $var (@vars) {
add_default($nl, $var, %opts);
if($se_dyn_target ne 'cam') {
my @vars = qw( se_cubed_sphere_map
se_dt_remap_factor
se_dt_tracer_factor
se_hypervis_order
se_hypervis_scaling
se_hypervis_subcycle
se_hypervis_subcycle_q
se_hypervis_subcycle_tom
se_integration
se_mesh_file
se_nu
se_nu_div
se_nu_p
se_nu_q
se_nu_s
se_nu_top
se_qsplit
se_rsplit
se_ftype
se_geometry
se_limiter_option
se_lx
se_ly
se_ne
se_ne_x
se_ne_y
se_nsplit
se_partmethod
se_topology
se_tstep
se_statefreq
se_theta_advect_form
se_theta_hydrostatic_mode
se_transport_alg
se_tstep_type
se_vert_remap_q_alg
se_vthreads
);
# Add the collected vars
foreach my $var (@vars) {
add_default($nl, $var, %opts);
}
} else {
add_default($nl, 'se_fv_nphys', 'val'=>$npg);
my @vars = qw(
se_ftype
se_horz_num_threads
se_lcp_moist
se_large_Courant_incr
se_hypervis_subcycle
se_hypervis_subcycle_sponge
se_hypervis_subcycle_q
se_limiter_option
se_nsplit
se_nu
se_nu_div
se_nu_p
se_nu_top
se_sponge_del4_nu_fac
se_sponge_del4_nu_div_fac
se_sponge_del4_lev
se_qsplit
se_rsplit
se_statediag_numtrac
se_statefreq
se_tracer_num_threads
se_tstep_type
se_vert_num_threads
se_vert_remap_T
se_vert_remap_uvTq_alg
se_vert_remap_tracer_alg
se_fvm_supercycling
se_fvm_supercycling_jet
se_kmin_jet
se_kmax_jet
se_phys_dyn_cp
se_molecular_diff
);


# Settings for refined mesh.
add_default($nl, 'se_refined_mesh');
my $refined_mesh = $nl->get_value('se_refined_mesh');
if ($refined_mesh =~ m/$TRUE/i) {
$opts{'se_refined_mesh'} = "1";

add_default($nl, 'se_mesh_file');
my $se_mesh_file = $nl->get_value('se_mesh_file');
if (!defined $se_mesh_file or ($se_mesh_file =~ m/none/i) or ((length $se_mesh_file) == 0)) {
die "$ProgName - ERROR: se_mesh_file is required for a refined mesh run\n";
}

# We are in a refined mesh situation, set appropriate defaults
$nl->set_variable_value('dyn_se_inparm', 'se_ne', 0);

add_default($nl, 'se_hypervis_power');
my $hypervis_power = $nl->get_value('se_hypervis_power');
if ($hypervis_power == 0) {
# Configure default tensor hyperviscosity
$opts{'hypervis_type'} = 'tensor';
push @vars, 'se_hypervis_scaling';
}
else {
# Configure scalar hyperviscosity
$opts{'hypervis_type'} = 'scalar';
if ($hypervis_power != 3.322) {
# This is unsupported territory, allow chaos to reign
print "$ProgName - WARNING: Unsupported value for hypervis_power, assuming scalar hyperviscosity\n";
}
push @vars, 'se_fine_ne';
push @vars, 'se_max_hypervis_courant';
}
}

# Add the collected vars
foreach my $var (@vars) {
add_default($nl, $var, %opts);
}
}

}

# MPAS-Atmosphere dycore
Expand Down
47 changes: 27 additions & 20 deletions bld/configure
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,10 @@ if ($dyn_pkg eq 'se') {
$cfg_ref->set('se_dyn_target', 'theta-l');
$se_bld_target = 'theta-l';
}
if (substr($opts{'se_dyn_target'},0,3) eq 'cam') {
$cfg_ref->set('se_dyn_target', 'cam');
$se_bld_target = 'cam';
}
print "SE dycore target options:\n";
print " build target: $se_bld_target\n";
my $temp = $cfg_ref->get('se_dyn_target');
Expand Down Expand Up @@ -2285,35 +2289,38 @@ sub write_filepath
print $fh "$camsrcdir/src/physics/cam\n";

# Dynamics package and test utilities
print $fh "$camsrcdir/src/dynamics/$dyn\n";

if ($dyn eq 'se' and ($se_dyn_target eq 'preqx' or$se_dyn_target eq 'theta-l' or $se_dyn_target eq 'theta-l_kokkos')) {
print $fh "$camsrcdir/src/dynamics/senh\n";
} else {
print $fh "$camsrcdir/src/dynamics/$dyn\n";
}
if($se_dyn_target eq 'cam') {
print $fh "$camsrcdir/src/dynamics/se/dycore\n";
}
if($se_dyn_target eq 'preqx') {
print $fh "$camsrcdir/src/dynamics/se/share\n";
print $fh "$camsrcdir/src/dynamics/se/preqx\n";
print $fh "$camsrcdir/src/dynamics/se/preqx/share\n";
print $fh "$camsrcdir/src/dynamics/senh/share\n";
print $fh "$camsrcdir/src/dynamics/senh/preqx\n";
print $fh "$camsrcdir/src/dynamics/senh/preqx/share\n";
}
if($se_dyn_target eq 'theta-l') {
print $fh "$KOKKOSROOT/include\n";
print $fh "$camsrcdir/src/dynamics/se/share\n";
print $fh "$camsrcdir/src/dynamics/se/share/compose\n";
print $fh "$camsrcdir/src/dynamics/se/theta-l\n";
print $fh "$camsrcdir/src/dynamics/se/theta-l/share\n";
print $fh "$camsrcdir/src/dynamics/senh/share\n";
print $fh "$camsrcdir/src/dynamics/senh/share/compose\n";
print $fh "$camsrcdir/src/dynamics/senh/theta-l\n";
print $fh "$camsrcdir/src/dynamics/senh/theta-l/share\n";
}
if ($se_dyn_target eq 'theta-l_kokkos') {
print $fh "$KOKKOSROOT/include\n";
print $fh "$camsrcdir/src/dynamics/se/share\n";
print $fh "$camsrcdir/src/dynamics/se/share/compose\n";
print $fh "$camsrcdir/src/dynamics/se/share/cxx\n";
print $fh "$camsrcdir/src/dynamics/se/share/cxx/mpi\n";
print $fh "$camsrcdir/src/dynamics/se/share/cxx/utilities\n";
print $fh "$camsrcdir/src/dynamics/se/share/cxx/vector\n";
print $fh "$camsrcdir/src/dynamics/se/theta-l_kokkos\n";
print $fh "$camsrcdir/src/dynamics/se/theta-l_kokkos/cxx\n";
print $fh "$camsrcdir/src/dynamics/se/theta-l\n"; # we need the dycore.F90 file for compilation
print $fh "$camsrcdir/src/dynamics/se/theta-l/share\n";
print $fh "$camsrcdir/src/dynamics/senh/share\n";
print $fh "$camsrcdir/src/dynamics/senh/share/compose\n";
print $fh "$camsrcdir/src/dynamics/senh/share/cxx\n";
print $fh "$camsrcdir/src/dynamics/senh/share/cxx/mpi\n";
print $fh "$camsrcdir/src/dynamics/senh/share/cxx/utilities\n";
print $fh "$camsrcdir/src/dynamics/senh/share/cxx/vector\n";
print $fh "$camsrcdir/src/dynamics/senh/theta-l_kokkos\n";
print $fh "$camsrcdir/src/dynamics/senh/theta-l_kokkos/cxx\n";
print $fh "$camsrcdir/src/dynamics/senh/theta-l\n"; # we need the dycore.F90 file for compilation
print $fh "$camsrcdir/src/dynamics/senh/theta-l/share\n";
}
print $fh "$camsrcdir/src/dynamics/tests\n";
if($inic_val) {
Expand Down Expand Up @@ -2360,7 +2367,7 @@ sub write_cppdefs
}

print $fh "\n";

$fh->close;
}

Expand Down
3 changes: 2 additions & 1 deletion bld/namelist_files/namelist_definition.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7702,11 +7702,12 @@ Default: 0.


<entry id="se_limiter_option" type="integer" category="se"
group="dyn_se_inparm" valid_values="0,4,8" >
group="dyn_se_inparm" valid_values="0,4,8,9" >
Limiter used for horizontal tracer advection:
0: None
4: Sign-preserving limiter.
8: Monotone limiter.
9: CAAS monotone limiter.
Default: 8
</entry>

Expand Down
4 changes: 2 additions & 2 deletions cime_config/config_component.xml
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@

<entry id="CAM_TARGET">
<type>char</type>
<valid_values>preqx,preqx_kokkos,preqx_acc,theta-l,theta-l_kokkos</valid_values>
<default_value>theta-l</default_value>
<valid_values>cam,preqx,preqx_kokkos,preqx_acc,theta-l,theta-l_kokkos</valid_values>
<default_value>cam</default_value>
<group>build_component_cam</group>
<file>env_build.xml</file>
<desc>SE cmake target (only used with DYCORE == 'se')</desc>
Expand Down
Loading

0 comments on commit 13bfcfd

Please sign in to comment.