Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b57e9e5
Integrate native SHOC as separate PBL
pressel Jun 12, 2026
258ac05
Fix native SHOC follow-up issues
pressel Jun 12, 2026
dbd9f86
Fix native SHOC follow-up issues
pressel Jun 12, 2026
71cb162
Fix SHOC single precision literals
pressel Jun 12, 2026
3f3a152
Assert selected SHOC interfaces in slow RHS
pressel Jun 12, 2026
ab85263
Avoid duplicate AMReX link in SHOC unit tests
pressel Jun 12, 2026
cee21ad
Always compile native SHOC
pressel Jun 12, 2026
8f90f40
Preserve non-SHOC Kessler behavior with native SHOC compiled
pressel Jun 13, 2026
e51380d
Merge branch 'erf-model:development' into native-shoc-pr-development-…
pressel Jun 13, 2026
35e35cf
Remove SHOC-specific portability checker
pressel Jun 13, 2026
b052ea3
Document native SHOC usage and runtime options
pressel Jun 13, 2026
085c726
Clarify native SHOC documentation
pressel Jun 13, 2026
d69ada5
Clarify SHOC surface flux and condensation coupling
pressel Jun 13, 2026
583feb3
Add native SHOC README
pressel Jun 13, 2026
5b22465
Document SHOC vertical grid constraint
pressel Jun 13, 2026
ed3eee5
Document native SHOC full-column grid requirement
pressel Jun 13, 2026
0cd7f25
Merge branch 'erf-model:development' into native-shoc-pr-development-…
pressel Jun 13, 2026
812cbff
Fix SHOC scalar diffusion flux gating
pressel Jun 13, 2026
f042f26
Merge remote-tracking branch 'origin/native-shoc-pr-development-base'…
pressel Jun 13, 2026
9cc6426
Merge branch 'development' into native-shoc-pr-development-base
asalmgren Jun 13, 2026
9a9fc34
fix morrison shoc condensation suppression
pressel Jun 14, 2026
a371eb7
tighten morrison shoc condensation guard
pressel Jun 14, 2026
c8922fa
Fix SHOC ice latent heat thermodynamics
pressel Jun 14, 2026
179ad2f
Fix SHOC warning and stale thermodynamics comment
pressel Jun 14, 2026
92e6c4c
Enforce interim SHOC ice contract
pressel Jun 15, 2026
ffb11ad
Add SHOC interim contract tests
pressel Jun 15, 2026
14aedbd
Remove unused SHOC structure test local
pressel Jun 15, 2026
21eee24
Fix SHOC CI failures
pressel Jun 15, 2026
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
2 changes: 1 addition & 1 deletion .Exec_dev/Shoc/GNUmakefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ DEBUG = FALSE
TEST = TRUE
USE_ASSERTION = TRUE

USE_SHOC = TRUE
USE_EAMXX_SHOC = FALSE

# GNU Make
Bpack := ./Make.package
Expand Down
5 changes: 3 additions & 2 deletions .Exec_dev/Shoc/README
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ To build with SHOC using gmake:
source /path/to/ERF/Build/GNU_Ekat/ekat_build_commands.sh

Then type "make" here in ERF/.Exec_dev/Shoc, after verifying that the GNUmakfile
contains the line
does not enable EAMxx SHOC by default.

USE_SHOC = TRUE
Native SHOC is built in-tree and selected at runtime with `erf.pbl_type = NATIVE_SHOC`.
Set `USE_EAMXX_SHOC = TRUE` only if you also need the optional EAMxx SHOC path.
180 changes: 107 additions & 73 deletions CMake/BuildERFExe.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,106 @@ function(target_link_libraries_includes_only target visibility lib)
endif()
endfunction()

function(erf_add_native_shoc_sources target)
set(SRC_DIR ${PROJECT_SOURCE_DIR}/Source)

target_sources(${target} PRIVATE
${SRC_DIR}/PBL/Shoc/ERF_ShocStructure.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocTKE.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocMoments.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocPDF.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocEnergyFixer.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocImplicit.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocDriver.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocPreprocess.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocDiagnostics.cpp
${SRC_DIR}/PBL/Shoc/ERF_ShocCoupling.cpp
)

target_include_directories(${target} PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Source/PBL/Shoc>)
endfunction()

