Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
260ee5b
initial changes
ebchin Jun 3, 2025
a6cb0d8
Merge branch 'develop' into task/chin23/dfem-build
ebchin Jun 3, 2025
0ad2890
tioga host config
ebchin Jun 4, 2025
94ea836
ruby dfem host config
ebchin Jun 4, 2025
dd1a4b3
Merge branch 'develop' into task/chin23/dfem-build
ebchin Jun 4, 2025
bffad92
more general dfem qfunction material
ebchin Jun 19, 2025
34f86a9
add more features
ebchin Jun 21, 2025
734a6de
start testing a diff_op for each term
ebchin Jun 24, 2025
ff90748
set params at construction
ebchin Jun 24, 2025
ad84518
Merge branch 'develop' into feature/chin23/dfem-residual-ex
ebchin Jun 24, 2025
a22d0fa
cleanup
ebchin Jun 25, 2025
11a7b92
get it building for now
ebchin Jun 26, 2025
92ad0f2
simple example changes
ebchin Jun 28, 2025
d8f44d2
clang 20 fixes and other small changes
ebchin Jul 7, 2025
1649655
acceleration fixes
ebchin Jul 9, 2025
88f6c80
lumped mass operator
ebchin Jul 16, 2025
a09d398
mass term
ebchin Jul 16, 2025
4b7540c
simplifications, new examples, gpu fixes
ebchin Jul 28, 2025
3b16ee2
auto vjp operator from orig
ebchin Jul 30, 2025
4d66ca7
make tensor class match
ebchin Aug 5, 2025
4652112
more updates to match type
ebchin Aug 5, 2025
3ac7549
more updates for vjp
ebchin Aug 18, 2025
1346e66
small fixes, vjp test
ebchin Sep 5, 2025
a1fd3c4
pulling over a working subset of dfem-residual-ex
ebchin Sep 9, 2025
ec9f22e
example and test cleanup
ebchin Sep 10, 2025
4acb25b
update docs
ebchin Sep 10, 2025
37fde7e
formatting and comments
ebchin Sep 10, 2025
7a91d3e
make dfem stuff optional
ebchin Sep 10, 2025
c0fbe8a
fixes with cmake defs
ebchin Sep 11, 2025
dffe8a9
add missing include
ebchin Sep 15, 2025
fa5cfc2
formatting
ebchin Sep 15, 2025
7303822
fix non-gpu examples
ebchin Sep 15, 2025
7a91bfe
more small gpu improvements
ebchin Sep 15, 2025
babf48e
small fixes
ebchin Sep 16, 2025
a24841c
Merge branch 'develop' into feature/dfem-explicit-dynamics-gpu
ebchin Sep 16, 2025
ca17a2c
fix one more cmake var
ebchin Sep 16, 2025
1155eaa
fix for header check
ebchin Sep 17, 2025
3a2ecf9
fix doc issues, enzyme dfem on tioga
ebchin Sep 17, 2025
11bbe9b
let enzyme be turned on
ebchin Sep 17, 2025
e8f58a2
restore host configs; add CI jobs the right way
ebchin Sep 19, 2025
a906b0d
turn off enzyme explicitly in mfem when not used
ebchin Sep 19, 2025
f4d72f7
set enzyme off by default
ebchin Sep 19, 2025
e9b3731
small change
ebchin Sep 19, 2025
39b6759
add SERAC_USE_DFEM
ebchin Sep 19, 2025
02ed2f5
add missing includes
ebchin Sep 19, 2025
18179c5
Merge branch 'develop' into feature/chin23/dfem-residual-ex
ebchin Sep 24, 2025
cc58b92
Merge branch 'task/update_tpls_for_enzyme' into feature/chin23/dfem-r…
ebchin Sep 24, 2025
5ad03a5
Merge branch 'feature/dfem-explicit-dynamics-gpu' into feature/chin23…
ebchin Sep 25, 2025
0cd5538
format
ebchin Sep 25, 2025
431c7fa
Merge branch 'task/update_tpls_for_enzyme' into feature/chin23/dfem-r…
ebchin Sep 26, 2025
c956443
Merge branch 'task/update_tpls_for_enzyme' into feature/dfem-explicit…
ebchin Sep 26, 2025
03bc7c3
cleanup from other PR
ebchin Sep 26, 2025
2cac1bc
turn off enzyme until tpl update
ebchin Sep 26, 2025
d7d564b
fix naming
ebchin Sep 26, 2025
53026d1
Merge branch 'feature/dfem-explicit-dynamics-gpu' into feature/chin23…
ebchin Sep 26, 2025
4cf9841
start example cleanup
ebchin Sep 26, 2025
8daa9d7
rest of example fixes
ebchin Sep 26, 2025
1dbc62b
try residual_vector as a member
ebchin Sep 26, 2025
f5a2523
move some functions
ebchin Sep 26, 2025
d459ddf
update comment
ebchin Sep 26, 2025
b59ff75
update tpls
ebchin Sep 26, 2025
72f7b8c
turn off dane llvm codevelop for now
ebchin Sep 28, 2025
5ab1324
Merge branch 'feature/dfem-explicit-dynamics-gpu' into feature/chin23…
ebchin Sep 28, 2025
2a1e1fe
make tests optional
ebchin Sep 29, 2025
98ccb01
WIP stubbing out a dfem plasticity example
btalamini Oct 7, 2025
13073f2
begin add quad to dfem interface
ebchin Oct 8, 2025
7c4fcd2
finish plumbing quad field; update plasticity example
ebchin Oct 8, 2025
94e4556
Fix compilation error due to quadrature field arguments being needed …
btalamini Oct 9, 2025
db00a44
WIP get residual to evaluate with plasticity model
btalamini Oct 13, 2025
8533ad2
small bugfixes
ebchin Oct 14, 2025
00712e5
Change applied displacement field to uniaxial stress solution for eas…
btalamini Oct 19, 2025
8f09af1
Add missing domain attribute to residual
btalamini Oct 20, 2025
9b94189
Evaluate internal state variables with an mfem object shoved right in…
btalamini Oct 20, 2025
24f7e89
Take a shot at computing derivative of internal state update, answer …
btalamini Oct 20, 2025
9829f1f
First cut at JVP of internal state update
btalamini Oct 29, 2025
42d9e03
Merge branch 'develop' into feature/chin23/dfem-residual-ex
ebchin Nov 7, 2025
a765b0f
build fixes
ebchin Nov 8, 2025
5f8579a
include cleanup
ebchin Nov 9, 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
13 changes: 12 additions & 1 deletion .gitlab/build_toss4.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,25 @@ toss4-llvm_19_1_3-src:
variables:
COMPILER: "[email protected]"
HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake"
EXTRA_CMAKE_OPTIONS: "-DENABLE_BENCHMARKS=ON -DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug"
EXTRA_CMAKE_OPTIONS: "-DENABLE_BENCHMARKS=ON -DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DSERAC_USE_DFEM=ON"
# Only run integration tests on one spec (Disabled until integration tests are reenabled)
# DO_INTEGRATION_TESTS: "yes"
# ALLOC_NODES: "2"
ALLOC_NODES: "1"
ALLOC_TIME: "30"
extends: .src_build_on_toss4

