feat(newton): first newton solver implementation

This commit is contained in:
2026-09-08 06:36:39 -04:00
parent 76818f2f82
commit b3c04d507a
98 changed files with 20397 additions and 11040 deletions

View File

@@ -145,7 +145,13 @@ target_sources(mean_field
libmeanfield/interface/quadrature/policy.cppm
libmeanfield/interface/quadrature/mfem.cppm
libmeanfield/interface/solver/fields.cppm
libmeanfield/interface/solver/linear_backend.cppm
libmeanfield/interface/solver/newton.cppm
libmeanfield/interface/solver/preconditioning_diagnostics.cppm
libmeanfield/interface/solver/stellar_equilibrium_types.cppm
libmeanfield/interface/solver/stellar_structure.cppm
libmeanfield/interface/solver/stellar_context.cppm
libmeanfield/interface/solver/stellar_equilibrium.cppm
libmeanfield/interface/preconditioning/backend.cppm
libmeanfield/interface/preconditioning/backend_implementations.cppm
libmeanfield/interface/preconditioning/gravity_field.cppm
@@ -155,6 +161,7 @@ target_sources(mean_field
libmeanfield/interface/preconditioning/stellar_structure.cppm
libmeanfield/interface/preconditioning/specification_border.cppm
libmeanfield/interface/preconditioning/equilibrium_coordinates.cppm
libmeanfield/interface/preconditioning/stellar_recipe.cppm
libmeanfield/interface/preconditioning/preconditioning.cppm
libmeanfield/interface/normalization/plan.cppm
libmeanfield/interface/normalization/physical_riesz.cppm
@@ -346,10 +353,18 @@ add_executable(tests
tests/normalization/stellar_equilibrium.cpp
tests/user-api/stellar_equilibrium.cpp
tests/solver/preconditioning_diagnostics.cpp
tests/solver/stellar_equilibrium_architecture.cpp
tests/solver/stellar_equilibrium_architecture_internal.cpp
tests/solver/stellar_equilibrium_runtime.cpp
)
target_link_libraries(tests PRIVATE mean_field test_mod Catch2::Catch2 Boost::boost)
# A deliberately opt-in API workbench. It is compiled explicitly during API
# verification but temporary user experiments do not break the default build.
add_executable(sandbox EXCLUDE_FROM_ALL sandbox.cpp)
target_link_libraries(sandbox PRIVATE mean_field)
add_executable(mpi_tests
tests/mpi/mpi_test_main.cpp
tests/mpi/distributed_execution.cpp
@@ -416,6 +431,26 @@ catch_discover_tests(
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
)
add_test(
NAME mpi_single_rank_stellar_root
COMMAND
${MPIEXEC_EXECUTABLE}
${MPIEXEC_NUMPROC_FLAG} 1
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:mpi_tests>
${MPIEXEC_POSTFLAGS}
"[single-rank]"
)
set_tests_properties(
mpi_single_rank_stellar_root
PROPERTIES
LABELS "mpi;single-rank"
PROCESSORS 1
RESOURCE_LOCK mean_field_mpi
TIMEOUT 600
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
)
foreach (mean_field_mpi_ranks IN ITEMS 2 4)
add_test(
NAME mpi_${mean_field_mpi_ranks}_ranks
@@ -425,7 +460,7 @@ foreach (mean_field_mpi_ranks IN ITEMS 2 4)
${MPIEXEC_PREFLAGS}
$<TARGET_FILE:mpi_tests>
${MPIEXEC_POSTFLAGS}
"[mpi]"
"[mpi]~[single-rank]"
)
set_tests_properties(
mpi_${mean_field_mpi_ranks}_ranks