Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
f729e4e
build: require CMake 3.23
jacobmerson Nov 4, 2026
e7bce33
docs(reorg): record decisions for the breaking reorganization
jacobmerson Nov 4, 2026
4bb2c76
docs(reorg): add the inventory, header classification and dependency …
jacobmerson Nov 4, 2026
9b22581
tools(reorg): add script that renames C++ headers from .h to .hpp
jacobmerson Nov 4, 2026
81d1a53
refactor: rename C++ headers from .h to .hpp
jacobmerson Nov 4, 2026
87e0776
refactor(transfer): prefix the MAX_DIM macro with PCMS_
jacobmerson Nov 4, 2026
f985536
refactor(utility): prefix the ACTIVE_GPU_EXECUTION macro with PCMS_
jacobmerson Nov 4, 2026
481230b
build(transfer): make R3D_USE_KOKKOS a private compile definition
jacobmerson Nov 4, 2026
33c3bbb
fix: give every header an include guard
jacobmerson Nov 4, 2026
c43fec4
tools(reorg): add script that makes relative PCMS includes pcms/-rooted
jacobmerson Nov 4, 2026
083366f
refactor: use pcms/-rooted includes for PCMS headers
jacobmerson Nov 4, 2026
0c3c67a
build: rename CMake options to PCMS_ENABLE_<UPPERCASE> / PCMS_ form
jacobmerson Nov 4, 2026
a92b1ac
build: keep honoring the old option names for one release
jacobmerson Nov 4, 2026
702977e
refactor(field): define RadialBasisFunction in mls_options.hpp
jacobmerson Nov 4, 2026
9dafeb0
tools(reorg): add script that moves files and updates references
jacobmerson Nov 4, 2026
dae1c02
refactor: move coordinate types to utility and field adapters out of …
jacobmerson Nov 4, 2026
6c194f5
build: assign moved coordinate and localization files to their new ta…
jacobmerson Nov 4, 2026
5c9d6c5
build(transfer): stop linking pcms::core
jacobmerson Nov 4, 2026
020f5dc
refactor: move the redev and Omega_h type checks next to their users
jacobmerson Nov 4, 2026
ee3ea55
build: replace the pcms::core library with pcms::pcms
jacobmerson Nov 4, 2026
bf9455b
test: build coupler-dependent tests only when the coupler target exists
jacobmerson Nov 4, 2026
a5b1f73
build: add PCMS_ENABLE_COUPLER to build without redev and ADIOS2
jacobmerson Nov 4, 2026
5399404
refactor(xgc): move the XGC adapter to backends/xgc
jacobmerson Nov 4, 2026
22cdd7e
tools(reorg): add script that moves a backend into pcms::backend::<name>
jacobmerson Nov 4, 2026
d95f164
refactor(xgc): move XGC backend code into namespace pcms::backend::xgc
jacobmerson Nov 4, 2026
2359f5a
build(xgc): give the XGC backend its own CMakeLists.txt
jacobmerson Nov 4, 2026
c7acae6
refactor(mfem): move the MFEM adapter to backends/mfem
jacobmerson Nov 4, 2026
f948b49
refactor(mfem): move MFEM backend code into namespace pcms::backend::…
jacobmerson Nov 4, 2026
4057103
build(mfem): give the MFEM backend its own CMakeLists.txt
jacobmerson Nov 4, 2026
404d46c
refactor(meshfields): move the MeshFields adapter to backends/omega_h…
jacobmerson Nov 4, 2026
b19b907
refactor(meshfields): move MeshFields adapter code into pcms::backend…
jacobmerson Nov 4, 2026
183fc51
build(meshfields): give the omega_h_meshfields bridge its own CMakeLi…
jacobmerson Nov 4, 2026
0388680
refactor(point_cloud): move the point-cloud adapter to backends/point…
jacobmerson Nov 4, 2026
dbe5ba2
refactor(point_cloud): move point-cloud backend code into pcms::backe…
jacobmerson Nov 4, 2026
fda2eca
build(point_cloud): give the point-cloud backend its own CMakeLists.txt
jacobmerson Nov 4, 2026
f5f96f3
refactor(uniform_grid): move the uniform-grid adapter to backends/uni…
jacobmerson Nov 4, 2026
30e65f5
refactor(uniform_grid): move uniform-grid backend code into pcms::bac…
jacobmerson Nov 4, 2026
0454559
build(uniform_grid): give the uniform-grid backend its own CMakeLists…
jacobmerson Nov 4, 2026
c3730ec
refactor(localization): declare SupportResults in its own header
jacobmerson Nov 4, 2026
09cfbdd
refactor(omega_h): move the Omega_h adapter to backends/omega_h
jacobmerson Nov 4, 2026
c91d3a2
refactor(omega_h): move Omega_h adapter code into namespace pcms::bac…
jacobmerson Nov 4, 2026
cbabf85
build(omega_h): give the Omega_h adapter its own CMakeLists.txt
jacobmerson Nov 4, 2026
67fab0a
refactor(discretization): flatten discretization/discretization/
jacobmerson Nov 4, 2026
4a7cec4
refactor(field): drop the pcms_ prefix from the interpolator helper h…
jacobmerson Nov 4, 2026
29f68bd
feat: add the umbrella header pcms/pcms.hpp
jacobmerson Nov 4, 2026
a776037
refactor: include pcms/pcms.hpp instead of the top-level pcms.h
jacobmerson Nov 4, 2026
046ae67
refactor: remove the top-level pcms.h
jacobmerson Nov 4, 2026
ae10947
build: add include/ for public headers
jacobmerson Nov 4, 2026
6114973
feat(discretization): add discretization factory functions
jacobmerson Nov 4, 2026
47bd94d
feat(omega_h): add the Omega_h backend's public entry header
jacobmerson Nov 4, 2026
74f1956
feat(field): add function-space factory functions
jacobmerson Nov 4, 2026
90814df
feat(xgc): add the XGC backend's public entry header
jacobmerson Nov 4, 2026
0838cf5
feat(mfem): add the MFEM backend's public entry header
jacobmerson Nov 4, 2026
af702dc
feat(transfer): add projection factory functions
jacobmerson Nov 4, 2026
c7368d6
feat(coupler): make pcms::Mode a PCMS enum instead of an alias of red…
jacobmerson Nov 4, 2026
1792806
refactor(field): build MakeEQDSKField on the public factories
jacobmerson Nov 4, 2026
e37558d
feat(omega_h): add CreateUniformGridBinaryField to the Omega_h backen…
jacobmerson Nov 4, 2026
ff826cd
feat(python): bind the discretization, space and projection factories
jacobmerson Nov 4, 2026
97a9f99
tools(reorg): add script that updates Python code to the factory API
jacobmerson Nov 4, 2026
9c95a57
refactor(python): use the factory-based Python API in tests and examples
jacobmerson Nov 4, 2026
91574a8
refactor(python): remove the class-based Python constructors
jacobmerson Nov 4, 2026
89a39ae
refactor: move public headers to include/
jacobmerson Nov 4, 2026
f534ec1
build: install only the public headers
jacobmerson Nov 4, 2026
90e86a0
build: link MeshFields privately
jacobmerson Nov 4, 2026
8df8bb3
refactor(utility): take any indexable point in UniformGrid queries
jacobmerson Nov 4, 2026
941de61
feat(omega_h): add the Omega_h conversion helpers to the backend header
jacobmerson Nov 4, 2026
043739f
tools(reorg): add script that points Omega_h helper callers at the ba…
jacobmerson Nov 4, 2026
d9c455c
refactor: call the Omega_h helpers from the Omega_h backend
jacobmerson Nov 4, 2026
221244a
refactor: remove the Omega_h-typed helpers from core public headers
jacobmerson Nov 4, 2026
d17d5bd
feat(python): bind the Omega_h mesh helpers in pcms.backend.omega_h
jacobmerson Nov 4, 2026
3a232e8
tools(reorg): move the Omega_h mesh helpers in python_api_names.py
jacobmerson Nov 4, 2026
af6adae
refactor(python): call the Omega_h mesh helpers from pcms.backend.ome…
jacobmerson Nov 4, 2026
dc25615
refactor(python): remove the top-level Omega_h mesh helper names
jacobmerson Nov 4, 2026
9286882
tools(reorg): add script that moves a sub-library into pcms::<lib>
jacobmerson Nov 4, 2026
4a45025
refactor(field): include SupportResults instead of forward-declaring it
jacobmerson Nov 4, 2026
9f9ec11
refactor(utility): move internal utility code into namespace pcms::ut…
jacobmerson Nov 4, 2026
9592dc7
refactor(discretization): move internal discretization code into name…
jacobmerson Nov 4, 2026
4cb7a74
refactor(localization): move internal localization code into namespac…
jacobmerson Nov 4, 2026
f1ba2b9
refactor(field): move internal field code into namespace pcms::field
jacobmerson Nov 4, 2026
0035e7b
refactor(transfer): move internal transfer code into namespace pcms::…
jacobmerson Nov 4, 2026
4236a54
refactor(coupler): move internal coupler code into namespace pcms::co…
jacobmerson Nov 4, 2026
2e76791
build: install the package config files to lib/cmake/pcms
jacobmerson Nov 4, 2026
f87ff97
build: require the same minor version in find_package(pcms)
jacobmerson Nov 4, 2026
cd737f3
build: set the project version to 0.4.0 and version every library
jacobmerson Nov 4, 2026
d5002d1
build: stop installing the SWIG interface files
jacobmerson Nov 4, 2026
4daf6c8
build: drop the baked HINTS paths from the package config
jacobmerson Nov 4, 2026
17af05b
test: reject backend-library includes in public headers
jacobmerson Nov 4, 2026
21f3883
fix(coupler): make global_communicator.hpp self-contained
jacobmerson Nov 4, 2026
58a982c
test: check that every public header compiles on its own
jacobmerson Nov 4, 2026
30f6a54
examples: exercise the public API in the external usage example
jacobmerson Nov 4, 2026
7a6642f
ci: build and run the external usage example against the install tree
jacobmerson Nov 4, 2026
1b734d8
tools: add the 0.3 -> 0.4 header and symbol maps and migrate-pcms.sh
jacobmerson Nov 4, 2026
915d022
docs: add MIGRATION.md and a CHANGELOG entry for 0.4.0
jacobmerson Nov 4, 2026
e0ecbf7
tools(reorg): add script that normalizes include guard names
jacobmerson Nov 4, 2026
0a91f4f
refactor: give every header a path-derived include guard
jacobmerson Nov 4, 2026
9675a36
style: run clang-format over the whole tree
jacobmerson Nov 4, 2026
2d9f3f1
chore: ignore the reorganization's formatting commit in git blame
jacobmerson Nov 4, 2026
6d50766
fix(tools): keep PCMS's own compatibility code intact under migrate-p…
jacobmerson Nov 5, 2026
aecf596
docs(migration): leave modify/delete conflicts out of the porting rec…
jacobmerson Nov 5, 2026
5ee6566
docs(migration): note the namespace lists for new files when porting …
jacobmerson Nov 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ c726b259409b93e0a6df12d199f87eab8caa10db
88dc8509543b34140a6015e361888644c5f5e0fe
# reformat simplified-fields
d521b8ce2e0d510d7472d2ac011cfc84b670f918
# reformat after the 0.4 reorganization
9675a362ba1a39515bda5cee679ad5036de46c18
2 changes: 1 addition & 1 deletion .github/workflows/clang-tidy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ jobs:
-DCMAKE_CXX_COMPILER=mpicxx \
-DCMAKE_Fortran_COMPILER=mpifort \
-DPCMS_ENABLE_PETSC=ON \
-DPETSC_LINK_STATIC=ON \
-DPCMS_PETSC_LINK_STATIC=ON \
-DPETSC_DIR=${{ runner.temp }}/petsc-openmpi \
-DPETSC_ARCH=ubuntu-kokkos \
-DPCMS_TIMEOUT=10 \
Expand Down
17 changes: 12 additions & 5 deletions .github/workflows/cmake-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ jobs:
run: |
echo "PCMS_ENABLE_PETSC=-DPCMS_ENABLE_PETSC=${{ matrix.petsc }}" >> $GITHUB_ENV
if [ "${{ matrix.petsc }}" = "ON" ]; then
echo "PCMS_PETSC_OPTIONS=-DPETSC_LINK_STATIC=ON -DPETSC_DIR=${{ runner.temp }}/petsc -DPETSC_ARCH=ubuntu-kokkos" >> $GITHUB_ENV
echo "PCMS_PETSC_OPTIONS=-DPCMS_PETSC_LINK_STATIC=ON -DPETSC_DIR=${{ runner.temp }}/petsc -DPETSC_ARCH=ubuntu-kokkos" >> $GITHUB_ENV
else
echo "PCMS_PETSC_OPTIONS=" >> $GITHUB_ENV
fi
Expand Down Expand Up @@ -281,7 +281,7 @@ jobs:
${{ env.PCMS_ENABLE_PETSC }}
${{ env.PCMS_PETSC_OPTIONS }}
-DPCMS_TIMEOUT=10
-DPCMS_ENABLE_Python=${{ matrix.python_api }}
-DPCMS_ENABLE_PYTHON=${{ matrix.python_api }}
-DCatch2_DIR=${{ runner.temp }}/build-Catch2/install/lib/cmake/Catch2
-DOmega_h_DIR=${{ runner.temp }}/build-omega_h/install/lib/cmake/Omega_h
${{ env.PCMS_MESHFIELDS_DIR }}
Expand Down Expand Up @@ -332,8 +332,9 @@ jobs:
if: matrix.python_api == 'OFF'
shell: bash
run: |
# Configure and build the test
# it should only ask for pcms_DIR/ROOT to find all dependencies
# Build examples/external-usage-example against the install tree only
# (installed headers, exported targets). The package config no longer
# bakes in dependency paths, so they come from CMAKE_PREFIX_PATH.
ls ${{ runner.temp }}/build-pcms/install/lib/cmake/pcms
echo "-------- PCMS CONFIG -------------"
cat ${{ runner.temp }}/build-pcms/install/lib/cmake/pcms/pcms-config.cmake
Expand All @@ -346,9 +347,15 @@ jobs:
-B ${{github.workspace}}/examples/external-usage-example/build \
-S ${{github.workspace}}/examples/external-usage-example/ \
-Dpcms_DIR=${{ runner.temp }}/build-pcms/install/lib/cmake/pcms \
${{ matrix.petsc == 'ON' && format('-DPETSC_LINK_STATIC=ON -DPETSC_DIR={0}/petsc -DPETSC_ARCH=ubuntu-kokkos', runner.temp) || '' }} \
-DCMAKE_PREFIX_PATH="${{ runner.temp }}/build-kokkos/install;${{ runner.temp }}/build-kokkos-kernels/install;${{ runner.temp }}/build-omega_h/install;${{ runner.temp }}/build-redev/install;${{ runner.temp }}/build-ADIOS2/install;${{ runner.temp }}/build-perfstubs/install;${{ runner.temp }}/build-meshFields/install" \
-DCMAKE_CXX_COMPILER=`which mpicxx` \
${{ matrix.petsc == 'ON' && format('-DPCMS_PETSC_LINK_STATIC=ON -DPETSC_DIR={0}/petsc -DPETSC_ARCH=ubuntu-kokkos', runner.temp) || '' }} \
--debug-output
cmake --build ${{github.workspace}}/examples/external-usage-example/build
mpirun --oversubscribe -np 1 ${{github.workspace}}/examples/external-usage-example/build/pcms_test

