@@ -34,9 +34,9 @@ message("=================================================================")
3434#
3535# Optionally, super project can define and configure this target.
3636#-----------------------------------------------------------------------------
37- if (NOT TARGET GEOSChemBuildProperties)
37+ # if(NOT TARGET GEOSChemBuildProperties)
3838 add_library (GEOSChemBuildProperties INTERFACE )
39- endif ()
39+ # endif()
4040
4141#-----------------------------------------------------------------------------
4242# Add all the subdirectories.
@@ -54,15 +54,193 @@ add_subdirectory(GTMM)
5454add_subdirectory (GeosCore )
5555
5656#-----------------------------------------------------------------------------
57- # Build GEOS-Chem Classic driver program ( if MODEL_CLASSIC=T)
57+ # Build GEOS-Chem Classic driver program if using GC-Classic
5858#-----------------------------------------------------------------------------
5959if (MODEL_CLASSIC)
6060 add_subdirectory (Interfaces/GCClassic )
6161endif ()
6262
6363#-----------------------------------------------------------------------------
64- # Build GCHPctm driver program ( if MODEL_GCHPCTM=T)
64+ # Build GCHP driver program if using GCHP
6565#-----------------------------------------------------------------------------
66- if (MODEL_GCHPCTM )
66+ if (MODEL_GCHP )
6767 add_subdirectory (Interfaces/GCHP )
6868endif ()
69+
70+ #-----------------------------------------------------------------------------
71+ # Additional GEOS-Chem settings if using GCHP (all necessary?)
72+ #-----------------------------------------------------------------------------
73+ if (MODEL_GCHP)
74+
75+ set (RRTMG OFF CACHE BOOL
76+ "Switch to build RRTMG as a component of GEOS-Chem"
77+ )
78+ set (TOMAS OFF CACHE BOOL
79+ "Switch to build TOMAS as a component of GEOS-Chem"
80+ )
81+ set (LUO_WETDEP OFF CACHE BOOL
82+ "Switch to build the Luo et al (2020) wetdep scheme into GEOS-Chem"
83+ )
84+ set (FASTJX OFF CACHE BOOL
85+ "Switch to use legacy FAST-JX photolysis in GEOS-Chem"
86+ )
87+ set (KPPSA OFF CACHE BOOL
88+ "Switch to build the KPP-Standalone Box Model"
89+ )
90+
91+ # Local variables
92+ set (GTMM FALSE )
93+ set (MECH "fullchem" CACHE STRING "Name of the chemistry mechanism to use" )
94+
95+ # Configure build properties for GEOS-Chem
96+ target_compile_definitions (GEOSChemBuildProperties INTERFACE
97+ MODEL_GCHPCTM
98+ MODEL_GCHP
99+ USE_ESMF
100+ MAPL_ESMF
101+ MAPL3
102+ EXTERNAL_GRID
103+ NC_HAS_COMPRESSION
104+ $<$<BOOL :${USE_REAL8} >:USE_REAL8 > $<$<BOOL :${RRTMG} >:RRTMG >
105+ $<$<BOOL :${ADJOINT} >:ADJOINT >
106+ $<$<BOOL :${REVERSE_OPERATORS} >:REVERSE_OPERATORS >
107+ $<$<BOOL :${TOMAS} >:TOMAS >
108+ $<$<STREQUAL :${TOMAS_BINS} ,15>:TOMAS15 >
109+ $<$<STREQUAL :${TOMAS_BINS} ,40>:TOMAS40 >
110+ $<$<BOOL :${LUO_WETDEP} >:LUO_WETDEP >
111+ $<$<BOOL :${FASTJX} >:FASTJX >
112+ )
113+
114+ if (NOT MAPL3)
115+ target_link_libraries (GEOSChemBuildProperties INTERFACE
116+ $<LINK_ONLY :MAPL .base >
117+ $<LINK_ONLY :FVdycoreCubed_GridComp >
118+ $<LINK_ONLY :HCOI_MAPL_ESMF >
119+ $<$<BOOL :${OMP} >:OpenMP ::OpenMP_Fortran >
120+ MPI::MPI_C MPI::MPI_Fortran
121+ )
122+ target_include_directories (GEOSChemBuildProperties INTERFACE
123+ $<TARGET_PROPERTY :MAPL .base ,INTERFACE_INCLUDE_DIRECTORIES >
124+ $<TARGET_PROPERTY :FVdycoreCubed_GridComp ,INTERFACE_INCLUDE_DIRECTORIES >
125+ $<TARGET_PROPERTY :HCOI_MAPL_ESMF ,INTERFACE_INCLUDE_DIRECTORIES >
126+ ${CMAKE_Fortran_MODULE_DIRECTORY }
127+ )
128+ # GeosCore
129+ endif ()
130+ if (MAPL3)
131+ target_link_libraries (GEOSChemBuildProperties INTERFACE
132+ $<LINK_ONLY :MAPL .base >
133+ $<LINK_ONLY :FVdycoreCubed_GridComp >
134+ $<LINK_ONLY :HCOI_MAPL_ESMF >
135+ $<$<BOOL :${OMP} >:OpenMP ::OpenMP_Fortran >
136+ MPI::MPI_C MPI::MPI_Fortran
137+ $<LINK_ONLY :mapl3g >
138+ $<LINK_ONLY :MAPL .generic3g >
139+ $<LINK_ONLY :MAPL .state >
140+ )
141+ target_include_directories (GEOSChemBuildProperties INTERFACE
142+ $<TARGET_PROPERTY :mapl3g ,INTERFACE_INCLUDE_DIRECTORIES >
143+ $<TARGET_PROPERTY :MAPL .generic3g ,INTERFACE_INCLUDE_DIRECTORIES >
144+ $<TARGET_PROPERTY :MAPL .state ,INTERFACE_INCLUDE_DIRECTORIES >
145+ $<TARGET_PROPERTY :MAPL .base ,INTERFACE_INCLUDE_DIRECTORIES >
146+ $<TARGET_PROPERTY :FVdycoreCubed_GridComp ,INTERFACE_INCLUDE_DIRECTORIES >
147+ $<TARGET_PROPERTY :HCOI_MAPL_ESMF ,INTERFACE_INCLUDE_DIRECTORIES >
148+ ${CMAKE_Fortran_MODULE_DIRECTORY }
149+ )
150+ # Turn off acg for now
151+ #mapl_acg(GEOSchem_GridComp GEOSchem_StateSpecs.rc
152+ # IMPORT_SPECS EXPORT_SPECS INTERNAL_SPECS
153+ # GET_POINTERS DECLARE_POINTERS
154+ # 3g
155+ #)
156+ endif ()
157+
158+ set (GEOSChem_Fortran_FLAGS_Intel
159+ -cpp -w -auto -noalign "SHELL:-convert big_endian" "SHELL:-fp-model source"
160+ -mcmodel=medium -shared-intel -traceback -DLINUX_IFORT
161+ CACHE STRING "GEOSChem compiler flags for all build types with Intel compilers"
162+ )
163+ set (GEOSChem_Fortran_FLAGS_RELEASE_Intel
164+ -O2
165+ CACHE STRING "GEOSChem compiler flags for build type release with Intel compilers"
166+ )
167+ set (GEOSChem_Fortran_FLAGS_RELWITHDEBINFO_Intel
168+ -O2
169+ CACHE STRING "GEOSChem compiler flags for build type relwithdebinfo with Intel compilers"
170+ )
171+ set (GEOSChem_Fortran_FLAGS_DEBUG_Intel
172+ -g -O0 "SHELL:-check arg_temp_created" "SHELL:-debug all" -fpe0 -ftrapuv -check,bounds
173+ CACHE STRING "GEOSChem compiler flags for build type debug with Intel compilers"
174+ )
175+
176+ set (GEOSChem_Fortran_FLAGS_GNU
177+ -cpp -w -std=legacy -fautomatic -fno-align-commons
178+ -fconvert=big-endian -fno-range-check -mcmodel=medium
179+ -fbacktrace -g -DLINUX_GFORTRAN -ffree-line-length-none
180+ CACHE STRING "GEOSChem compiler flags for all build types with GNU compilers"
181+ )
182+ set (GEOSChem_Fortran_FLAGS_RELEASE_GNU
183+ -O3 -funroll-loops
184+ CACHE STRING "GEOSChem compiler flags for build type release with GNU compilers"
185+ )
186+ set (GEOSChem_Fortran_FLAGS_RELWITHDEBINFO_GNU
187+ -O3 -funroll-loops
188+ CACHE STRING "GEOSChem compiler flags for build type relwithdebinfo with GNU compilers"
189+ )
190+ set (GEOSChem_Fortran_FLAGS_DEBUG_GNU
191+ -g -gdwarf-2 -gstrict-dwarf -O0 -Wall -Wextra -Wconversion -Warray-temporaries
192+ -fcheck=array-temps -ffpe-trap=invalid,zero,overflow -finit-real=snan
193+ -fcheck=bounds -fcheck=pointer
194+ CACHE STRING "GEOSChem compiler flags for build type debug with GNU compilers"
195+ )
196+ set (CMAKE_Fortran_FLAGS "" )
197+ set (CMAKE_Fortran_FLAGS_RELEASE "" )
198+ set (CMAKE_Fortran_FLAGS_Debug "" )
199+ set (CMAKE_Fortran_FLAGS_RelWithDebInfo "" )
200+
201+ set (GEOSChem_SUPPORTED_COMPILER_IDS "Intel" "GNU" )
202+ if (NOT CMAKE_Fortran_COMPILER_ID IN_LIST GEOSChem_SUPPORTED_COMPILER_IDS)
203+ message (FATAL_ERROR "GEOSChem does not support ${CMAKE_Fortran_COMPILER_ID} compilers" )
204+ endif ()
205+
206+ #---------------------------------------------------------------------
207+ # Assign comiler options to build properties
208+ #---------------------------------------------------------------------
209+ target_compile_options (GEOSChemBuildProperties
210+ INTERFACE
211+ $<$<STREQUAL :${CMAKE_Fortran_COMPILER_ID} ,Intel >:
212+ ${GEOSChem_Fortran_FLAGS_Intel}
213+ $<$<CONFIG :Debug >:${GEOSChem_Fortran_FLAGS_DEBUG_Intel} >
214+ $<$<CONFIG :RelWithDebInfo >:${GEOSChem_Fortran_FLAGS_RELWITHDEBINFO_Intel} >
215+ $<$<CONFIG :Release >:${GEOSChem_Fortran_FLAGS_RELEASE_Intel} >
216+ >
217+ $<$<STREQUAL :${CMAKE_Fortran_COMPILER_ID} ,GNU >:
218+ ${GEOSChem_Fortran_FLAGS_GNU}
219+ $<$<CONFIG :Debug >:${GEOSChem_Fortran_FLAGS_DEBUG_GNU} >
220+ $<$<CONFIG :RelWithDebInfo >:${GEOSChem_Fortran_FLAGS_RELWITHDEBINFO_GNU} >
221+ $<$<CONFIG :Release >:${GEOSChem_Fortran_FLAGS_RELEASE_GNU} >
222+ >
223+ )
224+
225+ target_compile_definitions (GEOSChemBuildProperties
226+ INTERFACE
227+ $<$<STREQUAL :${CMAKE_Fortran_COMPILER_ID} ,Intel >:LINUX_IFORT >
228+ $<$<STREQUAL :${CMAKE_Fortran_COMPILER_ID} ,GNU >:LINUX_GFORTRAN >
229+ )
230+
231+ # Print the options that are turned on in GEOS-Chem
232+ list (INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR } /CMakeScripts)
233+ include (GC-Helpers )
234+ gc_pretty_print (SECTION "Settings" )
235+ gc_pretty_print (VARIABLE MECH OPTIONS "fullchem" "carbon" "custom" )
236+ gc_pretty_print (VARIABLE OMP IS_BOOLEAN )
237+ gc_pretty_print (VARIABLE USE_REAL8 IS_BOOLEAN )
238+ gc_pretty_print (VARIABLE APM IS_BOOLEAN )
239+ gc_pretty_print (VARIABLE TOMAS IS_BOOLEAN )
240+ gc_pretty_print (VARIABLE RRTMG IS_BOOLEAN )
241+ gc_pretty_print (VARIABLE GTMM IS_BOOLEAN )
242+ gc_pretty_print (VARIABLE LUO_WETDEP IS_BOOLEAN )
243+ gc_pretty_print (VARIABLE FASTJX IS_BOOLEAN )
244+ gc_pretty_print (VARIABLE KPPSA IS_BOOLEAN )
245+ endif ()
246+
0 commit comments