Skip to content

Commit 9cc0901

Browse files
committed
beef up CAMP and KLU handling for CMake
1 parent ca11984 commit 9cc0901

File tree

1 file changed

+127
-19
lines changed

1 file changed

+127
-19
lines changed

CMakeLists.txt

Lines changed: 127 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,41 +35,86 @@ set(PyPartMC_sources
3535
)
3636
add_prefix(src/ PyPartMC_sources)
3737

38-
set(camp_sources
39-
util.F90 constants.F90 mpi.F90
38+
set(camp_SOURCES
39+
Jacobian.c
40+
aero_phase_data.F90
41+
aero_phase_solver.c
42+
aero_rep_data.F90
43+
aero_rep_solver.c
44+
aero_rep_factory.F90
45+
camp_core.F90
46+
camp_solver_data.F90
47+
camp_solver.c
48+
camp_state.F90
49+
chem_spec_data.F90
50+
constants.F90
51+
debug_diff_check.F90
4052
env_state.F90
53+
mechanism_data.F90
54+
mpi.F90
55+
property.F90
4156
rand.F90
42-
property.F90 chem_spec_data.F90
43-
rxn_data.F90 camp_state.F90 mechanism_data.F90
44-
camp_core.F90 camp_solver_data.F90 aero_rep_data.F90
45-
aero_phase_data.F90 aero_rep_factory.F90
46-
rxn_factory.F90 sub_model_data.F90 sub_model_factory.F90
57+
rxn_data.F90
58+
rxn_factory.F90
59+
rxn_solver.c
4760
solver_stats.F90
48-
debug_diff_check.F90
61+
sub_model_data.F90
62+
sub_model_solver.c
63+
sub_model_factory.F90
64+
time_derivative.c
65+
util.F90
4966
aero_reps/aero_rep_modal_binned_mass.F90
5067
aero_reps/aero_rep_single_particle.F90
5168
aero_reps/aero_rep_modal_binned_mass.c
5269
aero_reps/aero_rep_single_particle.c
70+
rxns/rxn_aqueous_equilibrium.c
5371
rxns/rxn_aqueous_equilibrium.F90
72+
rxns/rxn_ternary_chemical_activation.c
73+
rxns/rxn_ternary_chemical_activation.F90
74+
rxns/rxn_arrhenius.c
5475
rxns/rxn_arrhenius.F90
76+
rxns/rxn_CMAQ_H2O2.c
5577
rxns/rxn_CMAQ_H2O2.F90
78+
rxns/rxn_CMAQ_OH_HNO3.c
5679
rxns/rxn_CMAQ_OH_HNO3.F90
80+
rxns/rxn_condensed_phase_arrhenius.c
5781
rxns/rxn_condensed_phase_arrhenius.F90
82+
rxns/rxn_emission.c
5883
rxns/rxn_emission.F90
84+
rxns/rxn_first_order_loss.c
5985
rxns/rxn_first_order_loss.F90
86+
rxns/rxn_HL_phase_transfer.c
6087
rxns/rxn_HL_phase_transfer.F90
88+
rxns/rxn_photolysis.c
6189
rxns/rxn_photolysis.F90
90+
rxns/rxn_SIMPOL_phase_transfer.c
6291
rxns/rxn_SIMPOL_phase_transfer.F90
63-
rxns/rxn_ternary_chemical_activation.F90
92+
rxns/rxn_troe.c
6493
rxns/rxn_troe.F90
94+
rxns/rxn_wennberg_no_ro2.c
6595
rxns/rxn_wennberg_no_ro2.F90
96+
rxns/rxn_wennberg_tunneling.c
6697
rxns/rxn_wennberg_tunneling.F90
98+
rxns/rxn_wet_deposition.c
6799
rxns/rxn_wet_deposition.F90
100+
sub_models/sub_model_PDFiTE.c
68101
sub_models/sub_model_PDFiTE.F90
102+
sub_models/sub_model_UNIFAC.c
69103
sub_models/sub_model_UNIFAC.F90
70104
sub_models/sub_model_ZSR_aerosol_water.F90
105+
sub_models/sub_model_ZSR_aerosol_water.c
71106
)
72-
add_prefix(gitmodules/camp/src/ camp_sources)
107+
add_prefix(gitmodules/camp/src/ camp_SOURCES)
108+
109+
set(json_fortran_SOURCES
110+
json_kinds.F90
111+
json_parameters.F90
112+
json_string_utilities.F90
113+
json_value_module.F90
114+
json_file_module.F90
115+
json_module.F90
116+
)
117+
add_prefix(gitmodules/json-fortran/src/ json_fortran_SOURCES)
73118

74119
set(partmclib_SOURCES condense_solver.c aero_state.F90 integer_varray.F90 integer_rmap.F90
75120
integer_rmap2.F90 aero_sorted.F90 aero_binned.F90 bin_grid.F90 constants.F90 scenario.F90
@@ -84,7 +129,47 @@ set(partmclib_SOURCES condense_solver.c aero_state.F90 integer_varray.F90 intege
84129
)
85130
add_prefix(gitmodules/partmc/src/ partmclib_SOURCES)
86131
list(APPEND partmclib_SOURCES src/fake_mpi.F90 src/fake_netcdf.F90 src/fake_spec_file.F90)
87-
list(APPEND partmclib_SOURCES ${camp_sources})
132+
133+
set(klu_SOURCES
134+
KLU/Source/klu_analyze.c
135+
KLU/Source/klu_memory.c
136+
KLU/Source/klu_tsolve.c
137+
KLU/Source/klu_solve.c
138+
KLU/Source/klu.c
139+
KLU/Source/klu_kernel.c
140+
KLU/Source/klu_dump.c
141+
KLU/Source/klu_factor.c
142+
KLU/Source/klu_free_numeric.c
143+
KLU/Source/klu_scale.c
144+
KLU/Source/klu_refactor.c
145+
KLU/Source/klu_diagnostics.c
146+
KLU/Source/klu_sort.c
147+
KLU/Source/klu_extract.c
148+
KLU/Source/klu_analyze_given.c
149+
COLAMD/Source/colamd.c
150+
SuiteSparse_config/SuiteSparse_config.c
151+
AMD/Source/amd_order.c
152+
BTF/Source/btf_order.c
153+
BTF/Source/btf_maxtrans.c
154+
BTF/Source/btf_strongcomp.c
155+
)
156+
add_prefix(gitmodules/SuiteSparse/ klu_SOURCES)
157+
158+
set(KLU_INCLUDE_DIRS
159+
${CMAKE_SOURCE_DIR}/gitmodules/SuiteSparse/KLU/Include
160+
${CMAKE_SOURCE_DIR}/gitmodules/SuiteSparse/AMD/Include
161+
${CMAKE_SOURCE_DIR}/gitmodules/SuiteSparse/SuiteSparse_config
162+
${CMAKE_SOURCE_DIR}/gitmodules/SuiteSparse/COLAMD/Include
163+
${CMAKE_SOURCE_DIR}/gitmodules/SuiteSparse/BTF/Include
164+
)
165+
166+
### KLU ############################################################################################
167+
168+
add_library(klulib STATIC
169+
${klu_SOURCES}
170+
)
171+
target_compile_definitions(klulib PRIVATE DLONG="1")
172+
target_include_directories(klulib PRIVATE ${KLU_INCLUDE_DIRS})
88173

89174
### SUNDIALS #######################################################################################
90175

@@ -105,9 +190,13 @@ macro(sundials_add_library target)
105190
)
106191
add_library(${target} STATIC ${sundials_add_library_SOURCES})
107192
target_compile_definitions(${target} PRIVATE SUNDIALS_STATIC_DEFINE)
108-
target_include_directories(${target} PRIVATE ${SUNDIALS_SOURCE_DIR}/src/sundials)
109-
target_include_directories(${target} PRIVATE ${SUNDIALS_SOURCE_DIR}/include)
110-
target_include_directories(${target} PRIVATE ${CMAKE_BINARY_DIR}/include)
193+
target_compile_definitions(${target} PRIVATE SUNDIALS_INT64_T="1")
194+
target_include_directories(${target} PRIVATE
195+
${SUNDIALS_SOURCE_DIR}/src/sundials
196+
${SUNDIALS_SOURCE_DIR}/include
197+
${KLU_INCLUDE_DIRS}
198+
${CMAKE_BINARY_DIR}/include
199+
)
111200
endmacro()
112201

113202
function(print_error)
@@ -129,31 +218,50 @@ scoped_sundials_setup_config()
129218
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${SUNDIALS_SOURCE_DIR}/cmake)
130219
include(${SUNDIALS_SOURCE_DIR}/cmake/SundialsSetupCompilers.cmake)
131220