- name: Check public header includes
run: python3 tools/check-public-includes.py

deploy-docs:
needs: test-build
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/self-hosted.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ jobs:
-DKokkos_DIR=$DEPENDENCY_DIR/${DEVICE_ARCH}/kokkos/install/lib64/cmake/Kokkos/ \
-DKokkosKernels_DIR=$DEPENDENCY_DIR/${DEVICE_ARCH}/kokkos-kernels/install/lib64/cmake/KokkosKernels/ \
-DBUILD_TESTING=ON \
-DPCMS_ENABLE_Python=ON \
-DPCMS_ENABLE_PYTHON=ON \
-DPCMS_ENABLE_PETSC=ON \
-DPETSC_ARCH="" \
-DPETSC_DIR=$DEPENDENCY_DIR/${DEVICE_ARCH}/petsc/install \
Expand Down Expand Up @@ -168,7 +168,7 @@ jobs:
-DKokkos_DIR=$DEPENDENCY_DIR/${DEVICE_ARCH}/kokkos/install/lib64/cmake/Kokkos/ \
-DKokkosKernels_DIR=$DEPENDENCY_DIR/${DEVICE_ARCH}/kokkos-kernels/install/lib64/cmake/KokkosKernels/ \
-DBUILD_TESTING=ON \
-DPCMS_ENABLE_Python=ON \
-DPCMS_ENABLE_PYTHON=ON \
-DPCMS_ENABLE_PETSC=ON \
-DPETSC_ARCH="" \
-DPETSC_DIR=$DEPENDENCY_DIR/${DEVICE_ARCH}/petsc/install \
Expand Down
50 changes: 50 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Changelog