# TODO: debug why Enzyme isn't working with Tribol on codevelop
# toss4-llvm_19_1_3-src-codevelop:
# variables:
# COMPILER: "[email protected]"
# HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake"
# EXTRA_CMAKE_OPTIONS: "-DENABLE_BENCHMARKS=ON -DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DSERAC_ENABLE_CODEVELOP=ON -DSERAC_USE_DFEM=ON"
# EXTRA_BUILD_OPTIONS: "--skip-install"
# ALLOC_NODES: "1"
# ALLOC_TIME: "30"
# extends: .src_build_on_toss4

toss4-gcc_13_3_1-src:
variables:
COMPILER: "[email protected]"
Expand Down
31 changes: 16 additions & 15 deletions .gitlab/build_toss4_cray.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,23 +33,24 @@
# Build jobs

toss4_cray-rocmcc_6_2_1-src:
variables:
COMPILER: "[email protected]"
HOST_CONFIG: "tioga-toss_4_x86_64_ib_cray-${COMPILER}_hip.cmake"
EXTRA_CMAKE_OPTIONS: "-DENABLE_BENCHMARKS=ON -DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug"
ALLOC_NODES: "1"
ALLOC_TIME: "30"
extends: .src_build_on_toss4_cray
variables:
COMPILER: "[email protected]"
HOST_CONFIG: "tioga-toss_4_x86_64_ib_cray-${COMPILER}_hip.cmake"
EXTRA_CMAKE_OPTIONS: "-DENABLE_BENCHMARKS=ON -DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug"
ALLOC_NODES: "1"
ALLOC_TIME: "30"
extends: .src_build_on_toss4_cray

