Repository: GEOS-DEV/GEOS
Pull request #3564: refactor: Break physicsSolvers into multiple modules.
Author: login: CusiniM
Labels: name: type: build system
description: Build system issue
name: ci: run CUDA builds
description: Allows to triggers (costly) CUDA jobs
name: ci: run integrated tests
description: Allows to run the integrated tests in GEOS CI
name: flag: no rebaseline
description: Does not require rebaseline
name: ci: run code coverage
description: enables running of the code coverage CI jobs
Created: 2025-02-22T01:53:16Z | Merged: 2025-03-09T00:17:15Z

This PR breaks down each subfolder in physicsSolver into its own component. 




Diff:
diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml
index 65b0748e75c..a0754585243 100644
--- a/.github/workflows/ci_tests.yml
+++ b/.github/workflows/ci_tests.yml
@@ -328,7 +328,7 @@ jobs:
             ENABLE_LVARRAY_BOUNDS_CHECK: OFF
             RUNS_ON: streak2
             NPROC: 8
-            DOCKER_RUN_ARGS: "--cpus=8 --memory=128g --runtime=nvidia -v /etc/pki/ca-trust/source/anchors/:/usr/local/share/ca-certificates/llnl:ro"
+            DOCKER_RUN_ARGS: "--cpus=8 --memory=256g --runtime=nvidia -v /etc/pki/ca-trust/source/anchors/:/usr/local/share/ca-certificates/llnl:ro"
             DOCKER_CERTS_DIR: "/usr/local/share/ca-certificates"
             DOCKER_CERTS_UPDATE_COMMAND: "update-ca-certificates"
             HOST_CONFIG: /spack-generated.cmake
diff --git a/src/coreComponents/CMakeLists.txt b/src/coreComponents/CMakeLists.txt
index d2286f907da..7cf2532422d 100644
--- a/src/coreComponents/CMakeLists.txt
+++ b/src/coreComponents/CMakeLists.txt
@@ -62,8 +62,12 @@ foreach( lib ${subdirs} )
 endforeach()
 
 add_library(geosx_core INTERFACE)
+
 if( GEOS_BUILD_SHARED_LIBS)
   target_link_libraries(geosx_core INTERFACE mainInterface )
+  if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+    target_link_options(geosx_core INTERFACE -Wl,--no-as-needed)
+  endif()
 else()
   target_link_libraries(geosx_core INTERFACE $<LINK_LIBRARY:WHOLE_ARCHIVE,mainInterface> )
 endif()