## 0.4.0

A one-time breaking reorganization so that downstream codes migrate once.
Numerical behavior is unchanged. See [MIGRATION.md](MIGRATION.md) and
`tools/migrate-pcms.sh`; the decisions behind the changes are in
`tools/reorg/decisions.md`.

### Changed (breaking)

- Public API: only interfaces and factory functions are public
(`CreateLagrangeSpace`, `CreateSplineSpace`,
`CreatePolynomialReconstructionSpace`, `CreateUniformGridDiscretization`,
`CreateEmptyDiscretization`, `CreateEmptyLayout`,
`CreateConservativeProjection`, `CreateControlVariateProjection`, and the
backend entry points in `pcms/backends/<name>/<name>.hpp`). The concrete
spaces, layouts, discretizations and projections are internal.
- Headers: all C++ headers are `.hpp`; only public headers are installed, in
`include/pcms/<library>/`; `pcms.h` is replaced by the umbrella
`pcms/pcms.hpp`; core public headers no longer include Omega_h, MFEM,
MeshFields, PETSc or ADIOS2.
- Namespaces: backend code is in `pcms::backend::<name>`, internal code in
`pcms::<library>`; the public API stays in `pcms::`.
- Omega_h types left the core public signatures (`MakeConstRank2View`,
`CreateUniformGridFromMesh` and the Omega_h `OverlapMask` constructors moved
to the Omega_h backend; `UniformGrid` point queries take any indexable
point).
- `pcms::Mode` is a PCMS enum instead of an alias of `redev::Mode`.
- Python API mirrors the C++ factories; the class-based constructors are
removed.
- Macros `MAX_DIM` and `ACTIVE_GPU_EXECUTION` are `PCMS_`-prefixed.
- Build: CMake 3.23 required; options renamed to `PCMS_ENABLE_<UPPERCASE>` /
`PCMS_` form (old names still accepted in 0.4, deprecated); `pcms::core` is
a deprecated alias of `pcms::pcms`; `pcms::transfer` no longer depends on
the coupler, redev or ADIOS2; package files installed to
`lib/cmake/pcms`; no baked dependency paths; `SameMinorVersion`
compatibility; libraries have `VERSION`/`SOVERSION`; the SWIG interface
files are no longer installed.

