125 lines
3.6 KiB
CMake
125 lines
3.6 KiB
CMake
cmake_minimum_required(VERSION 3.28)
|
|
project(MeanField CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
add_compile_options(
|
|
-gdwarf-4
|
|
-Wno-unused-parameter
|
|
-Wno-unused-function
|
|
-Wno-unused-variable
|
|
-Wno-unused-const-variable
|
|
-Wno-unused-private-field
|
|
-Wno-unused-but-set-variable
|
|
-Wno-unused-local-typedefs
|
|
-Wno-unused-value
|
|
-Wno-unused-label
|
|
-Wno-unused-lambda-capture
|
|
)
|
|
|
|
find_package(MPI REQUIRED COMPONENTS CXX)
|
|
|
|
find_package(XAD REQUIRED)
|
|
|
|
find_package(mfem REQUIRED)
|
|
find_package(UMFPACK REQUIRED)
|
|
find_package(hypre REQUIRED)
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
|
|
pkg_check_modules(stroid REQUIRED IMPORTED_TARGET stroid)
|
|
|
|
add_library(mean_field)
|
|
|
|
target_include_directories(mean_field
|
|
PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libmeanfield/include>
|
|
)
|
|
|
|
target_sources(mean_field
|
|
PRIVATE
|
|
libmeanfield/impl/analysis/integral.cpp
|
|
libmeanfield/impl/fem.cpp
|
|
libmeanfield/impl/mapping/coefficients.cpp
|
|
libmeanfield/impl/mapping/domain_mapper.cpp
|
|
libmeanfield/impl/physics/gravity.cpp
|
|
libmeanfield/impl/physics/solid.cpp
|
|
libmeanfield/impl/utils/domain.cpp
|
|
libmeanfield/impl/utils/misc.cpp
|
|
libmeanfield/impl/integrators/advection.cpp
|
|
libmeanfield/impl/integrators/centrifugal.cpp
|
|
libmeanfield/impl/integrators/coriolis.cpp
|
|
libmeanfield/impl/integrators/gravity.cpp
|
|
libmeanfield/impl/integrators/mass_continuity.cpp
|
|
libmeanfield/impl/integrators/viscosity.cpp
|
|
)
|
|
|
|
target_sources(mean_field
|
|
PUBLIC
|
|
FILE_SET CXX_MODULES FILES
|
|
libmeanfield/interface/mean_field.cppm
|
|
libmeanfield/interface/fem.cppm
|
|
libmeanfield/interface/analysis/integral.cppm
|
|
libmeanfield/interface/boundary/context.cppm
|
|
libmeanfield/interface/mapping/coefficients.cppm
|
|
libmeanfield/interface/mapping/domain_mapper.cppm
|
|
libmeanfield/interface/mapping/types.cppm
|
|
libmeanfield/interface/physics/context.cppm
|
|
libmeanfield/interface/physics/gravity.cppm
|
|
libmeanfield/interface/physics/solid.cppm
|
|
libmeanfield/interface/utils/domain.cppm
|
|
libmeanfield/interface/utils/misc.cppm
|
|
libmeanfield/interface/utils/user.cppm
|
|
libmeanfield/interface/integrators/advection.cppm
|
|
libmeanfield/interface/integrators/centrifugal.cppm
|
|
libmeanfield/interface/integrators/coriolis.cppm
|
|
libmeanfield/interface/integrators/gravity.cppm
|
|
libmeanfield/interface/integrators/mass_continuity.cppm
|
|
libmeanfield/interface/integrators/pressure_gradient.cppm
|
|
libmeanfield/interface/integrators/viscosity.cppm
|
|
libmeanfield/interface/quadrature/policy.cppm
|
|
libmeanfield/interface/quadrature/mfem.cppm
|
|
)
|
|
|
|
|
|
target_link_libraries(mean_field
|
|
PUBLIC
|
|
MPI::MPI_CXX
|
|
XAD::xad
|
|
mfem
|
|
PkgConfig::stroid
|
|
)
|
|
|
|
add_library(test_mod)
|
|
target_sources(test_mod
|
|
PUBLIC
|
|
FILE_SET CXX_MODULES FILES
|
|
tests/test_helpers.cppm
|
|
)
|
|
target_link_libraries(test_mod
|
|
PUBLIC
|
|
mean_field
|
|
)
|
|
|
|
find_package(Catch2 3 REQUIRED)
|
|
|
|
cmake_policy(SET CMP0167 NEW)
|
|
find_package(Boost REQUIRED)
|
|
|
|
pkg_check_modules(fourdst_config REQUIRED IMPORTED_TARGET fourdst_config)
|
|
|
|
add_executable(tests
|
|
tests/test_main.cpp
|
|
tests/physics/gravity.cpp
|
|
tests/geometry/volume.cpp
|
|
tests/quadrature/policy.cpp
|
|
)
|
|
|
|
target_link_libraries(tests PRIVATE mean_field test_mod Catch2::Catch2 Boost::boost)
|
|
|
|
include (CTest)
|
|
include (Catch)
|
|
catch_discover_tests(tests) |