toss4_cray-rocmcc_6_2_1-src-codevelop:
variables:
COMPILER: "[email protected]"
HOST_CONFIG: "tioga-toss_4_x86_64_ib_cray-${COMPILER}_hip.cmake"
EXTRA_CMAKE_OPTIONS: "-DENABLE_BENCHMARKS=ON -DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DSMITH_ENABLE_CODEVELOP=ON"
EXTRA_BUILD_OPTIONS: "--skip-install"
ALLOC_NODES: "1"
ALLOC_TIME: "30"
extends: .src_build_on_toss4_cray
variables:
COMPILER: "[email protected]"
HOST_CONFIG: "tioga-toss_4_x86_64_ib_cray-${COMPILER}_hip.cmake"
# TODO: Add -DSERAC_USE_DFEM=ON when TPLs are updated
EXTRA_CMAKE_OPTIONS: "-DENABLE_BENCHMARKS=ON -DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DSMITH_ENABLE_CODEVELOP=ON"
EXTRA_BUILD_OPTIONS: "--skip-install"
ALLOC_NODES: "1"
ALLOC_TIME: "30"
extends: .src_build_on_toss4_cray

# NOTE: SPEC should matches specs.json, but devtools and profiling variants removed
toss4_cray-rocmcc_6_2_1-tpl:
Expand Down
1 change: 1 addition & 0 deletions cmake/smith-config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ if(NOT SMITH_FOUND)
set(SMITH_USE_CALIPER @SMITH_USE_CALIPER@)
set(SMITH_USE_CONDUIT @SMITH_USE_CONDUIT@)
set(SMITH_USE_CONTINUATION @SMITH_USE_CONTINUATION@)
set(SMITH_USE_DFEM @SMITH_USE_DFEM@)
set(SMITH_USE_ENZYME @SMITH_USE_ENZYME@)
set(SMITH_USE_HDF5 @SMITH_USE_HDF5@)
set(SMITH_USE_MFEM @SMITH_USE_MFEM@)
Expand Down
76 changes: 41 additions & 35 deletions cmake/thirdparty/SetupSmithThirdParty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,40 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND)
endif()
message(STATUS "ARPACK support is ${ARPACK_FOUND}")

#------------------------------------------------------------------------------
# Enzyme
#------------------------------------------------------------------------------
if (ENZYME_DIR)
smith_assert_is_directory(DIR_VARIABLE ENZYME_DIR)
set(Enzyme_ROOT ${ENZYME_DIR} CACHE PATH "")
find_dependency(Enzyme REQUIRED)

smith_assert_find_succeeded(PROJECT_NAME Enzyme
TARGET ClangEnzymeFlags
DIR_VARIABLE ENZYME_DIR)

message(STATUS "Checking for Target 'ClangEnzymeFlags' plugin target exists..")
get_target_property(_clangenzyme_opts ClangEnzymeFlags INTERFACE_COMPILE_OPTIONS)
if("${_clangenzyme_opts}" MATCHES "\\$<TARGET_FILE:([^>]+)>")
set(_enzyme_target "${CMAKE_MATCH_1}")

# Check if the extracted target exists
if(TARGET "${_enzyme_target}")
message(STATUS "Found 'ClangEnzymeFlags' plugin target: ${_enzyme_target}")
else()
message(FATAL_ERROR "'ClangEnzymeFlags' plugin target '${_enzyme_target}' referenced in INTERFACE_COMPILE_OPTIONS does not exist.")
endif()
else()
message(STATUS "Skipped check. `ClangEnzymeFlags` target does not reference another target")
endif()

message(STATUS "Enzyme support is ON")
set(ENZYME_FOUND TRUE)
else()
message(STATUS "Enzyme support is OFF")
set(ENZYME_FOUND FALSE)
endif()