### Added

- `PCMS_ENABLE_COUPLER` to build without redev and ADIOS2.
- Factory functions and backend headers listed above; `FunctionSpace`
discretizations in Python (`pcms.backend.omega_h`).
- Tests that every public header compiles on its own and that core public
headers include no backend library; CI builds and runs
`examples/external-usage-example` against the install tree.
- `tools/migrate-pcms.sh` with `tools/reorg/header-map.txt` and
`tools/reorg/symbol-map.txt`.
91 changes: 54 additions & 37 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
cmake_minimum_required(VERSION 3.19)
cmake_minimum_required(VERSION 3.23)
project(
pcms
VERSION 0.3.0
VERSION 0.4.0
LANGUAGES CXX)

include(GNUInstallDirs)
# The package config files go to <prefix>/lib/cmake/pcms on every platform.
set(PCMS_INSTALL_CMAKEDIR "lib/cmake/pcms"
CACHE STRING "Install directory of the pcms CMake package files")
include(CMakePackageConfigHelpers)

# use _ROOT variables for configurations
cmake_policy(SET CMP0074 NEW)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
# map options renamed in 0.4 (e.g. PCMS_ENABLE_Python) to their new names
include(PcmsRenamedOptions)

option(PCMS_ENABLE_ASAN "enable address sanitizer" OFF)
set(PCMS_HAS_ASAN OFF)
Expand Down Expand Up @@ -41,13 +46,14 @@ endif()