function(erf_add_eamxx_shoc_sources target)
set(EAMXX_SRC ${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src)
set(ERF_EAMXX_IFACE ${PROJECT_SOURCE_DIR}/Source/PhysicsInterfaces/Shoc)

target_include_directories(${target} PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Source/PhysicsInterfaces>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Source/PhysicsInterfaces/Shoc>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Submodules/ekat/src/pack>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Submodules/ekat/src/algorithm>
$<BUILD_INTERFACE:${EAMXX_SRC}>
$<BUILD_INTERFACE:${EAMXX_SRC}/physics>
$<BUILD_INTERFACE:${EAMXX_SRC}/physics/share>
$<BUILD_INTERFACE:${EAMXX_SRC}/physics/shoc>
$<BUILD_INTERFACE:${EAMXX_SRC}/physics/shoc/eti>
$<BUILD_INTERFACE:${EAMXX_SRC}/physics/shoc/impl>
)

target_sources(${target} PRIVATE
${ERF_EAMXX_IFACE}/ERF_ShocInterface.cpp
${EAMXX_SRC}/physics/share/physics_saturation.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_assumed_pdf_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_check_tke_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_compute_shoc_temperature_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_compute_shoc_vapor_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_diag_obklen_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_diag_second_shoc_moments_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_diag_third_shoc_moments_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_energy_fixer_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_energy_integrals_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_grid_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_length_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_pblintd_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_tke_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_update_host_dse_disp.cpp
${EAMXX_SRC}/physics/shoc/disp/shoc_update_prognostics_implicit_disp.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_adv_sgs_tke.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_assumed_pdf.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_calc_shoc_varorcovar.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_calc_shoc_vertflux.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_check_length_scale_shoc_length.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_check_tke.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_clipping_diag_third_shoc_moments.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_compute_brunt_shoc_length.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_compute_diag_third_shoc_moment.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_compute_l_inf_shoc_length.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_compute_shoc_mix_shoc_length.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_compute_shoc_temperature.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_compute_shoc_vapor.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_compute_shr_prod.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_compute_tmpi.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_diag_obklen.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_diag_second_moments.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_diag_second_moments_lbycond.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_diag_second_moments_srf.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_diag_second_moments_ubycond.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_diag_second_shoc_moments.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_diag_third_shoc_moments.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_dp_inverse.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_eddy_diffusivities.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_energy_fixer.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_energy_integrals.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_grid.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_integ_column_stability.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_isotropic_ts.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_linear_interp.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_length.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_main.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_pblintd.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_pblintd_check_pblh.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_pblintd_cldcheck.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_pblintd_height.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_pblintd_init_pot.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_pblintd_surf_temp.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_tridiag_solver.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_tke.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_update_host_dse.cpp
${EAMXX_SRC}/physics/shoc/eti/shoc_update_prognostics_implicit.cpp
)
endfunction()

function(build_erf_lib erf_lib_name)

set(SRC_DIR ${PROJECT_SOURCE_DIR}/Source)
Expand Down Expand Up @@ -147,79 +247,13 @@ function(build_erf_lib erf_lib_name)
target_compile_definitions(${erf_lib_name} PUBLIC RRTMGP_ENABLE_KOKKOS)
endif()

########################### SHOC #################################
if(ERF_ENABLE_SHOC)
target_include_directories(${erf_lib_name} PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Source/PhysicsInterfaces/Shoc>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/share>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/impl>
)
target_sources(${erf_lib_name} PRIVATE
${SRC_DIR}/PhysicsInterfaces/Shoc/ERF_ShocInterface.cpp
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/share/physics_saturation.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_assumed_pdf_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_check_tke_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_compute_shoc_temperature_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_compute_shoc_vapor_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_diag_obklen_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_diag_second_shoc_moments_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_diag_third_shoc_moments_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_energy_fixer_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_energy_integrals_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_grid_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_length_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_pblintd_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_tke_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_update_host_dse_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/disp/shoc_update_prognostics_implicit_disp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_adv_sgs_tke.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_assumed_pdf.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_calc_shoc_varorcovar.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_calc_shoc_vertflux.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_check_length_scale_shoc_length.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_check_tke.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_clipping_diag_third_shoc_moments.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_compute_brunt_shoc_length.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_compute_diag_third_shoc_moment.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_compute_l_inf_shoc_length.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_compute_shoc_mix_shoc_length.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_compute_shoc_temperature.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_compute_shoc_vapor.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_compute_shr_prod.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_compute_tmpi.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_diag_obklen.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_diag_second_moments.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_diag_second_moments_lbycond.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_diag_second_moments_srf.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_diag_second_moments_ubycond.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_diag_second_shoc_moments.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_diag_third_shoc_moments.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_dp_inverse.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_eddy_diffusivities.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_energy_fixer.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_energy_integrals.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_grid.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_integ_column_stability.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_isotropic_ts.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_linear_interp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_length.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_main.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_pblintd.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_pblintd_check_pblh.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_pblintd_cldcheck.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_pblintd_height.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_pblintd_init_pot.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_pblintd_surf_temp.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_tridiag_solver.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_tke.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_update_host_dse.cpp>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/E3SM/components/eamxx/src/physics/shoc/eti/shoc_update_prognostics_implicit.cpp>
)
target_compile_definitions(${erf_lib_name} PUBLIC ERF_USE_SHOC)
erf_add_native_shoc_sources(${erf_lib_name})
target_compile_definitions(${erf_lib_name} PUBLIC ERF_USE_NATIVE_SHOC)
target_compile_definitions(${erf_lib_name} PUBLIC ERF_HAS_SHOC_FAMILY)

if(ERF_ENABLE_EAMXX_SHOC)
erf_add_eamxx_shoc_sources(${erf_lib_name})
target_compile_definitions(${erf_lib_name} PUBLIC ERF_USE_EAMXX_SHOC)
target_compile_definitions(${erf_lib_name} PUBLIC SCREAM_SHOC_SMALL_KERNELS)
endif()

Expand Down
14 changes: 7 additions & 7 deletions CMake/CrayDetection.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ if(AMReX_GPU_BACKEND MATCHES "HIP" OR ERF_ENABLE_HIP)
endif()

# Kokkos Architecture Detection (for EKAT physics)
if(ERF_ENABLE_RRTMGP OR ERF_ENABLE_SHOC OR ERF_ENABLE_P3)
if(ERF_ENABLE_RRTMGP OR ERF_ENABLE_EAMXX_SHOC OR ERF_ENABLE_P3)
message(VERBOSE "EKAT-based physics enabled, checking Kokkos architecture")

set(KOKKOS_ARCH_SET FALSE)
Expand Down Expand Up @@ -458,7 +458,7 @@ else()
endif()

# E3SM Cloned Check
if(ERF_ENABLE_SHOC OR ERF_ENABLE_P3)
if(ERF_ENABLE_EAMXX_SHOC OR ERF_ENABLE_P3)
message(VERBOSE "Checking EAMxx files from E3SM")

set(E3SM_EXPECTED_PATH "${PROJECT_SOURCE_DIR}/external/E3SM")
Expand All @@ -476,7 +476,7 @@ if(ERF_ENABLE_SHOC OR ERF_ENABLE_P3)
" ln -s /path/to/your/E3SM ${PROJECT_SOURCE_DIR}/external/E3SM\n"
"\n"
"Or disable features:\n"
" cmake -DERF_ENABLE_SHOC=OFF -DERF_ENABLE_P3=OFF ..\n")
" cmake -DERF_ENABLE_EAMXX_SHOC=OFF -DERF_ENABLE_P3=OFF ..\n")
endif()
else()
message(DEBUG "EKAT physics not enabled, skipping E3SM check")
Expand All @@ -496,7 +496,7 @@ message(DEBUG " MPICH_GPU_SUPPORT_ENABLED: $ENV{MPICH_GPU_SUPPORT_ENABLED}")
# Fix 1: CUDA + EKAT -> nvcc_wrapper complications
# ==============================================================================

