Skip to content
Snippets Groups Projects
CMakeLists.txt 13.5 KiB
Newer Older
CMAKE_DEPENDENT_OPTION(NEKTAR_SOLVER_INCNAVIERSTOKES
    "Build the Incompressible Navier-Stokes solver." ON
    "NEKTAR_BUILD_SOLVERS" OFF)
IF (NOT NEKTAR_BUILD_SOLVERS)
    SET(NEKTAR_SOLVER_INCNAVIERSTOKES OFF CACHE INTERNAL "")
ENDIF()

IF( NEKTAR_SOLVER_INCNAVIERSTOKES )
    ADD_SOLVER_EXECUTABLE(IncNavierStokesSolver
        SOURCES ./IncNavierStokesSolver.cpp
        ./EquationSystems/CoupledLinearNS.cpp
        ./EquationSystems/CoupledLocalToGlobalC0ContMap.cpp
        ./EquationSystems/IncNavierStokes.cpp
        ./EquationSystems/VelocityCorrectionScheme.cpp
        ./EquationSystems/VelocityCorrectionSchemeImplicit.cpp
        ./EquationSystems/VelocityCorrectionSchemeWeakPressure.cpp
        ./EquationSystems/SmoothedProfileMethod.cpp
        ./EquationSystems/VCSMapping.cpp
        ./EquationSystems/Extrapolate.cpp
        ./EquationSystems/StandardExtrapolate.cpp
        ./EquationSystems/MappingExtrapolate.cpp
        ./EquationSystems/SubSteppingExtrapolate.cpp
        ./EquationSystems/SubSteppingExtrapolateWeakPressure.cpp
        ./EquationSystems/WeakPressureExtrapolate.cpp
        ./EquationSystems/ImplicitExtrapolate.cpp
        ./AdvectionTerms/AdjointAdvection.cpp
        ./AdvectionTerms/LinearisedAdvection.cpp
        ./AdvectionTerms/NavierStokesAdvection.cpp
        ./AdvectionTerms/SkewSymmetricAdvection.cpp
        ./AdvectionTerms/AlternateSkewAdvection.cpp
        ./AdvectionTerms/NoAdvection.cpp
        ./Filters/FilterReynoldsStresses.cpp
        ./Filters/FilterMovingBody.cpp
        ./Filters/FilterAeroForcesSPM.cpp
        ./Forcing/ForcingIncNSSyntheticEddy.cpp
        ./Forcing/ForcingMovingBody.cpp
        ./Forcing/ForcingStabilityCoupledLNS.cpp
        ./BoundaryConditions/IncBoundaryConditions.cpp
        ./BoundaryConditions/IncBaseCondition.cpp
        ./BoundaryConditions/MovingFrameFar.cpp
        ./BoundaryConditions/StaticWall.cpp
        ./BoundaryConditions/TransMovingWall.cpp
        ./BoundaryConditions/MovingFrameWall.cpp
    IF(NEKTAR_BUILD_SOLVER_LIBS)
        SET(IncNavierStokesSolverHeaders
            AdvectionTerms/AdjointAdvection.h
            AdvectionTerms/AlternateSkewAdvection.h
            AdvectionTerms/LinearisedAdvection.h
            AdvectionTerms/NavierStokesAdvection.h
            AdvectionTerms/NoAdvection.h
            AdvectionTerms/SkewSymmetricAdvection.h
            EquationSystems/CoupledLinearNS.h
            EquationSystems/CoupledLocalToGlobalC0ContMap.h
            EquationSystems/Extrapolate.h
            EquationSystems/ImplicitExtrapolate.h
            EquationSystems/IncNavierStokes.h
            EquationSystems/MappingExtrapolate.h
            EquationSystems/SmoothedProfileMethod.h
            EquationSystems/StandardExtrapolate.h
            EquationSystems/SubSteppingExtrapolate.h
            EquationSystems/SubSteppingExtrapolateWeakPressure.h
            EquationSystems/VCSMapping.h
            EquationSystems/VelocityCorrectionScheme.h
            EquationSystems/VelocityCorrectionSchemeImplicit.h
            EquationSystems/VelocityCorrectionSchemeWeakPressure.h
            EquationSystems/WeakPressureExtrapolate.h
            Filters/FilterAeroForcesSPM.h
            Filters/FilterMovingBody.h
            Filters/FilterReynoldsStresses.h
            Forcing/ForcingIncNSSyntheticEddy.h
            Forcing/ForcingMovingBody.h
            Forcing/ForcingStabilityCoupledLNS.h
            BoundaryConditions/IncBoundaryConditions.h
            BoundaryConditions/IncBaseCondition.h
            BoundaryConditions/MovingFrameFar.h
            BoundaryConditions/StaticWall.h
            BoundaryConditions/TransMovingWall.h
            BoundaryConditions/MovingFrameWall.h)
        # Create separate library. No need to pass source files, as the executable's
        # LIBRARY_SOURCES objects will be reused
        ADD_SOLVER_LIBRARY(IncNavierStokesSolver HEADERS
                          ${IncNavierStokesSolverHeaders} DEPENDS SolverUtils)
    ENDIF()

    SUBDIRS(Utilities)

    # The following test is disabled pending better integration with the CI system
    ADD_NEKTAR_PERFORMANCE_TEST(Perf_ChanFlow_3DH1D_pRef)
    ADD_NEKTAR_PERFORMANCE_TEST(Perf_ChanStability)
    ADD_NEKTAR_TEST(Kovasznay_Flow_3modes)
    ADD_NEKTAR_TEST(ThermStab_dir)
    ADD_NEKTAR_TEST(ChannelStability)
    ADD_NEKTAR_TEST(ThermStab_adj)
    ADD_NEKTAR_TEST(ChannelStabilityAdjoint) 
    # ADD_NEKTAR_TEST(ChanStability_Coupled_3D)
    ADD_NEKTAR_TEST(2DFlow_lineforcing_bcfromfile)
Dave Moxey's avatar
Dave Moxey committed
    ADD_NEKTAR_TEST(BercovierEngelman)
    ADD_NEKTAR_TEST(ChanFlow2D_bcsfromfiles)
    ADD_NEKTAR_TEST(ChanFlow3D_infTurb)
    ADD_NEKTAR_TEST(ChanFlow_3DH1D_bcsfromfiles)
    ADD_NEKTAR_TEST(ChannelFlowQuasi3D LENGTHY)
    ADD_NEKTAR_TEST(ChanFlow_3DH2D_MVM LENGTHY)
    ADD_NEKTAR_TEST(ChanFlow_3DH1D_pRef)
    ADD_NEKTAR_TEST(ChanFlow_LinNS_m8)
    ADD_NEKTAR_TEST(ChannelFlow2D)
    ADD_NEKTAR_TEST(ChanFlow_m3_ConOBC)
    ADD_NEKTAR_TEST(ChanFlow_m3_VCSWeakPress)
    ADD_NEKTAR_TEST(ChanFlow_m3_VCSWeakPress_ConOBC)
    ADD_NEKTAR_TEST(ChanFlow_m3_ConOBC_VCSImplicit)
    ADD_NEKTAR_TEST(ChanFlow_m3_SKS)
    ADD_NEKTAR_TEST(ChanFlow_m8)
    ADD_NEKTAR_TEST(ChanFlow_Accelerate)
    ADD_NEKTAR_TEST(ChanFlow_m8_BodyForce)
    ADD_NEKTAR_TEST(ChanFlow_m8_singular)
    ADD_NEKTAR_TEST(ChanFlow_Tri_Lagrange)
    ADD_NEKTAR_TEST(Channel_Flow_3modes_rad)
    ADD_NEKTAR_TEST(channelTemp)
    ADD_NEKTAR_TEST(channelFlow_Heating_FlowRate)
    ADD_NEKTAR_TEST(channelFlow_nonuniform_Heating)
Douglas Serson's avatar
Douglas Serson committed
    ADD_NEKTAR_TEST(Couette_3DH2D_MVM)
    ADD_NEKTAR_TEST(FreeFallCyl)
    ADD_NEKTAR_TEST(Hex_channel_m3)
    ADD_NEKTAR_TEST(Hex_channel_varP)
    ADD_NEKTAR_TEST(Pyr_channel_m3)
    ADD_NEKTAR_TEST(Pyr_channel_varP)
Dave Moxey's avatar
Dave Moxey committed
    ADD_NEKTAR_TEST(Hex_channel_m6_nodalRestart)
Ed Laughtom's avatar
Ed Laughtom committed
    ADD_NEKTAR_TEST(Hex_channel_m3_srhs LENGTHY)
    ADD_NEKTAR_TEST(Hex_Kovasnay_SubStep)
    ADD_NEKTAR_TEST(PrismHex_channel_m4)
    ADD_NEKTAR_TEST(HM)
    ADD_NEKTAR_TEST(HM_Adj)
    ADD_NEKTAR_TEST(HM_Adj_SingleMode_files)
    ADD_NEKTAR_TEST(SM_base_file)
    ADD_NEKTAR_TEST(SM_Adj_base_file)
    ADD_NEKTAR_TEST(KovaFlow_m3_GJP_VCSWeakPressure)
    ADD_NEKTAR_TEST(KovaFlow_m3_GJP_VCSImplicit)
    ADD_NEKTAR_TEST(KovaFlow_m3_gmresZeroInputCheck)
    ADD_NEKTAR_TEST(KovaFlow_Tet_Curved_GJP_SemiImplicit)
    ADD_NEKTAR_TEST(KovaFlow_Tet_Curved_GJP_Explicit)
    ADD_NEKTAR_TEST(KovaFlow_m8_short_ConOBC)
    ADD_NEKTAR_TEST(KovaFlow_m8_short_ConOBC_VCSWeakPress)
    ADD_NEKTAR_TEST(KovaFlow_m8_short_ConOBC_VCSImplicit)
    ADD_NEKTAR_TEST(KovaFlow_m8_short_HOBC_VCSWeakPress)
    ADD_NEKTAR_TEST(KovaFlow_m8_short_HOBC_VCSImplicit)
    ADD_NEKTAR_TEST(KovaFlow_m10_VCSImplicit)
    ADD_NEKTAR_TEST(KovaFlow_m10_VCSImplicit_MatFree)
    ADD_NEKTAR_TEST(KovaFlow_m10_taylorHood_VCSImplicit)
    ADD_NEKTAR_TEST(KovaFlow_m10_taylorHood_VCSImplicitLoc)
    ADD_NEKTAR_TEST(KovaFlow_m10_QuadTri_VCSImplicit)
    ADD_NEKTAR_TEST(KovaFlow_m10_QuadTri_VCSImplicit_Updated)
    ADD_NEKTAR_TEST(KovaFlow_m10_VCSImplicit_SVV)
    ADD_NEKTAR_TEST(KovaFlow_m10_3DH1D_absorption)
    ADD_NEKTAR_TEST(KovaFlow_varP)
    ADD_NEKTAR_TEST(KovaFlow_varP_per)
    #ADD_NEKTAR_TEST(KovaFlow_Oseen_m8)
    ADD_NEKTAR_TEST(KovaFlow_3DH1D_P5_20modes_MVM LENGTHY)
    ADD_NEKTAR_TEST(KovaFlow_3DH1D_P5_20modes_MVM_SVVHomo1D LENGTHY)
    ADD_NEKTAR_TEST(KovaFlow_3DH1D_P5_20modes_MVM_Deal LENGTHY)
    ADD_NEKTAR_TEST(KovaFlow_3DH1D_P5_20modes_SKS_MVM LENGTHY)
    ADD_NEKTAR_TEST(KovaFlow_3DH1D_P8_8modes_FFTW_VCSWeakPressure)
    ADD_NEKTAR_TEST(KovaFlow_SubStep_2order)
    ADD_NEKTAR_TEST(KovaFlow_SubStep_2order_VCSWeakPress)
    ADD_NEKTAR_TEST(Kovas_Quad6_Tri4_mixedbcs)
    ADD_NEKTAR_TEST(MovingRefFrame_translation)
    ADD_NEKTAR_TEST(MovingRefFrame_Rot_SimpleDomain)
    ADD_NEKTAR_TEST(MovingRefFrame_Rot_naca0012)
    ADD_NEKTAR_TEST(Rayleigh_Bernard)
    ADD_NEKTAR_TEST(SinCos_LinNS_3DHom1D)
    ADD_NEKTAR_TEST(TaylorVor_dt1)
    ADD_NEKTAR_TEST(Tet_Kovasnay_SubStep)
    ADD_NEKTAR_TEST(Tet_Kovasnay_HOBC)
    ADD_NEKTAR_TEST(Tet_Kovasnay_SVV_DGKer)
    ADD_NEKTAR_TEST(Tet_Kovasnay_PreconditionerBlock)
    ADD_NEKTAR_TEST(Tet_Kovasnay_PreconditionerLowEnergyBlock)
    ADD_NEKTAR_TEST(Tet_Kovasnay_GJP)
    ADD_NEKTAR_TEST(Tet_Kovasnay_GJP_VCSImplicit)
    ADD_NEKTAR_TEST(Tet_channel_m3)
    ADD_NEKTAR_TEST(Tet_channel_m3_ConOBC)
    ADD_NEKTAR_TEST(Tet_channel_m3_VCSWeakPress)
    ADD_NEKTAR_TEST(Tet_channel_m3_VCSWeakPress_ConOBC)
    ADD_NEKTAR_TEST(Tet_channel_m3_dealiasing)
    ADD_NEKTAR_TEST(Tet_channel_robin_m3)
Dave Moxey's avatar
Dave Moxey committed
    ADD_NEKTAR_TEST(Tet_channel_m4_per)
    ADD_NEKTAR_TEST(Tet_channel_varP)
    ADD_NEKTAR_TEST(Tet_prism_channel_rad LENGTHY)
    ADD_NEKTAR_TEST(Tet_equitri LENGTHY)
    ADD_NEKTAR_TEST(Prism_channel_m6 LENGTHY)
    ADD_NEKTAR_TEST(Prism_channel_m6_dealiasing LENGTHY)
    ADD_NEKTAR_TEST(Prism_channel_varP)
Hui Xu's avatar
Hui Xu committed
    ADD_NEKTAR_TEST(ChannelSpongeNSE)
    ADD_NEKTAR_TEST(ChannelSpongeLNSE)
    ADD_NEKTAR_TEST(ChanFlow_Standard_BodyForce)
    ADD_NEKTAR_TEST(Cyl_AdaptiveSFD)
Mike's avatar
Mike committed
    ADD_NEKTAR_TEST(Womersley_PipeFlow)
    ADD_NEKTAR_TEST(CylFlow_adaptiveP LENGTHY)
    ADD_NEKTAR_TEST(CylFlow_Mov_mapping)
    ADD_NEKTAR_TEST(PPF_R10000_ModifiedArnoldi_Shift)
Dave Moxey's avatar
Dave Moxey committed
    ADD_NEKTAR_TEST(PPF_R15000_ModifiedArnoldi_Shift)
    ADD_NEKTAR_TEST(ChanFlow_m8_Flowrate)
    ADD_NEKTAR_TEST(ChanFlow_3DH1D_FlowrateExplicit_MVM)
    ADD_NEKTAR_TEST(CylFlow2D_SPM)
    ADD_NEKTAR_TEST(CylFlow2DMov_SPM)
    ADD_NEKTAR_TEST(CylFlow3DH1D_SPM)
    ADD_NEKTAR_TEST(manufactured_3DH1D)
    ADD_NEKTAR_TEST(PlungingAirfoil_2D)
    ADD_NEKTAR_TEST(3DH1D_L2ErrorFilter)
    IF(NEKTAR_USE_SCOTCH)
        # This tests exhibits sensitivity to the choice of DirectStaticCond vs.
        # DirectMultiLevelStaticCond.
David Moxey's avatar
David Moxey committed
        ADD_NEKTAR_TEST(Pyr_channel_SVV)
    ENDIF()
    IF(NEKTAR_USE_ARPACK)
        ADD_NEKTAR_TEST(ChanStability_adj_Ar)
        ADD_NEKTAR_TEST(ThermStab_dir_Ar)
        ADD_NEKTAR_TEST(ThermStab_adj_Ar)
        ADD_NEKTAR_TEST(ChanStability_Coupled)
        ADD_NEKTAR_TEST(PPF_R10000_Arpack_LM)
        ADD_NEKTAR_TEST(PPF_R15000_Arpack_Shift)
        # ADD_NEKTAR_TEST(PPF_R15000_Arpack_NoImagShift)
        ADD_NEKTAR_TEST(PPF_R15000_Arpack_NoImagShift_LM)
    ENDIF(NEKTAR_USE_ARPACK)

    IF(NEKTAR_USE_FFTW)
        ADD_NEKTAR_TEST(ChanFlow_3DH1D_FFT)
        ADD_NEKTAR_TEST(ChanFlow_3DH1D_FFT_ConOBC)
        ADD_NEKTAR_TEST(ChanFlow_3DH2D_FFT)
        ADD_NEKTAR_TEST(CylFlow_MovBody)
        ADD_NEKTAR_TEST(KovaFlow_3DH1D_MVM_FFTW_Consistency)
Douglas Serson's avatar
Douglas Serson committed
        ADD_NEKTAR_TEST(KovaFlow_3DH1D_P5_6modes_FFTW_MixedDeal)
Douglas Serson's avatar
Douglas Serson committed
        ADD_NEKTAR_TEST(KovaFlow_3DH1D_P8_16modes_Mapping-explicit)
        ADD_NEKTAR_TEST(KovaFlow_3DH1D_P8_16modes_Mapping-implicit)
        ADD_NEKTAR_TEST(KovaFlow_3DH2D_xy_FFT)
        ADD_NEKTAR_TEST(KovaFlow_3DH2D_xz_FFT)
        ADD_NEKTAR_TEST(KovaFlow_3DH2D_xy_FFT_MovRefFrame)
Douglas Serson's avatar
Douglas Serson committed
        ADD_NEKTAR_TEST(KovaFlow_m8_short_HOBC_3D1H)
        ADD_NEKTAR_TEST(KovaFlow_3DH1D_adaptive_16modes_FFTW_Mapping LENGTHY)
Douglas Serson's avatar
Douglas Serson committed
        ADD_NEKTAR_TEST(Couette_3DH2D_FFT)
        ADD_NEKTAR_TEST(ChanFlow_3DH1D_Parallel_mode1)
        ADD_NEKTAR_TEST(ChanFlow_3DH1D_Parallel_mode2)
        ADD_NEKTAR_TEST(ChanFlow_m3_par)
        ADD_NEKTAR_TEST(FlapAirfoil_3DH1D_par LENGTHY)
        ADD_NEKTAR_TEST(PlungingAirfoil_3DH1D_parBCs LENGTHY)
        ADD_NEKTAR_TEST(ChanFlow_m8_BodyForce_par LENGTHY)
Jacques Xing's avatar
Jacques Xing committed
        ADD_NEKTAR_TEST(Cyl_AdaptiveSFD_par)
            ADD_NEKTAR_TEST(KovaFlow_expFromFile_par)
            ADD_NEKTAR_TEST(KovaFlow_varP_per_par)
            ADD_NEKTAR_TEST(Hex_channel_varP_par)

        ADD_NEKTAR_TEST(Hex_channel_m3_par LENGTHY)
        ADD_NEKTAR_TEST(Pyr_channel_m6_par LENGTHY)
Ed Laughtom's avatar
Ed Laughtom committed
        ADD_NEKTAR_TEST(Hex_channel_m3_srhs_par LENGTHY)
            ADD_NEKTAR_TEST(Tet_channel_m4_per_xxt_ml_par)
        ADD_NEKTAR_TEST(Tet_channel_m8_par)
        ADD_NEKTAR_TEST(Tet_channel_m8_iter_ml_par LENGTHY)
        ADD_NEKTAR_TEST(bfs_tg_par LENGTHY)
Dave Moxey's avatar
Dave Moxey committed
        ADD_NEKTAR_TEST(ChanFlow_m8_Flowrate_par)
        ADD_NEKTAR_TEST(ChanFlow_3DH1D_Flowrate_MVM)
        ADD_NEKTAR_TEST(ChanFlow_3DH1D_Flowrate_MVM_hybrid)
Dave Moxey's avatar
Dave Moxey committed
        ADD_NEKTAR_TEST(Hex_channel_m3_Flowrate)
        ADD_NEKTAR_TEST(ChanFlow_3DH1D_FlowrateExplicit_MVM_par)
        ADD_NEKTAR_TEST(ChanFlow_3DH1D_FlowrateExplicit_MVM_par_hybrid)
        ADD_NEKTAR_TEST(PointsTracking2D)
        ADD_NEKTAR_TEST(PointsTracking3D)
        ADD_NEKTAR_TEST(PointsTracking3DH1D)
            ADD_NEKTAR_TEST(Tet_channel_m8_petsc_sc_par LENGTHY)
        ENDIF(NEKTAR_USE_PETSC)
        IF(NEKTAR_USE_HDF5)
            ADD_NEKTAR_TEST(Tet_channel_m4_per_hdf5)
Dave Moxey's avatar
Dave Moxey committed
            ADD_NEKTAR_TEST(KovaFlow_3DH1D_P5_20modes_MVM_hdf5)
David Moxey's avatar
David Moxey committed
            ADD_NEKTAR_TEST(CylFlow2D_FieldConvertFilter_Hdf5)
            ADD_NEKTAR_TEST(CylFlow2D_CheckpointFilter_Hdf5)
            ADD_NEKTAR_TEST(Tet_hdf5_multilevel_partition)
                ADD_NEKTAR_TEST(ChannelFlow3D)
        ENDIF(NEKTAR_USE_HDF5)
    ENDIF(NEKTAR_USE_MPI)
ENDIF(NEKTAR_SOLVER_INCNAVIERSTOKES)