option(PCMS_ENABLE_SERVER "enable the coupling server implementation" ON)
option(PCMS_ENABLE_CLIENT "enable the coupling client implementation" ON)
option(PCMS_ENABLE_COUPLER "Build the coupler (requires redev and ADIOS2)" ON)

option(PCMS_ENABLE_XGC "enable xgc field adapter" ON)
option(PCMS_ENABLE_OMEGA_H "enable Omega_h field adapter" OFF)
option(PCMS_ENABLE_MFEM "enable MFEM field adapter" OFF)
option(PCMS_ENABLE_TRANSIENT "Enable pcms transient module" ON)
option(PCMS_ENABLE_C "Enable pcms C api" ON)
option(PCMS_ENABLE_Python "Enable pcms Python api" OFF)
option(PCMS_ENABLE_PYTHON "Enable pcms Python api" OFF)

option(PCMS_ENABLE_PRINT "PCMS print statements enabled" ON)
option(PCMS_ENABLE_EXAMPLES "Build the in-tree C++ examples" ON)
Expand All @@ -69,21 +75,25 @@ set(PCMS_PROJECTION_KSP_RTOL 1e-14 CACHE STRING
set(PCMS_PROJECTION_KSP_ATOL 1e-50 CACHE STRING
"Default absolute tolerance for the projection mass-matrix solve")

option(PETSC_LINK_STATIC "Use pkg-config --static results for PETSc"
option(PCMS_PETSC_LINK_STATIC "Use pkg-config --static results for PETSc"
${_pcms_link_petsc_static_default})

# find package before fortran enabled, so we don't require the adios2 fortran
# interfaces this is important because adios2 build with clang/gfortran is
# broken
find_package(redev 4.3.0 REQUIRED)
if(PCMS_ENABLE_COUPLER)
find_package(redev 4.3.0 REQUIRED)
elseif(PCMS_ENABLE_PYTHON)
message(FATAL_ERROR "PCMS_ENABLE_PYTHON requires PCMS_ENABLE_COUPLER")
endif()

if (PCMS_ENABLE_Python)
if (PCMS_ENABLE_PYTHON)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
endif ()
if(PCMS_ENABLE_C)
enable_language(C)
option(PCMS_ENABLE_Fortran "Enable pcms fortran api" ON)
if(PCMS_ENABLE_Fortran)
option(PCMS_ENABLE_FORTRAN "Enable pcms fortran api" ON)
if(PCMS_ENABLE_FORTRAN)
enable_language(Fortran)
endif()
endif()
Expand Down Expand Up @@ -130,7 +140,9 @@ if(PROJECT_IS_TOP_LEVEL)
endif()
endif()

message(STATUS "Found redev: ${redev_DIR} (found version ${redev_VERSION})")
if(PCMS_ENABLE_COUPLER)
message(STATUS "Found redev: ${redev_DIR} (found version ${redev_VERSION})")
endif()
if(PCMS_ENABLE_OMEGA_H)
find_package(Omega_h REQUIRED VERSION 10)
message(
Expand All @@ -148,7 +160,9 @@ if(PCMS_ENABLE_MFEM)
endif()
endif()
# adios2 adds C and Fortran depending on how it was built
find_package(ADIOS2 CONFIG 2.10.2 REQUIRED)
if(PCMS_ENABLE_COUPLER)
find_package(ADIOS2 CONFIG 2.10.2 REQUIRED)
endif()
find_package(Kokkos CONFIG 4.5 REQUIRED)

option(PCMS_ENABLE_MESHFIELDS "Enable MeshFields support" ON)
Expand Down Expand Up @@ -179,33 +193,36 @@ if(NOT BUILD_TESTING)
COMMENT "Test installed PUMIPic utilities")
endif()

add_executable(smoke_test test/test_ohClassPtn.cpp)
target_link_libraries(smoke_test pcms::core test_support)
# Uses a mesh vendored in test/data so the install check works without
# PCMS_TEST_DATA_DIR (e.g. with BUILD_TESTING=OFF).
dual_mpi_test(
TESTNAME
smoke_test
TIMEOUT
4
NAME1
rdv
EXE1
smoke_test
PROCS1
2
ARGS1
1
${CMAKE_CURRENT_SOURCE_DIR}/test/data/cyclone23/mesh.osh/
NAME2
app
EXE2
smoke_test
PROCS2
1
ARGS2
0
${CMAKE_CURRENT_SOURCE_DIR}/test/data/cyclone23/mesh.osh/)
# the smoke test exercises the coupler
if(TARGET pcms::coupler)
add_executable(smoke_test test/test_ohClassPtn.cpp)
target_link_libraries(smoke_test pcms::pcms test_support)
# Uses a mesh vendored in test/data so the install check works without
# PCMS_TEST_DATA_DIR (e.g. with BUILD_TESTING=OFF).
dual_mpi_test(
TESTNAME
smoke_test
TIMEOUT
4
NAME1
rdv
EXE1
smoke_test
PROCS1
2
ARGS1
1
${CMAKE_CURRENT_SOURCE_DIR}/test/data/cyclone23/mesh.osh/
NAME2
app
EXE2
smoke_test
PROCS2
1
ARGS2
0
${CMAKE_CURRENT_SOURCE_DIR}/test/data/cyclone23/mesh.osh/)
endif()

if(BUILD_TESTING)
add_subdirectory(test)
Expand Down
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -2287,7 +2287,7 @@ PREDEFINED = PCMS_ENABLE_SERVER \
PCMS_ENABLE_MFEM \
PCMS_ENABLE_C \
PCMS_ENABLE_TRANSIENT \
PCMS_ENABLE_Fortran \
PCMS_ENABLE_FORTRAN \
PCMS_ENABLE_MESHFIELDS \
PCMS_ENABLE_PETSC \
KOKKOS_INLINE_FUNCTION= \
Expand Down
Loading
Loading