132-
foreach(item cvode;sunmatrix;sunlinsol;sunnonlinsol;nvector;sundials)
133-
add_subdirectory(${SUNDIALS_SOURCE_DIR}/src/${item})
221+
foreach(item cvode;sunmatrix;sunlinsol;sunnonlinsol;nvector;sundials;sunlinsol/klu)
222+
add_subdirectory(${SUNDIALS_SOURCE_DIR}/src/${item})
134223
endforeach()
135224

136225
set(SUNDIALS_items
137-
cvode nvecserial
226+
cvode
227+
nvecserial
138228
sunmatrixband
139229
sunmatrixdense
230+
sunmatrixsparse
140231
sunlinsolband
232+
sunlinsolklu
141233
sunnonlinsolnewton
142234
sunlinsolspgmr
143235
generic
144236
)
145237
add_prefix(sundials_ SUNDIALS_items)
146238

239+
### CAMP ###########################################################################################
240+
241+
add_library(camplib STATIC ${camp_SOURCES} ${json_fortran_SOURCES})
242+
target_compile_definitions(camplib PRIVATE CAMP_USE_JSON="1")
243+
target_compile_definitions(camplib PRIVATE CAMP_USE_SUNDIALS="1")
244+
target_compile_definitions(camplib PRIVATE SUNDIALS_INT64_T="1")
245+
target_include_directories(camplib PRIVATE
246+
${KLU_INCLUDE_DIRS}
247+
${SUNDIALS_SOURCE_DIR}/include
248+
${CMAKE_BINARY_DIR}/include
249+
)
250+
147251
### partmclib ######################################################################################
148252

149253
add_library(partmclib STATIC ${partmclib_SOURCES})
150254
target_compile_definitions(partmclib PRIVATE PMC_USE_SUNDIALS="1")
151255
target_compile_definitions(partmclib PRIVATE PMC_USE_MPI="1")
152256
target_compile_definitions(partmclib PRIVATE PMC_USE_CAMP="1")
153257
add_dependencies(partmclib ${SUNDIALS_items})
154-
target_include_directories(partmclib PRIVATE ${SUNDIALS_SOURCE_DIR}/include)
155-
target_include_directories(partmclib PRIVATE ${CMAKE_BINARY_DIR}/include)
258+
target_include_directories(partmclib PRIVATE
259+
${SUNDIALS_SOURCE_DIR}/include
260+
${CMAKE_BINARY_DIR}/include
261+
)
156262
target_link_libraries(partmclib PRIVATE ${SUNDIALS_items})
263+
target_link_libraries(partmclib PRIVATE klulib)
264+
target_link_libraries(partmclib PRIVATE camplib)
157265

158266
### PYBIND11 & PyPartMC ############################################################################
159267

0 commit comments

Comments
 (0)