Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
a3870ce
Integrate native SHOC as separate PBL
pressel Jun 12, 2026
8cf30ba
Fix native SHOC follow-up issues
pressel Jun 12, 2026
c97352a
Fix native SHOC follow-up issues
pressel Jun 12, 2026
b3df5ab
Fix SHOC single precision literals
pressel Jun 12, 2026
aab1cae
Assert selected SHOC interfaces in slow RHS
pressel Jun 12, 2026
18c19a9
Avoid duplicate AMReX link in SHOC unit tests
pressel Jun 12, 2026
22664db
Always compile native SHOC
pressel Jun 12, 2026
edc394b
Preserve non-SHOC Kessler behavior with native SHOC compiled
pressel Jun 13, 2026
f15449e
Remove SHOC-specific portability checker
pressel Jun 13, 2026
4ed37f9
Document native SHOC usage and runtime options
pressel Jun 13, 2026
64387f6
Clarify native SHOC documentation
pressel Jun 13, 2026
15c2d8b
Clarify SHOC surface flux and condensation coupling
pressel Jun 13, 2026
23a0f0a
Add native SHOC README
pressel Jun 13, 2026
bd8b474
Document SHOC vertical grid constraint
pressel Jun 13, 2026
3099c57
Document native SHOC full-column grid requirement
pressel Jun 13, 2026
750a224
Fix SHOC scalar diffusion flux gating
pressel Jun 13, 2026
23afcca
fix morrison shoc condensation suppression
pressel Jun 14, 2026
9651ab8
tighten morrison shoc condensation guard
pressel Jun 14, 2026
55f4572
Fix SHOC ice latent heat thermodynamics
pressel Jun 14, 2026
8fe030a
Fix SHOC warning and stale thermodynamics comment
pressel Jun 14, 2026
66952fd
Enforce interim SHOC ice contract
pressel Jun 15, 2026
2f003c9
Add SHOC interim contract tests
pressel Jun 15, 2026
9ae9c54
Remove unused SHOC structure test local
pressel Jun 15, 2026
ba6366b
Fix SHOC CI failures
pressel Jun 15, 2026
661c0bb
Implement native SHOC state update mode
pressel Jun 17, 2026
479d2d1
Fix native SHOC follow-up issues
pressel Jun 17, 2026
483929f
Fix native SHOC follow-up cleanup
pressel Jun 17, 2026
a4c6637
Revert "Fix native SHOC follow-up cleanup"
pressel Jun 17, 2026
46d9c71
fix shoc host diffusion death test
pressel Jun 18, 2026
ab99e69
tighten native shoc docs and sync
pressel Jun 18, 2026
74cb63a
expand native shoc README guidance
pressel Jun 18, 2026
4a3c4ef
register native shoc plotfile diagnostics
pressel Jun 18, 2026
bc5b6ff
fix shoc cuda lambda portability
pressel Jun 19, 2026
534d177
Fix SHOC seam sync
pressel Jun 20, 2026
ec51ac0
Split native SHOC momentum transport from scalar coupling
pressel Jun 20, 2026
fb4cba4
Add native SHOC bad-column diagnostics
pressel Jun 20, 2026
2da313f
Make SHOC bad-column copy GPU safe
pressel Jun 21, 2026
63047d3
Fix SHOC bad-column host copy
pressel Jun 21, 2026
95867b8
Make SHOC bad-column printer host safe
pressel Jun 21, 2026
0356422
Add native SHOC debug isolation switches
pressel Jun 21, 2026
45d44c3
Make SHOC bad-column reports rank-local
pressel Jun 22, 2026
eda5605
Add SHOC writeback sync fence
pressel Jun 23, 2026
82908f4
Fix SHOC workspace lifetime
pressel Jun 23, 2026
a86284c
Fix native SHOC terrain geometry packing
pressel Jun 23, 2026
d017b7f
fix native shoc terrain heights
pressel Jun 24, 2026
0da93f3
fix shoc driver gpu test lambda
pressel Jun 24, 2026
7db6b51
Merge branch 'development' into native-shoc-pr-development-base
pressel Jun 24, 2026
aee6c96
Merge remote-tracking branch 'upstream/development' into native-shoc-…
pressel Jun 25, 2026
157b312
Merge remote-tracking branch 'origin/native-shoc-pr-development-base'…
pressel Jun 25, 2026
dab4bee
Merge branch 'development' into native-shoc-pr-development-base
pressel Jun 29, 2026
d07b2ef
Fix SHOC structure test portable real literals
pressel Jun 29, 2026
6f03d75
fix codespell typo
pressel Jun 29, 2026
162f96d
fix shoc ci failures
pressel Jun 29, 2026
842a9cf
Merge branch 'erf-model:development' into native-shoc-pr-development-…
pressel Jun 29, 2026
23c56a4
remove accidental slow rhs post moist path
pressel Jun 30, 2026
7a2493b
Merge upstream/development into native-shoc-pr-development-base
pressel Jul 1, 2026
6d06d0d
Fix SHOC CI warning and replace fragile death tests
pressel Jul 1, 2026
6719e0c
Fix SHOC SYCL warning and Windows test registration
pressel Jul 1, 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.
2 changes: 1 addition & 1 deletion .github/workflows/gcc-rrtmgp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
- name: Setup Spack
uses: spack/setup-spack@v3
with:
path: ${{ github.workspace }}/spack_install_dir
spack_path: ${{ github.workspace }}/spack_install_dir

- name: Install CA certificates
run: |
Expand Down
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