452 lines
20 KiB
CMake
452 lines
20 KiB
CMake
cmake_minimum_required(VERSION 3.28)
|
|
project(MeanField C CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
option(MEAN_FIELD_ENABLE_PROFILING "Enable low-overhead scoped profiling instrumentation" OFF)
|
|
option(MEAN_FIELD_ENABLE_IPO "Enable interprocedural optimization in release builds" ON)
|
|
|
|
set(MEAN_FIELD_UNIFORM_POLYNOMIAL_ORDER_INCREMENT 0 CACHE STRING
|
|
"Uniform increment applied to every registered finite-element family order")
|
|
if (NOT MEAN_FIELD_UNIFORM_POLYNOMIAL_ORDER_INCREMENT MATCHES "^[0-9]+$")
|
|
message(FATAL_ERROR "MEAN_FIELD_UNIFORM_POLYNOMIAL_ORDER_INCREMENT must be a non-negative integer")
|
|
endif ()
|
|
|
|
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)
|
|
pkg_check_modules(eigen3 REQUIRED IMPORTED_TARGET eigen3)
|
|
|
|
add_library(mean_field)
|
|
|
|
target_compile_definitions(mean_field
|
|
PUBLIC
|
|
MEAN_FIELD_UNIFORM_POLYNOMIAL_ORDER_INCREMENT=${MEAN_FIELD_UNIFORM_POLYNOMIAL_ORDER_INCREMENT}
|
|
MEAN_FIELD_ENABLE_PROFILING=$<BOOL:${MEAN_FIELD_ENABLE_PROFILING}>
|
|
)
|
|
|
|
target_include_directories(mean_field
|
|
PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libmeanfield/include>
|
|
)
|
|
|
|
target_sources(mean_field
|
|
PRIVATE
|
|
libmeanfield/impl/profile.cpp
|
|
libmeanfield/impl/analysis/integral.cpp
|
|
libmeanfield/impl/fem.cpp
|
|
libmeanfield/impl/mapping/coefficients.cpp
|
|
libmeanfield/impl/mapping/compactification/kelvin.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
|
|
libmeanfield/impl/mapping/domain_mapper.cpp
|
|
libmeanfield/impl/mapping/transformations.cpp
|
|
libmeanfield/impl/deformation/nodal_radial_surface.cpp
|
|
libmeanfield/impl/deformation/radial_extensions.cpp
|
|
libmeanfield/impl/operators/gravity_field.cpp
|
|
libmeanfield/impl/operators/gravity_field_jacobian.cpp
|
|
libmeanfield/impl/operators/kernels/gravity_kernels.cpp
|
|
libmeanfield/impl/operators/prepared_hdiv_mass.cpp
|
|
libmeanfield/impl/operators/prepared_gravity_source.cpp
|
|
libmeanfield/impl/operators/contexts/gravity_field_context.cpp
|
|
libmeanfield/impl/operators/kernels/barotropic_closure_kernels.cpp
|
|
libmeanfield/impl/operators/prepared_barotropic_closure.cpp
|
|
libmeanfield/impl/operators/contexts/barotropic_closure_linearization_context.cpp
|
|
libmeanfield/impl/operators/kernels/hydrostatic_equilibrium_kernels.cpp
|
|
libmeanfield/impl/operators/contexts/hydrostatic_equilibrium_context.cpp
|
|
libmeanfield/impl/operators/prepared_hydrostatic_equilibrium.cpp
|
|
libmeanfield/impl/operators/kernels/pressure_force_kernels.cpp
|
|
libmeanfield/impl/operators/contexts/pressure_force_context.cpp
|
|
libmeanfield/impl/operators/prepared_pressure_force.cpp
|
|
libmeanfield/impl/operators/kernels/gravity_displacement_force_kernels.cpp
|
|
libmeanfield/impl/operators/prepared_gravity_displacement_force.cpp
|
|
libmeanfield/impl/operators/contexts/rotation_displacement_force_context.cpp
|
|
libmeanfield/impl/operators/kernels/rotation_displacement_force_kernels.cpp
|
|
libmeanfield/impl/operators/prepared_rotation_displacement_force.cpp
|
|
libmeanfield/impl/operators/prepared_displacement_operator.cpp
|
|
libmeanfield/impl/models/polytropic.cpp
|
|
libmeanfield/impl/seed/lane_emden.cpp
|
|
libmeanfield/impl/seed/stellar_equilibrium_projection.cpp
|
|
libmeanfield/impl/solver/preconditioning_diagnostics.cpp
|
|
libmeanfield/impl/preconditioning/gravity_field.cpp
|
|
libmeanfield/impl/operators/prepared_mass_normalization.cpp
|
|
libmeanfield/impl/operators/prepared_angular_momentum.cpp
|
|
libmeanfield/impl/operators/prepared_stellar_equilibrium.cpp
|
|
)
|
|
|
|
if (MEAN_FIELD_ENABLE_IPO)
|
|
include(CheckIPOSupported)
|
|
check_ipo_supported(RESULT mean_field_ipo_supported OUTPUT mean_field_ipo_error LANGUAGES CXX)
|
|
if (NOT mean_field_ipo_supported)
|
|
message(FATAL_ERROR "MEAN_FIELD_ENABLE_IPO was requested, but the compiler does not support it: ${mean_field_ipo_error}")
|
|
endif ()
|
|
set_property(TARGET mean_field PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE)
|
|
endif ()
|
|
|
|
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/mapping/transformations.cppm
|
|
libmeanfield/interface/mapping/compactification/compactification.cppm
|
|
libmeanfield/interface/mapping/compactification/kelvin.cppm
|
|
libmeanfield/interface/mapping/compactification/options.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
|
|
libmeanfield/interface/solver/fields.cppm
|
|
libmeanfield/interface/solver/preconditioning_diagnostics.cppm
|
|
libmeanfield/interface/preconditioning/backend.cppm
|
|
libmeanfield/interface/preconditioning/backend_implementations.cppm
|
|
libmeanfield/interface/preconditioning/gravity_field.cppm
|
|
libmeanfield/interface/preconditioning/material_surface.cppm
|
|
libmeanfield/interface/preconditioning/plan.cppm
|
|
libmeanfield/interface/preconditioning/stellar_equilibrium.cppm
|
|
libmeanfield/interface/preconditioning/stellar_structure.cppm
|
|
libmeanfield/interface/preconditioning/specification_border.cppm
|
|
libmeanfield/interface/preconditioning/equilibrium_coordinates.cppm
|
|
libmeanfield/interface/preconditioning/preconditioning.cppm
|
|
libmeanfield/interface/normalization/plan.cppm
|
|
libmeanfield/interface/normalization/physical_riesz.cppm
|
|
libmeanfield/interface/normalization/operators.cppm
|
|
libmeanfield/interface/normalization/stellar_equilibrium.cppm
|
|
libmeanfield/interface/normalization/normalization.cppm
|
|
libmeanfield/interface/operators/gravity_field.cppm
|
|
libmeanfield/interface/operators/gravity_field_jacobian.cppm
|
|
libmeanfield/interface/operators/kernels/gravity_kernels.cppm
|
|
libmeanfield/interface/operators/kernels/barotropic_closure_kernels.cppm
|
|
libmeanfield/interface/utils/blocks.cppm
|
|
libmeanfield/interface/operators/contexts/gravity_field_context.cppm
|
|
libmeanfield/interface/operators/prepared_gravity_source.cppm
|
|
libmeanfield/interface/operators/prepared_hdiv_mass.cppm
|
|
libmeanfield/interface/operators/prepared_hydrostatic_equilibrium_operator.cppm
|
|
libmeanfield/interface/field/field_base.cppm
|
|
libmeanfield/interface/field/field_registry.cppm
|
|
libmeanfield/interface/field/field_mfem.cppm
|
|
libmeanfield/interface/operators/prepared_barotropic_closure_operator.cppm
|
|
libmeanfield/interface/operators/contexts/barotropic_closure_linearization_context.cppm
|
|
libmeanfield/interface/physics/rigid_rotation.cppm
|
|
libmeanfield/interface/operators/kernels/hydrostatic_equilibrium_kernels.cppm
|
|
libmeanfield/interface/operators/contexts/hydrostatic_equilibrium_context.cppm
|
|
libmeanfield/interface/operators/kernels/pressure_force_kernels.cppm
|
|
libmeanfield/interface/operators/contexts/pressure_force_context.cppm
|
|
libmeanfield/interface/operators/prepared_pressure_force.cppm
|
|
libmeanfield/interface/operators/kernels/gravity_displacement_force_kernels.cppm
|
|
libmeanfield/interface/operators/prepared_gravity_displacement_force.cppm
|
|
libmeanfield/interface/operators/contexts/rotation_displacement_force_context.cppm
|
|
libmeanfield/interface/operators/kernels/rotation_displacement_force_kernels.cppm
|
|
libmeanfield/interface/operators/prepared_rotation_displacement_force.cppm
|
|
libmeanfield/interface/operators/prepared_displacement_operator.cppm
|
|
libmeanfield/interface/dimensions/quantities.cppm
|
|
libmeanfield/interface/eos/quantities.cppm
|
|
libmeanfield/interface/eos/relations.cppm
|
|
libmeanfield/interface/eos/concepts.cppm
|
|
libmeanfield/interface/eos/evaluation.cppm
|
|
libmeanfield/interface/eos/pressure_surface.cppm
|
|
libmeanfield/interface/eos/runtime.cppm
|
|
libmeanfield/interface/eos/polytropic.cppm
|
|
libmeanfield/interface/seed/lane_emden.cppm
|
|
libmeanfield/interface/models/structure/structure_base.cppm
|
|
libmeanfield/interface/models/structure/polytropic.cppm
|
|
libmeanfield/interface/models/structure_profile.cppm
|
|
libmeanfield/interface/models/specifications.cppm
|
|
libmeanfield/interface/models/typed_stellar_model.cppm
|
|
libmeanfield/interface/models/compiled_fixed_mass.cppm
|
|
libmeanfield/interface/models/compiled_fixed_angular_momentum.cppm
|
|
libmeanfield/interface/models/compiled_fixed_central_density.cppm
|
|
libmeanfield/interface/surface/constant.cppm
|
|
libmeanfield/interface/surface/dependencies.cppm
|
|
libmeanfield/interface/surface/compiled.cppm
|
|
libmeanfield/interface/surface/compiler.cppm
|
|
libmeanfield/interface/material/thermodynamic_equations.cppm
|
|
libmeanfield/interface/deformation/descriptors.cppm
|
|
libmeanfield/interface/deformation/surface_prescription.cppm
|
|
libmeanfield/interface/deformation/nodal_radial_surface.cppm
|
|
libmeanfield/interface/deformation/interior_extension.cppm
|
|
libmeanfield/interface/deformation/vacuum_extension.cppm
|
|
libmeanfield/interface/deformation/radial_extensions.cppm
|
|
libmeanfield/interface/deformation/domain_deformation.cppm
|
|
libmeanfield/interface/models/stellar_model.cppm
|
|
libmeanfield/interface/operators/root_manifest.cppm
|
|
libmeanfield/interface/operators/prepared_constraint.cppm
|
|
libmeanfield/interface/operators/prepared_mass_normalization.cppm
|
|
libmeanfield/interface/operators/prepared_angular_momentum.cppm
|
|
libmeanfield/interface/operators/prepared_central_density.cppm
|
|
libmeanfield/interface/operators/prepared_centering_constraint.cppm
|
|
libmeanfield/interface/operators/prepared_surface_constraint.cppm
|
|
libmeanfield/interface/operators/prepared_stellar_equilibrium.cppm
|
|
libmeanfield/interface/operators/stellar_equilibrium_compiler.cppm
|
|
libmeanfield/interface/operators/prepared_variadic_stellar_equilibrium.cppm
|
|
libmeanfield/interface/equilibrium/stellar_discretization.cppm
|
|
libmeanfield/interface/operators/stellar_equilibrium_problem.cppm
|
|
libmeanfield/interface/seed/stellar_equilibrium_projection.cppm
|
|
libmeanfield/interface/operators/stellar_equilibrium_system.cppm
|
|
)
|
|
|
|
|
|
target_link_libraries(mean_field
|
|
PUBLIC
|
|
MPI::MPI_CXX
|
|
XAD::xad
|
|
mfem
|
|
PkgConfig::stroid
|
|
)
|
|
target_link_libraries(mean_field PRIVATE PkgConfig::eigen3)
|
|
|
|
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/physics/dimensional_quantities.cpp
|
|
tests/seed/lane_emden.cpp
|
|
tests/seed/stellar_equilibrium_projection.cpp
|
|
tests/geometry/volume.cpp
|
|
tests/quadrature/policy.cpp
|
|
tests/integrators/centrifugal.cpp
|
|
tests/integrators/gravity.cpp
|
|
tests/mapping/domain_mapper.cpp
|
|
tests/mapping/compactification/kelvin.cpp
|
|
tests/utils/blocks.cpp
|
|
tests/utils/profiling.cpp
|
|
tests/operators/gravity_field.cpp
|
|
tests/mapping/hdiv_mass_tensor.cpp
|
|
tests/operators/prepared_hdiv_mass.cpp
|
|
tests/operators/prepared_gravity_source.cpp
|
|
tests/operators/contexts/gravity_field_context.cpp
|
|
tests/physics/gravity_monopole_accuracy.cpp
|
|
tests/physics/barotrope.cpp
|
|
tests/physics/polytropic_eos_characterization.cpp
|
|
tests/physics/equation_of_state_type_system.cpp
|
|
tests/physics/equation_of_state_consumer_contracts.cpp
|
|
tests/physics/polytropic_eos_relations.cpp
|
|
tests/physics/equation_of_state_runtime_view.cpp
|
|
tests/material/thermodynamic_equation_compilation.cpp
|
|
tests/surface/constant_surface_compilation.cpp
|
|
tests/operators/kernels/barotropic_closure_kernels.cpp
|
|
tests/operators/prepared_barotropic_closure.cpp
|
|
tests/operators/contexts/barotropic_closure_linearization_context.cpp
|
|
tests/operators/kernels/hydrostatic_equilibrium_kernels.cpp
|
|
tests/operators/contexts/hydrostatic_equilibrium_context.cpp
|
|
tests/operators/prepared_hydrostatic_equilibrium.cpp
|
|
tests/operators/prepared_hydrostatic_equilibrium_jacobian.cpp
|
|
tests/operators/prepared_hydrostatic_equilibrium_displacement_jacobian.cpp
|
|
tests/operators/prepared_hydrostatic_equilibrium_complete_jacobian.cpp
|
|
tests/operators/prepared_hydrostatic_equilibrium_analytic_accuracy.cpp
|
|
tests/physics/barotrope_pressure.cpp
|
|
tests/operators/kernels/pressure_force_kernels.cpp
|
|
tests/operators/contexts/pressure_force_context.cpp
|
|
tests/operators/prepared_pressure_force.cpp
|
|
tests/operators/gravity_displacement_force.cpp
|
|
tests/operators/gravity_displacement_force_analytic_comparisons.cpp
|
|
tests/operators/contexts/rotation_displacement_force_context.cpp
|
|
tests/operators/prepared_rotation_displacement_force.cpp
|
|
tests/operators/prepared_rotation_displacement_force_analytic.cpp
|
|
tests/operators/prepared_rotation_displacement_force_affine_deformation.cpp
|
|
tests/operators/prepared_displacement_operator.cpp
|
|
tests/operators/root_manifest.cpp
|
|
tests/operators/stellar_equilibrium_compiler.cpp
|
|
tests/operators/prepared_central_density.cpp
|
|
tests/operators/prepared_central_density_stellar_equilibrium.cpp
|
|
tests/models/model_specifications.cpp
|
|
tests/models/typed_stellar_model.cpp
|
|
tests/models/physics_specification_frontend.cpp
|
|
tests/models/stellar_model.cpp
|
|
tests/operators/stellar_equilibrium_system.cpp
|
|
tests/deformation/contracts.cpp
|
|
tests/deformation/surface_scalar_dof_map.cpp
|
|
tests/deformation/nodal_radial_surface.cpp
|
|
tests/deformation/radial_extensions.cpp
|
|
tests/deformation/domain_deformation.cpp
|
|
tests/operators/prepared_mass_normalization.cpp
|
|
tests/operators/prepared_angular_momentum.cpp
|
|
tests/operators/prepared_stellar_equilibrium.cpp
|
|
tests/utils/domain.cpp
|
|
tests/field/field_base.cpp
|
|
tests/field/field_registry.cpp
|
|
tests/field/field_mfem.cpp
|
|
tests/field/field_dof_map.cpp
|
|
tests/preconditioning/plan.cpp
|
|
tests/preconditioning/backends.cpp
|
|
tests/preconditioning/gravity_field.cpp
|
|
tests/preconditioning/material_surface.cpp
|
|
tests/preconditioning/stellar_structure.cpp
|
|
tests/preconditioning/specification_border.cpp
|
|
tests/extensions/fixed_magnetic_specific_energy.cpp
|
|
tests/preconditioning/equilibrium_coordinates.cpp
|
|
tests/preconditioning/stellar_equilibrium.cpp
|
|
tests/normalization/plan.cpp
|
|
tests/normalization/physical_riesz.cpp
|
|
tests/normalization/stellar_equilibrium.cpp
|
|
tests/user-api/stellar_equilibrium.cpp
|
|
tests/solver/preconditioning_diagnostics.cpp
|
|
)
|
|
|
|
target_link_libraries(tests PRIVATE mean_field test_mod Catch2::Catch2 Boost::boost)
|
|
|
|
add_executable(mpi_tests
|
|
tests/mpi/mpi_test_main.cpp
|
|
tests/mpi/distributed_execution.cpp
|
|
tests/mpi/profiling.cpp
|
|
)
|
|
target_link_libraries(mpi_tests PRIVATE mean_field test_mod Catch2::Catch2 Boost::boost)
|
|
|
|
if (MEAN_FIELD_ENABLE_IPO)
|
|
set_property(TARGET tests PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE)
|
|
set_property(TARGET mpi_tests PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE)
|
|
endif ()
|
|
|
|
add_library(experiment_mod)
|
|
target_sources(experiment_mod
|
|
PUBLIC
|
|
FILE_SET CXX_MODULES FILES
|
|
experiments/experiment_results.cppm
|
|
experiments/stellar_null_space.cppm
|
|
)
|
|
target_link_libraries(experiment_mod
|
|
PUBLIC
|
|
mean_field
|
|
test_mod
|
|
)
|
|
|
|
add_executable(experiments
|
|
experiments/experiment_main.cpp
|
|
experiments/full_stellar_preconditioning.cpp
|
|
experiments/gravity_accuracy_budget.cpp
|
|
experiments/gravity_preconditioning.cpp
|
|
experiments/material_surface_preconditioning.cpp
|
|
experiments/preconditioning_diagnostics.cpp
|
|
)
|
|
|
|
target_link_libraries(experiments PRIVATE mean_field test_mod experiment_mod Catch2::Catch2 Boost::boost)
|
|
|
|
add_executable(stellar_null_space_experiments
|
|
experiments/experiment_main.cpp
|
|
experiments/rigid_motion_null_space.cpp
|
|
experiments/gravity_completed_rigid_motion.cpp
|
|
experiments/coupled_gauge_modes.cpp
|
|
)
|
|
|
|
target_link_libraries(stellar_null_space_experiments
|
|
PRIVATE
|
|
mean_field
|
|
test_mod
|
|
experiment_mod
|
|
Catch2::Catch2
|
|
Boost::boost
|
|
)
|
|
|
|
if (MEAN_FIELD_ENABLE_IPO)
|
|
foreach (mean_field_ipo_target IN ITEMS test_mod experiment_mod experiments stellar_null_space_experiments)
|
|
set_property(TARGET ${mean_field_ipo_target} PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE)
|
|
endforeach ()
|
|
endif ()
|
|
|
|
include (CTest)
|
|
include (Catch)
|
|
catch_discover_tests(
|
|
tests
|
|
experiments
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
)
|
|
|
|
foreach (mean_field_mpi_ranks IN ITEMS 2 4)
|
|
add_test(
|
|
NAME mpi_${mean_field_mpi_ranks}_ranks
|
|
COMMAND
|
|
${MPIEXEC_EXECUTABLE}
|
|
${MPIEXEC_NUMPROC_FLAG} ${mean_field_mpi_ranks}
|
|
${MPIEXEC_PREFLAGS}
|
|
$<TARGET_FILE:mpi_tests>
|
|
${MPIEXEC_POSTFLAGS}
|
|
"[mpi]"
|
|
)
|
|
set_tests_properties(
|
|
mpi_${mean_field_mpi_ranks}_ranks
|
|
PROPERTIES
|
|
LABELS "mpi;distributed"
|
|
PROCESSORS ${mean_field_mpi_ranks}
|
|
RESOURCE_LOCK mean_field_mpi
|
|
TIMEOUT 180
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
)
|
|
endforeach ()
|
|
|
|
add_custom_target(
|
|
check_mpi
|
|
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure --label-regex "mpi"
|
|
DEPENDS mpi_tests
|
|
USES_TERMINAL
|
|
)
|
|
|
|
# A deliberately separate, physics-developer-facing example. Its targets
|
|
# depend on MeanField, but none of its sources are part of the mean_field
|
|
# library or the main regression-test executable.
|
|
add_subdirectory(extension_example)
|