# Relevant Directories within the HOMME repository # holding source files needed for building the library # and executable prim. macro(prim_setup) INCLUDE_DIRECTORIES ( ${Trilinos_INCLUDE_DIRS} ${Trilinos_TPL_INCLUDE_DIRS}) LINK_DIRECTORIES ( ${Trilinos_LIBRARY_DIRS} ${Trilinos_TPL_LIBRARY_DIRS}) SET(SRC_DIR ${HOMME_SOURCE_DIR}/src) SET(SRC_SHARE_DIR ${HOMME_SOURCE_DIR}/src/share) SET(PHYSICS_DIR ${HOMME_SOURCE_DIR}/physics) SET(UTILS_TIMING_DIR ${HOMME_BINARY_DIR}/utils/timing) SET(UTILS_TRILINOS_DIR ${HOMME_SOURCE_DIR}/utils/trilinos) # Make INCLUDE_DIRS global so the tests can access it SET (EXEC_INCLUDE_DIRS ${PIO_INCLUDE_DIRS} ${UTILS_TIMING_DIR} ) FILE(GLOB SB81_SRC_F90 ${SRC_DIR}/preqx/share/*.F90) # Make SRCS global so the tests can access it SET(PRIM_SRCS ${SB81_SRC_F90} ${SRC_SHARE_DIR}/kinds.F90 ${SRC_DIR}/test_src/asp_tests.F90 ${SRC_DIR}/test_src/baroclinic_inst_mod.F90 ${SRC_SHARE_DIR}/dimensions_mod.F90 ${SRC_SHARE_DIR}/control_mod.F90 ${SRC_SHARE_DIR}/physical_constants.F90 ${SRC_SHARE_DIR}/coordinate_systems_mod.F90 ${SRC_SHARE_DIR}/params_mod.F90 ${SRC_SHARE_DIR}/gridgraph_mod.F90 ${SRC_SHARE_DIR}/edge_mod.F90 ${SRC_SHARE_DIR}/element_mod.F90 ${SRC_SHARE_DIR}/parallel_mod.F90 ${SRC_SHARE_DIR}/hybrid_mod.F90 ${SRC_SHARE_DIR}/reduction_mod.F90 ${SRC_SHARE_DIR}/quadrature_mod.F90 ${SRC_SHARE_DIR}/global_norms_mod.F90 ${SRC_SHARE_DIR}/ll_mod.F90 ${SRC_SHARE_DIR}/metagraph_mod.F90 ${SRC_SHARE_DIR}/schedule_mod.F90 ${SRC_SHARE_DIR}/schedtype_mod.F90 ${SRC_SHARE_DIR}/edgetype_mod.F90 ${SRC_SHARE_DIR}/thread_mod.F90 ${SRC_SHARE_DIR}/bndry_mod.F90 ${SRC_SHARE_DIR}/derivative_mod.F90 ${SRC_SHARE_DIR}/viscosity_mod.F90 ${SRC_SHARE_DIR}/unit_tests_mod.F90 ${SRC_SHARE_DIR}/spacecurve_mod.F90 ${SRC_SHARE_DIR}/cube_mod.F90 ${SRC_SHARE_DIR}/interpolate_mod.F90 ${SRC_SHARE_DIR}/dof_mod.F90 ${SRC_DIR}/common_io_mod.F90 ${SRC_DIR}/pio_io_mod.F90 ${SRC_DIR}/repro_sum_mod.F90 ${SRC_SHARE_DIR}/time_mod.F90 ${SRC_SHARE_DIR}/physics_mod.F90 ${SRC_SHARE_DIR}/hybvcoord_mod.F90 ${SRC_DIR}/interp_movie_mod.F90 ${SRC_SHARE_DIR}/domain_mod.F90 ${SRC_DIR}/restart_io_mod.F90 ${SRC_SHARE_DIR}/cg_mod.F90 ${SRC_SHARE_DIR}/linear_algebra_mod.F90 ${SRC_SHARE_DIR}/solver_mod.F90 ${SRC_DIR}/common_movie_mod.F90 ${SRC_SHARE_DIR}/namelist_mod.F90 ${SRC_SHARE_DIR}/mass_matrix_mod.F90 ${SRC_DIR}/checksum_mod.F90 ${SRC_SHARE_DIR}/prim_si_mod.F90 ${SRC_SHARE_DIR}/prim_state_mod.F90 ${SRC_DIR}/prim_restart_mod.F90 ${SRC_SHARE_DIR}/prim_advance_mod.F90 ${SRC_SHARE_DIR}/prim_advection_mod.F90 ${SRC_SHARE_DIR}/prim_implicit_mod.F90 ${SRC_SHARE_DIR}/metis_mod.F90 ${SRC_SHARE_DIR}/prim_driver_base.F90 ${SRC_DIR}/prim_movie_mod.F90 ${SRC_DIR}/surfaces_mod.F90 ${SRC_DIR}/repro_sum_mod.F90 ${SRC_DIR}/interpolate_driver_mod.F90 ${SRC_DIR}/netcdf_io_mod.F90 ${SRC_SHARE_DIR}/mesh_mod.F90 ${SRC_SHARE_DIR}/sort_mod.F90 ${SRC_SHARE_DIR}/prim_derived_type_mod.F90 ${UTILS_TRILINOS_DIR}/trilinosNoxSolver.cpp ${UTILS_TRILINOS_DIR}/trilinosModelEvaluator.cpp ${UTILS_TRILINOS_DIR}/block_precon_interface.cpp ${UTILS_TRILINOS_DIR}/precon_interface.cpp ${UTILS_TRILINOS_DIR}/belos_helm.cpp ${SRC_DIR}/derived_type_mod.F90 ${PHYSICS_DIR}/physics_types_mod.F90 ${PHYSICS_DIR}/physics_io_mod.F90 ${PHYSICS_DIR}/column_model_mod.F90 ${PHYSICS_DIR}/column_types_mod.F90 ${PHYSICS_DIR}/heldsuarez/held_suarez_mod.F90 ${SRC_DIR}/test_mod.F90 ) SET(EXEC_SOURCES ${PRIM_SRCS} ${SRC_DIR}/prim_main.F90 ) # Set up defaults IF (NOT PRIM_NP) SET (PRIM_NP 4) ENDIF () IF (NOT PRIM_PLEV) SET (PRIM_PLEV 26) ENDIF () IF (NOT PRIM_USE_PIO) SET (PRIM_USE_PIO FALSE) ENDIF () IF (NOT PRIM_USE_ENERGY) SET (PRIM_USE_ENERGY FALSE) ENDIF () IF (NOT PRIM_NC) SET (PRIM_NC 4) ENDIF () IF (NOT QSIZE_D) SET (QSIZE_D 4) ENDIF () endmacro(prim_setup) prim_setup() # createTestExec(exec_name exec_type NP PLEV USE_PIO USE_ENERGY) createTestExec(prim prim ${PRIM_NP} ${PRIM_NC} ${PRIM_PLEV} ${PRIM_USE_PIO} ${PRIM_USE_ENERGY} ${QSIZE_D}) SET_PROPERTY(TARGET prim PROPERTY LINKER_LANGUAGE Fortran) TARGET_LINK_LIBRARIES(prim ${Trilinos_LIBRARIES} ${Trilinos_TPL_LIBRARIES}) TARGET_LINK_LIBRARIES(prim ~/arkode/lib)