if(ERF_ENABLE_CUDA AND (ERF_ENABLE_RRTMGP OR ERF_ENABLE_SHOC OR ERF_ENABLE_P3))
if(ERF_ENABLE_CUDA AND (ERF_ENABLE_RRTMGP OR ERF_ENABLE_EAMXX_SHOC OR ERF_ENABLE_P3))
message(STATUS "Applying Fix 1: CUDA+EKAT nvcc_wrapper")

message(DEBUG "Problem: nvcc_wrapper doesn't inherit Cray include paths")
Expand Down Expand Up @@ -531,7 +531,7 @@ endif()
# Fix 2: FCOMPARE + Cray + EKAT/Kokkos -> mpi_gnu_123 not found
# ==============================================================================

if(ERF_ENABLE_FCOMPARE AND (ERF_ENABLE_RRTMGP OR ERF_ENABLE_SHOC OR ERF_ENABLE_P3))
if(ERF_ENABLE_FCOMPARE AND (ERF_ENABLE_RRTMGP OR ERF_ENABLE_EAMXX_SHOC OR ERF_ENABLE_P3))
message(STATUS "Applying Fix 2: fcompare linker with EKAT")

message(DEBUG "Problem: --as-needed drops required MPI libs when EKAT is enabled")
Expand Down Expand Up @@ -892,12 +892,12 @@ set(FIX56_ACTIVE OFF)
set(FIX7_ACTIVE OFF)

# Fix 1: CUDA + EKAT
if(ERF_ENABLE_CUDA AND (ERF_ENABLE_RRTMGP OR ERF_ENABLE_SHOC OR ERF_ENABLE_P3) AND CRAY_CUDA_FLAGS)
if(ERF_ENABLE_CUDA AND (ERF_ENABLE_RRTMGP OR ERF_ENABLE_EAMXX_SHOC OR ERF_ENABLE_P3) AND CRAY_CUDA_FLAGS)
set(FIX1_ACTIVE ON)
endif()

# Fix 2: fcompare + EKAT
if(ERF_ENABLE_FCOMPARE AND (ERF_ENABLE_RRTMGP OR ERF_ENABLE_SHOC OR ERF_ENABLE_P3) AND CRAY_LIBS_CLEAN)
if(ERF_ENABLE_FCOMPARE AND (ERF_ENABLE_RRTMGP OR ERF_ENABLE_EAMXX_SHOC OR ERF_ENABLE_P3) AND CRAY_LIBS_CLEAN)
set(FIX2_ACTIVE ON)
endif()

Expand Down
Loading
Loading