diff --git a/CMakeLists.txt b/CMakeLists.txt index 05993bf744095920ea251a6b776c119aaf8a45da..e8353b4167288c93210cb05b98e52039dd787656 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ +cmake_minimum_required(VERSION 3.19) project(CATS C) enable_language(C) -cmake_minimum_required(VERSION 3.19) set(C_STANDARD 17) include(CTest) MESSAGE("Using compiler: ${CMAKE_C_COMPILER_ID}") @@ -67,7 +67,8 @@ add_definitions("-DCATS_GIT_VERSION=${CATS_GIT_VERSION}") MESSAGE("GIT commit hash: ${CATS_GIT_VERSION}") add_definitions("-DCOMPILER_VERSION='${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}'") - +include_directories("libbdc") +add_subdirectory(libbdc/) include_directories("src") include_directories("src/cats") add_subdirectory(src/) diff --git a/libbdc/CMakeLists.txt b/libbdc/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..4ae0edc6c57bfea0d607ec91c7daa91119af14c4 --- /dev/null +++ b/libbdc/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.19) +project(LIBBDC C) +enable_language(C) +set(C_STANDARD 17) + + +if ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + add_link_options(-Bsymbolic -fno-semantic-interposition) + add_compile_options(-std=gnu11 + -Wall + -Werror + -O3 + -g + -D_GNU_SOURCE + -DHAVE_INLINE + -DGSL_C99_INLINE + -Wno-unused-function + -DGSL_DISABLE_DEPRECATED) +endif () + +if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + add_compile_options(-Wno-stringop-truncation -Wno-stringop-overflow) +elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") + # nothing yet +elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "Intel") + # nothing yet +elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") + add_compile_options("/std:c17") +else () + MESSAGE("Unknown compiler: ${CMAKE_C_COMPILER_ID}") +endif () + +add_subdirectory(bdc_memory) + +add_library(bdc STATIC "") + +set_target_properties(bdc PROPERTIES LINKER_LANGUAGE C) +set_property(TARGET bdc PROPERTY POSITION_INDEPENDENT_CODE ON) +target_link_libraries(bdc + bdc_memory) + diff --git a/libbdc/bdc_memory/CMakeLists.txt b/libbdc/bdc_memory/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..38e9e22e39bbd8fa009790e642080632130b5398 --- /dev/null +++ b/libbdc/bdc_memory/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(bdc_memory STATIC "") + +target_sources(bdc_memory + PRIVATE + bdc_memory.c + raw_arrays.c + arrays.c + PUBLIC + bdc_memory.h + ) + + +set_property(TARGET bdc_memory PROPERTY POSITION_INDEPENDENT_CODE ON) \ No newline at end of file diff --git a/src/memory/arrays.c b/libbdc/bdc_memory/arrays.c similarity index 72% rename from src/memory/arrays.c rename to libbdc/bdc_memory/arrays.c index c08bc0e51d95196997fb96fd4cb6433166bbd4f1..a26c51fbb6b91c46e474d3ea75a8affad14de7ee 100644 --- a/src/memory/arrays.c +++ b/libbdc/bdc_memory/arrays.c @@ -19,36 +19,40 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include "raw_arrays.h" -#include <malloc.h> -#include "cats_memory.h" #include <assert.h> -#include "arrays.h" +#include <malloc.h> +#include <stdlib.h> +#include <stdint.h> +#include "bdc_memory.h" -struct cats_2d_array_float *new_2d_array_float(struct cats_dimension dimension) + +__attribute__((unused)) struct cats_2d_array_float *new_2d_array_float(struct array_dimension *dimension) { + assert(dimension != NULL); struct cats_2d_array_float *result = malloc_or_die(sizeof(struct cats_2d_array_float)); result->data = new_raw_2d_array_from_dimension(dimension, sizeof(float)); - result->dimension = dimension; + result->dimension = *dimension; return result; } -struct cats_2d_array_char *new_2d_array_char(struct cats_dimension dimension) +struct cats_2d_array_char *new_2d_array_char(const struct array_dimension *dimension) { + assert(dimension != NULL); struct cats_2d_array_char *result = malloc_or_die(sizeof(struct cats_2d_array_char)); result->data = new_raw_2d_array_from_dimension(dimension, sizeof(char)); - result->dimension = dimension; + result->dimension = *dimension; return result; } -struct cats_2d_array_double *new_2d_array_double(struct cats_dimension dimension) +struct cats_2d_array_double *new_2d_array_double(const struct array_dimension *dimension) { + assert(dimension != NULL); struct cats_2d_array_double *result = malloc_or_die(sizeof(struct cats_2d_array_double)); result->data = new_raw_2d_array_from_dimension(dimension, sizeof(double)); - result->dimension = dimension; + result->dimension = *dimension; return result; } @@ -92,7 +96,14 @@ void cleanup_2d_array_double(struct cats_2d_array_double **grid) } -void *new_raw_2d_array_from_dimension(struct cats_dimension dimension, size_t member_size) +void *new_raw_2d_array_from_dimension(const struct array_dimension *dimension, size_t member_size) { - return new_raw_2d_array(dimension.rows, dimension.cols, member_size); + if (dimension->cols <= 0 || dimension->rows <= 0) { + fprintf(stderr, + "%s: invalid dimensions of %d rows %d cols", + __func__, dimension->rows, dimension->cols); + exit(EXIT_FAILURE); + } + + return new_raw_2d_array(dimension->rows, dimension->cols, member_size); } \ No newline at end of file diff --git a/src/memory/cats_memory.c b/libbdc/bdc_memory/bdc_memory.c similarity index 92% rename from src/memory/cats_memory.c rename to libbdc/bdc_memory/bdc_memory.c index f9ec1b067ead9e95ba48df1bd2b9209d7456dee4..f8ab25b694eb35a51b962d16014532023cd10e1a 100644 --- a/src/memory/cats_memory.c +++ b/libbdc/bdc_memory/bdc_memory.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later // -// cats_memory.c +// bdc_memory.c // // Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer. // @@ -22,7 +22,7 @@ #include <stddef.h> #include <stdlib.h> #include <stdio.h> -#include "cats_memory.h" +#include "bdc_memory.h" // we do not use logging functions here -- // if there is a memory allocation error, keep everything simple and terminate. @@ -50,17 +50,21 @@ void *malloc_or_die_trace(size_t size, const char *func) void *realloc_or_die(void *ptr, size_t size) { - ptr = realloc(ptr, size); + void *new = realloc(ptr, size); // NULL if realloc failure, so we don't overwrite the old address + + if (new == NULL) { + fprintf(stderr, "%s: error re-allocating %zu bytes. Quitting\n", __func__, size); + printf("%s: error re-allocating %zu bytes. Quitting\n", __func__, size); // allowed printf + abort(); + // exit(EXIT_FAILURE); + } + + ptr = new; if (size > 1000 * 1000 * 1000) { fprintf(stderr, "Allocation of %zu bytes\n", size); fflush(stderr); } - if (ptr == NULL) { - fprintf(stderr, "%s: error re-allocating %zu bytes. Quitting\n", __func__, size); - printf("%s: error re-allocating %zu bytes. Quitting\n", __func__, size); // allowed printf - exit(EXIT_FAILURE); - } return ptr; } diff --git a/src/memory/raw_arrays.h b/libbdc/bdc_memory/bdc_memory.h similarity index 54% rename from src/memory/raw_arrays.h rename to libbdc/bdc_memory/bdc_memory.h index 2a4ca215ce1fb5b2a91d3534ca3603e729ffd7c4..015638d20f5abd06311ebc4d3ed1ecf7fe7ea7f5 100644 --- a/src/memory/raw_arrays.h +++ b/libbdc/bdc_memory/bdc_memory.h @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later // -// raw_arrays.h +// bdc_memory.h // // Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer. // @@ -19,11 +19,66 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#ifndef CATS_RAW_ARRAYS_H -#define CATS_RAW_ARRAYS_H +#ifndef bdc_memory_H +#define bdc_memory_H +#include <stddef.h> // for size_t +#include <stdbool.h> #include <stdint.h> -#include <stddef.h> + +void *malloc_or_die_trace(size_t size, const char *func); + +void *realloc_or_die(void *ptr, size_t size); + +void *malloc_or_die(size_t size); + +void *calloc_or_die(size_t count, size_t size); + + +struct array_dimension { + int32_t rows; + int32_t cols; +}; + +struct cats_2d_array_float { + float **data; + struct array_dimension dimension; +}; + +struct cats_2d_array_char { + char **data; + struct array_dimension dimension; +}; + +struct cats_2d_array_double { + double **data; + struct array_dimension dimension; +}; + +struct cats_2d_array_char *new_2d_array_char(const struct array_dimension *dimension); + +struct cats_2d_array_double *new_2d_array_double(const struct array_dimension *dimension); + +__attribute__((unused)) struct cats_2d_array_float *new_2d_array_float(struct array_dimension *dimension); + +void cleanup_2d_array_char(struct cats_2d_array_char **grid); + +void cleanup_2d_array_float(struct cats_2d_array_float **grid); + +void cleanup_2d_array_double(struct cats_2d_array_double **grid); + +#define free_cats_grid(PTR_TO_GRID) _Generic((PTR_TO_GRID), \ + struct cats_2d_array_float **: cleanup_2d_array_float, \ + struct cats_2d_array_double **: cleanup_2d_array_double, \ + struct cats_2d_array_char **: cleanup_2d_array_char \ + )(PTR_TO_GRID) + +bool array_dimension_valid(const struct array_dimension *dimension); + +__attribute__((unused)) bool array_dimensions_match(const struct array_dimension *d1, const struct array_dimension *d2); + +void *new_raw_2d_array_from_dimension(const struct array_dimension *dimension, size_t member_size); + void cleanup_raw_2d_double_array(double ***data, int64_t rows); @@ -60,4 +115,4 @@ void *new_raw_2d_array(size_t rows, size_t cols, size_t size); void *new_raw_1d_array(size_t count, size_t size); -#endif // CATS_RAW_ARRAYS_H \ No newline at end of file +#endif //bdc_memory_H diff --git a/src/memory/raw_arrays.c b/libbdc/bdc_memory/raw_arrays.c similarity index 93% rename from src/memory/raw_arrays.c rename to libbdc/bdc_memory/raw_arrays.c index 93eca60d6b1de75bcbd5b19eabe4812ff7b363a7..6a19a296ab5b7dba305b97190f5234794bb15bec 100644 --- a/src/memory/raw_arrays.c +++ b/libbdc/bdc_memory/raw_arrays.c @@ -19,20 +19,16 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include <assert.h> #include <stddef.h> #include <stdlib.h> -#include <stdio.h> -#include <inttypes.h> -#include "raw_arrays.h" -#include "cats_memory.h" +#include "bdc_memory.h" void *new_raw_2d_array(size_t rows, size_t cols, size_t size) { - void **grid = calloc_or_die(rows, sizeof(void *)); + void **grid = calloc_or_die(rows, sizeof(void *)); // FIXME DANGER - for (cats_dt_coord row = 0; row < rows; row++) { + for (size_t row = 0; row < rows; row++) { grid[row] = calloc_or_die(cols, size); if (grid[row] == NULL) exit(EXIT_FAILURE); // should never happen, we would exit in calloc_or_die } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2bf1b6ad8c63fa00570e3adfeff8cf18fcb32a36..e371925d2de98e1b230a331d037562cc079a6055 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,4 @@ add_subdirectory(logging) -add_subdirectory(memory) add_subdirectory(cats) add_subdirectory(cats_time) add_subdirectory(cats_strings) diff --git a/src/cats/CMakeLists.txt b/src/cats/CMakeLists.txt index 00239ae79b9860e9a72cbc61f3233041b377a531..8b22d87d8b45477472fe06f06ea15ddfeddcd79f 100644 --- a/src/cats/CMakeLists.txt +++ b/src/cats/CMakeLists.txt @@ -321,15 +321,15 @@ set(CATS_SOURCES_MPI ) add_executable(cats cats.c) -target_link_libraries(libcats cats_logging cats_memory cats_strings cats_ini cats_csv) -target_link_libraries(cats libcats cats_logging cats_memory cats_strings cats_ini cats_csv) +target_link_libraries(libcats cats_logging bdc cats_strings cats_ini cats_csv) +target_link_libraries(cats libcats cats_logging bdc cats_strings cats_ini cats_csv) if (MSVC) # target_include_directories(cats PRIVATE ${GDAL_INCLUDE_DIRS}) # target_link_libraries(cats cats_logging cats_memory cats_strings cats_ini cats_csv ${GDAL_LIBRARIES}) else () - target_link_libraries(cats cats_logging cats_memory cats_strings cats_ini cats_csv) + target_link_libraries(cats cats_logging bdc cats_strings cats_ini cats_csv) endif () @@ -337,7 +337,7 @@ if (MPI_FOUND) add_executable(cats-mpi cats.c ${CATS_SOURCES_MPI}) - target_link_libraries(cats-mpi ${MPI_C_LIBRARIES} cats_logging cats_memory cats_strings cats_ini cats_csv libcats) + target_link_libraries(cats-mpi ${MPI_C_LIBRARIES} cats_logging bdc_memory cats_strings cats_ini cats_csv libcats) target_compile_options(cats-mpi PRIVATE -DUSEMPI) diff --git a/src/cats/actions/setup_actions.c b/src/cats/actions/setup_actions.c index 2868263b5fc71cecd377b7a7731a4630a730c13c..e3a1539c9cd1e45246f03c3c12a57cdc5b0e260e 100644 --- a/src/cats/actions/setup_actions.c +++ b/src/cats/actions/setup_actions.c @@ -26,12 +26,11 @@ #include "configuration/configuration.h" #include "actions/setup_actions.h" -#include "logging.h" #include "actions/cats_actions.h" #include "actions/process_inter_period_survival.h" #include "cats_strings/cats_strings.h" #include "dispersal/dispersal.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" void list_actions(const struct cats_configuration *conf) diff --git a/src/cats/configuration/configuration.c b/src/cats/configuration/configuration.c index 99560cc2c870cf5720a211e4e18666819b09d12b..9044c293aab151ffa74d9a5712af485b1df9bbf5 100644 --- a/src/cats/configuration/configuration.c +++ b/src/cats/configuration/configuration.c @@ -31,7 +31,7 @@ #include <stdio.h> #include <errno.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include <cats_ini/cats_ini.h> #include "configuration.h" diff --git a/src/cats/configuration/load_configuration_environments.c b/src/cats/configuration/load_configuration_environments.c index a49a67f078c8df3f82bff052eee6948ec2204376..08f0f70ff73125cee770102111959888435992ca 100644 --- a/src/cats/configuration/load_configuration_environments.c +++ b/src/cats/configuration/load_configuration_environments.c @@ -44,13 +44,15 @@ enum environment_variable_type get_environment_variable_type_from_string(const c void add_environment_variable_from_conf(struct cats_configuration *conf, struct cats_ini *ini, char *environment_section) { - struct cats_dimension *dimension = &conf->geometry.dimension; + struct array_dimension *dimension = &conf->geometry.dimension; char *name = remove_0th_token(environment_section, ":"); if (conf->command_line_options.no_input_rasters_required) { struct cats_environment *set = add_environment(conf, name, ENVIRONMENT_TYPE_SUITABILITY, NULL); - struct cats_environment_variable *env = add_environment_to_registry(&conf->environment_registry, "suitability", ENV_VAR_SUITABILITY, - 0, 0, "None", + struct cats_environment_variable *env = add_environment_to_registry(&conf->environment_registry, + "suitability", ENV_VAR_SUITABILITY, + "None", 0, + 0, dimension); add_to_environment(set, env); return; @@ -89,7 +91,8 @@ void add_environment_variable_from_conf(struct cats_configuration *conf, struct enum environment_variable_type type = get_environment_variable_type_from_string(type_name); struct cats_environment_variable *env = add_environment_to_registry(&conf->environment_registry, name, type, - interpolation, reload, filename_pattern, + filename_pattern, reload, + interpolation, dimension); diff --git a/src/cats/configuration/load_configuration_helper.c b/src/cats/configuration/load_configuration_helper.c index cc6e42237f13ff3bbecf798e5aea13d07a587ef6..2e9375712b0aae95a2e40057c6f957a48ec965ff 100644 --- a/src/cats/configuration/load_configuration_helper.c +++ b/src/cats/configuration/load_configuration_helper.c @@ -22,10 +22,9 @@ #include <assert.h> #include <string.h> #include "cats_global.h" -#include <memory/raw_arrays.h> +#include "bdc_memory/bdc_memory.h" #include "actions/setup.h" #include "load_configuration_helper.h" -#include <memory/cats_memory.h> #include "dispersal/dispersal.h" #include "data/species_parameters.h" diff --git a/src/cats/configuration/load_configuration_species_params.c b/src/cats/configuration/load_configuration_species_params.c index e2504e8c6595c2c6e296832e29625dbd82f59bf1..a7418dde57b2746150b0e7dbf16f2dd21bbe6807 100644 --- a/src/cats/configuration/load_configuration_species_params.c +++ b/src/cats/configuration/load_configuration_species_params.c @@ -28,7 +28,7 @@ #include <string.h> #include <math.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include <cats_ini/cats_ini.h> #include <logging/logging.h> diff --git a/src/cats/data/cats_datatypes.h b/src/cats/data/cats_datatypes.h index e912a70c562a229e34f61ee9dcef1ddccae209a7..d2bba5466e47223b70793c29c3c30a8da695e390 100644 --- a/src/cats/data/cats_datatypes.h +++ b/src/cats/data/cats_datatypes.h @@ -49,11 +49,6 @@ typedef int32_t cats_dt_coord; ///< data type for coordinates (grid #define CATS_MAX_COORD INT32_MAX -/// @brief Struct for grid dimensions (number of rows and columns) -struct cats_dimension { - cats_dt_coord rows; - cats_dt_coord cols; -}; /// @brief Struct for grid coordinates (row and column) struct cats_coordinates { diff --git a/src/cats/data/cats_global.c b/src/cats/data/cats_global.c index d2179bad9ae8bc190d10c15d37281ef86100ca83..d3a574978bda439c226640c80d2ed34b690a8f0b 100644 --- a/src/cats/data/cats_global.c +++ b/src/cats/data/cats_global.c @@ -23,7 +23,7 @@ #include "cats_global.h" #include "misc/misc.h" #include "defaults.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include <logging/logging.h> #include <stdlib.h> diff --git a/src/cats/data/cats_grid.h b/src/cats/data/cats_grid.h index 131fbf9caa069d3bdff645013af706eb04a34637..043bc208ac3366c670228254c6d8ccb7510d95bb 100644 --- a/src/cats/data/cats_grid.h +++ b/src/cats/data/cats_grid.h @@ -27,6 +27,7 @@ #include "data/cats_datatypes.h" #include "stats/statistics.h" #include "defaults.h" +#include "bdc_memory/bdc_memory.h" struct cats_configuration; struct module_grid_data { @@ -43,7 +44,7 @@ struct cats_grid { /** @name spatial information **/ - const struct cats_dimension dimension; + const struct array_dimension dimension; struct cats_environment *suitability; /** @name hybrid mode only: suitability information **/ diff --git a/src/cats/data/simulation_geometry.c b/src/cats/data/simulation_geometry.c index 75dee4b96af134b36538038702c65298358687fc..ed9e0b14fe8659c2876789622156f3cdd0ef6555 100644 --- a/src/cats/data/simulation_geometry.c +++ b/src/cats/data/simulation_geometry.c @@ -46,7 +46,7 @@ void init_simulation_geometry(struct simulation_geometry *geo) } -void check_raster_dimensions(struct cats_dimension to_check, struct cats_dimension reference) +void check_raster_dimensions(struct array_dimension to_check, struct array_dimension reference) { if (to_check.cols != reference.cols || to_check.rows != reference.rows) { log_message(LOG_ERROR, "GDAL gdal_raster dimensions do not match expected dimensions: " diff --git a/src/cats/data/simulation_geometry.h b/src/cats/data/simulation_geometry.h index 57de1025dbdf1e291f21620e885b4bbcd01d145d..be25d3c7d751d7603c1c6b955e1b1c4d9727fc17 100644 --- a/src/cats/data/simulation_geometry.h +++ b/src/cats/data/simulation_geometry.h @@ -22,13 +22,13 @@ #ifndef CATS_SIMULATION_GEOMETRY_H #define CATS_SIMULATION_GEOMETRY_H - +#include "bdc_memory/bdc_memory.h" #include "cats_datatypes.h" struct simulation_geometry { bool gdal_registered; - struct cats_dimension dimension; - struct cats_dimension dimension_orig; + struct array_dimension dimension; + struct array_dimension dimension_orig; cats_dt_coord row_offset; cats_dt_coord col_offset; double origin_x; diff --git a/src/cats/debug/debug.c b/src/cats/debug/debug.c index c2d6ed8046441a56f3e4bad195a4ac3803de7fe0..ebe381a57c45c402db821cb9d3a75fa58db646f9 100644 --- a/src/cats/debug/debug.c +++ b/src/cats/debug/debug.c @@ -20,10 +20,8 @@ // #include "cats_global.h" -#include <stdint.h> #include <stdarg.h> -#include <memory/raw_arrays.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "debug/debug.h" #include "threading/threading-helpers.h" #include <cats_strings/cats_strings.h> diff --git a/src/cats/debug/debug_vital_rates.c b/src/cats/debug/debug_vital_rates.c index 7219c57d52007f0733bf8a941f89bbfd346f5f8c..ca9da40274bbe54f90f692b0b6daea0a60d91f7e 100644 --- a/src/cats/debug/debug_vital_rates.c +++ b/src/cats/debug/debug_vital_rates.c @@ -22,7 +22,7 @@ #include "debug_vital_rates.h" #include "data/species_parameters.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "inline_carrying_capacity.h" #include "grids/grid_setup.h" #include "paths/directory_helper.h" diff --git a/src/cats/dispersal/dispersal.c b/src/cats/dispersal/dispersal.c index 92adefee7b7f13c00b45bdb3d58f1734fc3a8e5e..3f0aeaf2d272debe8513a2ccb036f6f3b700431e 100644 --- a/src/cats/dispersal/dispersal.c +++ b/src/cats/dispersal/dispersal.c @@ -47,7 +47,7 @@ #include "mpi/mpi_cats.h" #endif -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "inline_overlays.h" // ANSATZPUNKTE diff --git a/src/cats/dispersal/dispersal_helper.c b/src/cats/dispersal/dispersal_helper.c index 45d2fb669c1e7286545a9417607cf71d16e5389a..df26f0cfe80cc53c33b0f70672e69be8d4a92b2d 100644 --- a/src/cats/dispersal/dispersal_helper.c +++ b/src/cats/dispersal/dispersal_helper.c @@ -26,8 +26,7 @@ #include "dispersal.h" #include "misc/cats_random.h" #include "threading/threading-helpers.h" -#include "memory/cats_memory.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" cats_dt_rates get_average_local_dispersal(const struct cats_dispersal *dispersal, const struct cats_configuration *conf) diff --git a/src/cats/environment/environment.c b/src/cats/environment/environment.c index 833be2cfc18bf501116b367303376db06ab3206b..353a79783c1cd82b153359f0680f06f7ff19be5e 100644 --- a/src/cats/environment/environment.c +++ b/src/cats/environment/environment.c @@ -152,7 +152,7 @@ load_environment_raster(struct cats_configuration *conf, struct cats_environment raster->interpolation_type = type; raster->environment_type = environment_type; if (raster->values == NULL) { - raster->values = new_raw_2d_array_from_dimension(conf->geometry.dimension, sizeof(cats_dt_environment)); + raster->values = new_raw_2d_array_from_dimension(&conf->geometry.dimension, sizeof(cats_dt_environment)); } struct raster_load_wrapper wrapper = {.geometry = &conf->geometry, .target_environment = raster->values, diff --git a/src/cats/environment/environment_rasters.c b/src/cats/environment/environment_rasters.c index 1c44aca4b6d471c06c9008657b4887ae3affb3cf..b5e8016f0661c5636eac8d8eb4c76c02f80488f0 100644 --- a/src/cats/environment/environment_rasters.c +++ b/src/cats/environment/environment_rasters.c @@ -50,7 +50,7 @@ void create_raster_if_needed(struct cats_configuration *conf, struct cats_enviro log_message(LOG_INFO, "\tinitializing empty grid for <%s>", get_raster_type_name_specific(raster)); log_message(LOG_DEBUG, "%s: ALLOCATING NEW GRID NOW", __func__); - raster->values = new_raw_2d_array_from_dimension(conf->geometry.dimension, sizeof(cats_dt_environment)); + raster->values = new_raw_2d_array_from_dimension(&conf->geometry.dimension, sizeof(cats_dt_environment)); raster->dimension.rows = conf->geometry.dimension.rows; raster->dimension.cols = conf->geometry.dimension.cols; diff --git a/src/cats/environment/environment_rasters.h b/src/cats/environment/environment_rasters.h index 6e38f42b8509bf17c365090f7aace73d1e50ee7f..6cb05c5ae5a39913dc4187f56f11bcbf92e4de2a 100644 --- a/src/cats/environment/environment_rasters.h +++ b/src/cats/environment/environment_rasters.h @@ -23,6 +23,7 @@ #define CATS_ENVIRONMENT_RASTERS_H #include "data/cats_datatypes.h" +#include "bdc_memory/bdc_memory.h" struct cats_configuration; @@ -55,7 +56,7 @@ enum environment_type { struct cats_environment_raster { cats_dt_environment **values; //!< the values as 2D-grid - struct cats_dimension dimension; + struct array_dimension dimension; enum interpolation_type interpolation_type; //!< are we the start, end or current set of values? enum environment_variable_type environment_type; int year; //!< temporal information: which year is loaded in \ref cats_suitability.values? INT_MIN for unknown or not loaded diff --git a/src/cats/environment/environment_registry.c b/src/cats/environment/environment_registry.c index e7898d6ce7c13a32335cde0fc70ebb38ade287e2..fa1f606830009413903de358d4d29dedf73d1a14 100644 --- a/src/cats/environment/environment_registry.c +++ b/src/cats/environment/environment_registry.c @@ -24,7 +24,7 @@ #include <string.h> #include <limits.h> #include "environment/environment_structures.h" -#include "memory/arrays.h" +#include "bdc_memory/bdc_memory.h" #include <logging/logging.h> void reset_environment_registry(struct cats_environment_registry *reg) @@ -45,9 +45,8 @@ char *get_suitability_name_from_species(const char *name) struct cats_environment_variable * add_environment_to_registry(struct cats_environment_registry *registry, const char *name, - enum environment_variable_type type, - int32_t interpolation, int32_t reload_interval, - const char *file_name_pattern, const struct cats_dimension *dimension) + enum environment_variable_type type, const char *file_name_pattern, int32_t reload_interval, + int32_t interpolation, const struct array_dimension *dimension) { if (registry->name == NULL) { log_message(LOG_ERROR, "%s: name variable is NULL!", __func__); @@ -117,7 +116,7 @@ add_environment_to_registry(struct cats_environment_registry *registry, const ch env_var->current.quiet = false; env_var->start.quiet = false; env_var->end.quiet = false; - cats_dt_environment **tmp = new_raw_2d_array_from_dimension(*dimension, sizeof(cats_dt_environment)); + cats_dt_environment **tmp = new_raw_2d_array_from_dimension(dimension, sizeof(cats_dt_environment)); env_var->current.values = tmp; env_var->end.values = NULL; env_var->start.values = NULL; diff --git a/src/cats/environment/environment_registry.h b/src/cats/environment/environment_registry.h index 6735356875615a8bf298ffb6e545b9270656f540..1d4680f2160cc46b354b6d2dd67ebf41671ad086 100644 --- a/src/cats/environment/environment_registry.h +++ b/src/cats/environment/environment_registry.h @@ -35,9 +35,8 @@ char *get_suitability_name_from_species(const char *name); struct cats_environment_variable * add_environment_to_registry(struct cats_environment_registry *registry, const char *name, - enum environment_variable_type type, - int32_t interpolation, int32_t reload_interval, const char *file_name_pattern, - const struct cats_dimension *dimension); + enum environment_variable_type type, const char *file_name_pattern, int32_t reload_interval, + int32_t interpolation, const struct array_dimension *dimension); struct cats_environment_variable *get_environment_from_registry(struct cats_environment_registry *reg, char *name); diff --git a/src/cats/environment/environment_set.c b/src/cats/environment/environment_set.c index f62b1f908f96362ed408507a70f646bb25605fa3..7e5f6b0662ebd9f4e8fb14169b6220304fc7ca51 100644 --- a/src/cats/environment/environment_set.c +++ b/src/cats/environment/environment_set.c @@ -25,7 +25,7 @@ #include "configuration/configuration.h" #include "environment/environment.h" #include "environment_set.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "environment/glm.h" #include "configuration/print_configuration.h" diff --git a/src/cats/environment/load_environment.c b/src/cats/environment/load_environment.c index 3fa2f6ef0e4a89c350a551e9c4ac56595ce8160a..c1324c5583a68fa3d4859be34a9db7bab54c862b 100644 --- a/src/cats/environment/load_environment.c +++ b/src/cats/environment/load_environment.c @@ -37,8 +37,8 @@ #include "logging.h" #include "environment.h" #include "misc/cats_maths_inline.h" -#include "../../memory/arrays.h" -#include "../../memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" + #include "grids/gdal_save.h" #include "inline.h" #include "paths/paths.h" @@ -146,7 +146,7 @@ load_environment_if_needed(struct cats_configuration *conf, struct cats_environm "%s: loading interpolated %s %s for year %d (interpolated between %d and %d)", short_name, name, environment->pattern, time, start, end); load_environment_interpolated(conf, environment, start, end, time); - + } } @@ -154,7 +154,7 @@ load_environment_if_needed(struct cats_configuration *conf, struct cats_environm void save_glm(struct cats_configuration *conf, const struct cats_environment *env, int32_t time) { - double **values = new_raw_2d_array_from_dimension(conf->geometry.dimension, sizeof(double)); + double **values = new_raw_2d_array_from_dimension(&conf->geometry.dimension, sizeof(double)); struct cats_vital_rate rate_info = {0}; rate_info.environment_set = (struct cats_environment *) env; rate_info.density = NO_DENSITY_DEP; diff --git a/src/cats/grids/cats_grid.c b/src/cats/grids/cats_grid.c index 04f9b4dedc6f4ed68230b77b53cf69893bbc0357..9665728c33dee67cfa59c6909ff9b2d944d3d439 100644 --- a/src/cats/grids/cats_grid.c +++ b/src/cats/grids/cats_grid.c @@ -42,7 +42,7 @@ #include "stats/grid_stats.h" #include "gdal_load.h" #include "grid_setup.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "misc/cats_random.h" #ifdef USEMPI @@ -142,7 +142,7 @@ create_and_initialize_grid(struct cats_configuration *conf, const int32_t id, st } -void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, struct cats_dimension dimension, int id) +void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, struct array_dimension dimension, int id) { assert(conf != NULL); assert(grid != NULL); @@ -217,7 +217,7 @@ void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, st } -int64_t raster_cell_count(struct cats_dimension raster) +int64_t raster_cell_count(struct array_dimension raster) { assert(raster.rows >= 0); assert(raster.cols >= 0); @@ -350,7 +350,7 @@ void initialize_grid_stats(struct cats_grid *grid, struct cats_configuration *co { assert(grid != NULL); init_statistics(&grid->stats, &conf->stats_registry); - grid->stats.has_been_populated = (char **) new_raw_2d_array_from_dimension(grid->dimension, sizeof(char)); + grid->stats.has_been_populated = (char **) new_raw_2d_array_from_dimension(&grid->dimension, sizeof(char)); char *filename = get_grid_stat_filename(grid, conf); diff --git a/src/cats/grids/cats_grid.h b/src/cats/grids/cats_grid.h index 4a6ff2ee10ee83a6bc6adbcce969ee31008c66d2..2fc345994a9ae60907f6f4e04d405413bf3c9cb9 100644 --- a/src/cats/grids/cats_grid.h +++ b/src/cats/grids/cats_grid.h @@ -25,9 +25,9 @@ #include "data/cats_grid.h" #include "configuration/configuration.h" -int64_t raster_cell_count(struct cats_dimension raster); +int64_t raster_cell_count(struct array_dimension raster); -void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, struct cats_dimension dimension, int id); +void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, struct array_dimension dimension, int id); void cleanup_grid(struct cats_grid *grid); @@ -41,5 +41,5 @@ void cleanup_array_of_grids(struct cats_grid ***grid, int grid_count); void do_all_grids(struct cats_grid **grids, struct cats_configuration *conf, grid_function function); -void check_raster_dimensions(struct cats_dimension to_check, struct cats_dimension reference); +void check_raster_dimensions(struct array_dimension to_check, struct array_dimension reference); diff --git a/src/cats/grids/gdal_helper.c b/src/cats/grids/gdal_helper.c index 7173136b04698a9499190cc200b8f24fdbf0ea89..403df5601e4fe85ec1911094ce27f14dc515e69d 100644 --- a/src/cats/grids/gdal_helper.c +++ b/src/cats/grids/gdal_helper.c @@ -207,7 +207,7 @@ void get_projection_from_file(struct simulation_geometry *geometry, const char * GDALDatasetH -create_gdal_dataset(const struct simulation_geometry *geometry, const char *filename, struct cats_dimension dimension, +create_gdal_dataset(const struct simulation_geometry *geometry, const char *filename, struct array_dimension dimension, int bands, GDALDataType datatype, const struct cats_configuration *conf) { @@ -240,7 +240,7 @@ create_gdal_dataset(const struct simulation_geometry *geometry, const char *file void set_gdal_dataset_geo_info(GDALDatasetH dataset, const struct simulation_geometry *geometry, - const struct cats_dimension *offset) + const struct array_dimension *offset) { assert(geometry != NULL); assert(dataset != NULL); diff --git a/src/cats/grids/gdal_helper.h b/src/cats/grids/gdal_helper.h index a8f4cf5ea2b283131e3ab80ea86cc1f8469d7cc9..f18faedbac69ac83a4445a8799aa9e13c7c63ab0 100644 --- a/src/cats/grids/gdal_helper.h +++ b/src/cats/grids/gdal_helper.h @@ -46,13 +46,13 @@ void set_gdal_dataset_metadata(GDALDatasetH dataset, const char *name, const cha void set_gdal_band_metadata(GDALRasterBandH band, GDALColorInterp colorint, const char *description); void set_gdal_dataset_geo_info(GDALDatasetH dataset, const struct simulation_geometry *geometry, - const struct cats_dimension *offset); + const struct array_dimension *offset); void gdal_destroy(void); void load_global_geometry(struct simulation_geometry *geometry, const char *filename); GDALDatasetH -create_gdal_dataset(const struct simulation_geometry *geometry, const char *filename, struct cats_dimension dimension, +create_gdal_dataset(const struct simulation_geometry *geometry, const char *filename, struct array_dimension dimension, int bands, GDALDataType datatype, const struct cats_configuration *conf); diff --git a/src/cats/grids/gdal_load.c b/src/cats/grids/gdal_load.c index c52e27aa5fb795c75635fba5c0f14d86130f8990..78b6d82552eb2da06a67e4a123d0393cc1614c58 100644 --- a/src/cats/grids/gdal_load.c +++ b/src/cats/grids/gdal_load.c @@ -221,8 +221,8 @@ get_double_values_from_gdal(struct simulation_geometry *geometry, const char *fi cats_dt_coord rows = GDALGetRasterYSize(dataset); cats_dt_coord cols = GDALGetRasterXSize(dataset); - struct cats_dimension dim = {.rows = rows, .cols=cols}; - struct cats_2d_array_double *raster = new_2d_array_double(dim); + struct array_dimension dim = {.rows = rows, .cols=cols}; + struct cats_2d_array_double *raster = new_2d_array_double(&dim); if (raster->dimension.cols <= 0 || raster->dimension.rows <= 0) { diff --git a/src/cats/grids/gdal_load.h b/src/cats/grids/gdal_load.h index b53119198d717eac3a8e8b079a1d556541c79ce1..6f51eacc9d5716c2638cb7d69edea19ed0063e6b 100644 --- a/src/cats/grids/gdal_load.h +++ b/src/cats/grids/gdal_load.h @@ -25,7 +25,7 @@ #include "data/cats_datatypes.h" #include "configuration/configuration.h" #include "grid_wrapper.h" -#include <memory/arrays.h> +#include "bdc_memory/bdc_memory.h" #include "data/simulation_geometry.h" enum RASTER_LOAD_TYPE { diff --git a/src/cats/grids/gdal_save.c b/src/cats/grids/gdal_save.c index 26e395df1fe9fb8af811cf07ff1d3590f8248128..847f30a3f42c4b5ec46ef2954956ce807a206358 100644 --- a/src/cats/grids/gdal_save.c +++ b/src/cats/grids/gdal_save.c @@ -26,12 +26,12 @@ #include "gdal_save.h" #include "data/cats_grid.h" #include "configuration/configuration.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "logging.h" #include "paths/paths.h" #include "gdal_load.h" #include "gdal_helper.h" -#include "memory/arrays.h" + #include "paths/output_paths.h" #include "inline.h" #include "inline_vital_rates.h" @@ -124,7 +124,7 @@ void *save_dispersed_seeds_to_gdal(struct cats_grid *grid, struct cats_configura char *filename = get_current_dispersed_seeds_filename(grid, conf); - double **seeds = new_raw_2d_array_from_dimension(grid->dimension, + double **seeds = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(double)); const int32_t rows = grid->dimension.rows; const int32_t cols = grid->dimension.cols; @@ -163,7 +163,7 @@ void *save_seeds_to_gdal(struct cats_grid *grid, struct cats_configuration *conf for (int i = 0; i < seed_persistence; i++) { char *filename = get_current_seeds_filename(grid, conf, i); - int32_t **seeds = new_raw_2d_array_from_dimension(grid->dimension, + int32_t **seeds = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(int32_t)); //new_int32t_grid(grid->rows, grid->cols); const int32_t rows = grid->dimension.rows; const int32_t cols = grid->dimension.cols; @@ -226,7 +226,7 @@ void *save_juveniles_to_gdal(struct cats_grid *grid, struct cats_configuration * } } } - struct cats_dimension dim = {.rows = rows, .cols = cols}; + struct array_dimension dim = {.rows = rows, .cols = cols}; struct grid_wrapper data = gridwrapper(juvs, dim); save_grid_to_gdal(&data, GDT_Int32, conf, filename, conf->param[id].species_name); free(filename); diff --git a/src/cats/grids/grid_converters.c b/src/cats/grids/grid_converters.c index b6c40f25254cdc96055b216410ac0319191a60b2..e65ad0058fa9f11e5f845f67d2ee895847ad87c3 100644 --- a/src/cats/grids/grid_converters.c +++ b/src/cats/grids/grid_converters.c @@ -24,7 +24,7 @@ #include "data/cats_grid.h" #include "configuration/configuration.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "logging.h" #include "actions/cats_actions.h" @@ -36,7 +36,7 @@ cats_dt_environment **convert_double_to_environment(const struct cats_2d_array_double *in_grid) { log_message(LOG_DEBUG, "%s: ALLOCATING NEW GRID NOW", __func__); - cats_dt_environment **array = new_raw_2d_array_from_dimension(in_grid->dimension, sizeof(cats_dt_environment)); + cats_dt_environment **array = new_raw_2d_array_from_dimension(&in_grid->dimension, sizeof(cats_dt_environment)); const cats_dt_coord rows = in_grid->dimension.rows; const cats_dt_coord cols = in_grid->dimension.cols; for (int32_t r = 0; r < rows; r++) { diff --git a/src/cats/grids/grid_converters.h b/src/cats/grids/grid_converters.h index a070da1772a00ce74a4ccfbfa6a695aafb3cac69..526985a22c9ba04f8d42ca17a5f94be787ae8000 100644 --- a/src/cats/grids/grid_converters.h +++ b/src/cats/grids/grid_converters.h @@ -21,7 +21,7 @@ #pragma once -#include <memory/arrays.h> +#include "bdc_memory/bdc_memory.h" cats_dt_environment **convert_double_to_environment(const struct cats_2d_array_double *in_grid); diff --git a/src/cats/grids/grid_setup.c b/src/cats/grids/grid_setup.c index 63d74fc311bf5974a12b88f60a3045b11a3220af..365cff4377e259ed219a26c0d37ccc1d326213fc 100644 --- a/src/cats/grids/grid_setup.c +++ b/src/cats/grids/grid_setup.c @@ -24,7 +24,7 @@ #include "grid_setup.h" #include "logging.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" void setup_grid_seed_structures(const struct cats_configuration *conf, struct cats_grid *const grid, int grid_id) @@ -44,9 +44,9 @@ void setup_grid_seed_structures(const struct cats_configuration *conf, struct ca exit(EXIT_FAILURE); } - grid->dispersed_seeds = (cats_dt_seeds **) new_raw_2d_array_from_dimension(grid->dimension, + grid->dispersed_seeds = (cats_dt_seeds **) new_raw_2d_array_from_dimension(&grid->dimension, sizeof(cats_dt_seeds)); - grid->seeds_produced = (cats_dt_seeds **) new_raw_2d_array_from_dimension(grid->dimension, + grid->seeds_produced = (cats_dt_seeds **) new_raw_2d_array_from_dimension(&grid->dimension, sizeof(cats_dt_seeds)); grid->seed_bank = calloc_or_die(rows, sizeof(cats_dt_seeds **)); diff --git a/src/cats/grids/grid_wrapper.c b/src/cats/grids/grid_wrapper.c index 2fd585ab433dedc7cf0d3b87aa9ce37e2d361ac1..ab06ac180fbaadfa13faac16096c0de1ee3bd387 100644 --- a/src/cats/grids/grid_wrapper.c +++ b/src/cats/grids/grid_wrapper.c @@ -25,7 +25,7 @@ #include "grid_wrapper.h" -struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.data_int32 = data; @@ -37,7 +37,7 @@ struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct cats_dimensio } -struct grid_wrapper gridwrapper_from_double(double **data, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_from_double(double **data, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.data_double = data; @@ -49,7 +49,7 @@ struct grid_wrapper gridwrapper_from_double(double **data, struct cats_dimension } -struct grid_wrapper gridwrapper_from_float(float **data, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_from_float(float **data, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.offset.cols = 0; @@ -64,7 +64,7 @@ struct grid_wrapper gridwrapper_from_float(float **data, struct cats_dimension d } -struct grid_wrapper gridwrapper_from_env(cats_dt_environment **data, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_from_env(cats_dt_environment **data, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.data_float = data; @@ -77,7 +77,7 @@ struct grid_wrapper gridwrapper_from_env(cats_dt_environment **data, struct cats } -struct grid_wrapper gridwrapper_1d(void *data, GDALDataType dt, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_1d(void *data, GDALDataType dt, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.nodata = -9999; diff --git a/src/cats/grids/grid_wrapper.h b/src/cats/grids/grid_wrapper.h index 0bde4522cfcc9920247bdf106d5134613f1c8178..3668443ac6395cc5b8a4cc374a27b772a72f0d67 100644 --- a/src/cats/grids/grid_wrapper.h +++ b/src/cats/grids/grid_wrapper.h @@ -39,8 +39,8 @@ struct grid_wrapper { char *data_char_1d; double *data_double_1d; - struct cats_dimension dimension; - struct cats_dimension offset; + struct array_dimension dimension; + struct array_dimension offset; GDALDataType dt; @@ -49,13 +49,13 @@ struct grid_wrapper { }; -struct grid_wrapper gridwrapper_from_float(float **data, struct cats_dimension dimension); +struct grid_wrapper gridwrapper_from_float(float **data, struct array_dimension dimension); -struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct cats_dimension dimension); +struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct array_dimension dimension); -struct grid_wrapper gridwrapper_from_double(double **data, struct cats_dimension dimension); +struct grid_wrapper gridwrapper_from_double(double **data, struct array_dimension dimension); -struct grid_wrapper gridwrapper_1d(void *data, GDALDataType dt, struct cats_dimension dimension); +struct grid_wrapper gridwrapper_1d(void *data, GDALDataType dt, struct array_dimension dimension); #define gridwrapper(DATA, DIMENSION) _Generic((DATA), \ int32_t **: gridwrapper_from_int32t, \ diff --git a/src/cats/inline.h b/src/cats/inline.h index 1c29c2829d10113bcdb9b49ebe295c2d4786cd3c..dd1e76fd38ff240a8d5a3ca5d81e1882f8dbf83e 100644 --- a/src/cats/inline.h +++ b/src/cats/inline.h @@ -35,7 +35,7 @@ #include "logging.h" #include "overlays/overlays.h" #include "misc/cats_maths_inline.h" -#include "memory/arrays.h" +#include "bdc_memory/bdc_memory.h" #include "inline_carrying_capacity.h" #include "inline_population.h" diff --git a/src/cats/inline_population.h b/src/cats/inline_population.h index 7c1ba19c66dc7405fdbce7138308cfd32e1f54d2..20937d8d3b768e025fd73c42f91a824d3b5ba9ab 100644 --- a/src/cats/inline_population.h +++ b/src/cats/inline_population.h @@ -259,7 +259,7 @@ get_population_all_classes_ts(const struct cats_grid **grids, cats_dt_coord row, #include "defaults.h" #include "environment/glm.h" #include "cats_global.h" -#include "../memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "plants/plant_rates.h" #include "data/cats_grid.h" #include "configuration/configuration.h" @@ -268,7 +268,6 @@ get_population_all_classes_ts(const struct cats_grid **grids, cats_dt_coord row, #include "logging.h" #include "overlays/overlays.h" #include "misc/cats_maths_inline.h" -#include "memory/arrays.h" #include "inline_vital_rates.h" #include "inline_overlays.h" #include "inline_carrying_capacity.h" diff --git a/src/cats/lambda/eigen_power.c b/src/cats/lambda/eigen_power.c index 7fc8adda42856653bc2921dd5f5f45aac94cd564..9768dde6b80831189367609af7db1eee8a83f6ce 100644 --- a/src/cats/lambda/eigen_power.c +++ b/src/cats/lambda/eigen_power.c @@ -23,8 +23,7 @@ #include <stdbool.h> #include <stdlib.h> #include "eigen_power.h" -#include "logging/logging.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" static double *ep_empty_vec(int N) diff --git a/src/cats/lambda/lambda-grid.c b/src/cats/lambda/lambda-grid.c index 7cde1c31f9c71caa4b2da0051da18710236397af..42ea357d0dbc5dbf63eb2a5ba7bcc7d42d47d96d 100644 --- a/src/cats/lambda/lambda-grid.c +++ b/src/cats/lambda/lambda-grid.c @@ -25,7 +25,7 @@ #include "inline.h" #include "grids/gdal_save.h" #include "environment/environment_set.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "lambda.h" #include "inline_vital_rates.h" #include "inline_overlays.h" @@ -127,7 +127,7 @@ void save_lambda_grid(struct cats_configuration *conf, struct cats_grid *grid, b cats_dt_coord cols = conf->geometry.dimension.cols; - double **lambdas = new_raw_2d_array_from_dimension(grid->dimension, + double **lambdas = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(double)); log_message(LOG_IMPORTANT, "Calculating lambda grid"); cats_dt_rates max_cc = get_vital_rate_maximum(&grid->param.carrying_capacity); diff --git a/src/cats/lambda/leslie_matrix.c b/src/cats/lambda/leslie_matrix.c index 2128d84b4b7906c1debc360b49381c144a77838c..e1a858201b7a2c4c927c5d514f6cf04775b04911 100644 --- a/src/cats/lambda/leslie_matrix.c +++ b/src/cats/lambda/leslie_matrix.c @@ -23,7 +23,7 @@ #include <stdio.h> #include "dispersal/dispersal.h" #include "leslie_matrix.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "logging/logging.h" #include "configuration/configuration.h" #include "inline.h" diff --git a/src/cats/lambda/matrix_helpers.c b/src/cats/lambda/matrix_helpers.c index 9c653b68838cbc029f45dfc097a6d750e4160ccd..c054e992f0a9c06fb3b675d4f1f0ce60360e22d1 100644 --- a/src/cats/lambda/matrix_helpers.c +++ b/src/cats/lambda/matrix_helpers.c @@ -21,9 +21,8 @@ // #include <assert.h> -#include <stdio.h> #include <logging/logging.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "cats_global.h" diff --git a/src/cats/misc/cats_maths.c b/src/cats/misc/cats_maths.c index fc65edffcfec8f05792005aa263de82671b1b8ee..e932b4eb48f86e56c4480afc32032c44d353e1cb 100644 --- a/src/cats/misc/cats_maths.c +++ b/src/cats/misc/cats_maths.c @@ -23,8 +23,7 @@ #include <assert.h> #include "cats_maths.h" -#include "../../memory/cats_memory.h" -#include "../../memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "logging.h" diff --git a/src/cats/misc/debug.c b/src/cats/misc/debug.c index b6d8d73f44d5437a29e4446bb81d37ee371cf946..f86e57bcf73aae439cb3d99d0265bdff5a830d02 100644 --- a/src/cats/misc/debug.c +++ b/src/cats/misc/debug.c @@ -23,7 +23,7 @@ #include "data/cats_grid.h" #include "misc.h" #include "inline.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" void diff --git a/src/cats/misc/output.c b/src/cats/misc/output.c index 48919cadd44fa9b9bbb9d7922541b7ab60418c38..df52926a4040efd5f1bf14066c597ca0c357c904 100644 --- a/src/cats/misc/output.c +++ b/src/cats/misc/output.c @@ -32,7 +32,7 @@ void -save_1d_grid(double *src, struct cats_dimension dimension, char *filename, struct cats_configuration *conf) +save_1d_grid(double *src, struct array_dimension dimension, char *filename, struct cats_configuration *conf) { struct grid_wrapper data = gridwrapper_1d(src, GDT_Float64, dimension); @@ -40,8 +40,8 @@ save_1d_grid(double *src, struct cats_dimension dimension, char *filename, struc } -void save_2d_grid(float **src, struct cats_dimension dimension, char *filename, struct cats_configuration *conf, - struct cats_dimension *offset) +void save_2d_grid(float **src, struct array_dimension dimension, char *filename, struct cats_configuration *conf, + struct array_dimension *offset) { struct grid_wrapper data = gridwrapper(src, dimension); if (offset != NULL) { diff --git a/src/cats/misc/output.h b/src/cats/misc/output.h index bf39bbcf3b385d7a03bc724f23cdd749335d38e5..b484d4651bad1fd45d7639f3f478ffc463c095e7 100644 --- a/src/cats/misc/output.h +++ b/src/cats/misc/output.h @@ -28,10 +28,10 @@ void -save_1d_grid(double *src, struct cats_dimension dimension, char *filename, struct cats_configuration *conf); +save_1d_grid(double *src, struct array_dimension dimension, char *filename, struct cats_configuration *conf); -void save_2d_grid(float **src, struct cats_dimension dimension, char *filename, struct cats_configuration *conf, - struct cats_dimension *offset); +void save_2d_grid(float **src, struct array_dimension dimension, char *filename, struct cats_configuration *conf, + struct array_dimension *offset); #endif \ No newline at end of file diff --git a/src/cats/modules/module_header.h b/src/cats/modules/module_header.h index 7de3891be5df4d93c348209c13728c47c59ad0ed..9f6f2c52db2973b8db72aaef652525a0ebbc908d 100644 --- a/src/cats/modules/module_header.h +++ b/src/cats/modules/module_header.h @@ -28,7 +28,7 @@ #include <assert.h> #include "logging.h" #include "data/cats_grid.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" extern int CATS_MODULE_ID_INTERNAL; extern void *CATS_MODULE_DATA_INTERNAL; diff --git a/src/cats/mpi/mpi_cats.c b/src/cats/mpi/mpi_cats.c index 92b983df65935e6bc7c45676f2d5f20de3d48543..81dd18393f9714dcde439dbfa1aad1a369272932 100644 --- a/src/cats/mpi/mpi_cats.c +++ b/src/cats/mpi/mpi_cats.c @@ -31,11 +31,10 @@ #include "configuration/configuration.h" #include "misc/misc.h" #include "misc/output.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "paths/paths.h" #include "grids/gdal_load.h" #include "mpi_cats.h" -#include "memory/cats_memory.h" #include "mpi/mpi_grid_helpers.h" diff --git a/src/cats/mpi/mpi_debug.c b/src/cats/mpi/mpi_debug.c index 86fc215052a170e5ef4b9bf81947583b600943ca..1570c2c220b55aaf1aeb217d04b3a96c51279dea 100644 --- a/src/cats/mpi/mpi_debug.c +++ b/src/cats/mpi/mpi_debug.c @@ -61,7 +61,7 @@ char *dispersed_seeds_mpi_local_filename(const struct cats_configuration *conf) void mpi_save_locally_dispersed_seeds(struct cats_configuration *conf, struct cats_grid *grid) { char *filename = dispersed_seeds_mpi_local_filename(conf); - struct cats_dimension offset = {0}; + struct array_dimension offset = {0}; offset.cols = 0; int radius = 0; @@ -72,7 +72,7 @@ void mpi_save_locally_dispersed_seeds(struct cats_configuration *conf, struct ca log_message(LOG_RAW, "rank %d, rows %d cols %d, rows before %d, rows after %d, row offset %d\n\n", conf->mpi.world_rank, grid->dimension.rows, grid->dimension.cols, rows_before, rows_after, conf->geometry.row_offset); - struct cats_dimension dimension; + struct array_dimension dimension; dimension.cols = grid->dimension.cols; dimension.rows = grid->dimension.rows + rows_before + rows_after; save_2d_grid(grid->seeds_0_all, dimension, filename, conf, &offset); diff --git a/src/cats/mpi/mpi_grid_helpers.c b/src/cats/mpi/mpi_grid_helpers.c index fdb04b339cf13d4b8737fc1987836e6a3ed40a00..f30cad2af1359f17aaa5f8f2e4ba918e8e1afc82 100644 --- a/src/cats/mpi/mpi_grid_helpers.c +++ b/src/cats/mpi/mpi_grid_helpers.c @@ -25,8 +25,7 @@ #include "logging.h" #include "configuration/configuration.h" #include "mpi_grid_helpers.h" -#include "memory/raw_arrays.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "grids/cats_grid.h" #ifdef USEMPI diff --git a/src/cats/mpi/mpi_save.c b/src/cats/mpi/mpi_save.c index a32da0ba30ad480ae837c9b42729c705742c922c..23f638b8416a61dfcadcd491214526e317d752fa 100644 --- a/src/cats/mpi/mpi_save.c +++ b/src/cats/mpi/mpi_save.c @@ -22,15 +22,13 @@ #include <assert.h> #include "paths/paths.h" #include "cats_global.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "grids/cats_grid.h" #include "data/cats_grid.h" #include "mpi_save.h" #include "mpi_seeds.h" -#include "logging.h" #include "grids/gdal_load.h" #include "grids/gdal_save.h" -#include "memory/cats_memory.h" #include "mpi/mpi_grid_helpers.h" #include "paths/output_paths.h" diff --git a/src/cats/mpi/mpi_scalefactor.c b/src/cats/mpi/mpi_scalefactor.c index 19b93a6387e2c10b0908cf85c305241ae70eacb7..17c6eaee0cc4bff07085d71911a1147f7221b252 100644 --- a/src/cats/mpi/mpi_scalefactor.c +++ b/src/cats/mpi/mpi_scalefactor.c @@ -20,11 +20,11 @@ // #include "mpi_scalefactor.h" -#include <memory/raw_arrays.h> +#include "bdc_memory/bdc_memory.h" #include "logging.h" #include "vital_rates/hybrid_functions.h" #include "data/cats_grid.h" -#include <memory/cats_memory.h> + #ifdef USEMPI diff --git a/src/cats/mpi/mpi_seeds.c b/src/cats/mpi/mpi_seeds.c index 77a1dd4473aae8ad9a890d41a016fe46946cf5f6..c818d578996e93d253bc9f1273feacc96dd952ca 100644 --- a/src/cats/mpi/mpi_seeds.c +++ b/src/cats/mpi/mpi_seeds.c @@ -22,10 +22,8 @@ #include <assert.h> #include "data/cats_grid.h" #include "configuration/configuration.h" -#include "logging.h" -#include "grids/cats_grid.h" #include "mpi_grid_helpers.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "mpi_seeds.h" diff --git a/src/cats/mpi/mpi_stats.c b/src/cats/mpi/mpi_stats.c index 5e2fde5bf64948143b8099c7fae2bf002ec5aa89..c5eff7b5f01937493322b7041b65f016b8c14284 100644 --- a/src/cats/mpi/mpi_stats.c +++ b/src/cats/mpi/mpi_stats.c @@ -24,15 +24,11 @@ #ifdef USEMPI #include <string.h> -#include <assert.h> #include "data/cats_grid.h" #include "configuration/configuration.h" -#include "misc/misc.h" #include "stats/grid_stats.h" -#include "logging.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "mpi/mpi_stats.h" -#include "memory/cats_memory.h" void collect_and_write_plant_stats_mpi(struct cats_configuration *conf, struct cats_grid *grid) diff --git a/src/cats/overlays/overlay_exclusion.c b/src/cats/overlays/overlay_exclusion.c index 37f082343f5ecbc10016a4316e21ce7a00554666..3b2e78417a524934d3d9cbad2e8946b6000b4185 100644 --- a/src/cats/overlays/overlay_exclusion.c +++ b/src/cats/overlays/overlay_exclusion.c @@ -27,7 +27,7 @@ #include "logging.h" #include "grids/cats_grid.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "populations/population.h" #include "plants/plant_structures.h" #include "inline_overlays.h" @@ -100,7 +100,7 @@ void destroy_excluded_cells_all_grids(const struct cats_configuration *conf, str struct cats_2d_array_char *translate_exclusion(const struct cats_2d_array_double *data, int64_t *excluded_count) { - struct cats_2d_array_char *result = new_2d_array_char(data->dimension); + struct cats_2d_array_char *result = new_2d_array_char(&data->dimension); const cats_dt_coord rows = data->dimension.rows; const cats_dt_coord cols = data->dimension.cols; diff --git a/src/cats/overlays/overlay_exclusion.h b/src/cats/overlays/overlay_exclusion.h index 5bc74a8d40841017343ffd24c907a5218a181e40..ed0eeb3af70a7bce0443f9ffb95f28c97fe0c02c 100644 --- a/src/cats/overlays/overlay_exclusion.h +++ b/src/cats/overlays/overlay_exclusion.h @@ -22,8 +22,8 @@ #ifndef CATS_OVERLAY_EXCLUSION_H #define CATS_OVERLAY_EXCLUSION_H -#include "../../memory/raw_arrays.h" -#include "../../memory/arrays.h" +#include "bdc_memory/bdc_memory.h" + struct cats_2d_array_char *translate_exclusion(const struct cats_2d_array_double *data, int64_t *excluded_count); diff --git a/src/cats/overlays/overlay_habitat_type_cc.c b/src/cats/overlays/overlay_habitat_type_cc.c index 83ab768cab536eda83af44cc2720b0f92534f54d..cba3f82c576bfd00689f72b8e9cd9400b2acb3a4 100644 --- a/src/cats/overlays/overlay_habitat_type_cc.c +++ b/src/cats/overlays/overlay_habitat_type_cc.c @@ -27,7 +27,8 @@ #include "overlay_habitat_type_cc.h" #include "cats_csv/cats_csv.h" #include "logging.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" +#include "data/cats_datatypes.h" void cleanup_habitat_layer_cc_aux(void **data) @@ -115,7 +116,7 @@ struct cats_2d_array_double *translate_habitat(const struct cats_2d_array_double { assert(aux != NULL); struct habitat_layer_cc_aux *habitat_info = aux; - struct cats_2d_array_double *result = new_2d_array_double(data->dimension); + struct cats_2d_array_double *result = new_2d_array_double(&data->dimension); const cats_dt_coord rows = data->dimension.rows; const cats_dt_coord cols = data->dimension.cols; diff --git a/src/cats/overlays/overlay_habitat_type_cc.h b/src/cats/overlays/overlay_habitat_type_cc.h index 5148928e6372cf1b788d758a0e4d08e537ea3a66..fa07f3a90885fb64cc64a8c30431ce07256ab4eb 100644 --- a/src/cats/overlays/overlay_habitat_type_cc.h +++ b/src/cats/overlays/overlay_habitat_type_cc.h @@ -23,7 +23,7 @@ #define CATS_OVERLAY_HABITAT_TYPE_CC_H #include <stdint.h> -#include "../../memory/arrays.h" +#include "bdc_memory/bdc_memory.h" #define MAX_HABITAT_TYPE_CODES 1024 diff --git a/src/cats/overlays/overlay_resources.c b/src/cats/overlays/overlay_resources.c index acfef34fe5d7720de19af36fd39c89d01a1ecae7..131bdea63fc355709d109269a1ab968f20579746 100644 --- a/src/cats/overlays/overlay_resources.c +++ b/src/cats/overlays/overlay_resources.c @@ -22,12 +22,13 @@ #include <assert.h> #include <math.h> #include "overlay_resources.h" -#include "memory/arrays.h" +#include "bdc_memory/bdc_memory.h" +#include "data/cats_datatypes.h" struct cats_2d_array_double *translate_resources(const struct cats_2d_array_double *data) { - struct cats_2d_array_double *result = new_2d_array_double(data->dimension); + struct cats_2d_array_double *result = new_2d_array_double(&data->dimension); const cats_dt_coord rows = data->dimension.rows; const cats_dt_coord cols = data->dimension.cols; diff --git a/src/cats/overlays/overlays.h b/src/cats/overlays/overlays.h index b26e51522832a691d81bd53ad6c40b2140c64a87..75e5b9d6c8c6baebef988172d92f0aefe6e33d52 100644 --- a/src/cats/overlays/overlays.h +++ b/src/cats/overlays/overlays.h @@ -25,7 +25,7 @@ #include <stdbool.h> #include <stdint.h> #include "data/cats_datatypes.h" -#include "../../memory/arrays.h" +#include "bdc_memory/bdc_memory.h" struct cats_configuration; struct cats_grid; diff --git a/src/cats/performance/timer.c b/src/cats/performance/timer.c index 22329f600e0629924e169a482b0e93658d3c988e..0ba6758d477058fab98cb0e1a694db6c516a2f44 100644 --- a/src/cats/performance/timer.c +++ b/src/cats/performance/timer.c @@ -25,12 +25,11 @@ #include <stdint.h> #include "timer.h" -#include "logging.h" #include "misc/misc.h" #include "temporal/phase_names.h" #include "temporal/years.h" #include "performance_stats.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" struct timeval *time_difference(struct timeval *start, struct timeval *end) diff --git a/src/cats/plants/plant_structures.c b/src/cats/plants/plant_structures.c index ed45e5d562c3379712dc986c22166260bf7baeee..d9e54cc7484e9fe11136ca2e667524e1a17e6b57 100644 --- a/src/cats/plants/plant_structures.c +++ b/src/cats/plants/plant_structures.c @@ -27,7 +27,7 @@ #include "seeds.h" #include "inline_population.h" #include "populations/population.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" void destroy_plant_cell(struct cats_grid *grid, const cats_dt_coord row, const cats_dt_coord col) diff --git a/src/cats/plants/population_stats.c b/src/cats/plants/population_stats.c index a7471eaab743f8c4a3564fc04dc867f0cb43fb28..a68064e60c1f6365717070d26c5b1b2e37eedbab 100644 --- a/src/cats/plants/population_stats.c +++ b/src/cats/plants/population_stats.c @@ -19,12 +19,12 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include "../../memory/raw_arrays.h" + #include "population_stats.h" #include "configuration/configuration.h" #include "data/cats_grid.h" -#include "logging.h" + void print_populated_cell_change_carrying_capacity(struct cats_configuration *conf, struct cats_grid **parent) diff --git a/src/cats/populations/plant_juveniles.c b/src/cats/populations/plant_juveniles.c index bd00998df84c99eceed79da56f3322a8f9080270..2573d9bd2faa9a45748a8cb9ac595aadf4ffa1e1 100644 --- a/src/cats/populations/plant_juveniles.c +++ b/src/cats/populations/plant_juveniles.c @@ -23,10 +23,9 @@ #include <assert.h> #include "plant_juveniles.h" -#include "data/cats_datatypes.h" #include "data/cats_grid.h" #include "inline_vital_rates.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" void setup_plant_juvenile_weights(struct cats_species_param *param) diff --git a/src/cats/stats/global_stats.c b/src/cats/stats/global_stats.c index a9addfe572edd1f980cf7a9eea3820b584ed931e..a412a8250249b7e44b8a0f4dd089875b85669f04 100644 --- a/src/cats/stats/global_stats.c +++ b/src/cats/stats/global_stats.c @@ -25,12 +25,11 @@ #include "configuration/configuration.h" #include "misc/misc.h" -#include "logging.h" #include "paths/paths.h" #include "stats/global_stats.h" #include "stats/grid_stats.h" #include "paths/output_paths.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #ifdef USEMPI #include "mpi/mpi_stats.h" diff --git a/src/cats/stats/grid_stats.c b/src/cats/stats/grid_stats.c index 5438917e1a748a7127b707b4e11b71465a974ba0..a3555061074a0fed0d737df2e8015e57f49257db 100644 --- a/src/cats/stats/grid_stats.c +++ b/src/cats/stats/grid_stats.c @@ -25,9 +25,7 @@ #include <assert.h> #include "data/cats_grid.h" #include "configuration/configuration.h" -#include "misc/misc.h" #include "grid_stats.h" -#include "logging.h" #include "paths/paths.h" #include "temporal/phase_names.h" #include "temporal/years.h" @@ -36,13 +34,9 @@ #include "mpi/mpi_stats.h" #endif -#include "inline.h" -#include "memory/arrays.h" -#include "paths/output_paths.h" -#include "memory/cats_memory.h" -#include "inline_overlays.h" -#include "inline_population.h" -#include "populations/population.h" + +#include "bdc_memory/bdc_memory.h" + struct string_array *add_stats_header_overlay(struct string_array *x, struct cats_configuration *conf, bool header) diff --git a/src/cats/stats/indices.c b/src/cats/stats/indices.c index 5f5623ad04f6e1d6c0b4edaf5d3dc53d60c51e95..7f35aef594b9914fcaa5eb816223ac4b8b816ff6 100644 --- a/src/cats/stats/indices.c +++ b/src/cats/stats/indices.c @@ -32,12 +32,12 @@ #include "configuration/configuration.h" #include "populations/carrying_capacity.h" #include "actions/cats_actions.h" -#include "logging.h" + #include "indices.h" -#include "inline.h" -#include "memory/cats_memory.h" + +#include "bdc_memory/bdc_memory.h" #include "inline_overlays.h" -#include "inline_carrying_capacity.h" + #include "inline_population.h" #include "populations/population.h" diff --git a/src/cats/stats/statistics.c b/src/cats/stats/statistics.c index e397798ae4a933b773a3a90eb58fe17c173fb668..c1ed496cbcd5deeafe2bfc58b0744db5231f40d5 100644 --- a/src/cats/stats/statistics.c +++ b/src/cats/stats/statistics.c @@ -24,7 +24,7 @@ #include <stdlib.h> #include "statistics.h" #include "cats_strings/cats_strings.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "configuration/configuration.h" diff --git a/src/cats/stats/write_stats.c b/src/cats/stats/write_stats.c index 9700929d3861ffcc0f1185c5153e01ca586d29bb..c99e118d56edbdf118cf3e482bcb0fa7320c8a0b 100644 --- a/src/cats/stats/write_stats.c +++ b/src/cats/stats/write_stats.c @@ -20,14 +20,14 @@ // #include <stdlib.h> -#include <memory/raw_arrays.h> +#include "bdc_memory/bdc_memory.h" #include <string.h> -#include <assert.h> + #include "configuration/configuration.h" -#include "logging.h" + #include "data/cats_grid.h" #include "grid_stats.h" -#include "defaults.h" + #include "metadata.h" diff --git a/src/cats/temporal/timeformat.c b/src/cats/temporal/timeformat.c index 36fb2936531626acdfcfa050f802163e719db306..5120e20ae50e1e17da5fcf078f17f5e0a9f2e3d2 100644 --- a/src/cats/temporal/timeformat.c +++ b/src/cats/temporal/timeformat.c @@ -23,7 +23,7 @@ #include "timeformat.h" #include "configuration/configuration.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "simulation_time.h" diff --git a/src/cats/threading/block_tasks.c b/src/cats/threading/block_tasks.c index b245ffd30a4dfa7b7a0289dcb23a4c4958bddaf1..cf08e6023cfc67e12527a92fd2f9967b0db35b92 100644 --- a/src/cats/threading/block_tasks.c +++ b/src/cats/threading/block_tasks.c @@ -22,8 +22,8 @@ #include "cats_global.h" #include <stdint.h> -#include <memory/arrays.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" + #include "threading/threading-helpers.h" #include "threading.h" @@ -100,9 +100,9 @@ void setup_block_tasks(struct cats_thread_controller *t, int32_t rows, int32_t c (t->grid->dimension.cols % t->task_size_cols != 0); - struct cats_dimension dim = {.rows = grid_rows, .cols = grid_cols}; + struct array_dimension dim = {.rows = grid_rows, .cols = grid_cols}; - t->task_grid = new_2d_array_char(dim); + t->task_grid = new_2d_array_char(&dim); t->tasks_remaining = t->task_grid->dimension.rows * t->task_grid->dimension.cols; t->task_getter = block_task_getter; diff --git a/src/cats/threading/dispersal_tasks.c b/src/cats/threading/dispersal_tasks.c index 9c2fc45a5f2a33e3d15785f03c01a0bf9d87e5a7..a825f9f0f403c4bf5bcb372f765e980102c3e7d9 100644 --- a/src/cats/threading/dispersal_tasks.c +++ b/src/cats/threading/dispersal_tasks.c @@ -19,12 +19,10 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include <memory/arrays.h> +#include "bdc_memory/bdc_memory.h" #include "threading/threading-helpers.h" #include "threading/threading.h" #include "misc/cats_maths_inline.h" - -#include <memory/cats_memory.h> #include "cats_global.h" #include <stdint.h> #include "dispersal_tasks.h" @@ -102,20 +100,20 @@ struct thread_task dispersal_task_getter(struct cats_thread_controller *tc, int3 } -struct cats_dimension get_dispersal_area_dimensions(const struct cats_configuration *conf, const struct cats_grid *grid) +struct array_dimension get_dispersal_area_dimensions(const struct cats_configuration *conf, const struct cats_grid *grid) { int32_t id = grid->id; int32_t max_radius = get_dispersal_radius(conf, id); int32_t min_dimension = min_int32t(grid->dimension.cols, grid->dimension.rows); max_radius = max_int32t(max_radius, min_dimension / 32); - struct cats_dimension result = {.rows = max_radius, .cols = max_radius}; + struct array_dimension result = {.rows = max_radius, .cols = max_radius}; return result; } void setup_dispersal_tasks(struct cats_thread_controller *t) { - struct cats_dimension dispersal_area_dimensions = get_dispersal_area_dimensions(t->conf, t->grid); + struct array_dimension dispersal_area_dimensions = get_dispersal_area_dimensions(t->conf, t->grid); t->task_size_rows = dispersal_area_dimensions.rows; t->task_size_cols = dispersal_area_dimensions.cols; @@ -129,8 +127,8 @@ void setup_dispersal_tasks(struct cats_thread_controller *t) t->tasks_remaining = grid_rows * grid_cols; t->task_getter = dispersal_task_getter; - struct cats_dimension dim = {.rows = grid_rows, .cols = grid_cols}; - t->task_grid = new_2d_array_char(dim); + struct array_dimension dim = {.rows = grid_rows, .cols = grid_cols}; + t->task_grid = new_2d_array_char(&dim); //t->task_grid = new_2d_array(t->task_grid_rows, t->task_grid_cols, sizeof(char)); for (int32_t r = 0; r < t->task_grid->dimension.rows; r++) { for (int32_t c = 0; c < t->task_grid->dimension.cols; c++) { diff --git a/src/cats/threading/threading-helpers.c b/src/cats/threading/threading-helpers.c index b5e1837b2bf0efb82151069e04cc03370a2c4b2b..0877f6b54d05e7716d0752321462248a68be6850 100644 --- a/src/cats/threading/threading-helpers.c +++ b/src/cats/threading/threading-helpers.c @@ -20,15 +20,13 @@ // #include <assert.h> -#include "data/cats_datatypes.h" #include "threading-helpers.h" #include "logging.h" #include "threading.h" #include "misc/cats_maths_inline.h" #include "misc/cats_random.h" #include "stats/grid_stats.h" -#include "data/error.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" void create_custom_stats_for_thread(struct statistics *thread_stats, struct statistics *grid_stats) { diff --git a/src/cats/threading/threading.c b/src/cats/threading/threading.c index 9b89dbbac96a230a9be2752567c885455b30b575..008df959f6327f38e29f1591e95051d683c23ae3 100644 --- a/src/cats/threading/threading.c +++ b/src/cats/threading/threading.c @@ -19,9 +19,9 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include <stdint.h> + #include "cats_global.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "block_tasks.h" #include "misc/misc.h" diff --git a/src/cats_csv/CMakeLists.txt b/src/cats_csv/CMakeLists.txt index e3674eb38a1cc3d884a5c35552174340926c625b..d3afbbe76e17a53b45f8fd9363045c61138fb5d6 100644 --- a/src/cats_csv/CMakeLists.txt +++ b/src/cats_csv/CMakeLists.txt @@ -13,4 +13,4 @@ target_sources(cats_csv set_property(TARGET cats_csv PROPERTY POSITION_INDEPENDENT_CODE ON) -target_link_libraries(cats_logging cats_memory cats_strings) \ No newline at end of file +target_link_libraries(cats_logging bdc cats_strings) \ No newline at end of file diff --git a/src/cats_csv/cats_csv.c b/src/cats_csv/cats_csv.c index 45a9bf1e3f0cf9aa1e987ce8ba2aa002308e2a4b..db8cf5940b54461a97ad6fe45a81bbeec08925db 100644 --- a/src/cats_csv/cats_csv.c +++ b/src/cats_csv/cats_csv.c @@ -27,7 +27,7 @@ #include "cats_csv.h" #include <logging/logging.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" struct cats_csv *csv_new(char *header_line, int32_t expected_fields) diff --git a/src/cats_ini/CMakeLists.txt b/src/cats_ini/CMakeLists.txt index 8d8eea0b62259c67f1ccc3bf3d8ccf17a023dab7..8b03aec39edbde74a99e212b9b403c7e09033d1e 100644 --- a/src/cats_ini/CMakeLists.txt +++ b/src/cats_ini/CMakeLists.txt @@ -18,4 +18,4 @@ target_sources(cats_ini set_property(TARGET cats_ini PROPERTY POSITION_INDEPENDENT_CODE ON) -target_link_libraries(cats_logging cats_memory cats_strings) +target_link_libraries(cats_logging cats_strings bdc) diff --git a/src/cats_strings/cats_strings.c b/src/cats_strings/cats_strings.c index cc3ebb7422ee4afc2f8811fb141aa192e4c868bf..4843f1b104b68ebf2937b421383ce1208db3d059 100644 --- a/src/cats_strings/cats_strings.c +++ b/src/cats_strings/cats_strings.c @@ -25,7 +25,7 @@ #include <string.h> #include "cats_strings.h" #include <logging/logging.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include <assert.h> diff --git a/src/cats_strings/string_helpers.c b/src/cats_strings/string_helpers.c index 34f52390bf289d2e916a140211f233a1c8ec03a3..eb6553fa7543bd54b55214b74d4e7504debddf74 100644 --- a/src/cats_strings/string_helpers.c +++ b/src/cats_strings/string_helpers.c @@ -25,7 +25,7 @@ #include <string.h> #include <ctype.h> #include <logging/logging.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" bool string_is_emptyish(const char *string) diff --git a/src/cats_windows.h b/src/cats_windows.h index 9c285244e1303f65f619d4c7baad112db372b826..a9f88680118d62d9371dcc7cc80544eb9d4ab347 100644 --- a/src/cats_windows.h +++ b/src/cats_windows.h @@ -38,7 +38,7 @@ #define F_OK 0 #include <string.h> -#include <memory/cats_memory.h> +#include <bdc_memory/bdc_memory.h> static inline char *strndup(const char *s, size_t n) { diff --git a/src/logging/logging.c b/src/logging/logging.c index 38172c85813ac723a136631498d46d23e77e55fc..601a5e0e2daa2c0d2d0add8a25d473093baeccd4 100644 --- a/src/logging/logging.c +++ b/src/logging/logging.c @@ -26,7 +26,7 @@ #include <stdarg.h> #include <stdlib.h> #include "logging.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "cats_time/cats_time.h" #include "misc/misc.h" diff --git a/src/memory/CMakeLists.txt b/src/memory/CMakeLists.txt deleted file mode 100644 index 2d42f3f2a73b0e2b022e6a91b080eafed7b5afd2..0000000000000000000000000000000000000000 --- a/src/memory/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_library(cats_memory STATIC "" ../cats_defs.h ../cats_windows.h) - -target_sources(cats_memory - PRIVATE - cats_memory.c - raw_arrays.c - arrays.c - PUBLIC - cats_memory.h - raw_arrays.h - arrays.h - ) - -#target_include_directories(cats_memory PUBLIC "..") -set_property(TARGET cats_memory PROPERTY POSITION_INDEPENDENT_CODE ON) \ No newline at end of file diff --git a/src/memory/arrays.h b/src/memory/arrays.h deleted file mode 100644 index 3e6b70c84cbe8817fc80f91292542e0f2121f65c..0000000000000000000000000000000000000000 --- a/src/memory/arrays.h +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -// -// arrays.h -// -// Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer. -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 3 of the License, or (at -// your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// - -#ifndef CATS_ARRAYS_H -#define CATS_ARRAYS_H - -#include "data/cats_datatypes.h" -#include "raw_arrays.h" - -struct cats_2d_array_float { - float **data; - struct cats_dimension dimension; -}; - -struct cats_2d_array_char { - char **data; - struct cats_dimension dimension; -}; - -struct cats_2d_array_double { - double **data; - struct cats_dimension dimension; -}; - -struct cats_2d_array_char *new_2d_array_char(struct cats_dimension dimension); - -struct cats_2d_array_double *new_2d_array_double(struct cats_dimension dimension); - -struct cats_2d_array_float *new_2d_array_float(struct cats_dimension dimension); - -void cleanup_2d_array_char(struct cats_2d_array_char **grid); - -void cleanup_2d_array_float(struct cats_2d_array_float **grid); - -void cleanup_2d_array_double(struct cats_2d_array_double **grid); - -#define free_cats_grid(PTR_TO_GRID) _Generic((PTR_TO_GRID), \ - struct cats_2d_array_float **: cleanup_2d_array_float, \ - struct cats_2d_array_double **: cleanup_2d_array_double, \ - struct cats_2d_array_char **: cleanup_2d_array_char \ - )(PTR_TO_GRID) - - -void *new_raw_2d_array_from_dimension(struct cats_dimension dimension, size_t member_size); - -#endif //CATS_ARRAYS_H diff --git a/src/memory/cats_memory.h b/src/memory/cats_memory.h deleted file mode 100644 index dbe7ce980796b049263101e786f0bb741ae61d7f..0000000000000000000000000000000000000000 --- a/src/memory/cats_memory.h +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -// -// cats_memory.h -// -// Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer. -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 3 of the License, or (at -// your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// - -#ifndef CATS_CATS_MEMORY_H -#define CATS_CATS_MEMORY_H - -#include <stddef.h> - -void *malloc_or_die_trace(size_t size, const char *func); - -void *realloc_or_die(void *ptr, size_t size); - -void *malloc_or_die(size_t size); - -void *calloc_or_die(size_t count, size_t size); - -#include <stddef.h> -#include "data/cats_datatypes.h" - -#endif //CATS_CATS_MEMORY_H diff --git a/src/modules/butterflies/butterflies_main.c b/src/modules/butterflies/butterflies_main.c index 35712a7368323843feb3d19d0ce1f371c87e5991..e8e0b29088f4b9c5d9c516ef879ec9a6eca33e91 100644 --- a/src/modules/butterflies/butterflies_main.c +++ b/src/modules/butterflies/butterflies_main.c @@ -63,13 +63,13 @@ void *butterfly_grid_init(__attribute__((unused)) struct cats_configuration *con struct grid_data_butterflies *data = malloc_or_die(sizeof(struct grid_data_butterflies)); log_message(LOG_INFO, "allocating data for generations"); - data->generations = new_raw_2d_array_from_dimension(grid->dimension, sizeof(float)); - data->info_layer = new_raw_2d_array_from_dimension(grid->dimension, sizeof(int32_t)); + data->generations = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(float)); + data->info_layer = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(int32_t)); log_message(LOG_INFO, "done allocating data for generations"); data->generation_current = 0; //struct conf_data_butterflies *conf_data = CATS_MODULE_DATA; - data->eggs = new_raw_2d_array_from_dimension(grid->dimension, sizeof(float)); + data->eggs = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(float)); if (grid->param.parametrization != PARAM_HYBRID) { log_message(LOG_ERROR, "%s only works with hybrid parametrisation mode", module_name); diff --git a/src/modules/cats_test_module/register_module.c b/src/modules/cats_test_module/register_module.c index a4f47fa4b46e446f140a202d786b376ff7ccc1ee..828975212a933f953f6f2047334037fa810c70bc 100644 --- a/src/modules/cats_test_module/register_module.c +++ b/src/modules/cats_test_module/register_module.c @@ -21,7 +21,7 @@ #include "configuration/configuration.h" #include "cats_global.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "modules/load_module.h" #include "modules/module_header.h" #include "second_file.h" diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 7e0e75d7ae128f6f61f44b537fe62e65e62fc0d1..237b15de3e760cd8c2182d7e35745afd44b8f878 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -9,5 +9,5 @@ add_executable(vital_rate_test vital_rate_test.c) add_executable(csv_test csv_test.c ) configure_file("test.csv" "test.csv") -target_link_libraries(vital_rate_test cmocka cats_logging cats_memory cats_strings cats_ini cats_csv libcats) -target_link_libraries(csv_test cmocka cats_strings cats_csv cats_strings cats_logging cats_memory) +target_link_libraries(vital_rate_test cmocka cats_logging bdc cats_strings cats_ini cats_csv libcats) +target_link_libraries(csv_test cmocka cats_strings cats_csv cats_strings cats_logging bdc) diff --git a/src/tests/csv_test.c b/src/tests/csv_test.c index 74ec635c57a71c0a72ae922cc48fbcfe90698b92..1375ec10c656e6a942ef1817fd61ebe621e0469f 100644 --- a/src/tests/csv_test.c +++ b/src/tests/csv_test.c @@ -23,11 +23,10 @@ #include <setjmp.h> #include <cmocka.h> #include <stdio.h> -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "cats_strings/cats_strings.h" #include "cats_csv/cats_csv.h" -#include <unistd.h> -#include <limits.h> + struct csv_test { FILE *csv_file; diff --git a/src/tests/vital_rate_test.c b/src/tests/vital_rate_test.c index 1a0defec956c2817b38fd980156e98e751d25084..1c6f98d205bf5a9ebcaec98dc9fc60f6c2a15619 100644 --- a/src/tests/vital_rate_test.c +++ b/src/tests/vital_rate_test.c @@ -24,7 +24,7 @@ #include "inline_vital_rates.h" #include "vital_rates/setup_rates.h" #include "debug/debug_vital_rates.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include <stddef.h> #include <stdarg.h> #include <setjmp.h>