Skip to content

Commit

Permalink
make matrix free optional (#1118)
Browse files Browse the repository at this point in the history
* make matrix free optional

* whitespace
  • Loading branch information
rcknaus committed Jan 30, 2023
1 parent ba61f99 commit c05f7f7
Show file tree
Hide file tree
Showing 15 changed files with 229 additions and 137 deletions.
7 changes: 7 additions & 0 deletions CMakeLists.txt
Expand Up @@ -25,8 +25,10 @@ option(ENABLE_PARAVIEW_CATALYST
option(ENABLE_TIOGA "Use TIOGA TPL to perform overset connectivity" OFF)
option(ENABLE_OPENMP "Enable OpenMP flags" OFF)
option(ENABLE_BOOST "Enable Boost libraries" OFF)
option(ENABLE_MATRIXFREE "Enable high-order matrix-free computation" ON)
option(NALU_WIND_SAVE_GOLDS "Save gold files to directory when running tests" OFF)


set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED)
Expand Down Expand Up @@ -182,6 +184,11 @@ if(ENABLE_TIOGA)
endif()
endif()


############################ MATRIXREE #####################################
if(ENABLE_MATRIXFREE)
target_compile_definitions(nalu PUBLIC NALU_HAS_MATRIXFREE)
endif()
########################### NALU #####################################
message(STATUS "CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}")
message(STATUS "CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}")
Expand Down
19 changes: 13 additions & 6 deletions reg_tests/CTestList.cmake
Expand Up @@ -173,10 +173,8 @@ if(NOT ENABLE_CUDA AND NOT ENABLE_ROCM)
add_test_r(ablUnstableEdge_ra 4)
add_test_r(airfoilRANSEdgeNGPTrilinos.rst 1)
add_test_r(airfoilSSTSUST 4)
add_test_r(conduction_p4 4)
add_test_r(dgNonConformalEdgeCylinder 8)
add_test_r(dgNonConformalFluidsEdge 4)
add_test_r(drivenCavity_p1 4)
add_test_r(edgeHybridFluids 8)
add_test_r(ekmanSpiral 4)
add_test_r_rst(heatedWaterChannelEdge 4)
Expand All @@ -185,7 +183,6 @@ if(NOT ENABLE_CUDA AND NOT ENABLE_ROCM)
add_test_r_np(periodic3dEdge 1)
add_test_r_np(periodic3dEdge 4)
add_test_r_np(periodic3dEdge 8)
add_test_r(taylorGreenVortex_p3 4)
add_test_r(vortexOpen 4)
add_test_r(ActLineSimpleFLLC 4)
add_test_r(ActLineSimpleNGP 2)
Expand All @@ -198,6 +195,13 @@ if(NOT ENABLE_CUDA AND NOT ENABLE_ROCM)
add_test_r(ablHill3d_ii 4)
endif()

if (ENABLE_MATRIXFREE)
add_test_r(drivenCavity_p1 4)
add_test_r(conduction_p4 4)
add_test_r(taylorGreenVortex_p3 4)
endif()


if(ENABLE_HYPRE)
add_test_r(aslNeutralEdgeSST 4)
add_test_r(ablNeutralEdgeSST 4)
Expand Down Expand Up @@ -269,12 +273,9 @@ else()
# Regression tests
#=============================================================================
add_test_r(ablNeutralNGPTrilinos 2)
add_test_r(conduction_p4 2)
add_test_r(airfoilRANSEdgeNGPTrilinos.rst 1)
add_test_r(ActLineSimpleNGP 2)
add_test_r(ActLineSimpleFLLC 2)
add_test_r(taylorGreenVortex_p3 2)
add_test_r(drivenCavity_p1 2)
#add_test_r(BLTFlatPlateT3A 4)

if(ENABLE_OPENFAST)
Expand All @@ -298,6 +299,12 @@ else()
add_test_r(oversetRotCylNGPHypre 2)
endif()

if(ENABLE_MATRIXFREE)
add_test_r(conduction_p4 2)
add_test_r(taylorGreenVortex_p3 2)
add_test_r(drivenCavity_p1 2)
endif()

#=============================================================================
# Comparing solution norm tests
#=============================================================================
Expand Down
232 changes: 118 additions & 114 deletions src/CMakeLists.txt
@@ -1,127 +1,131 @@
target_sources(nalu PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/ABLProfileFunction.C
${CMAKE_CURRENT_SOURCE_DIR}/Algorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AlgorithmDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/AMSAlgDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleContinuityNonConformalSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleElemSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleFaceElemSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleEdgeSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleMomentumEdgeWallFunctionSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleMomentumNonConformalSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleNodalGradNonConformalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleNodalGradUNonConformalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleNodeSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleNGPNodeSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssemblePNGBoundarySolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssemblePNGElemSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssemblePNGNonConformalSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleScalarEigenEdgeSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleScalarNonConformalSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleWallDistNonConformalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleWallHeatTransferAlgorithmDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/AuxFunctionAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AveragingInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/BoundaryConditions.C
${CMAKE_CURRENT_SOURCE_DIR}/ChienKEpsilonEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/ComputeHeatTransferEdgeWallAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ComputeMdotNonConformalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ComputeSSTMaxLengthScaleElemAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ComputeWallFrictionVelocityAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ConstantAuxFunction.C
${CMAKE_CURRENT_SOURCE_DIR}/ContinuityLowSpeedCompressibleNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/CopyFieldAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/CoriolisSrc.C
${CMAKE_CURRENT_SOURCE_DIR}/DataProbePostProcessing.C
${CMAKE_CURRENT_SOURCE_DIR}/DgInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/DirichletBC.C
${CMAKE_CURRENT_SOURCE_DIR}/EffectiveDiffFluxCoeffAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ElemDataRequests.C
${CMAKE_CURRENT_SOURCE_DIR}/ElemDataRequestsGPU.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyLowSpeedCompressibleNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyPmrSrcNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyPressureWorkNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyViscousWorkNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/EquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/EquationSystems.C
${CMAKE_CURRENT_SOURCE_DIR}/FieldFunctions.C
${CMAKE_CURRENT_SOURCE_DIR}/FieldManager.C
${CMAKE_CURRENT_SOURCE_DIR}/FieldRegistry.C
${CMAKE_CURRENT_SOURCE_DIR}/FixPressureAtNodeAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/GammaEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/InitialConditions.C
${CMAKE_CURRENT_SOURCE_DIR}/InputOutputRealm.C
${CMAKE_CURRENT_SOURCE_DIR}/LinearSolver.C
${CMAKE_CURRENT_SOURCE_DIR}/LinearSolverConfig.C
${CMAKE_CURRENT_SOURCE_DIR}/LinearSolvers.C
${CMAKE_CURRENT_SOURCE_DIR}/LinearSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/LowMachEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/MaterialProperty.C
${CMAKE_CURRENT_SOURCE_DIR}/MaterialPropertys.C
${CMAKE_CURRENT_SOURCE_DIR}/MatrixFreeHeatCondEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/MatrixFreeLowMachEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/MomentumBoussinesqRASrcNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/MomentumBuoyancySrcNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/MovingAveragePostProcessor.C
${CMAKE_CURRENT_SOURCE_DIR}/NaluEnv.C
${CMAKE_CURRENT_SOURCE_DIR}/NaluParsing.C
${CMAKE_CURRENT_SOURCE_DIR}/NonConformalInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/NonConformalManager.C
${CMAKE_CURRENT_SOURCE_DIR}/OutputInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/PecletFunction.C
${CMAKE_CURRENT_SOURCE_DIR}/PeriodicManager.C
${CMAKE_CURRENT_SOURCE_DIR}/PostProcessingInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/ProjectedNodalGradientEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/Realm.C
${CMAKE_CURRENT_SOURCE_DIR}/Realms.C
${CMAKE_CURRENT_SOURCE_DIR}/ScratchViews.C
${CMAKE_CURRENT_SOURCE_DIR}/ShearStressTransportEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/SideWriter.C
${CMAKE_CURRENT_SOURCE_DIR}/Simulation.C
${CMAKE_CURRENT_SOURCE_DIR}/SolutionNormPostProcessing.C
${CMAKE_CURRENT_SOURCE_DIR}/SolutionOptions.C
${CMAKE_CURRENT_SOURCE_DIR}/SolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/SolverAlgorithmDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/SpecificDissipationRateEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/SupplementalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/SurfaceForceAndMomentAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/SurfaceForceAndMomentAlgorithmDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/SurfaceForceAndMomentWallFunctionAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/TimeIntegrator.C
${CMAKE_CURRENT_SOURCE_DIR}/TotalDissipationRateEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/TpetraLinearSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/TpetraLinearSystemHelpers.C
${CMAKE_CURRENT_SOURCE_DIR}/TpetraSegregatedLinearSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/TurbKineticEnergyEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/TurbViscSmagorinskyAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/TurbViscWaleAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/TurbulenceAveragingPostProcessing.C
${CMAKE_CURRENT_SOURCE_DIR}/WallDistEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/WilcoxKOmegaEquationSystem.C
)
target_sources(
nalu
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/ABLProfileFunction.C
${CMAKE_CURRENT_SOURCE_DIR}/Algorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AlgorithmDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/AMSAlgDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleContinuityNonConformalSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleElemSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleFaceElemSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleEdgeSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleMomentumEdgeWallFunctionSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleMomentumNonConformalSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleNodalGradNonConformalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleNodalGradUNonConformalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleNodeSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleNGPNodeSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssemblePNGBoundarySolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssemblePNGElemSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssemblePNGNonConformalSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleScalarEigenEdgeSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleScalarNonConformalSolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleWallDistNonConformalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AssembleWallHeatTransferAlgorithmDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/AuxFunctionAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/AveragingInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/BoundaryConditions.C
${CMAKE_CURRENT_SOURCE_DIR}/ChienKEpsilonEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/ComputeHeatTransferEdgeWallAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ComputeMdotNonConformalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ComputeSSTMaxLengthScaleElemAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ComputeWallFrictionVelocityAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ConstantAuxFunction.C
${CMAKE_CURRENT_SOURCE_DIR}/ContinuityLowSpeedCompressibleNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/CopyFieldAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/CoriolisSrc.C
${CMAKE_CURRENT_SOURCE_DIR}/DataProbePostProcessing.C
${CMAKE_CURRENT_SOURCE_DIR}/DgInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/DirichletBC.C
${CMAKE_CURRENT_SOURCE_DIR}/EffectiveDiffFluxCoeffAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/ElemDataRequests.C
${CMAKE_CURRENT_SOURCE_DIR}/ElemDataRequestsGPU.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyLowSpeedCompressibleNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyPmrSrcNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyPressureWorkNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/EnthalpyViscousWorkNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/EquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/EquationSystems.C
${CMAKE_CURRENT_SOURCE_DIR}/FieldFunctions.C
${CMAKE_CURRENT_SOURCE_DIR}/FieldManager.C
${CMAKE_CURRENT_SOURCE_DIR}/FieldRegistry.C
${CMAKE_CURRENT_SOURCE_DIR}/FixPressureAtNodeAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/GammaEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/InitialConditions.C
${CMAKE_CURRENT_SOURCE_DIR}/InputOutputRealm.C
${CMAKE_CURRENT_SOURCE_DIR}/LinearSolver.C
${CMAKE_CURRENT_SOURCE_DIR}/LinearSolverConfig.C
${CMAKE_CURRENT_SOURCE_DIR}/LinearSolvers.C
${CMAKE_CURRENT_SOURCE_DIR}/LinearSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/LowMachEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/MaterialProperty.C
${CMAKE_CURRENT_SOURCE_DIR}/MaterialPropertys.C
${CMAKE_CURRENT_SOURCE_DIR}/MomentumBoussinesqRASrcNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/MomentumBuoyancySrcNodeSuppAlg.C
${CMAKE_CURRENT_SOURCE_DIR}/MovingAveragePostProcessor.C
${CMAKE_CURRENT_SOURCE_DIR}/NaluEnv.C
${CMAKE_CURRENT_SOURCE_DIR}/NaluParsing.C
${CMAKE_CURRENT_SOURCE_DIR}/NonConformalInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/NonConformalManager.C
${CMAKE_CURRENT_SOURCE_DIR}/OutputInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/PecletFunction.C
${CMAKE_CURRENT_SOURCE_DIR}/PeriodicManager.C
${CMAKE_CURRENT_SOURCE_DIR}/PostProcessingInfo.C
${CMAKE_CURRENT_SOURCE_DIR}/ProjectedNodalGradientEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/Realm.C
${CMAKE_CURRENT_SOURCE_DIR}/Realms.C
${CMAKE_CURRENT_SOURCE_DIR}/ScratchViews.C
${CMAKE_CURRENT_SOURCE_DIR}/ShearStressTransportEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/SideWriter.C
${CMAKE_CURRENT_SOURCE_DIR}/Simulation.C
${CMAKE_CURRENT_SOURCE_DIR}/SolutionNormPostProcessing.C
${CMAKE_CURRENT_SOURCE_DIR}/SolutionOptions.C
${CMAKE_CURRENT_SOURCE_DIR}/SolverAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/SolverAlgorithmDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/SpecificDissipationRateEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/SupplementalAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/SurfaceForceAndMomentAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/SurfaceForceAndMomentAlgorithmDriver.C
${CMAKE_CURRENT_SOURCE_DIR}/SurfaceForceAndMomentWallFunctionAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/TimeIntegrator.C
${CMAKE_CURRENT_SOURCE_DIR}/TotalDissipationRateEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/TpetraLinearSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/TpetraLinearSystemHelpers.C
${CMAKE_CURRENT_SOURCE_DIR}/TpetraSegregatedLinearSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/TurbKineticEnergyEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/TurbViscSmagorinskyAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/TurbViscWaleAlgorithm.C
${CMAKE_CURRENT_SOURCE_DIR}/TurbulenceAveragingPostProcessing.C
${CMAKE_CURRENT_SOURCE_DIR}/WallDistEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/WilcoxKOmegaEquationSystem.C)

if(ENABLE_FFTW)
target_sources(nalu PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/AssembleMomentumEdgeABLTopBC.C
)
target_sources(
nalu PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/AssembleMomentumEdgeABLTopBC.C)
endif(ENABLE_FFTW)

if(ENABLE_HYPRE)
target_sources(nalu PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/HypreDirectSolver.C
${CMAKE_CURRENT_SOURCE_DIR}/HypreUVWSolver.C
${CMAKE_CURRENT_SOURCE_DIR}/HypreLinearSolverConfig.C
${CMAKE_CURRENT_SOURCE_DIR}/HypreLinearSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/HypreUVWLinearSystem.C
)
target_sources(
nalu
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/HypreDirectSolver.C
${CMAKE_CURRENT_SOURCE_DIR}/HypreUVWSolver.C
${CMAKE_CURRENT_SOURCE_DIR}/HypreLinearSolverConfig.C
${CMAKE_CURRENT_SOURCE_DIR}/HypreLinearSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/HypreUVWLinearSystem.C)
endif(ENABLE_HYPRE)

if(ENABLE_MATRIXFREE)
target_sources(
nalu PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/MatrixFreeHeatCondEquationSystem.C
${CMAKE_CURRENT_SOURCE_DIR}/MatrixFreeLowMachEquationSystem.C)
add_subdirectory(matrix_free)
endif(ENABLE_MATRIXFREE)

add_subdirectory(aero)
add_subdirectory(element_promotion)
add_subdirectory(matrix_free)
add_subdirectory(kernel)
add_subdirectory(edge_kernels)
add_subdirectory(element_promotion)
add_subdirectory(node_kernels)
add_subdirectory(master_element)
add_subdirectory(mesh_motion)
Expand Down
8 changes: 8 additions & 0 deletions src/EquationSystems.C
Expand Up @@ -22,8 +22,11 @@
// all concrete EquationSystem's
#include <EnthalpyEquationSystem.h>
#include <LowMachEquationSystem.h>

#ifdef NALU_HAS_MATRIXFREE
#include <MatrixFreeHeatCondEquationSystem.h>
#include <MatrixFreeLowMachEquationSystem.h>
#endif
#include <ShearStressTransportEquationSystem.h>
#include <ChienKEpsilonEquationSystem.h>
#include <WilcoxKOmegaEquationSystem.h>
Expand Down Expand Up @@ -118,7 +121,9 @@ EquationSystems::load(const YAML::Node& y_node)
y_eqsys, "element_continuity_eqs", elemCont);

if (realm_.matrix_free()) {
#ifdef NALU_HAS_MATRIXFREE
eqSys = new MatrixFreeLowMachEquationSystem(*this);
#endif
} else {
eqSys = new LowMachEquationSystem(*this, elemCont);
}
Expand Down Expand Up @@ -159,12 +164,15 @@ EquationSystems::load(const YAML::Node& y_node)
if (root()->debug())
NaluEnv::self().naluOutputP0()
<< "eqSys = HeatConduction " << std::endl;
#ifdef NALU_HAS_MATRIXFREE
if (realm_.matrix_free()) {
eqSys = new MatrixFreeHeatCondEquationSystem(*this);

} else {
throw std::runtime_error(
"HeatConduction only supported for matrix-free");
}
#endif
} else if (expect_map(y_system, "WallDistance", true)) {
y_eqsys = expect_map(y_system, "WallDistance", true);
eqSys = new WallDistEquationSystem(*this);
Expand Down

0 comments on commit c05f7f7

Please sign in to comment.