#------------------------------------------------------------------------------
# MFEM
#------------------------------------------------------------------------------
Expand Down Expand Up @@ -294,6 +328,12 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND)
endif()
set(MFEM_USE_UMPIRE OFF CACHE BOOL "")
set(MFEM_USE_ZLIB ON CACHE BOOL "")
if(ENZYME_DIR)
smith_assert_is_directory(DIR_VARIABLE ENZYME_DIR)
set(MFEM_USE_ENZYME ON CACHE BOOL "")
else()
set(MFEM_USE_ENZYME OFF CACHE BOOL "")
endif()

#### MFEM Configuration Options

Expand Down Expand Up @@ -508,40 +548,6 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND)
set(ENABLE_FORTRAN ON CACHE BOOL "" FORCE)
endif()

#------------------------------------------------------------------------------
# Enzyme
#------------------------------------------------------------------------------
if (ENZYME_DIR)
smith_assert_is_directory(DIR_VARIABLE ENZYME_DIR)
set(Enzyme_ROOT ${ENZYME_DIR} CACHE PATH "")
find_dependency(Enzyme REQUIRED)

smith_assert_find_succeeded(PROJECT_NAME Enzyme
TARGET ClangEnzymeFlags
DIR_VARIABLE ENZYME_DIR)

message(STATUS "Checking for Target 'ClangEnzymeFlags' plugin target exists..")
get_target_property(_clangenzyme_opts ClangEnzymeFlags INTERFACE_COMPILE_OPTIONS)
if("${_clangenzyme_opts}" MATCHES "\\$<TARGET_FILE:([^>]+)>")
set(_enzyme_target "${CMAKE_MATCH_1}")

# Check if the extracted target exists
if(TARGET "${_enzyme_target}")
message(STATUS "Found 'ClangEnzymeFlags' plugin target: ${_enzyme_target}")
else()
message(FATAL_ERROR "'ClangEnzymeFlags' plugin target '${_enzyme_target}' referenced in INTERFACE_COMPILE_OPTIONS does not exist.")
endif()
else()
message(STATUS "Skipped check. `ClangEnzymeFlags` target does not reference another target")
endif()

message(STATUS "Enzyme support is ON")
set(ENZYME_FOUND TRUE)
else()
message(STATUS "Enzyme support is OFF")
set(ENZYME_FOUND FALSE)
endif()

#------------------------------------------------------------------------------
# Tribol
#------------------------------------------------------------------------------
Expand Down Expand Up @@ -593,7 +599,7 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND)
$<INSTALL_INTERFACE:include>
)

set(TRIBOL_FOUND TRUE CACHE BOOL "" FORCE)
set(TRIBOL_FOUND ON CACHE BOOL "" FORCE)
set(ENABLE_FORTRAN ON CACHE BOOL "" FORCE)
endif()

Expand Down
3 changes: 3 additions & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ add_subdirectory(contact)
# Add the buckling examples
add_subdirectory(buckling)

# Add the explicit dynamics examples
add_subdirectory(explicit)

# Add the uniaxial examples
add_subdirectory(uniaxial)

Expand Down
34 changes: 34 additions & 0 deletions examples/explicit/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright (c) Lawrence Livermore National Security, LLC and
# other Serac Project Developers. See the top-level LICENSE file for
# details.
#
# SPDX-License-Identifier: (BSD-3-Clause)

if(SERAC_USE_DFEM)
set(EXPLICIT_DYNAMICS_EXAMPLES_SOURCES
dfem_gpu.cpp
dfem_force_gpu.cpp
)

foreach(filename ${EXPLICIT_DYNAMICS_EXAMPLES_SOURCES})
get_filename_component(example_name ${filename} NAME_WE)

blt_add_executable(NAME explicit_${example_name}
SOURCES ${filename}
OUTPUT_DIR ${EXAMPLE_OUTPUT_DIRECTORY}
DEPENDS_ON serac_physics serac_mesh_utils)

serac_add_example_test(NAME explicit_${example_name}
COMMAND explicit_${example_name}
NUM_MPI_TASKS 4)

endforeach()

install(
FILES
${EXPLICIT_DYNAMICS_EXAMPLES_SOURCES}
DESTINATION
examples/serac/explicit
)

endif()
Loading
Loading