diff --git a/src/coreComponents/mainInterface/CMakeLists.txt b/src/coreComponents/mainInterface/CMakeLists.txt
index a7b02f95041..55d42a59f67 100644
--- a/src/coreComponents/mainInterface/CMakeLists.txt
+++ b/src/coreComponents/mainInterface/CMakeLists.txt
@@ -57,4 +57,8 @@ add_dependencies( mainInterface generate_version )
 
 target_include_directories( mainInterface PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
 
+if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+  target_link_options(mainInterface PUBLIC -Wl,--no-as-needed)
+endif()
+
 install( TARGETS mainInterface LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
diff --git a/src/coreComponents/mesh/MeshForLoopInterface.hpp b/src/coreComponents/mesh/MeshForLoopInterface.hpp
index eb1e6040d89..1ed7b2ddf96 100644
--- a/src/coreComponents/mesh/MeshForLoopInterface.hpp
+++ b/src/coreComponents/mesh/MeshForLoopInterface.hpp
@@ -26,7 +26,6 @@
 
 #include "common/DataTypes.hpp"
 #include "mesh/MeshLevel.hpp"
-#include "constitutive/ConstitutiveManager.hpp"
 
 namespace geos
 {
diff --git a/src/coreComponents/mesh/ParticleRegionBase.cpp b/src/coreComponents/mesh/ParticleRegionBase.cpp
index 8dff7c56f96..2950a66da8a 100644
--- a/src/coreComponents/mesh/ParticleRegionBase.cpp
+++ b/src/coreComponents/mesh/ParticleRegionBase.cpp
@@ -16,8 +16,6 @@
 #include "ParticleRegionBase.hpp"
 
 #include "common/TimingMacros.hpp"
-#include "constitutive/fluid/singlefluid/SingleFluidBase.hpp"
-#include "constitutive/solid/SolidBase.hpp"
 
 
 namespace geos
diff --git a/src/coreComponents/mesh/ParticleSubRegionBase.cpp b/src/coreComponents/mesh/ParticleSubRegionBase.cpp
index 829f1f4a376..f2b66fbc781 100644
--- a/src/coreComponents/mesh/ParticleSubRegionBase.cpp
+++ b/src/coreComponents/mesh/ParticleSubRegionBase.cpp
@@ -18,7 +18,6 @@
  */
 
 #include "ParticleSubRegionBase.hpp"
-#include "constitutive/ConstitutiveManager.hpp"
 
 namespace geos
 {
diff --git a/src/coreComponents/mesh/ParticleSubRegionBase.hpp b/src/coreComponents/mesh/ParticleSubRegionBase.hpp
index b89af32a1ab..9492156d710 100644
--- a/src/coreComponents/mesh/ParticleSubRegionBase.hpp
+++ b/src/coreComponents/mesh/ParticleSubRegionBase.hpp
@@ -24,7 +24,6 @@
 #include "mesh/ObjectManagerBase.hpp"
 #include "mesh/mpiCommunications/CommunicationTools.hpp"
 #include "mesh/mpiCommunications/MPI_iCommData.hpp"
-#include "constitutive/solid/SolidBase.hpp"
 #include "ToParticleRelation.hpp"
 
 namespace geos
diff --git a/src/coreComponents/physicsSolvers/CMakeLists.txt b/src/coreComponents/physicsSolvers/CMakeLists.txt
index 86d6ce3fef5..3bc15708ff7 100644
--- a/src/coreComponents/physicsSolvers/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/CMakeLists.txt
@@ -23,7 +23,7 @@ Contains:
 #
 # Specify solver headers
 #
-set( physicsSolvers_headers
+set( physicsSolversBase_headers
      LinearSolverParameters.hpp
      NonlinearSolverParameters.hpp
      PhysicsSolverManager.hpp
@@ -32,56 +32,92 @@ set( physicsSolvers_headers
      SolverStatistics.hpp
      FieldStatisticsBase.hpp
      LogLevelsInfo.hpp )
-
 #
 # Specify solver sources
 #
-set( physicsSolvers_sources
+set( physicsSolversBase_sources
      LinearSolverParameters.cpp
      NonlinearSolverParameters.cpp
      PhysicsSolverManager.cpp
      PhysicsSolverBase.cpp
      SolverStatistics.cpp )
 
+set( dependencyList ${parallelDeps} fileIO discretizationMethods events linearAlgebra )
+
+if( ENABLE_PYGEOSX )
+  list( APPEND physicsSolversBase_headers
+  python/PySolver.hpp
+  python/PySolverType.hpp )
+  list( APPEND physicsSolversBase_sources
+        python/PySolver.cpp )
+  list( APPEND dependencyList Python3::Python pylvarray )
+endif()
+
+geos_decorate_link_dependencies( LIST decoratedDependencies
+                                 DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       physicsSolversBase
+                 SOURCES    ${physicsSolversBase_sources}
+                 HEADERS    ${physicsSolversBase_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( physicsSolversBase PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS physicsSolversBase LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
+
+if( externalComponentDeps )
+  target_include_directories( physicsSolversBase PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+endif()
+
+# PhysicsSolvers interface
+#
+# Specify solver headers
+#
+set( physicsSolvers_headers
+     PhysicsSolverManager.hpp)
+#
+# Specify solver sources
+#
+set( physicsSolvers_sources
+     PhysicsSolverManager.cpp )
+
+set( dependencyList ${parallelDeps})
 if( GEOS_ENABLE_FLUIDFLOW )
   add_subdirectory( fluidFlow )
+  list( APPEND dependencyList fluidFlowSolvers )
 endif()
 
 if( GEOS_ENABLE_INDUCEDSEISMICITY )
   add_subdirectory( inducedSeismicity )
-endif()
-
-if( GEOS_ENABLE_MULTIPHYSICS )
-  add_subdirectory( multiphysics )
-  include( multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake)
+  list( APPEND dependencyList inducedSeismicitySolvers )
 endif()
 
 if( GEOS_ENABLE_SIMPLEPDE )
   add_subdirectory( simplePDE )
+  list( APPEND dependencyLists simplePDESolvers )
 endif()
 
 if( GEOS_ENABLE_SOLIDMECHANICS )
   add_subdirectory( solidMechanics )
-  include( solidMechanics/kernels/SolidMechanicsKernels.cmake)
+  list( APPEND dependencyList solidMechanicsSolvers )
 endif()
 
 if( GEOS_ENABLE_SURFACEGENERATION )
   add_subdirectory( surfaceGeneration )
+  list( APPEND dependencyList surfaceGeneration )
 endif()
 
 if( GEOS_ENABLE_WAVEPROPAGATION )
   add_subdirectory( wavePropagation )
+  list( APPEND dependencyList wavePropagationSolvers )
 endif()
 
-set( dependencyList ${parallelDeps} fileIO discretizationMethods events linearAlgebra )
-
-if( ENABLE_PYGEOSX )
-  list( APPEND physicsSolvers_headers
-  python/PySolver.hpp
-  python/PySolverType.hpp )
-  list( APPEND physicsSolvers_sources
-        python/PySolver.cpp )
-  list( APPEND dependencyList Python3::Python pylvarray )
+if( GEOS_ENABLE_MULTIPHYSICS )
+  add_subdirectory( multiphysics )
+  list( APPEND dependencyList multiPhysicsSolvers )
 endif()
 
 geos_decorate_link_dependencies( LIST decoratedDependencies
@@ -96,11 +132,8 @@ blt_add_library( NAME       physicsSolvers
                )
 
 target_include_directories( physicsSolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
-
-install( TARGETS physicsSolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
-
-if( externalComponentDeps )
-  target_include_directories( physicsSolvers PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+  target_link_options(physicsSolvers PUBLIC -Wl,--no-as-needed)
 endif()
-
-
+              
+install( TARGETS physicsSolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
\ No newline at end of file
diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CMakeLists.txt b/src/coreComponents/physicsSolvers/fluidFlow/CMakeLists.txt
index a98227700f9..c61212cf7a4 100644
--- a/src/coreComponents/physicsSolvers/fluidFlow/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/fluidFlow/CMakeLists.txt
@@ -1,138 +1,170 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: fluidFlowSolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     fluidFlow/FlowSolverBase.hpp
-     fluidFlow/FlowSolverBaseFields.hpp
-     fluidFlow/CompositionalMultiphaseBase.hpp
-     fluidFlow/CompositionalMultiphaseBaseFields.hpp
-     fluidFlow/CompositionalMultiphaseStatistics.hpp
-     fluidFlow/CompositionalMultiphaseFVM.hpp
-     fluidFlow/CompositionalMultiphaseHybridFVM.hpp
-     fluidFlow/CompositionalMultiphaseUtilities.hpp
-     fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp
-     fluidFlow/ReactiveCompositionalMultiphaseOBLFields.hpp
-     fluidFlow/SourceFluxStatistics.hpp
-     fluidFlow/SinglePhaseBase.hpp
-     fluidFlow/SinglePhaseBaseFields.hpp
-     fluidFlow/SinglePhaseStatistics.hpp
-     fluidFlow/SinglePhaseFVM.hpp
-     fluidFlow/SinglePhaseHybridFVM.hpp
-     fluidFlow/SinglePhaseProppantBase.hpp
-     fluidFlow/StencilAccessors.hpp
-     fluidFlow/StencilDataCollection.hpp
-     fluidFlow/LogLevelsInfo.hpp
-     fluidFlow/kernels/MinPoreVolumeMaxPorosityKernel.hpp
-     fluidFlow/kernels/StencilWeightsUpdateKernel.hpp
-     fluidFlow/kernels/HybridFVMHelperKernels.hpp
-     fluidFlow/kernels/singlePhase/AccumulationKernels.hpp
-     fluidFlow/kernels/singlePhase/AquiferBCKernel.hpp
-     fluidFlow/kernels/singlePhase/DirichletFluxComputeKernel.hpp
-     fluidFlow/kernels/singlePhase/FluidUpdateKernel.hpp
-     fluidFlow/kernels/singlePhase/FluxComputeKernel.hpp
-     fluidFlow/kernels/singlePhase/FluxComputeKernelBase.hpp
-     fluidFlow/kernels/singlePhase/FluxKernelsHelper.hpp
-     fluidFlow/kernels/singlePhase/HydrostaticPressureKernel.hpp
-     fluidFlow/kernels/singlePhase/MobilityKernel.hpp
-     fluidFlow/kernels/singlePhase/ResidualNormKernel.hpp
-     fluidFlow/kernels/singlePhase/SinglePhaseHybridFVMKernels.hpp
-     fluidFlow/kernels/singlePhase/SolidInternalEnergyUpdateKernel.hpp
-     fluidFlow/kernels/singlePhase/SolutionCheckKernel.hpp
-     fluidFlow/kernels/singlePhase/SolutionScalingKernel.hpp
-     fluidFlow/kernels/singlePhase/StabilizedFluxComputeKernel.hpp
-     fluidFlow/kernels/singlePhase/StatisticsKernel.hpp
-     fluidFlow/kernels/singlePhase/ThermalAccumulationKernels.hpp
-     fluidFlow/kernels/singlePhase/ThermalDirichletFluxComputeKernel.hpp
-     fluidFlow/kernels/singlePhase/ThermalFluxComputeKernel.hpp
-     fluidFlow/kernels/singlePhase/proppant/ProppantBaseKernels.hpp
-     fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.hpp
-     fluidFlow/kernels/compositional/AccumulationKernel.hpp
-     fluidFlow/kernels/compositional/AquiferBCKernel.hpp
-     fluidFlow/kernels/compositional/PPUPhaseFlux.hpp
-     fluidFlow/kernels/compositional/C1PPUPhaseFlux.hpp
-     fluidFlow/kernels/compositional/CapillaryPressureUpdateKernel.hpp
-     fluidFlow/kernels/compositional/CFLKernel.hpp
-     fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.hpp
-     fluidFlow/kernels/compositional/DiffusionDispersionFluxComputeKernel.hpp
-     fluidFlow/kernels/compositional/DirichletFluxComputeKernel.hpp
-     fluidFlow/kernels/compositional/DissipationFluxComputeKernel.hpp
-     fluidFlow/kernels/compositional/FluidUpdateKernel.hpp
-     fluidFlow/kernels/compositional/FluidUpdateKernel.hpp
-     fluidFlow/kernels/compositional/FluxComputeKernel.hpp
-     fluidFlow/kernels/compositional/FluxComputeKernelBase.hpp
-     fluidFlow/kernels/compositional/GlobalComponentFractionKernel.hpp
-     fluidFlow/kernels/compositional/HydrostaticPressureKernel.hpp
-     fluidFlow/kernels/compositional/IHUPhaseFlux.hpp
-     fluidFlow/kernels/compositional/HU2PhaseFlux.hpp
-     fluidFlow/kernels/compositional/KernelLaunchSelectors.hpp
-     fluidFlow/kernels/compositional/PhaseComponentFlux.hpp
-     fluidFlow/kernels/compositional/PhaseMobilityKernel.hpp
-     fluidFlow/kernels/compositional/PhaseVolumeFractionKernel.hpp
-     fluidFlow/kernels/compositional/PotGrad.hpp
-     fluidFlow/kernels/compositional/PPUPhaseFlux.hpp
-     fluidFlow/kernels/compositional/PropertyKernelBase.hpp
-     fluidFlow/kernels/compositional/ReactiveCompositionalMultiphaseOBLKernels.hpp
-     fluidFlow/kernels/compositional/RelativePermeabilityUpdateKernel.hpp
-     fluidFlow/kernels/compositional/ResidualNormKernel.hpp
-     fluidFlow/kernels/compositional/SolidInternalEnergyUpdateKernel.hpp
-     fluidFlow/kernels/compositional/SolutionScalingAndCheckingKernelBase.hpp
-     fluidFlow/kernels/compositional/SolutionCheckKernel.hpp
-     fluidFlow/kernels/compositional/SolutionScalingKernel.hpp
-     fluidFlow/kernels/compositional/StabilizedFluxComputeKernel.hpp
-     fluidFlow/kernels/compositional/StatisticsKernel.hpp
-     fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp
-     fluidFlow/kernels/compositional/ThermalDiffusionDispersionFluxComputeKernel.hpp
-     fluidFlow/kernels/compositional/ThermalDirichletFluxComputeKernel.hpp
-     fluidFlow/kernels/compositional/ThermalFluxComputeKernel.hpp
-     fluidFlow/kernels/compositional/ThermalPhaseMobilityKernel.hpp
-     fluidFlow/kernels/compositional/ThermalPhaseVolumeFractionKernel.hpp
-     fluidFlow/kernels/compositional/ThermalResidualNormKernel.hpp
-     fluidFlow/kernels/compositional/ThermalSolutionCheckKernel.hpp
-     fluidFlow/kernels/compositional/ThermalSolutionScalingKernel.hpp
-     fluidFlow/wells/CompositionalMultiphaseWell.hpp
-     fluidFlow/wells/CompositionalMultiphaseWellFields.hpp
-     fluidFlow/wells/SinglePhaseWell.hpp
-     fluidFlow/wells/SinglePhaseWellFields.hpp
-     fluidFlow/wells/WellConstants.hpp
-     fluidFlow/wells/WellControls.hpp
-     fluidFlow/wells/WellSolverBase.hpp
-     fluidFlow/wells/WellSolverBaseFields.hpp
-     fluidFlow/wells/LogLevelsInfo.hpp
-     fluidFlow/wells/kernels/SinglePhaseWellKernels.hpp
-     fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.hpp
-     fluidFlow/proppantTransport/ProppantTransport.hpp
-     fluidFlow/proppantTransport/ProppantTransportFields.hpp
-     fluidFlow/proppantTransport/ProppantTransportKernels.hpp
-     PARENT_SCOPE )
+set( fluidFlowSolvers_headers
+     FlowSolverBase.hpp
+     FlowSolverBaseFields.hpp
+     CompositionalMultiphaseBase.hpp
+     CompositionalMultiphaseBaseFields.hpp
+     CompositionalMultiphaseStatistics.hpp
+     CompositionalMultiphaseFVM.hpp
+     CompositionalMultiphaseHybridFVM.hpp
+     CompositionalMultiphaseUtilities.hpp
+     ReactiveCompositionalMultiphaseOBL.hpp
+     ReactiveCompositionalMultiphaseOBLFields.hpp
+     SourceFluxStatistics.hpp
+     SinglePhaseBase.hpp
+     SinglePhaseBaseFields.hpp
+     SinglePhaseStatistics.hpp
+     SinglePhaseFVM.hpp
+     SinglePhaseHybridFVM.hpp
+     SinglePhaseProppantBase.hpp
+     StencilAccessors.hpp
+     StencilDataCollection.hpp
+     LogLevelsInfo.hpp
+     kernels/MinPoreVolumeMaxPorosityKernel.hpp
+     kernels/StencilWeightsUpdateKernel.hpp
+     kernels/HybridFVMHelperKernels.hpp
+     kernels/singlePhase/AccumulationKernels.hpp
+     kernels/singlePhase/AquiferBCKernel.hpp
+     kernels/singlePhase/DirichletFluxComputeKernel.hpp
+     kernels/singlePhase/FluidUpdateKernel.hpp
+     kernels/singlePhase/FluxComputeKernel.hpp
+     kernels/singlePhase/FluxComputeKernelBase.hpp
+     kernels/singlePhase/FluxKernelsHelper.hpp
+     kernels/singlePhase/HydrostaticPressureKernel.hpp
+     kernels/singlePhase/MobilityKernel.hpp
+     kernels/singlePhase/ResidualNormKernel.hpp
+     kernels/singlePhase/SinglePhaseHybridFVMKernels.hpp
+     kernels/singlePhase/SolidInternalEnergyUpdateKernel.hpp
+     kernels/singlePhase/SolutionCheckKernel.hpp
+     kernels/singlePhase/SolutionScalingKernel.hpp
+     kernels/singlePhase/StabilizedFluxComputeKernel.hpp
+     kernels/singlePhase/StatisticsKernel.hpp
+     kernels/singlePhase/ThermalAccumulationKernels.hpp
+     kernels/singlePhase/ThermalDirichletFluxComputeKernel.hpp
+     kernels/singlePhase/ThermalFluxComputeKernel.hpp
+     kernels/singlePhase/proppant/ProppantBaseKernels.hpp
+     kernels/singlePhase/proppant/ProppantFluxKernels.hpp
+     kernels/compositional/AccumulationKernel.hpp
+     kernels/compositional/AquiferBCKernel.hpp
+     kernels/compositional/PPUPhaseFlux.hpp
+     kernels/compositional/C1PPUPhaseFlux.hpp
+     kernels/compositional/CapillaryPressureUpdateKernel.hpp
+     kernels/compositional/CFLKernel.hpp
+     kernels/compositional/CompositionalMultiphaseHybridFVMKernels.hpp
+     kernels/compositional/DiffusionDispersionFluxComputeKernel.hpp
+     kernels/compositional/DirichletFluxComputeKernel.hpp
+     kernels/compositional/DissipationFluxComputeKernel.hpp
+     kernels/compositional/FluidUpdateKernel.hpp
+     kernels/compositional/FluidUpdateKernel.hpp
+     kernels/compositional/FluxComputeKernel.hpp
+     kernels/compositional/FluxComputeKernelBase.hpp
+     kernels/compositional/GlobalComponentFractionKernel.hpp
+     kernels/compositional/HydrostaticPressureKernel.hpp
+     kernels/compositional/IHUPhaseFlux.hpp
+     kernels/compositional/HU2PhaseFlux.hpp
+     kernels/compositional/KernelLaunchSelectors.hpp
+     kernels/compositional/PhaseComponentFlux.hpp
+     kernels/compositional/PhaseMobilityKernel.hpp
+     kernels/compositional/PhaseVolumeFractionKernel.hpp
+     kernels/compositional/PotGrad.hpp
+     kernels/compositional/PPUPhaseFlux.hpp
+     kernels/compositional/PropertyKernelBase.hpp
+     kernels/compositional/ReactiveCompositionalMultiphaseOBLKernels.hpp
+     kernels/compositional/RelativePermeabilityUpdateKernel.hpp
+     kernels/compositional/ResidualNormKernel.hpp
+     kernels/compositional/SolidInternalEnergyUpdateKernel.hpp
+     kernels/compositional/SolutionScalingAndCheckingKernelBase.hpp
+     kernels/compositional/SolutionCheckKernel.hpp
+     kernels/compositional/SolutionScalingKernel.hpp
+     kernels/compositional/StabilizedFluxComputeKernel.hpp
+     kernels/compositional/StatisticsKernel.hpp
+     kernels/compositional/ThermalAccumulationKernel.hpp
+     kernels/compositional/ThermalDiffusionDispersionFluxComputeKernel.hpp
+     kernels/compositional/ThermalDirichletFluxComputeKernel.hpp
+     kernels/compositional/ThermalFluxComputeKernel.hpp
+     kernels/compositional/ThermalPhaseMobilityKernel.hpp
+     kernels/compositional/ThermalPhaseVolumeFractionKernel.hpp
+     kernels/compositional/ThermalResidualNormKernel.hpp
+     kernels/compositional/ThermalSolutionCheckKernel.hpp
+     kernels/compositional/ThermalSolutionScalingKernel.hpp
+     wells/CompositionalMultiphaseWell.hpp
+     wells/CompositionalMultiphaseWellFields.hpp
+     wells/SinglePhaseWell.hpp
+     wells/SinglePhaseWellFields.hpp
+     wells/WellConstants.hpp
+     wells/WellControls.hpp
+     wells/WellSolverBase.hpp
+     wells/WellSolverBaseFields.hpp
+     wells/LogLevelsInfo.hpp
+     wells/kernels/SinglePhaseWellKernels.hpp
+     wells/kernels/CompositionalMultiphaseWellKernels.hpp
+     proppantTransport/ProppantTransport.hpp
+     proppantTransport/ProppantTransportFields.hpp
+     proppantTransport/ProppantTransportKernels.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     fluidFlow/CompositionalMultiphaseBase.cpp
-     fluidFlow/CompositionalMultiphaseFVM.cpp
-     fluidFlow/CompositionalMultiphaseStatistics.cpp
-     fluidFlow/CompositionalMultiphaseHybridFVM.cpp
-     fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp
-     fluidFlow/FlowSolverBase.cpp
-     fluidFlow/SinglePhaseBase.cpp
-     fluidFlow/SinglePhaseStatistics.cpp
-     fluidFlow/SinglePhaseFVM.cpp
-     fluidFlow/SinglePhaseHybridFVM.cpp
-     fluidFlow/SinglePhaseProppantBase.cpp
-     fluidFlow/SourceFluxStatistics.cpp
-     fluidFlow/StencilDataCollection.cpp
-     fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.cpp
-     fluidFlow/kernels/compositional/AquiferBCKernel.cpp
-     fluidFlow/kernels/compositional/CFLKernel.cpp
-     fluidFlow/kernels/compositional/FluxComputeKernelBase.cpp
-     fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.cpp
-     fluidFlow/wells/CompositionalMultiphaseWell.cpp
-     fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.cpp
-     fluidFlow/wells/SinglePhaseWell.cpp
-     fluidFlow/wells/kernels/SinglePhaseWellKernels.cpp
-     fluidFlow/wells/WellControls.cpp
-     fluidFlow/wells/WellSolverBase.cpp 
-     fluidFlow/proppantTransport/ProppantTransport.cpp
-     fluidFlow/proppantTransport/ProppantTransportKernels.cpp
-     PARENT_SCOPE )
+set( fluidFlowSolvers_sources
+     CompositionalMultiphaseBase.cpp
+     CompositionalMultiphaseFVM.cpp
+     CompositionalMultiphaseStatistics.cpp
+     CompositionalMultiphaseHybridFVM.cpp
+     ReactiveCompositionalMultiphaseOBL.cpp
+     FlowSolverBase.cpp
+     SinglePhaseBase.cpp
+     SinglePhaseStatistics.cpp
+     SinglePhaseFVM.cpp
+     SinglePhaseHybridFVM.cpp
+     SinglePhaseProppantBase.cpp
+     SourceFluxStatistics.cpp
+     StencilDataCollection.cpp
+     kernels/singlePhase/proppant/ProppantFluxKernels.cpp
+     kernels/compositional/AquiferBCKernel.cpp
+     kernels/compositional/CFLKernel.cpp
+     kernels/compositional/FluxComputeKernelBase.cpp
+     kernels/compositional/CompositionalMultiphaseHybridFVMKernels.cpp
+     wells/CompositionalMultiphaseWell.cpp
+     wells/kernels/CompositionalMultiphaseWellKernels.cpp
+     wells/SinglePhaseWell.cpp
+     wells/kernels/SinglePhaseWellKernels.cpp
+     wells/WellControls.cpp
+     wells/WellSolverBase.cpp 
+     proppantTransport/ProppantTransport.cpp
+     proppantTransport/ProppantTransportKernels.cpp )
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       fluidFlowSolvers
+                 SOURCES    ${fluidFlowSolvers_sources}
+                 HEADERS    ${fluidFlowSolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( fluidFlowSolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
 
+install( TARGETS fluidFlowSolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
 
+if( externalComponentDeps )
+  target_include_directories( fluidFlowSolvers PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+endif()
diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt b/src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt
index df05497f6f2..400e6ad4610 100644
--- a/src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt
@@ -1,27 +1,61 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: inducedSeismicitySolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     inducedSeismicity/ExplicitQDRateAndState.hpp
-     inducedSeismicity/ImplicitQDRateAndState.hpp
-     inducedSeismicity/inducedSeismicityFields.hpp
-     inducedSeismicity/QDRateAndStateBase.hpp
-     inducedSeismicity/QuasiDynamicEarthQuake.hpp
-     inducedSeismicity/rateAndStateFields.hpp
-     inducedSeismicity/SeismicityRate.hpp
-     inducedSeismicity/SpringSlider.hpp
-     inducedSeismicity/kernels/ExplicitRateAndStateKernels.hpp
-     inducedSeismicity/kernels/ImplicitRateAndStateKernels.hpp
-     inducedSeismicity/kernels/RateAndStateKernelsBase.hpp
-     inducedSeismicity/kernels/SeismicityRateKernels.hpp
-     PARENT_SCOPE )
+set( inducedSeismicitySolvers_headers
+     ExplicitQDRateAndState.hpp
+     ImplicitQDRateAndState.hpp
+     inducedSeismicityFields.hpp
+     QDRateAndStateBase.hpp
+     QuasiDynamicEarthQuake.hpp
+     rateAndStateFields.hpp
+     SeismicityRate.hpp
+     SpringSlider.hpp
+     kernels/ExplicitRateAndStateKernels.hpp
+     kernels/ImplicitRateAndStateKernels.hpp
+     kernels/RateAndStateKernelsBase.hpp
+     kernels/SeismicityRateKernels.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     inducedSeismicity/ExplicitQDRateAndState.cpp 
-     inducedSeismicity/ImplicitQDRateAndState.cpp 
-     inducedSeismicity/QDRateAndStateBase.cpp
-     inducedSeismicity/QuasiDynamicEarthQuake.cpp
-     inducedSeismicity/SeismicityRate.cpp
-     inducedSeismicity/SpringSlider.cpp
-     PARENT_SCOPE )
+set( inducedSeismicitySolvers_sources
+     ExplicitQDRateAndState.cpp 
+     ImplicitQDRateAndState.cpp 
+     QDRateAndStateBase.cpp
+     QuasiDynamicEarthQuake.cpp
+     SeismicityRate.cpp
+     SpringSlider.cpp )
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       inducedSeismicitySolvers
+                 SOURCES    ${inducedSeismicitySolvers_sources}
+                 HEADERS    ${inducedSeismicitySolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( inducedSeismicitySolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS inducedSeismicitySolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
+
+if( externalComponentDeps )
+  target_include_directories( inducedSeismicitySolvers PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+endif()    
diff --git a/src/coreComponents/physicsSolvers/multiphysics/CMakeLists.txt b/src/coreComponents/physicsSolvers/multiphysics/CMakeLists.txt
index 08bf8b159c8..f1de805eb26 100644
--- a/src/coreComponents/physicsSolvers/multiphysics/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/multiphysics/CMakeLists.txt
@@ -1,62 +1,97 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: multiPhysicsSolvers
+Contains:
+#]]
+
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     multiphysics/CompositionalMultiphaseReservoirAndWells.hpp
-     multiphysics/CoupledReservoirAndWellsBase.hpp
-     multiphysics/CoupledSolver.hpp
-     multiphysics/PoromechanicsSolver.hpp
-     multiphysics/FlowProppantTransportSolver.hpp
-     multiphysics/HydrofractureSolver.hpp
-     multiphysics/HydrofractureSolverKernels.hpp
-     multiphysics/MultiphasePoromechanics.hpp
-     multiphysics/OneWayCoupledFractureFlowContactMechanics.hpp
-     multiphysics/MultiphasePoromechanicsConformingFractures.hpp
-     multiphysics/PhaseFieldFractureSolver.hpp
-     multiphysics/PoromechanicsInitialization.hpp
-     multiphysics/PoromechanicsFields.hpp
-     multiphysics/PoromechanicsInitialization.hpp
-     multiphysics/LogLevelsInfo.hpp
-     multiphysics/poromechanicsKernels/MultiphasePoromechanics.hpp
-     multiphysics/poromechanicsKernels/MultiphasePoromechanics_impl.hpp
-     multiphysics/poromechanicsKernels/MultiphasePoromechanicsConformingFractures.hpp
-     multiphysics/poromechanicsKernels/PoromechanicsBase.hpp
-     multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp
-     multiphysics/poromechanicsKernels/SinglePhasePoromechanics_impl.hpp
-     multiphysics/poromechanicsKernels/SinglePhasePoromechanicsConformingFractures.hpp
-     multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp
-     multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp
-     multiphysics/poromechanicsKernels/SinglePhasePoromechanicsFractures.hpp
-     multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEmbeddedFractures.hpp
-     multiphysics/poromechanicsKernels/ThermalMultiphasePoromechanics.hpp
-     multiphysics/poromechanicsKernels/ThermalMultiphasePoromechanics_impl.hpp
-     multiphysics/poromechanicsKernels/ThermalSinglePhasePoromechanics.hpp
-     multiphysics/poromechanicsKernels/ThermalSinglePhasePoromechanics_impl.hpp
-     multiphysics/poromechanicsKernels/ThermalSinglePhasePoromechanicsEFEM.hpp
-     multiphysics/poromechanicsKernels/ThermalSinglePhasePoromechanicsEFEM_impl.hpp
-     multiphysics/poromechanicsKernels/ThermalSinglePhasePoromechanicsConformingFractures.hpp
-     multiphysics/poromechanicsKernels/ThermalSinglePhasePoromechanicsEmbeddedFractures.hpp
-     multiphysics/SinglePhasePoromechanics.hpp
-     multiphysics/SinglePhasePoromechanicsEmbeddedFractures.hpp
-     multiphysics/SinglePhasePoromechanicsConformingFractures.hpp
-     multiphysics/SinglePhaseReservoirAndWells.hpp
-     PARENT_SCOPE )
+set( multiPhysicsSolvers_headers
+    CompositionalMultiphaseReservoirAndWells.hpp
+    CoupledReservoirAndWellsBase.hpp
+    CoupledSolver.hpp
+    PoromechanicsSolver.hpp
+    FlowProppantTransportSolver.hpp
+    HydrofractureSolver.hpp
+    HydrofractureSolverKernels.hpp
+    MultiphasePoromechanics.hpp
+    OneWayCoupledFractureFlowContactMechanics.hpp
+    MultiphasePoromechanicsConformingFractures.hpp
+    PhaseFieldFractureSolver.hpp
+    PoromechanicsInitialization.hpp
+    PoromechanicsFields.hpp
+    PoromechanicsInitialization.hpp
+    LogLevelsInfo.hpp
+    poromechanicsKernels/MultiphasePoromechanics.hpp
+    poromechanicsKernels/MultiphasePoromechanics_impl.hpp
+    poromechanicsKernels/MultiphasePoromechanicsConformingFractures.hpp
+    poromechanicsKernels/PoromechanicsBase.hpp
+    poromechanicsKernels/SinglePhasePoromechanics.hpp
+    poromechanicsKernels/SinglePhasePoromechanics_impl.hpp
+    poromechanicsKernels/SinglePhasePoromechanicsConformingFractures.hpp
+    poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp
+    poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp
+    poromechanicsKernels/SinglePhasePoromechanicsFractures.hpp
+    poromechanicsKernels/SinglePhasePoromechanicsEmbeddedFractures.hpp
+    poromechanicsKernels/ThermalMultiphasePoromechanics.hpp
+    poromechanicsKernels/ThermalMultiphasePoromechanics_impl.hpp
+    poromechanicsKernels/ThermalSinglePhasePoromechanics.hpp
+    poromechanicsKernels/ThermalSinglePhasePoromechanics_impl.hpp
+    poromechanicsKernels/ThermalSinglePhasePoromechanicsEFEM.hpp
+    poromechanicsKernels/ThermalSinglePhasePoromechanicsEFEM_impl.hpp
+    poromechanicsKernels/ThermalSinglePhasePoromechanicsConformingFractures.hpp
+    poromechanicsKernels/ThermalSinglePhasePoromechanicsEmbeddedFractures.hpp
+    SinglePhasePoromechanics.hpp
+    SinglePhasePoromechanicsEmbeddedFractures.hpp
+    SinglePhasePoromechanicsConformingFractures.hpp
+    SinglePhaseReservoirAndWells.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     multiphysics/CompositionalMultiphaseReservoirAndWells.cpp
-     multiphysics/CoupledReservoirAndWellsBase.cpp
-     multiphysics/FlowProppantTransportSolver.cpp
-     multiphysics/HydrofractureSolver.cpp
-     multiphysics/MultiphasePoromechanics.cpp
-     multiphysics/OneWayCoupledFractureFlowContactMechanics.cpp
-     multiphysics/MultiphasePoromechanicsConformingFractures.cpp
-     multiphysics/PhaseFieldFractureSolver.cpp
-     multiphysics/PoromechanicsInitialization.cpp
-     multiphysics/SinglePhasePoromechanics.cpp
-     multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp
-     multiphysics/SinglePhasePoromechanicsConformingFractures.cpp
-     multiphysics/SinglePhaseReservoirAndWells.cpp
-     PARENT_SCOPE )
-
-#include( multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake)
+set( multiPhysicsSolvers_sources
+    CompositionalMultiphaseReservoirAndWells.cpp
+    CoupledReservoirAndWellsBase.cpp
+    FlowProppantTransportSolver.cpp
+    HydrofractureSolver.cpp
+    MultiphasePoromechanics.cpp
+    OneWayCoupledFractureFlowContactMechanics.cpp
+    MultiphasePoromechanicsConformingFractures.cpp
+    PhaseFieldFractureSolver.cpp
+    PoromechanicsInitialization.cpp
+    SinglePhasePoromechanics.cpp
+    SinglePhasePoromechanicsEmbeddedFractures.cpp
+    SinglePhasePoromechanicsConformingFractures.cpp
+    SinglePhaseReservoirAndWells.cpp )
+
+include(poromechanicsKernels/PoromechanicsKernels.cmake)
+
+set( dependencyList ${parallelDeps} fluidFlowSolvers simplePDESolvers solidMechanicsSolvers )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       multiPhysicsSolvers
+                 SOURCES    ${multiPhysicsSolvers_sources}
+                 HEADERS    ${multiPhysicsSolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( multiPhysicsSolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS multiPhysicsSolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
+
+if( externalComponentDeps )
+  target_include_directories( multiPhysicsSolvers PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+endif()
\ No newline at end of file
diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake
index 4c0e705c4bb..595fbe1a5b1 100644
--- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake
+++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake
@@ -63,7 +63,7 @@ endif( )
         configure_file( ${CMAKE_SOURCE_DIR}/${kernelPath}/${KERNELNAME}.cpp.template
                         ${filename} )
 
-          list( APPEND physicsSolvers_sources ${filename} )
+          list( APPEND multiPhysicsSolvers_sources ${filename} )
         endforeach()
       endforeach()
     endforeach()
@@ -107,7 +107,7 @@ endif( )
         configure_file( ${CMAKE_SOURCE_DIR}/${kernelPath}/PoromechanicsEFEMKernels.cpp.template
                           ${filename} )
   
-        list( APPEND physicsSolvers_sources ${filename} )
+        list( APPEND multiPhysicsSolvers_sources ${filename} )
         endforeach()
       endforeach()
     endforeach()
diff --git a/src/coreComponents/physicsSolvers/simplePDE/CMakeLists.txt b/src/coreComponents/physicsSolvers/simplePDE/CMakeLists.txt
index 66521ed88ce..0aa1469e576 100644
--- a/src/coreComponents/physicsSolvers/simplePDE/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/simplePDE/CMakeLists.txt
@@ -1,17 +1,51 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: simplePDESolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-      ${physicsSolvers_headers}
-     simplePDE/LaplaceBaseH1.hpp
-     simplePDE/LaplaceFEM.hpp
-     simplePDE/LaplaceFEMKernels.hpp
-     simplePDE/PhaseFieldDamageFEM.hpp
-     simplePDE/PhaseFieldDamageFEMKernels.hpp 
-     PARENT_SCOPE )
+set( simplePDESolvers_headers
+     LaplaceBaseH1.hpp
+     LaplaceFEM.hpp
+     LaplaceFEMKernels.hpp
+     PhaseFieldDamageFEM.hpp
+     PhaseFieldDamageFEMKernels.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-      ${physicsSolvers_sources}
-     simplePDE/LaplaceBaseH1.cpp
-     simplePDE/LaplaceFEM.cpp
-     simplePDE/PhaseFieldDamageFEM.cpp 
-     PARENT_SCOPE )
+set( simplePDESolvers_sources
+     LaplaceBaseH1.cpp
+     LaplaceFEM.cpp
+     PhaseFieldDamageFEM.cpp )
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       simplePDESolvers
+                 SOURCES    ${simplePDESolvers_sources}
+                 HEADERS    ${simplePDESolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( simplePDESolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS simplePDESolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
+
+if( externalComponentDeps )
+  target_include_directories( simplePDESolvers PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+endif()
diff --git a/src/coreComponents/physicsSolvers/solidMechanics/CMakeLists.txt b/src/coreComponents/physicsSolvers/solidMechanics/CMakeLists.txt
index 0d3dd30ba4a..ab65ce93b30 100644
--- a/src/coreComponents/physicsSolvers/solidMechanics/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/solidMechanics/CMakeLists.txt
@@ -1,59 +1,94 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: solidMechanicsSolvers
+
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     solidMechanics/LogLevelsInfo.hpp
-     solidMechanics/SolidMechanicsFields.hpp
-     solidMechanics/SolidMechanicsLagrangianFEM.hpp
-     solidMechanics/SolidMechanicsLagrangianFEM.hpp
-     solidMechanics/kernels/SolidMechanicsLagrangianFEMKernels.hpp
-     solidMechanics/SolidMechanicsMPM.hpp
-     solidMechanics/MPMSolverFields.hpp
-     solidMechanics/kernels/ExplicitFiniteStrain.hpp
-     solidMechanics/kernels/ExplicitFiniteStrain_impl.hpp
-     solidMechanics/kernels/ExplicitMPM.hpp
-     solidMechanics/kernels/ExplicitSmallStrain.hpp
-     solidMechanics/kernels/ExplicitSmallStrain_impl.hpp
-     solidMechanics/kernels/FixedStressThermoPoromechanics.hpp
-     solidMechanics/kernels/FixedStressThermoPoromechanics_impl.hpp
-     solidMechanics/kernels/ImplicitSmallStrainNewmark.hpp
-     solidMechanics/kernels/ImplicitSmallStrainNewmark_impl.hpp
-     solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp
-     solidMechanics/kernels/ImplicitSmallStrainQuasiStatic_impl.hpp
-     solidMechanics/SolidMechanicsStateReset.hpp
-     solidMechanics/SolidMechanicsStatistics.hpp
-     solidMechanics/contact/ContactSolverBase.hpp
-     solidMechanics/contact/FractureState.hpp
-     solidMechanics/contact/ContactFields.hpp
-     solidMechanics/contact/SolidMechanicsEmbeddedFractures.hpp
-     solidMechanics/contact/SolidMechanicsLagrangeContact.hpp
-     solidMechanics/contact/SolidMechanicsLagrangeContactBubbleStab.hpp
-     solidMechanics/contact/SolidMechanicsAugmentedLagrangianContact.hpp
-     solidMechanics/contact/kernels/SolidMechanicsConformingContactKernelsBase.hpp
-     solidMechanics/contact/kernels/SolidMechanicsDisplacementJumpUpdateKernels.hpp
-     solidMechanics/contact/kernels/SolidMechanicsEFEMKernelsBase.hpp
-     solidMechanics/contact/kernels/SolidMechanicsEFEMKernels.hpp
-     solidMechanics/contact/kernels/SolidMechanicsEFEMStaticCondensationKernels.hpp
-     solidMechanics/contact/kernels/SolidMechanicsEFEMKernelsHelper.hpp
-     solidMechanics/contact/kernels/SolidMechanicsALMKernelsBase.hpp
-     solidMechanics/contact/kernels/SolidMechanicsALMKernels.hpp
-     solidMechanics/contact/kernels/SolidMechanicsConformingContactKernelsHelper.hpp
-     solidMechanics/contact/kernels/SolidMechanicsContactFaceBubbleKernels.hpp
-     solidMechanics/contact/kernels/SolidMechanicsLagrangeContactKernels.hpp 
-     solidMechanics/contact/LogLevelsInfo.hpp
-     PARENT_SCOPE )
+set( solidMechanicsSolvers_headers
+     LogLevelsInfo.hpp
+     SolidMechanicsFields.hpp
+     SolidMechanicsLagrangianFEM.hpp
+     SolidMechanicsLagrangianFEM.hpp
+     kernels/SolidMechanicsLagrangianFEMKernels.hpp
+     SolidMechanicsMPM.hpp
+     MPMSolverFields.hpp
+     kernels/ExplicitFiniteStrain.hpp
+     kernels/ExplicitFiniteStrain_impl.hpp
+     kernels/ExplicitMPM.hpp
+     kernels/ExplicitSmallStrain.hpp
+     kernels/ExplicitSmallStrain_impl.hpp
+     kernels/FixedStressThermoPoromechanics.hpp
+     kernels/FixedStressThermoPoromechanics_impl.hpp
+     kernels/ImplicitSmallStrainNewmark.hpp
+     kernels/ImplicitSmallStrainNewmark_impl.hpp
+     kernels/ImplicitSmallStrainQuasiStatic.hpp
+     kernels/ImplicitSmallStrainQuasiStatic_impl.hpp
+     SolidMechanicsStateReset.hpp
+     SolidMechanicsStatistics.hpp
+     contact/ContactSolverBase.hpp
+     contact/FractureState.hpp
+     contact/ContactFields.hpp
+     contact/SolidMechanicsEmbeddedFractures.hpp
+     contact/SolidMechanicsLagrangeContact.hpp
+     contact/SolidMechanicsLagrangeContactBubbleStab.hpp
+     contact/SolidMechanicsAugmentedLagrangianContact.hpp
+     contact/kernels/SolidMechanicsConformingContactKernelsBase.hpp
+     contact/kernels/SolidMechanicsDisplacementJumpUpdateKernels.hpp
+     contact/kernels/SolidMechanicsEFEMKernelsBase.hpp
+     contact/kernels/SolidMechanicsEFEMKernels.hpp
+     contact/kernels/SolidMechanicsEFEMStaticCondensationKernels.hpp
+     contact/kernels/SolidMechanicsEFEMKernelsHelper.hpp
+     contact/kernels/SolidMechanicsALMKernelsBase.hpp
+     contact/kernels/SolidMechanicsALMKernels.hpp
+     contact/kernels/SolidMechanicsConformingContactKernelsHelper.hpp
+     contact/kernels/SolidMechanicsContactFaceBubbleKernels.hpp
+     contact/kernels/SolidMechanicsLagrangeContactKernels.hpp 
+     contact/LogLevelsInfo.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     solidMechanics/SolidMechanicsLagrangianFEM.cpp
-     solidMechanics/SolidMechanicsMPM.cpp
-     solidMechanics/SolidMechanicsStateReset.cpp
-     solidMechanics/SolidMechanicsStatistics.cpp
-     solidMechanics/contact/ContactSolverBase.cpp
-     solidMechanics/contact/SolidMechanicsEmbeddedFractures.cpp
-     solidMechanics/contact/SolidMechanicsLagrangeContact.cpp
-     solidMechanics/contact/SolidMechanicsLagrangeContactBubbleStab.cpp
-     solidMechanics/contact/SolidMechanicsAugmentedLagrangianContact.cpp
-     PARENT_SCOPE )
-
-#include( solidMechanics/kernels/SolidMechanicsKernels.cmake)
+set( solidMechanicsSolvers_sources
+     SolidMechanicsLagrangianFEM.cpp
+     SolidMechanicsMPM.cpp
+     SolidMechanicsStateReset.cpp
+     SolidMechanicsStatistics.cpp
+     contact/ContactSolverBase.cpp
+     contact/SolidMechanicsEmbeddedFractures.cpp
+     contact/SolidMechanicsLagrangeContact.cpp
+     contact/SolidMechanicsLagrangeContactBubbleStab.cpp
+     contact/SolidMechanicsAugmentedLagrangianContact.cpp )
+
+include( kernels/SolidMechanicsKernels.cmake)
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       solidMechanicsSolvers
+                 SOURCES    ${solidMechanicsSolvers_sources}
+                 HEADERS    ${solidMechanicsSolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( solidMechanicsSolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS solidMechanicsSolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
+
+if( externalComponentDeps )
+  target_include_directories( solidMechanicsSolvers PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+endif()
\ No newline at end of file
diff --git a/src/coreComponents/physicsSolvers/solidMechanics/contact/CMakeLists.txt b/src/coreComponents/physicsSolvers/solidMechanics/contact/CMakeLists.txt
index ac5fbe3bc1a..13a93d03384 100644
--- a/src/coreComponents/physicsSolvers/solidMechanics/contact/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/solidMechanics/contact/CMakeLists.txt
@@ -1,6 +1,6 @@
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
+set( solidMechanicsSolvers_headers
+     ${solidMechanicsSolvers_headers}
      contact/ContactSolverBase.hpp
      contact/ContactFields.hpp
      contact/SolidMechanicsEmbeddedFractures.hpp
@@ -23,8 +23,8 @@ set( physicsSolvers_headers
 
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
+set( solidMechanicsSolvers_sources
+     ${solidMechanicsSolvers_sources}
      contact/ContactSolverBase.cpp
      contact/SolidMechanicsEmbeddedFractures.cpp
      contact/SolidMechanicsLagrangeContact.cpp
diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cmake b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cmake
index 1110dfe768b..6472ad81339 100644
--- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cmake
+++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cmake
@@ -71,7 +71,7 @@ endif( )
         configure_file( ${CMAKE_SOURCE_DIR}/${kernelPath}/SolidMechanicsKernels.cpp.template
                         ${filename} )
 
-          list( APPEND physicsSolvers_sources ${filename} )
+          list( APPEND solidMechanicsSolvers_sources ${filename} )
         endforeach()
       endforeach()
     endforeach()
@@ -95,7 +95,7 @@ endif( )
         message( " -- Generating file: ${filename}")
         configure_file( ${CMAKE_SOURCE_DIR}/${kernelPath}/SolidMechanicsFixedStressThermoPoromechanicsKernels.cpp.template
                         ${filename} )
-          list( APPEND physicsSolvers_sources ${filename} )
+          list( APPEND solidMechanicsSolvers_sources ${filename} )
 
         endforeach()
       endforeach()
diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt b/src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt
index eb2b85d0357..5671369d405 100644
--- a/src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt
@@ -1,22 +1,56 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: surfaceGeneration
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     surfaceGeneration/EmbeddedSurfaceGenerator.hpp
-     surfaceGeneration/EmbeddedSurfacesParallelSynchronization.hpp
-     surfaceGeneration/ParallelTopologyChange.hpp
-     surfaceGeneration/SurfaceGenerator.hpp
-     surfaceGeneration/SurfaceGeneratorFields.hpp
-     surfaceGeneration/LogLevelsInfo.hpp
-     surfaceGeneration/kernels/surfaceGenerationKernels.hpp
-     surfaceGeneration/kernels/surfaceGenerationKernelsHelpers.hpp
-     PARENT_SCOPE )
+set( surfaceGeneration_headers
+     EmbeddedSurfaceGenerator.hpp
+     EmbeddedSurfacesParallelSynchronization.hpp
+     ParallelTopologyChange.hpp
+     SurfaceGenerator.hpp
+     SurfaceGeneratorFields.hpp
+     LogLevelsInfo.hpp
+     kernels/surfaceGenerationKernels.hpp
+     kernels/surfaceGenerationKernelsHelpers.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     surfaceGeneration/EmbeddedSurfaceGenerator.cpp
-     surfaceGeneration/EmbeddedSurfacesParallelSynchronization.cpp
-     surfaceGeneration/ParallelTopologyChange.cpp
-     surfaceGeneration/ParallelTopologyChangeNoFixup.cpp
-     surfaceGeneration/SurfaceGenerator.cpp
-     PARENT_SCOPE )
\ No newline at end of file
+set( surfaceGeneration_sources
+     EmbeddedSurfaceGenerator.cpp
+     EmbeddedSurfacesParallelSynchronization.cpp
+     ParallelTopologyChange.cpp
+     ParallelTopologyChangeNoFixup.cpp
+     SurfaceGenerator.cpp )
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       surfaceGeneration
+                 SOURCES    ${surfaceGeneration_sources}
+                 HEADERS    ${surfaceGeneration_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( surfaceGeneration PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS surfaceGeneration LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
+
+if( externalComponentDeps )
+  target_include_directories( surfaceGeneration PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+endif()
\ No newline at end of file
diff --git a/src/coreComponents/physicsSolvers/wavePropagation/CMakeLists.txt b/src/coreComponents/physicsSolvers/wavePropagation/CMakeLists.txt
index 54fe46da9fa..9346a0c1883 100644
--- a/src/coreComponents/physicsSolvers/wavePropagation/CMakeLists.txt
+++ b/src/coreComponents/physicsSolvers/wavePropagation/CMakeLists.txt
@@ -1,43 +1,77 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: wavePropagationSolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     wavePropagation/shared/WaveSolverBase.hpp
-     wavePropagation/shared/WaveSolverUtils.hpp
-     wavePropagation/shared/PrecomputeSourcesAndReceiversKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticFields.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticMatricesSEMKernel.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticFields.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp
-     wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticMatricesSEMKernel.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp 
-     PARENT_SCOPE )
+set( wavePropagationSolvers_headers
+     shared/WaveSolverBase.hpp
+     shared/WaveSolverUtils.hpp
+     shared/PrecomputeSourcesAndReceiversKernel.hpp
+     sem/acoustic/shared/AcousticFields.hpp
+     sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp
+     sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp
+     sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp
+     sem/acoustic/shared/AcousticMatricesSEMKernel.hpp
+     sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp
+     sem/elastic/shared/ElasticFields.hpp
+     sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp
+     sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp
+     sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp
+     sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp
+     sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp
+     sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp
+     sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp
+     sem/elastic/shared/ElasticMatricesSEMKernel.hpp
+     sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp
+     sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp
+     sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp
+     sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp
+     sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     wavePropagation/shared/WaveSolverBase.cpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.cpp
-     wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.cpp
-     wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.cpp
-     wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.cpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.cpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.cpp 
-     PARENT_SCOPE)
+set( wavePropagationSolvers_sources
+     shared/WaveSolverBase.cpp
+     sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.cpp
+     sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.cpp
+     sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.cpp
+     sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.cpp
+     sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.cpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.cpp )
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       wavePropagationSolvers
+                 SOURCES    ${wavePropagationSolvers_sources}
+                 HEADERS    ${wavePropagationSolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( wavePropagationSolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS wavePropagationSolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
+
+if( externalComponentDeps )
+  target_include_directories( wavePropagationSolvers PUBLIC ${CMAKE_SOURCE_DIR}/externalComponents )
+endif()


Reviews:
user: login: paveltomin
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-02-22T01:54:38Z
user: login: CusiniM
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-02-22T22:25:45Z
user: login: CusiniM
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-02-22T22:25:54Z
user: login: CusiniM
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-02-22T22:26:07Z
user: login: CusiniM
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-02-22T22:26:16Z
user: login: jhuang2601
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-02-28T17:58:31Z
user: login: rrsettgast
state: APPROVED
author_association: MEMBER
submitted_at: 2025-02-28T18:20:07Z
user: login: dkachuma
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-02-28T18:22:44Z
user: login: tjb-ltk
body: After this restructuring, will the sizes of each module be small enough to avoid encountering the same problem with future developments?  
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-02-28T19:06:21Z
user: login: CusiniM
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-07T16:32:28Z
user: login: white238
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-07T19:07:54Z
user: login: CusiniM
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-07T19:09:33Z
user: login: CusiniM
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-07T22:49:08Z

Review comments:
diff_hunk: @@ -1,43 +1,79 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: wavePropagationSolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     wavePropagation/shared/WaveSolverBase.hpp
-     wavePropagation/shared/WaveSolverUtils.hpp
-     wavePropagation/shared/PrecomputeSourcesAndReceiversKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticFields.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticMatricesSEMKernel.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticFields.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp
-     wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticMatricesSEMKernel.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp 
-     PARENT_SCOPE )
+set( wavePropagationSolvers_headers
+     ${wavePropagationSolvers_headers}
+     shared/WaveSolverBase.hpp
+     shared/WaveSolverUtils.hpp
+     shared/PrecomputeSourcesAndReceiversKernel.hpp
+     sem/acoustic/shared/AcousticFields.hpp
+     sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp
+     sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp
+     sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp
+     sem/acoustic/shared/AcousticMatricesSEMKernel.hpp
+     sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp
+     sem/elastic/shared/ElasticFields.hpp
+     sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp
+     sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp
+     sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp
+     sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp
+     sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp
+     sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp
+     sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp
+     sem/elastic/shared/ElasticMatricesSEMKernel.hpp
+     sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp
+     sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp
+     sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp
+     sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp
+     sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp
+     sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     wavePropagation/shared/WaveSolverBase.cpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.cpp
-     wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.cpp
-     wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.cpp
-     wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.cpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.cpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.cpp 
-     PARENT_SCOPE)
+set( wavePropagationSolvers_sources
+     ${wavePropagationSolvers_sources}
path: src/coreComponents/physicsSolvers/wavePropagation/CMakeLists.txt
user: login: CusiniM
body: ```suggestion
```
created_at: 2025-02-22T22:25:44Z
author_association: COLLABORATOR
diff_hunk: @@ -1,43 +1,79 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: wavePropagationSolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     wavePropagation/shared/WaveSolverBase.hpp
-     wavePropagation/shared/WaveSolverUtils.hpp
-     wavePropagation/shared/PrecomputeSourcesAndReceiversKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticFields.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/acoustic/shared/AcousticMatricesSEMKernel.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticFields.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp
-     wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp
-     wavePropagation/sem/elastic/shared/ElasticMatricesSEMKernel.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp
-     wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp
-     wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp
-     wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp 
-     PARENT_SCOPE )
+set( wavePropagationSolvers_headers
+     ${wavePropagationSolvers_headers}
path: src/coreComponents/physicsSolvers/wavePropagation/CMakeLists.txt
user: login: CusiniM
body: ```suggestion
```
created_at: 2025-02-22T22:25:54Z
author_association: COLLABORATOR
diff_hunk: @@ -1,22 +1,58 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: surfaceGeneration
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     surfaceGeneration/EmbeddedSurfaceGenerator.hpp
-     surfaceGeneration/EmbeddedSurfacesParallelSynchronization.hpp
-     surfaceGeneration/ParallelTopologyChange.hpp
-     surfaceGeneration/SurfaceGenerator.hpp
-     surfaceGeneration/SurfaceGeneratorFields.hpp
-     surfaceGeneration/LogLevelsInfo.hpp
-     surfaceGeneration/kernels/surfaceGenerationKernels.hpp
-     surfaceGeneration/kernels/surfaceGenerationKernelsHelpers.hpp
-     PARENT_SCOPE )
+set( surfaceGeneration_headers
+     ${surfaceGeneration_headers}
+     EmbeddedSurfaceGenerator.hpp
+     EmbeddedSurfacesParallelSynchronization.hpp
+     ParallelTopologyChange.hpp
+     SurfaceGenerator.hpp
+     SurfaceGeneratorFields.hpp
+     LogLevelsInfo.hpp
+     kernels/surfaceGenerationKernels.hpp
+     kernels/surfaceGenerationKernelsHelpers.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     surfaceGeneration/EmbeddedSurfaceGenerator.cpp
-     surfaceGeneration/EmbeddedSurfacesParallelSynchronization.cpp
-     surfaceGeneration/ParallelTopologyChange.cpp
-     surfaceGeneration/ParallelTopologyChangeNoFixup.cpp
-     surfaceGeneration/SurfaceGenerator.cpp
-     PARENT_SCOPE )
\ No newline at end of file
+set( surfaceGeneration_sources
+     ${surfaceGeneration_sources}
path: src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt
user: login: CusiniM
body: ```suggestion
```
created_at: 2025-02-22T22:26:07Z
author_association: COLLABORATOR
diff_hunk: @@ -1,22 +1,58 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: surfaceGeneration
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     surfaceGeneration/EmbeddedSurfaceGenerator.hpp
-     surfaceGeneration/EmbeddedSurfacesParallelSynchronization.hpp
-     surfaceGeneration/ParallelTopologyChange.hpp
-     surfaceGeneration/SurfaceGenerator.hpp
-     surfaceGeneration/SurfaceGeneratorFields.hpp
-     surfaceGeneration/LogLevelsInfo.hpp
-     surfaceGeneration/kernels/surfaceGenerationKernels.hpp
-     surfaceGeneration/kernels/surfaceGenerationKernelsHelpers.hpp
-     PARENT_SCOPE )
+set( surfaceGeneration_headers
+     ${surfaceGeneration_headers}
path: src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt
user: login: CusiniM
body: ```suggestion
```
created_at: 2025-02-22T22:26:16Z
author_association: COLLABORATOR
diff_hunk: @@ -40,7 +40,35 @@ set( mainInterface_sources
      version.cpp
    )
 
-set( dependencyList ${parallelDeps} physicsSolvers constitutiveDrivers optionparser )
+set( dependencyList ${parallelDeps} constitutiveDrivers optionparser )
+
+if( GEOS_ENABLE_FLUIDFLOW )
+  list( APPEND dependencyList fluidFlowSolvers )
+endif()
+
+if( GEOS_ENABLE_INDUCEDSEISMICITY )
+  list( APPEND dependencyList inducedSeismicitySolvers )
+endif()
+
+if( GEOS_ENABLE_SIMPLEPDE )
+  list( APPEND dependencyLists implePDESolvers )
path: src/coreComponents/mainInterface/CMakeLists.txt
user: login: jhuang2601
body: ```suggestion
  list( APPEND dependencyLists simplePDESolvers )
```
created_at: 2025-02-28T17:52:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1,27 +1,61 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: inducedSeismicitySolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     inducedSeismicity/ExplicitQDRateAndState.hpp
-     inducedSeismicity/ImplicitQDRateAndState.hpp
-     inducedSeismicity/inducedSeismicityFields.hpp
-     inducedSeismicity/QDRateAndStateBase.hpp
-     inducedSeismicity/QuasiDynamicEarthQuake.hpp
-     inducedSeismicity/rateAndStateFields.hpp
-     inducedSeismicity/SeismicityRate.hpp
-     inducedSeismicity/SpringSlider.hpp
-     inducedSeismicity/kernels/ExplicitRateAndStateKernels.hpp
-     inducedSeismicity/kernels/ImplicitRateAndStateKernels.hpp
-     inducedSeismicity/kernels/RateAndStateKernelsBase.hpp
-     inducedSeismicity/kernels/SeismicityRateKernels.hpp
-     PARENT_SCOPE )
+set( inducedSeismicitySolvers_headers
+     ExplicitQDRateAndState.hpp
+     ImplicitQDRateAndState.hpp
+     inducedSeismicityFields.hpp
+     QDRateAndStateBase.hpp
+     QuasiDynamicEarthQuake.hpp
+     rateAndStateFields.hpp
+     SeismicityRate.hpp
+     SpringSlider.hpp
+     kernels/ExplicitRateAndStateKernels.hpp
+     kernels/ImplicitRateAndStateKernels.hpp
+     kernels/RateAndStateKernelsBase.hpp
+     kernels/SeismicityRateKernels.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     inducedSeismicity/ExplicitQDRateAndState.cpp 
-     inducedSeismicity/ImplicitQDRateAndState.cpp 
-     inducedSeismicity/QDRateAndStateBase.cpp
-     inducedSeismicity/QuasiDynamicEarthQuake.cpp
-     inducedSeismicity/SeismicityRate.cpp
-     inducedSeismicity/SpringSlider.cpp
-     PARENT_SCOPE )
+set( inducedSeismicitySolvers_sources
+     ExplicitQDRateAndState.cpp 
+     ImplicitQDRateAndState.cpp 
+     QDRateAndStateBase.cpp
+     QuasiDynamicEarthQuake.cpp
+     SeismicityRate.cpp
+     SpringSlider.cpp )
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       inducedSeismicitySolvers
+                 SOURCES    ${inducedSeismicitySolvers_sources}
+                 HEADERS    ${inducedSeismicitySolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( inducedSeismicitySolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS inducedSeismicitySolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
path: src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt
user: login: CusiniM
body: @white238 is this install command always necessary after adding a library with BLT? Or will blt  add it to the intall dir? 
created_at: 2025-03-07T16:32:28Z
author_association: COLLABORATOR
diff_hunk: @@ -1,27 +1,61 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: inducedSeismicitySolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     inducedSeismicity/ExplicitQDRateAndState.hpp
-     inducedSeismicity/ImplicitQDRateAndState.hpp
-     inducedSeismicity/inducedSeismicityFields.hpp
-     inducedSeismicity/QDRateAndStateBase.hpp
-     inducedSeismicity/QuasiDynamicEarthQuake.hpp
-     inducedSeismicity/rateAndStateFields.hpp
-     inducedSeismicity/SeismicityRate.hpp
-     inducedSeismicity/SpringSlider.hpp
-     inducedSeismicity/kernels/ExplicitRateAndStateKernels.hpp
-     inducedSeismicity/kernels/ImplicitRateAndStateKernels.hpp
-     inducedSeismicity/kernels/RateAndStateKernelsBase.hpp
-     inducedSeismicity/kernels/SeismicityRateKernels.hpp
-     PARENT_SCOPE )
+set( inducedSeismicitySolvers_headers
+     ExplicitQDRateAndState.hpp
+     ImplicitQDRateAndState.hpp
+     inducedSeismicityFields.hpp
+     QDRateAndStateBase.hpp
+     QuasiDynamicEarthQuake.hpp
+     rateAndStateFields.hpp
+     SeismicityRate.hpp
+     SpringSlider.hpp
+     kernels/ExplicitRateAndStateKernels.hpp
+     kernels/ImplicitRateAndStateKernels.hpp
+     kernels/RateAndStateKernelsBase.hpp
+     kernels/SeismicityRateKernels.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     inducedSeismicity/ExplicitQDRateAndState.cpp 
-     inducedSeismicity/ImplicitQDRateAndState.cpp 
-     inducedSeismicity/QDRateAndStateBase.cpp
-     inducedSeismicity/QuasiDynamicEarthQuake.cpp
-     inducedSeismicity/SeismicityRate.cpp
-     inducedSeismicity/SpringSlider.cpp
-     PARENT_SCOPE )
+set( inducedSeismicitySolvers_sources
+     ExplicitQDRateAndState.cpp 
+     ImplicitQDRateAndState.cpp 
+     QDRateAndStateBase.cpp
+     QuasiDynamicEarthQuake.cpp
+     SeismicityRate.cpp
+     SpringSlider.cpp )
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       inducedSeismicitySolvers
+                 SOURCES    ${inducedSeismicitySolvers_sources}
+                 HEADERS    ${inducedSeismicitySolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( inducedSeismicitySolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS inducedSeismicitySolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
path: src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt
user: login: white238
body: BLT does not handle installing. You must call the CMake `install` call yourself. I did at one point, a long time ago, try to come up with a default install strategy but noone could agree on anything and the CMake ones are pretty nice.
created_at: 2025-03-07T19:07:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1,27 +1,61 @@
+# SPDX-License-Identifier: LGPL-2.1-only
+#
+# Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
+# Copyright (c) 2018-2024 TotalEnergies
+# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
+# Copyright (c) 2023-2024 Chevron
+# Copyright (c) 2019-     GEOS/GEOSX Contributors
+# All rights reserved
+#
+# See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
+#
+#--------------------------------------------------------------------------------------------------
+
+#[[
+Package: inducedSeismicitySolvers
+Contains:
+#]]
+
 # Specify solver headers
-set( physicsSolvers_headers
-     ${physicsSolvers_headers}
-     inducedSeismicity/ExplicitQDRateAndState.hpp
-     inducedSeismicity/ImplicitQDRateAndState.hpp
-     inducedSeismicity/inducedSeismicityFields.hpp
-     inducedSeismicity/QDRateAndStateBase.hpp
-     inducedSeismicity/QuasiDynamicEarthQuake.hpp
-     inducedSeismicity/rateAndStateFields.hpp
-     inducedSeismicity/SeismicityRate.hpp
-     inducedSeismicity/SpringSlider.hpp
-     inducedSeismicity/kernels/ExplicitRateAndStateKernels.hpp
-     inducedSeismicity/kernels/ImplicitRateAndStateKernels.hpp
-     inducedSeismicity/kernels/RateAndStateKernelsBase.hpp
-     inducedSeismicity/kernels/SeismicityRateKernels.hpp
-     PARENT_SCOPE )
+set( inducedSeismicitySolvers_headers
+     ExplicitQDRateAndState.hpp
+     ImplicitQDRateAndState.hpp
+     inducedSeismicityFields.hpp
+     QDRateAndStateBase.hpp
+     QuasiDynamicEarthQuake.hpp
+     rateAndStateFields.hpp
+     SeismicityRate.hpp
+     SpringSlider.hpp
+     kernels/ExplicitRateAndStateKernels.hpp
+     kernels/ImplicitRateAndStateKernels.hpp
+     kernels/RateAndStateKernelsBase.hpp
+     kernels/SeismicityRateKernels.hpp )
 
 # Specify solver sources
-set( physicsSolvers_sources
-     ${physicsSolvers_sources}
-     inducedSeismicity/ExplicitQDRateAndState.cpp 
-     inducedSeismicity/ImplicitQDRateAndState.cpp 
-     inducedSeismicity/QDRateAndStateBase.cpp
-     inducedSeismicity/QuasiDynamicEarthQuake.cpp
-     inducedSeismicity/SeismicityRate.cpp
-     inducedSeismicity/SpringSlider.cpp
-     PARENT_SCOPE )
+set( inducedSeismicitySolvers_sources
+     ExplicitQDRateAndState.cpp 
+     ImplicitQDRateAndState.cpp 
+     QDRateAndStateBase.cpp
+     QuasiDynamicEarthQuake.cpp
+     SeismicityRate.cpp
+     SpringSlider.cpp )
+
+set( dependencyList ${parallelDeps} physicsSolversBase )
+
+geos_decorate_link_dependencies( LIST decoratedDependencies DEPENDENCIES ${dependencyList} )
+
+blt_add_library( NAME       inducedSeismicitySolvers
+                 SOURCES    ${inducedSeismicitySolvers_sources}
+                 HEADERS    ${inducedSeismicitySolvers_headers}
+                 DEPENDS_ON ${decoratedDependencies} ${externalComponentDeps}
+                 OBJECT     ${GEOS_BUILD_OBJ_LIBS}
+                 SHARED     ${GEOS_BUILD_SHARED_LIBS}
+               )
+
+target_include_directories( inducedSeismicitySolvers PUBLIC ${CMAKE_SOURCE_DIR}/coreComponents )
+
+install( TARGETS inducedSeismicitySolvers LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
path: src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt
user: login: CusiniM
body: okay, thank you! 
created_at: 2025-03-07T19:09:33Z
author_association: COLLABORATOR
diff_hunk: @@ -41,7 +41,7 @@
 /**
  * @brief Enables verbose logging of object catalog
  */
-#define OBJECTCATALOGVERBOSE 0
+#define OBJECTCATALOGVERBOSE 1
path: src/coreComponents/dataRepository/ObjectCatalog.hpp
user: login: CusiniM
body: ```suggestion
#define OBJECTCATALOGVERBOSE 0
```
created_at: 2025-03-07T22:49:08Z
author_association: COLLABORATOR

PR comments:
user: login: rrsettgast
created_at: 2025-02-22T22:48:20Z
body: Maybe but the base in its own target at the same level as all the physics solvers
author_association: MEMBER
user: login: CusiniM
created_at: 2025-02-22T23:08:35Z
body: this seems better to me. 

![dependency](https://github.com/user-attachments/assets/d3207fa8-79e8-4899-8759-70f3731fa298)


author_association: COLLABORATOR
user: login: CusiniM
created_at: 2025-02-22T23:09:42Z
body: > Maybe but the base in its own target at the same level as all the physics solvers

ah yeah, we can also do this. I don't really know what's better... I guess some physicsSolverts may not need all the dependencies of `physicsSolvers` so maybe this is better. 
author_association: COLLABORATOR
user: login: CusiniM
created_at: 2025-02-22T23:15:29Z
body: > > Maybe but the base in its own target at the same level as all the physics solvers
> 
> ah yeah, we can also do this. I don't really know what's better... I guess some physicsSolverts may not need all the dependencies of `physicsSolvers` so maybe this is better.

nevermind, they all depend on it. I think the way it is now is the only way. 
author_association: COLLABORATOR
user: login: CusiniM
created_at: 2025-02-28T21:53:58Z
body: I have added an interface layer and rename the base package `physicsSolversBase`
![dependency](https://github.com/user-attachments/assets/fc81db7d-6a21-4b21-91a1-dc365378a186)

author_association: COLLABORATOR
user: login: CusiniM
created_at: 2025-02-28T21:56:17Z
body: > After this restructuring, will the sizes of each module be small enough to avoid encountering the same problem with future developments?

I mean... there is no guarantee that individual libraries don't grow to a point that they need to be broken up even further but we should be find for a while. 
author_association: COLLABORATOR
user: login: CusiniM
created_at: 2025-03-03T19:05:23Z
body: @sframba or @acitrain, @matteofrigo5 or @VidarStiernstrom I need your approvals for this. 
author_association: COLLABORATOR
user: login: codecov[bot]
created_at: 2025-03-07T19:34:01Z
body: ## [Codecov](https://app.codecov.io/gh/GEOS-DEV/GEOS/pull/3564?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=GEOS-DEV) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 56.29%. Comparing base [(`f579064`)](https://app.codecov.io/gh/GEOS-DEV/GEOS/commit/f5790642cb77ba64fe9c472128107fa069f7d601?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=GEOS-DEV) to head [(`2302480`)](https://app.codecov.io/gh/GEOS-DEV/GEOS/commit/2302480701ffd7a12aa4861299465ab3c529a72e?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=GEOS-DEV).
> Report is 64 commits behind head on develop.

<details><summary>Additional details and impacted files</summary>


```diff
@@           Coverage Diff            @@
##           develop    #3564   +/-   ##
========================================
  Coverage    56.29%   56.29%           
========================================
  Files         1180     1180           
  Lines       102938   102938           
========================================
  Hits         57947    57947           
  Misses       44991    44991           
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/GEOS-DEV/GEOS/pull/3564?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=GEOS-DEV).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=GEOS-DEV).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
</details>
author_association: NONE