Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/elmerice/Solvers/CMakeLists.txt
3204 views
1
#SET(WITH_GridDataReader FALSE CACHE BOOL "Include ElmerIce GridDataReader")
2
SET(WITH_ScatteredDataInterpolator FALSE CACHE BOOL "Include ElmerIce ScatteredDataInterpolator")
3
#MARK_AS_ADVANCED(WITH_GridDataReader)
4
MARK_AS_ADVANCED(WITH_ScatteredDataInterpolator)
5
6
# ---------------------- #
7
# -- netCDF libraries -- #
8
#----------------------- #
9
MESSAGE(STATUS "------------------------------------------------")
10
MESSAGE(STATUS "Elmer/Ice package: Looking for [netCDF] & [netCDF Fortran] libraries")
11
12
FIND_PACKAGE(NETCDF MODULE)
13
14
IF(NETCDF_FOUND)
15
16
SET(HAVE_NETCDF TRUE)
17
MARK_AS_ADVANCED(HAVE_NETCDF)
18
INCLUDE_DIRECTORIES(${NETCDF_INCLUDE_DIR})
19
ADD_DEFINITIONS(-DHAVE_NETCDF)
20
21
MESSAGE(STATUS " netCDF: " "${NETCDF_FOUND}")
22
MESSAGE(STATUS " netCDF_INC: " "${NETCDF_INCLUDE_DIR}")
23
MESSAGE(STATUS " netCDF_LIBS: " "${NETCDF_LIBRARIES}")
24
ELSE()
25
MESSAGE(STATUS "Library not found: netCDF ")
26
MESSAGE(WARNING " \n Missing: <NETCDF_INCLUDE_DIR> , <NETCDF_LIBRARY>, <NETCDFF_LIBRARY> \n some functionalities will be disabled")
27
ENDIF()
28
29
# ---------------------- #
30
# -- HDF5 libraries -- #
31
#----------------------- #
32
MESSAGE(STATUS "------------------------------------------------")
33
MESSAGE(STATUS "Elmer/Ice package: Looking for [HDF5] & [HDF5 Fortran] libraries")
34
35
FIND_PACKAGE(PHDF5)
36
37
IF(PHDF5_FOUND)
38
39
SET(HAVE_HDF5 TRUE)
40
MARK_AS_ADVANCED(HAVE_HDF5)
41
INCLUDE_DIRECTORIES(${PHDF5_INCLUDE_DIR})
42
ADD_DEFINITIONS(-DHAVE_HDF5)
43
44
MESSAGE(STATUS " HDF5: " "${PHDF5_FOUND}")
45
MESSAGE(STATUS " HDF5_INC: " "${PHDF5_INCLUDE_DIR}")
46
MESSAGE(STATUS " HDF5_LIBS: " "${PHDF5_LIBRARIES}")
47
ELSE()
48
MESSAGE(STATUS "Library not found: >HDF5_FOUND< ")
49
MESSAGE(WARNING " \n Missing: >HDF5_INCLUDE_DIR< , >HDF5_LIBRARY<, >HDF5F_LIBRARY< \n some functionalities will be disabled")
50
ENDIF(PHDF5_FOUND)
51
52
53
# ---------------------- #
54
# -- LOOK FOR MMG -- #
55
#----------------------- #
56
IF(HAVE_MMG)
57
ADD_SUBDIRECTORY(MeshAdaptation_2D)
58
ENDIF()
59
60
SET(CMAKE_Fortran_MODULE_DIRECTORY
61
${PROJECT_BINARY_DIR}/fmodules CACHE PATH "Directory for Fortran modules")
62
63
SET(ElmerIce_SRC ElmerIceUtils.F90 AIFlowSolve_nlD2.F90 AIFlowSolve_nlS2.F90
64
CaffeSolver.F90 ComputeDevStress.F90 ComputeEigenValues.F90
65
ComputeNormal.F90 ComputeStrainRate.F90 DeformationalHeat.F90
66
EPLSolver.F90 FabricSolve.F90 Flowdepth.F90
67
ForceToStress.F90 GetHydrostaticLoads.F90 GolfLaw.F90
68
GroundedSolver.F90 IntegratedVelocity.F90 IDSSolver.F90
69
PorousSolve.F90 pointwise.F90 SIASolver.F90 SSASolver.F90
70
ThicknessSolver.F90 TemperateIce.F90 ExportVertically.F90
71
AdjointSolver.F90 DJDBeta_Adjoint.F90 DJDmu_Adjoint.F90
72
CostSolver_Adjoint.F90 DJDBeta_Robin.F90 DJDmu_Robin.F90
73
CostSolver_Robin.F90 m1qn3.F Grid2DInterpolator.F90
74
Optimize_m1qn3Parallel.F90 OutputStrainHeating.F90 UpdateExport.F90
75
IntegrateVertically.F90 EnthalpySolver.F90 SubShelfMelt.F90
76
./Adjoint/Adjoint_LinearSolver.F90 ./Adjoint/Adjoint_CostDiscSolver.F90
77
./Adjoint/Adjoint_CostContSolver.F90 ./Adjoint/Adjoint_CostRegSolver.F90
78
./Adjoint/Adjoint_GradientValidation.F90
79
./AdjointStokes/AdjointStokes_GradientMu.F90
80
./AdjointStokes/AdjointStokes_GradientBetaSolver.F90
81
./AdjointSSA/AdjointSSA_AdjointSolver.F90 ./AdjointSSA/AdjointSSA_CostDiscSolver.F90
82
./AdjointSSA/AdjointSSA_CostRegSolver.F90 ./AdjointSSA/AdjointSSA_SSASolver.F90
83
./AdjointSSA/AdjointSSA_CostContSolver.F90 ./AdjointSSA/AdjointSSA_CostFluxDivSolver.F90
84
./AdjointSSA/AdjointSSA_CostTaubSolver.F90
85
./AdjointSSA/AdjointSSA_GradientSolver.F90
86
./AdjointThickness/AdjointThickness_GradientSolver.F90 ./AdjointThickness/AdjointThickness_ThicknessSolver.F90
87
./Permafrost/PermafrostMaterials.F90 ./Permafrost/Permafrost_Utils.F90 ./Permafrost/Permafrost_HTEQ.F90
88
./Permafrost/Permafrost_Darcy.F90 ./Permafrost/Permafrost_solute.F90 ./Permafrost/Permafrost_solid.F90
89
SurfaceBoundaryEnthalpy.F90
90
Calving.F90 FrontDisplacement.F90
91
TwoMeshes.F90 ProjectCalving.F90 ComputeCalvingNormal.F90
92
CalvingGeometry.F90 Calving3D.F90 Calving3D_lset.F90 CalvingGlacierAdvance3D.F90 CalvingRemesh.F90
93
CalvingFrontAdvance3D.F90 Emergence.F90 SSAmask.F90
94
GlaDSCoupledSolver.F90 GlaDSchannelSolver.F90 Flotation.F90
95
BasalMelt3D.F90 CalvingHydroInterp.F90 HydroRestart.F90
96
GMValid.F90 Scalar_OUTPUT_Glacier.F90 IcyMaskSolver.F90
97
Weertman2Coulomb.F90)
98
99
SET(ElmerIce_SRC ${ElmerIce_SRC} ./Covarianceutils/CovarianceUtils.F90 ./Covarianceutils/BackgroundErrorCostSolver.F90 ./Covarianceutils/CovarianceVectorMultiplySolver.F90 ./Covarianceutils/GaussianSimulationSolver.F90)
100
101
IF(HAVE_ODEPack)
102
SET(ElmerIce_SRC ${ElmerIce_SRC} PlumeSolver.F90 )
103
ENDIF()
104
105
IF(HAVE_MMG)
106
SET(ElmerIce_SRC ${ElmerIce_SRC} CalvingRemeshMMG.F90 ) #MMG3DSolver.F90 <- defunct?
107
ENDIF()
108
109
### add ParMMG??
110
111
IF(HAVE_PARMMG)
112
SET(ElmerIce_SRC ${ElmerIce_SRC} CalvingRemeshparMMG.F90 )
113
ENDIF()
114
115
IF(HAVE_XIOS)
116
SET(ElmerIce_SRC ${ElmerIce_SRC} OutPutSolvers/XIOSOutputSolver.F90)
117
ENDIF()
118
119
IF(HAVE_NETCDF)
120
SET(ElmerIce_SRC ${ElmerIce_SRC} UGridDataReader.F90)
121
ENDIF()
122
123
ADD_LIBRARY(ElmerIceSolvers SHARED ${ElmerIce_SRC})
124
125
# Library object
126
SET_TARGET_PROPERTIES(ElmerIceSolvers PROPERTIES PREFIX "")
127
SET_TARGET_PROPERTIES(ElmerIceSolvers PROPERTIES
128
LINKER_LANGUAGE Fortran
129
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/fem/src/modules
130
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/fem/src/modules)
131
IF(NOT(WIN32))
132
SET_TARGET_PROPERTIES(ElmerIceSolvers PROPERTIES
133
INSTALL_RPATH "${ELMERSOLVER_RPATH_STRING};${ELMER_SOLVER_HOME}/lib/")
134
SET_TARGET_PROPERTIES(ElmerIceSolvers PROPERTIES
135
INSTALL_RPATH_USE_LINK_PATH TRUE)
136
ENDIF()
137
TARGET_LINK_LIBRARIES(ElmerIceSolvers Elmer::MPI_Fortran elmersolver ElmerIceUtils)
138
139
IF(HAVE_NETCDF)
140
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${NETCDF_LIBRARIES})
141
ENDIF()
142
IF(HAVE_HDF5)
143
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${PHDF5_LIBRARIES})
144
ENDIF()
145
IF(HAVE_XIOS)
146
INCLUDE_DIRECTORIES(${XIOS_INCLUDE_DIR})
147
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${XIOS_LIBRARIES})
148
ENDIF()
149
# IF(HAVE_MMG)
150
# TARGET_LINK_LIBRARIES(ElmerIceSolvers ${MMG_LIBRARY})
151
# TARGET_LINK_LIBRARIES(ElmerIceSolvers ElmerIce_MeshAdapt3D)
152
# ENDIF()
153
154
IF(HAVE_PROJ)
155
INCLUDE_DIRECTORIES(${PROJ_INCLUDE_DIR})
156
INCLUDE_DIRECTORIES(${FORTRANGIS_INCLUDE_DIR})
157
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${PROJ_LIBRARY})
158
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${FORTRANGIS_LIBRARY})
159
ENDIF()
160
161
INSTALL(TARGETS ElmerIceSolvers LIBRARY DESTINATION "share/elmersolver/lib"
162
RUNTIME DESTINATION "share/elmersolver/lib")
163
164
IF(HAVE_NETCDF)
165
ADD_SUBDIRECTORY(GridDataReader)
166
ENDIF()
167
IF(WITH_ScatteredDataInterpolator)
168
ADD_SUBDIRECTORY(ScatteredDataInterpolator)
169
ENDIF()
170
171