Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/elmerice/Solvers/CMakeLists.txt
5311 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
# XIOS depends on NetCDF and (optionally) HDF5 and has to be added first
140
IF(HAVE_XIOS)
141
INCLUDE_DIRECTORIES(${XIOS_INCLUDE_DIR})
142
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${XIOS_LIBRARIES})
143
ENDIF()
144
145
# NetCDF depends on HDF5 and has to be added before HDF5
146
IF(HAVE_NETCDF)
147
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${NETCDF_LIBRARIES})
148
ENDIF()
149
150
IF(HAVE_HDF5)
151
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${PHDF5_LIBRARIES})
152
ENDIF()
153
154
# IF(HAVE_MMG)
155
# TARGET_LINK_LIBRARIES(ElmerIceSolvers ${MMG_LIBRARY})
156
# TARGET_LINK_LIBRARIES(ElmerIceSolvers ElmerIce_MeshAdapt3D)
157
# ENDIF()
158
159
IF(HAVE_PROJ)
160
INCLUDE_DIRECTORIES(${PROJ_INCLUDE_DIR})
161
INCLUDE_DIRECTORIES(${FORTRANGIS_INCLUDE_DIR})
162
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${PROJ_LIBRARY})
163
TARGET_LINK_LIBRARIES(ElmerIceSolvers ${FORTRANGIS_LIBRARY})
164
ENDIF()
165
166
INSTALL(TARGETS ElmerIceSolvers LIBRARY DESTINATION "share/elmersolver/lib"
167
RUNTIME DESTINATION "share/elmersolver/lib")
168
169
IF(HAVE_NETCDF)
170
ADD_SUBDIRECTORY(GridDataReader)
171
ENDIF()
172
IF(WITH_ScatteredDataInterpolator)
173
ADD_SUBDIRECTORY(ScatteredDataInterpolator)
174
ENDIF()
175
176