diff --git a/.gitignore b/.gitignore index 6cc678588bfe2e02c9dfc345764156a525b50601..b6d1ac5c8b784f69156a8752a148bb07a3437cc3 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,6 @@ build/.vscode .DS_Store laugh_tests build/summa_sundials -build/summa_original \ No newline at end of file +build/summa_original +build/source/testing/containers/output_container/main +bin/submission_script.sh diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt index f2303874fbab317f9183e66ab36339a6fae7a2d1..327dcec3177d1a40bade27f3d5b5e4e411d3790d 100644 --- a/build/cmake/CMakeLists.txt +++ b/build/cmake/CMakeLists.txt @@ -13,11 +13,11 @@ FortranCInterface_VERIFY(CXX) option(SUNDIALS "Use SUNDIALS" OFF) include(kinsol.cmake) - +include(be.cmake) ######### SET THE PATHS TO THE SUNDIALS LIBRARIES AND INCLUDE FILES ######### ############################################################################# -# set(DIR_SUNDIALS "/home/kklenk/projects/rpp-kshook/CompHydCore/SummaSundials/sundials/sundials/instdir") -set(DIR_SUNDIALS "/usr/local/sundials") +set(DIR_SUNDIALS "/home/kklenk/projects/rpp-kshook/CompHydCore/SummaSundials/sundials/sundials/instdir") +#set(DIR_SUNDIALS "/usr/local/sundials") ############################################################################# # Set default build type to Release @@ -52,91 +52,93 @@ if (CMAKE_BUILD_TYPE MATCHES Cluster OR CMAKE_BUILD_TYPE MATCHES Cluster_Debug) find_package(CAF REQUIRED) find_package(netCDF REQUIRED) find_package(LAPACK REQUIRED) + message("\nBuilding Cluster\n") - if(SUNDIALS) - # Compiling Summa-Sundials on a Cluster - link_directories(${DIR_SUNDIALS}/lib64) - set(CMAKE_BUILD_RPATH "${DIR_SUNDIALS}/lib64") - set(SUMMA_INCLUDES - "$ENV{EBROOTNETCDFMINFORTRAN}/include" - "${DIR_SUNDIALS}/include" - "${DIR_SUNDIALS}/fortran" - ${netCDF_INCLUDES} - ${LAPACK_INCLUDES}) + compile_summa_original(PARENT_DIR, ${DIR_SUNDIALS}) + # if(SUNDIALS) + # # Compiling Summa-Sundials on a Cluster + # link_directories(${DIR_SUNDIALS}/lib64) + # set(CMAKE_BUILD_RPATH "${DIR_SUNDIALS}/lib64") + # set(SUMMA_INCLUDES + # "$ENV{EBROOTNETCDFMINFORTRAN}/include" + # "${DIR_SUNDIALS}/include" + # "${DIR_SUNDIALS}/fortran" + # ${netCDF_INCLUDES} + # ${LAPACK_INCLUDES}) - set(SUMMA_LIBS - -lsundials_fnvecmanyvector_mod - -lsundials_fida_mod - -lsundials_fnvecserial_mod - -lsundials_fsunlinsoldense_mod - -lsundials_fsunmatrixdense_mod - -lnetcdff - ${netCDF_LIBRARIES} - ${LAPACK_LIBRARIES} - SUMMA_NOAHMP) + # set(SUMMA_LIBS + # -lsundials_fnvecmanyvector_mod + # -lsundials_fida_mod + # -lsundials_fnvecserial_mod + # -lsundials_fsunlinsoldense_mod + # -lsundials_fsunmatrixdense_mod + # -lnetcdff + # ${netCDF_LIBRARIES} + # ${LAPACK_LIBRARIES} + # SUMMA_NOAHMP) - set(SUMMA_ACTORS_INCLUDES - ${CAF_INCLUDES} - "$ENV{EBROOTNETCDFMINFORTRAN}/include" - ${LAPACK_INCLUDES} - "${DIR_SUNDIALS}/include" - "${PARENT_DIR}/build/includes/global" - "${PARENT_DIR}/build/includes/summa_actor" - "${PARENT_DIR}/build/includes/gru_actor" - "${PARENT_DIR}/build/includes/job_actor" - "${PARENT_DIR}/build/includes/file_access_actor" - "${PARENT_DIR}/build/includes/hru_actor") + # set(SUMMA_ACTORS_INCLUDES + # ${CAF_INCLUDES} + # "$ENV{EBROOTNETCDFMINFORTRAN}/include" + # ${LAPACK_INCLUDES} + # "${DIR_SUNDIALS}/include" + # "${PARENT_DIR}/build/includes/global" + # "${PARENT_DIR}/build/includes/summa_actor" + # "${PARENT_DIR}/build/includes/gru_actor" + # "${PARENT_DIR}/build/includes/job_actor" + # "${PARENT_DIR}/build/includes/file_access_actor" + # "${PARENT_DIR}/build/includes/hru_actor") - set(SUMMA_ACTORS_LIBS - ${CAF_LIBRARIES} - ${netCDF_LIBRARIES} - ${LAPACK_LIBRARIES} - -lcaf_core - -lcaf_io - summa - -lnetcdff - -lsundials_fnvecmanyvector_mod - -lsundials_fida_mod - -lsundials_fnvecserial_mod - -lsundials_fsunlinsoldense_mod - -lsundials_fsunmatrixdense_mod) + # set(SUMMA_ACTORS_LIBS + # ${CAF_LIBRARIES} + # ${netCDF_LIBRARIES} + # ${LAPACK_LIBRARIES} + # -lcaf_core + # -lcaf_io + # summa + # -lnetcdff + # -lsundials_fnvecmanyvector_mod + # -lsundials_fida_mod + # -lsundials_fnvecserial_mod + # -lsundials_fsunlinsoldense_mod + # -lsundials_fsunmatrixdense_mod) - else() - # Building Summa without sundials on a cluster - set(SUMMA_INCLUDES - "$ENV{EBROOTNETCDFMINFORTRAN}/include" - ${netCDF_INCLUDES} - ${LAPACK_INCLUDES}) + # else() + # # Building Summa without sundials on a cluster + # set(SUMMA_INCLUDES + # "$ENV{EBROOTNETCDFMINFORTRAN}/include" + # ${netCDF_INCLUDES} + # ${LAPACK_INCLUDES}) - set(SUMMA_LIBS - -lnetcdff - ${netCDF_LIBRARIES} - ${LAPACK_LIBRARIES} - SUMMA_NOAHMP) + # set(SUMMA_LIBS + # -lnetcdff + # ${netCDF_LIBRARIES} + # ${LAPACK_LIBRARIES} + # SUMMA_NOAHMP) - set(SUMMA_ACTORS_INCLUDES - ${CAF_INCLUDES} - "$ENV{EBROOTNETCDFMINFORTRAN}/include" - ${LAPACK_INCLUDES} - "${PARENT_DIR}/build/includes/global" - "${PARENT_DIR}/build/includes/summa_actor" - "${PARENT_DIR}/build/includes/gru_actor" - "${PARENT_DIR}/build/includes/job_actor" - "${PARENT_DIR}/build/includes/file_access_actor" - "${PARENT_DIR}/build/includes/hru_actor") + # set(SUMMA_ACTORS_INCLUDES + # ${CAF_INCLUDES} + # "$ENV{EBROOTNETCDFMINFORTRAN}/include" + # ${LAPACK_INCLUDES} + # "${PARENT_DIR}/build/includes/global" + # "${PARENT_DIR}/build/includes/summa_actor" + # "${PARENT_DIR}/build/includes/gru_actor" + # "${PARENT_DIR}/build/includes/job_actor" + # "${PARENT_DIR}/build/includes/file_access_actor" + # "${PARENT_DIR}/build/includes/hru_actor") - set(SUMMA_ACTORS_LIBS - ${CAF_LIBRARIES} - ${netCDF_LIBRARIES} - ${LAPACK_LIBRARIES} - -lcaf_core - -lcaf_io - summa - -lnetcdff) + # set(SUMMA_ACTORS_LIBS + # ${CAF_LIBRARIES} + # ${netCDF_LIBRARIES} + # ${LAPACK_LIBRARIES} + # -lcaf_core + # -lcaf_io + # summa + # -lnetcdff) - endif() + # endif() elseif(CMAKE_BUILD_TYPE MATCHES Kinsol OR CMAKE_BUILD_TYPE MATCHES Kinsol_Debug) message("\nBuilding Kinsol\n") @@ -227,3 +229,239 @@ else() endif() endif() + + # set(ACTORS_DIR ${PARENT_DIR}/build/source/actors) + # set(DRIVER_DIR ${PARENT_DIR}/build/source/driver) + # set(DSHARE_DIR ${PARENT_DIR}/build/source/dshare) + # set(ENGINE_DIR ${PARENT_DIR}/build/source/engine) + # set(HOOKUP_DIR ${PARENT_DIR}/build/source/hookup) + # set(NETCDF_DIR ${PARENT_DIR}/build/source/netcdf) + # set(NOAHMP_DIR ${PARENT_DIR}/build/source/noah-mp) + # set(FILE_ACCESS_DIR ${ACTORS_DIR}/file_access_actor) + # set(JOB_ACTOR_DIR ${ACTORS_DIR}/job_actor) + # set(HRU_ACTOR_DIR ${ACTORS_DIR}/hru_actor) + # set(GRU_ACTOR_DIR ${ACTORS_DIR}/gru_actor) + # set(SUMMA_DSHARE_DIR ${PARENT_DIR}/build/summa/build/source/dshare) + # set(SUMMA_ENGINE_DIR ${PARENT_DIR}/build/summa/build/source/engine) + # set(SUMMA_NOAHMP_DIR ${PARENT_DIR}/build/summa/build/source/noah-mp) + + # set(NRUTIL + # ${SUMMA_ENGINE_DIR}/nrtype.f90 + # ${SUMMA_ENGINE_DIR}/f2008funcs.f90 + # ${SUMMA_ENGINE_DIR}/nr_utility.f90) + + # set(NRPROC + # ${SUMMA_ENGINE_DIR}/expIntegral.f90 + # ${SUMMA_ENGINE_DIR}/spline_int.f90) + + # SET(HOOKUP + # ${HOOKUP_DIR}/ascii_util.f90 + # ${HOOKUP_DIR}/summaActors_FileManager.f90) + + # SET(DATAMS + # ${SUMMA_DSHARE_DIR}/multiconst.f90 + # ${DSHARE_DIR}/var_lookup.f90 + # ${DSHARE_DIR}/data_types.f90 + # ${DSHARE_DIR}/globalData.f90 + # ${SUMMA_DSHARE_DIR}/flxMapping.f90) + + # SET(DEPENDS_ON_FILEMANAGER + # ${SUMMA_DSHARE_DIR}/get_ixname.f90 + # ${SUMMA_DSHARE_DIR}/popMetadat.f90 + # ${SUMMA_DSHARE_DIR}/outpt_stat.f90) + + # SET(UTILMS + # ${SUMMA_ENGINE_DIR}/time_utils.f90 + # ${ENGINE_DIR}/mDecisions.f90 + # ${SUMMA_ENGINE_DIR}/snow_utils.f90 + # ${SUMMA_ENGINE_DIR}/soil_utils.f90 + # ${SUMMA_ENGINE_DIR}/updatState.f90 + # ${SUMMA_ENGINE_DIR}/matrixOper.f90) + + # set(SOLVER + # ${ENGINE_DIR}/vegPhenlgy.f90 + # ${SUMMA_ENGINE_DIR}/diagn_evar.f90 + # ${SUMMA_ENGINE_DIR}/stomResist.f90 + # ${SUMMA_ENGINE_DIR}/groundwatr.f90 + # ${SUMMA_ENGINE_DIR}/vegSWavRad.f90 + # ${SUMMA_ENGINE_DIR}/vegNrgFlux.f90 + # ${SUMMA_ENGINE_DIR}/ssdNrgFlux.f90 + # ${SUMMA_ENGINE_DIR}/vegLiqFlux.f90 + # ${SUMMA_ENGINE_DIR}/snowLiqFlx.f90 + # ${SUMMA_ENGINE_DIR}/soilLiqFlx.f90 + # ${SUMMA_ENGINE_DIR}/bigAquifer.f90 + # ${SUMMA_ENGINE_DIR}/computFlux.f90 + # ${SUMMA_ENGINE_DIR}/computResid.f90 + # ${SUMMA_ENGINE_DIR}/computJacob.f90 + # ${SUMMA_ENGINE_DIR}/eval8summa.f90 + # ${SUMMA_ENGINE_DIR}/summaSolve.f90 + # ${SUMMA_ENGINE_DIR}/systemSolv.f90 + # ${SUMMA_ENGINE_DIR}/varSubstep.f90 + # ${SUMMA_ENGINE_DIR}/opSplittin.f90 + # ${ENGINE_DIR}/coupled_em.f90) + + # set(INTERFACE + # ${ACTORS_DIR}/global/cppwrap_datatypes.f90 + # ${ACTORS_DIR}/global/cppwrap_auxiliary.f90 + # ${ACTORS_DIR}/global/cppwrap_metadata.f90) + + # set(FILE_ACCESS_INTERFACE + # ${FILE_ACCESS_DIR}/fortran_code/output_structure.f90 + # ${FILE_ACCESS_DIR}/fortran_code/cppwrap_fileAccess.f90 + # ${FILE_ACCESS_DIR}/fortran_code/read_attribute.f90 + # ${FILE_ACCESS_DIR}/fortran_code/read_forcing.f90 + # ${FILE_ACCESS_DIR}/fortran_code/read_param.f90 + # ${FILE_ACCESS_DIR}/fortran_code/read_initcond.f90 + # ${FILE_ACCESS_DIR}/fortran_code/writeOutputFromOutputStructure.f90 + # ${FILE_ACCESS_DIR}/fortran_code/write_to_netcdf.f90) + + # set(JOB_INTERFACE + # ${JOB_ACTOR_DIR}/job_actor.f90) + + # set(HRU_INTERFACE + # ${HRU_ACTOR_DIR}/fortran_code/model_run.f90 + # ${HRU_ACTOR_DIR}/fortran_code/setup_hru.f90 + # ${HRU_ACTOR_DIR}/fortran_code/restart.f90 + # ${HRU_ACTOR_DIR}/fortran_code/hru_actor.f90 + # ${HRU_ACTOR_DIR}/fortran_code/init_hru_actor.f90 + # ${HRU_ACTOR_DIR}/fortran_code/outputStrucWrite.f90 + # ${HRU_ACTOR_DIR}/fortran_code/hru_writeOutput.f90) + + # set(GRU_INTERFACE + # ${GRU_ACTOR_DIR}/gru_actor.f90) + + # set(PRELIM + # ${SUMMA_ENGINE_DIR}/conv_funcs.f90 + # ${SUMMA_ENGINE_DIR}/sunGeomtry.f90 + # ${SUMMA_ENGINE_DIR}/convE2Temp.f90 + # ${ENGINE_DIR}/allocspaceActors.f90 + # ${ENGINE_DIR}/alloc_fileAccess.f90 + # ${ENGINE_DIR}/checkStruc.f90 + # ${SUMMA_ENGINE_DIR}/childStruc.f90 + # ${ENGINE_DIR}/ffile_info.f90 + # ${ENGINE_DIR}/read_dimension.f90 + # ${ENGINE_DIR}/read_pinit.f90 + # ${SUMMA_ENGINE_DIR}/pOverwrite.f90 + # ${SUMMA_ENGINE_DIR}/paramCheck.f90 + # ${ENGINE_DIR}/check_icondActors.f90) + + # set(NOAHMP + # ${SUMMA_NOAHMP_DIR}/module_model_constants.F + # ${SUMMA_NOAHMP_DIR}/module_sf_noahutl.F + # ${SUMMA_NOAHMP_DIR}/module_sf_noahlsm.F + # ${SUMMA_NOAHMP_DIR}/module_sf_noahmplsm.F) + + # set(MODRUN + # ${SUMMA_ENGINE_DIR}/indexState.f90 + # ${SUMMA_ENGINE_DIR}/getVectorz.f90 + # ${SUMMA_ENGINE_DIR}/updateVars.f90 + # ${SUMMA_ENGINE_DIR}/var_derive.f90 + # ${ENGINE_DIR}/derivforce.f90 + # ${ENGINE_DIR}/sundials/t2enthalpy.f90 + # ${SUMMA_ENGINE_DIR}/snowAlbedo.f90 + # ${SUMMA_ENGINE_DIR}/canopySnow.f90 + # ${SUMMA_ENGINE_DIR}/tempAdjust.f90 + # ${SUMMA_ENGINE_DIR}/snwCompact.f90 + # ${SUMMA_ENGINE_DIR}/layerMerge.f90 + # ${SUMMA_ENGINE_DIR}/layerDivide.f90 + # ${SUMMA_ENGINE_DIR}/volicePack.f90 + # ${SUMMA_ENGINE_DIR}/qTimeDelay.f90) + + # set(NETCDF + # ${NETCDF_DIR}/netcdf_util.f90 + # ${NETCDF_DIR}/def_output.f90 + # ${NETCDF_DIR}/writeOutput.f90 + # ${NETCDF_DIR}/read_icondActors.f90) + + # set(DRIVER + # ${DRIVER_DIR}/summaActors_type.f90 + # ${DRIVER_DIR}/summaActors_util.f90 + # ${DRIVER_DIR}/summaActors_globalData.f90 + # ${DRIVER_DIR}/summaActors_alarms.f90) + + # set(COMM_ALL + # ${NRPROC} + # ${DATAMS} + # ${INTERFACE} + # ${HOOKUP} + # ${DEPENDS_ON_FILEMANAGER} + # ${UTILMS}) + + # set(SUMMA_ALL + # ${NETCDF} + # ${PRELIM} + # ${MODRUN} + # ${SOLVER} + # ${DRIVER} + # ${JOB_INTERFACE} + # ${FILE_ACCESS_INTERFACE} + # ${HRU_INTERFACE} + # ${GRU_INTERFACE}) + + # set(ACTORS_GLOBAL + # ${ACTORS_DIR}/global/global.cpp + # ${ACTORS_DIR}/global/timing_info.cpp + # ${ACTORS_DIR}/global/message_atoms.cpp + # ${ACTORS_DIR}/global/settings_functions.cpp + # ${ACTORS_DIR}/global/auxiliary.cpp) + + # set(SUMMA_ACTOR + # ${ACTORS_DIR}/summa_actor/summa_actor.cpp + # ${ACTORS_DIR}/summa_actor/summa_client.cpp + # ${ACTORS_DIR}/summa_actor/summa_server.cpp + # ${ACTORS_DIR}/summa_actor/summa_backup_server.cpp + # ${ACTORS_DIR}/summa_actor/batch/batch.cpp + # ${ACTORS_DIR}/summa_actor/batch/batch_container.cpp + # ${ACTORS_DIR}/summa_actor/client/client.cpp + # ${ACTORS_DIR}/summa_actor/client/client_container.cpp) + + # set(HRU_ACTOR + # ${ACTORS_DIR}/hru_actor/cpp_code/hru_actor.cpp) + + # set(GRU_ACTOR + # ${ACTORS_DIR}/gru_actor/gru_actor.cpp) + + # set(FILE_ACCESS_ACTOR + # ${ACTORS_DIR}/file_access_actor/cpp_code/file_access_actor.cpp + # ${ACTORS_DIR}/file_access_actor/cpp_code/forcing_file_info.cpp + # ${ACTORS_DIR}/file_access_actor/cpp_code/output_container.cpp) + + # set(JOB_ACTOR + # ${ACTORS_DIR}/job_actor/job_actor.cpp + # ${ACTORS_DIR}/job_actor/GRUinfo.cpp) + + # set(MAIN + # ${ACTORS_DIR}/main.cpp) + + # ####################### START OF COMPILATION ########################################### + # # Build NOAH_MP Object + # add_library(SUMMA_NOAHMP OBJECT + # ${NOAHMP} + # ${NRUTIL}) + # target_compile_options(SUMMA_NOAHMP PRIVATE ${SUMMA_NOAHMP_OPTIONS}) + # # Build SUMMA_COMM Object + # add_library(SUMMA_COMM OBJECT + # ${COMM_ALL}) + # target_compile_options(SUMMA_COMM PRIVATE ${SUMMA_ALL_OPTIONS}) + # target_include_directories(SUMMA_COMM PRIVATE ${SUMMA_INCLUDES}) + # target_link_libraries(SUMMA_COMM PUBLIC ${SUMMA_LIBS}) + # # Build SUMMA Shared Library + # add_library(summa SHARED + # ${SUMMA_ALL}) + # target_compile_options(summa PRIVATE ${SUMMA_ALL_OPTIONS}) + # target_include_directories(summa PUBLIC ${SUMMA_INCLUDES}) + # target_link_libraries(summa PUBLIC ${SUMMA_LIBS} SUMMA_COMM) + # # Build SUMMA Executable + # add_executable(${EXEC_NAME} + # ${ACTORS_GLOBAL} + # ${HRU_ACTOR} + # ${GRU_ACTOR} + # ${FILE_ACCESS_ACTOR} + # ${JOB_ACTOR} + # ${SUMMA_ACTOR} + # ${SUMMA_CLIENT} + # ${SUMMA_SERVER} + # ${MAIN}) + # set_property(TARGET ${EXEC_NAME} PROPERTY LINKER_LANGUAGE Fortran) + # target_include_directories(${EXEC_NAME} PUBLIC ${SUMMA_ACTORS_INCLUDES}) + # target_link_libraries( ${EXEC_NAME} ${SUMMA_ACTORS_LIBS}) \ No newline at end of file diff --git a/build/cmake/be.cmake b/build/cmake/be.cmake index e716deaf31a060b9824f9a9001f9bbbaf7420515..456a3beaf763ea08613a4259f419520ddcbd3321 100644 --- a/build/cmake/be.cmake +++ b/build/cmake/be.cmake @@ -1,4 +1,36 @@ -function compile_summa_original() +function (compile_summa_original PARENT_DIR, DIR_SUNDIALS) + set(SUMMA_INCLUDES + "$ENV{EBROOTNETCDFMINFORTRAN}/include" + ${netCDF_INCLUDES} + ${LAPACK_INCLUDES}) + + set(SUMMA_LIBS + -lnetcdff + ${netCDF_LIBRARIES} + ${LAPACK_LIBRARIES} + SUMMA_NOAHMP) + + set(SUMMA_ACTORS_INCLUDES + ${CAF_INCLUDES} + "$ENV{EBROOTNETCDFMINFORTRAN}/include" + ${LAPACK_INCLUDES} + "${PARENT_DIR}/build/includes/global" + "${PARENT_DIR}/build/includes/summa_actor" + "${PARENT_DIR}/build/includes/gru_actor" + "${PARENT_DIR}/build/includes/job_actor" + "${PARENT_DIR}/build/includes/file_access_actor" + "${PARENT_DIR}/build/includes/hru_actor") + + set(SUMMA_ACTORS_LIBS + ${CAF_LIBRARIES} + ${netCDF_LIBRARIES} + ${LAPACK_LIBRARIES} + -lcaf_core + -lcaf_io + summa + -lnetcdff) + + set(ACTORS_DIR ${PARENT_DIR}/build/source/actors) set(DRIVER_DIR ${PARENT_DIR}/build/source/driver) set(DSHARE_DIR ${PARENT_DIR}/build/source/dshare) diff --git a/build/cmake/kinsol.cmake b/build/cmake/kinsol.cmake index 16f8893610be77e6506b3286f6ad612ef5408137..31659a14aba14e5f3fc548bff89543de707fd6b5 100644 --- a/build/cmake/kinsol.cmake +++ b/build/cmake/kinsol.cmake @@ -2,17 +2,36 @@ # Summa-Actors 2023 - Builds the Summa-Actors executable for Kinsol ##################################################################### function(compile_with_kinsol PARENT_DIR, DIR_SUNDIALS) + find_package(LAPACK REQUIRED) + message("DIR_SUNDIALS: ${DIR_SUNDIALS}") # Building Summa with sundials on local machine - link_directories(${DIR_SUNDIALS}/lib) - set(CMAKE_BUILD_RPATH "${DIR_SUNDIALS}/lib:/usr/local/lib") - set(SUMMA_INCLUDES - "/usr/include" + # link_directories(${DIR_SUNDIALS}/lib) + # set(CMAKE_BUILD_RPATH "${DIR_SUNDIALS}/lib:/usr/local/lib") + # set(SUMMA_INCLUDES + # "/usr/include" + # "${DIR_SUNDIALS}/include" + # "${DIR_SUNDIALS}/fortran" + # ${netCDF_INCLUDES} + # ${LAPACK_INCLUDES}) + link_directories(${DIR_SUNDIALS}/lib64) + set(CMAKE_BUILD_RPATH "${DIR_SUNDIALS}/lib64") + set(SUMMA_INCLUDES + "$ENV{EBROOTNETCDFMINFORTRAN}/include" "${DIR_SUNDIALS}/include" "${DIR_SUNDIALS}/fortran" ${netCDF_INCLUDES} ${LAPACK_INCLUDES}) + # set(SUMMA_LIBS + # -lsundials_fkinsol_mod + # -lsundials_fnvecserial_mod + # -lsundials_fsunmatrixdense_mod + # -lsundials_fsunlinsoldense_mod + # -lsundials_fsunnonlinsolnewton_mod + # -lnetcdff + # -lopenblas + # SUMMA_NOAHMP) set(SUMMA_LIBS -lsundials_fkinsol_mod -lsundials_fnvecserial_mod @@ -20,12 +39,24 @@ function(compile_with_kinsol PARENT_DIR, DIR_SUNDIALS) -lsundials_fsunlinsoldense_mod -lsundials_fsunnonlinsolnewton_mod -lnetcdff - -lopenblas + ${netCDF_LIBRARIES} + ${LAPACK_LIBRARIES} SUMMA_NOAHMP) - set(SUMMA_ACTORS_INCLUDES + # set(SUMMA_ACTORS_INCLUDES + # ${CAF_INCLUDES} + # "$ENV{EBROOTNETCDFMINFORTRAN}/include" + # ${LAPACK_INCLUDES} + # "${DIR_SUNDIALS}/include" + # "${PARENT_DIR}/build/includes/global" + # "${PARENT_DIR}/build/includes/summa_actor" + # "${PARENT_DIR}/build/includes/gru_actor" + # "${PARENT_DIR}/build/includes/job_actor" + # "${PARENT_DIR}/build/includes/file_access_actor" + # "${PARENT_DIR}/build/includes/hru_actor") + set(SUMMA_ACTORS_INCLUDES ${CAF_INCLUDES} - ${netCDF_INCLUDES} + "$ENV{EBROOTNETCDFMINFORTRAN}/include" ${LAPACK_INCLUDES} "${DIR_SUNDIALS}/include" "${PARENT_DIR}/build/includes/global" @@ -35,8 +66,21 @@ function(compile_with_kinsol PARENT_DIR, DIR_SUNDIALS) "${PARENT_DIR}/build/includes/file_access_actor" "${PARENT_DIR}/build/includes/hru_actor") + # set(SUMMA_ACTORS_LIBS + # -lopenblas + # -lcaf_core + # -lcaf_io + # summa + # -lnetcdff + # -lsundials_fkinsol_mod + # -lsundials_fnvecserial_mod + # -lsundials_fsunmatrixdense_mod + # -lsundials_fsunlinsoldense_mod + # -lsundials_fsunnonlinsolnewton_mod) set(SUMMA_ACTORS_LIBS - -lopenblas + ${CAF_LIBRARIES} + ${netCDF_LIBRARIES} + ${LAPACK_LIBRARIES} -lcaf_core -lcaf_io summa @@ -59,9 +103,9 @@ function(compile_with_kinsol PARENT_DIR, DIR_SUNDIALS) set(JOB_ACTOR_DIR ${ACTORS_DIR}/job_actor) set(HRU_ACTOR_DIR ${ACTORS_DIR}/hru_actor) set(GRU_ACTOR_DIR ${ACTORS_DIR}/gru_actor) - set(SUMMA_DSHARE_DIR ${PARENT_DIR}/build/summa/build/source/dshare) - set(SUMMA_ENGINE_DIR ${PARENT_DIR}/build/summa/build/source/engine) - set(SUMMA_NOAHMP_DIR ${PARENT_DIR}/build/summa/build/source/noah-mp) + set(SUMMA_DSHARE_DIR ${PARENT_DIR}/build/summa_kinsol/build/source/dshare) + set(SUMMA_ENGINE_DIR ${PARENT_DIR}/build/summa_kinsol/build/source/engine) + set(SUMMA_NOAHMP_DIR ${PARENT_DIR}/build/summa_kinsol/build/source/noah-mp) set(NRUTIL ${SUMMA_ENGINE_DIR}/nrtype.f90 diff --git a/build/source/actors/main.cpp b/build/source/actors/main.cpp index 47796b15eccf203025420ddd6920017d57dd3215..9451b50c25d1faf332fe2b85c6f7a07b452beb5c 100644 --- a/build/source/actors/main.cpp +++ b/build/source/actors/main.cpp @@ -11,6 +11,7 @@ #include <string> #include <bits/stdc++.h> #include <unistd.h> +#include <sys/stat.h> #include <iostream> #include "json.hpp" #include <optional> @@ -105,6 +106,13 @@ void run_server(actor_system& system, const config& cfg, Distributed_Settings di void caf_main(actor_system& sys, const config& cfg) { scoped_actor self{sys}; int err; + struct stat file_to_check; + // Check if config file exists + if (stat(cfg.config_file.c_str(), &file_to_check) != 0) { + aout(self) << "Config File Path Does Not Exist\n"; + aout(self) << "EXAMPLE: ./summa_actors -g 1 -n 10 -c location/of/config \n"; + return; + } Distributed_Settings distributed_settings = readDistributedSettings(cfg.config_file); Summa_Actor_Settings summa_actor_settings = readSummaActorSettings(cfg.config_file); diff --git a/build/source/engine/coupled_em.f90 b/build/source/engine/coupled_em.f90 index 4f70fa60012486b9211a47def12a45b715e0a618..85c21fe60399d90e01ea02ab3c8f9f144aa7b8a3 100644 --- a/build/source/engine/coupled_em.f90 +++ b/build/source/engine/coupled_em.f90 @@ -1051,7 +1051,6 @@ subroutine coupled_em(& ! increment sub-step dt_solv = dt_solv + dt_sub - ! save the time step to initialize the subsequent step if(dt_solv<data_step .or. nsub==1) dt_init = dt_sub diff --git a/build/summa_kinsol b/build/summa_kinsol new file mode 160000 index 0000000000000000000000000000000000000000..f8f935cd606d076f8217a820b74b66ee34fc628c --- /dev/null +++ b/build/summa_kinsol @@ -0,0 +1 @@ +Subproject commit f8f935cd606d076f8217a820b74b66ee34fc628c diff --git a/utils/netcdf/OutputVerification/checkOutput.py b/utils/netcdf/OutputVerification/checkOutput.py index 12b31dbdddd03374e143db5953c254be8e88e109..675ee57d9bf7c9e59a2499e9d462fd75ed541087 100644 --- a/utils/netcdf/OutputVerification/checkOutput.py +++ b/utils/netcdf/OutputVerification/checkOutput.py @@ -47,8 +47,8 @@ def verify_data(dataset_1, dataset_2, num_hru, output_variables): hru_from_dataset_1 = dataset_1.isel(hru=i_hru).copy() hru_from_dataset_2 = dataset_2.isel(hru=i_hru).copy() - print("\nHRU - hru_dataset_1", hru_from_dataset_1["hruId"].values) - print("HRU - hru_dataset_2", hru_from_dataset_2["hruId"].values, "\n") + # print("\nHRU - hru_dataset_1", hru_from_dataset_1["hruId"].values) + # print("HRU - hru_dataset_2", hru_from_dataset_2["hruId"].values, "\n") for var in output_variables: if not check_variable_length(hru_from_dataset_1, hru_from_dataset_2, var): @@ -61,7 +61,7 @@ def verify_data(dataset_1, dataset_2, num_hru, output_variables): print(" hru_from_dataset_1 = ", len(hru_variable_data_from_dataset_1)) print(" hru_from_dataset_2 = ", len(hru_variable_data_from_dataset_2)) - error_tolerance = 0 + error_tolerance = 0.1 errors = check_data_for_errors(hru_variable_data_from_dataset_1, hru_variable_data_from_dataset_2, error_tolerance) print("Errors for variable", var, ":", errors) @@ -80,15 +80,15 @@ def get_output_vars(model_output_file): -num_hru = 125 +num_hru = 1 print("Checking output for", num_hru, "HRUs") -dataset_1 = "/home/kklenk/scratch/Sundials_non_Actors_Output/netcdf/Summa-Sundials-_G112001-112125_timestep.nc" -dataset_2 = "/home/kklenk/scratch/Sundials_Actors_Output/netcdf/Summa-Actors-Sundials-GRU112001-500_timestep.nc" +dataset_1 = "/home/kklenk/scratch/Kinsol/netcdf/SummaActorsGRU1-1_timestep.nc" +dataset_2 = "/home/kklenk/scratch/Kinsol/netcdf/SummaActors_kinsolGRU1-1_timestep.nc" # dataset_1 = "/scratch/kck540/Summa_Sundials/non-actors/SummaOriginal-BE_G000001-000002_timestep.nc" # dataset_2 = "/scratch/kck540/Summa_Sundials/actors/SummaActors-BEGRU1-2_timestep.nc" -model_output_file = "/home/kklenk/projects/rpp-kshook/kklenk/Sundials_Settings/outputControl.txt" +model_output_file = "/home/kklenk/projects/rpp-kshook/kklenk/settings/SummaActorsSettings/outputControl.txt" output_vars = get_output_vars(model_output_file) verify_data(dataset_1, dataset_2, num_hru, output_vars)