Skip to content

Commit 708f28a

Browse files
authored
Merge pull request #70 from rsachetto/eikonal
Eikonal
2 parents bdbd969 + bb767a2 commit 708f28a

21 files changed

+1551
-40
lines changed

bsbash/find_functions.sh

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,14 @@ FIND_CUDA () {
88
NVCC=""
99
CUDA_FOUND=""
1010

11+
LD_CONFIG=ldconfig
12+
13+
if [ "$OS" == "openSUSE Tumbleweed" ]; then
14+
LD_CONFIG=/sbin/ldconfig
15+
fi
16+
1117
if [ -z "$CUDA_LIBRARY_PATH" ]; then
12-
CUDA_LIBRARY_PATH=$(dirname "$(ldconfig -p | grep libcudart | awk '{print $4}' | head -n 1 | head -c -5)" 2> /dev/null)
18+
CUDA_LIBRARY_PATH=$(dirname "$($LD_CONFIG -p | grep libcudart | awk '{print $4}' | head -n 1 | head -c -5)" 2> /dev/null)
1319
fi
1420

1521
if [ -z "$CUDA_INCLUDE_PATH" ]; then
@@ -19,6 +25,8 @@ FIND_CUDA () {
1925
elif [ "$OS" == "Fedora" ]; then
2026
CUDA_INCLUDE_PATH="/usr/local/cuda/include"
2127
CUDA_LIBRARY_PATH="/usr/local/cuda/lib64"
28+
elif [ "$OS" == "openSUSE Tumbleweed" ]; then
29+
CUDA_INCLUDE_PATH="/usr/local/cuda/include"
2230
else
2331
if [ "$CI" = true ]; then
2432
CUDA_INCLUDE_PATH='/usr/local/cuda/include'
@@ -120,7 +128,7 @@ FIND_MPI () {
120128
}
121129

122130
FIND_AMGX() {
123-
AMGX_LIBRARIES=""
131+
AMGX_LIBRARIES="amgxsh"
124132
AMGX_LIBRARY_PATH=""
125133
AMGX_INCLUDE_PATH=""
126134
AMGX_FOUND=""

build.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ for i in "${BUILD_ARGS[@]}"; do
8787
COMPILE_POSTPROCESSOR='y'
8888
COMPILE_EXPAND='y'
8989
COMPILE_CLIP='y'
90+
COMPILE_EIKONAL='y'
9091
;;
9192
simulator)
9293
COMPILE_SIMULATOR='y'
@@ -184,6 +185,7 @@ ADD_SUBDIRECTORY "src/3dparty/tinyexpr"
184185
ADD_SUBDIRECTORY "src/3dparty/miniz"
185186
ADD_SUBDIRECTORY "src/vtk_utils"
186187
ADD_SUBDIRECTORY "src/ensight_utils"
188+
ADD_SUBDIRECTORY "src/eikonal/"
187189

188190

189191
#DINAMIC DEPS
@@ -264,7 +266,6 @@ if [ -n "$COMPILE_MPI" ]; then
264266
COMPILE_EXECUTABLE "MonoAlg3D_batch" "$SRC_FILES" "$HDR_FILES" "$STATIC_DEPS" "$DYNAMIC_DEPS" "$EXECUTABLES_LIBRARY_PATH $EXTRA_LIB_PATH" "$INCLUDE_P -I$MPI_INCLUDE_PATH"
265267
fi
266268

267-
268269
fi
269270

270271
fi
@@ -294,6 +295,11 @@ if [ -n "$COMPILE_CLIP" ]; then
294295
COMPILE_EXECUTABLE "MonoAlg3D_clip_mesh" "src/main_clip_mesh.c" "" "$STATIC_DEPS" "$DYNAMIC_DEPS" "$EXECUTABLES_LIBRARY_PATH $EXTRA_LIB_PATH"
295296
fi
296297

298+
if [ -n "$COMPILE_EIKONAL" ]; then
299+
COMPILE_EXECUTABLE "MonoAlg3D_eikonal_solver" "src/main_eikonal.c" "" "$STATIC_DEPS" "$DYNAMIC_DEPS eikonal_solver" "$EXECUTABLES_LIBRARY_PATH $EXTRA_LIB_PATH"
300+
fi
301+
302+
297303
FIND_CRITERION
298304

299305
if [ -n "$CRITERION_FOUND" ]; then

example_configs/plain_mesh_no_fibrosis_example.ini

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ file_prefix=V
2323
[assembly_matrix]
2424
init_function=set_initial_conditions_fvm
2525
sigma_x=0.0000176
26-
sigma_y=0.0001334
26+
sigma_y=0.0000176
2727
sigma_z=0.0000176
2828
library_file=shared_libs/libdefault_matrix_assembly.so
2929
main_function=homogeneous_sigma_assembly_matrix
@@ -65,7 +65,9 @@ start = 0.0
6565
duration = 2.0
6666
period = 250.0
6767
current = -50.0
68-
x_limit = 100.0
69-
main_function=stim_if_x_less_than
68+
min_x = 0.0
69+
max_x = 400.0
70+
min_y = 0.0
71+
max_y = 400.0
72+
main_function=stim_x_y_limits
7073
;////////////////////////////////////////////////
71-

src/common_types/common_types.h

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#ifndef MONOALG3D_COMMON_TYPES_H
22
#define MONOALG3D_COMMON_TYPES_H
33

4+
#include "../3dparty/sds/sds.h"
45
#include <stdbool.h>
56
#include <stdint.h>
6-
#include "../3dparty/sds/sds.h"
77

88
#define Pragma(x) _Pragma(#x)
99
#define OMP(directive) Pragma(omp directive)
@@ -17,6 +17,42 @@ typedef double real;
1717
typedef float real;
1818
#endif
1919

20+
#define EPS (real)1e-16
21+
22+
#define ALLOCATE_3D_ARRAY(array, type, size_x, size_y, size_z) \
23+
do { \
24+
array = (type ***)malloc(size_x * sizeof(type **)); \
25+
\
26+
if(array == NULL) { \
27+
log_error_and_exit("Memory allocation failed for first dimension\n"); \
28+
} \
29+
\
30+
for(int i = 0; i < size_x; ++i) { \
31+
array[i] = (type **)malloc(size_y * sizeof(type *)); \
32+
if(array[i] == NULL) { \
33+
log_error_and_exit("Memory allocation failed for second dimension\n"); \
34+
} \
35+
\
36+
for(int j = 0; j < size_y; ++j) { \
37+
array[i][j] = (type *)calloc(size_z, sizeof(type)); \
38+
if(array[i][j] == NULL) { \
39+
log_error_and_exit("Memory allocation failed for third dimension\n"); \
40+
} \
41+
} \
42+
} \
43+
} while(0)
44+
45+
#define FREE_3D_ARRAY(array, size_x, size_y) \
46+
do { \
47+
for(int i = 0; i < size_x; ++i) { \
48+
for(int j = 0; j < size_y; ++j) { \
49+
free(array[i][j]); \
50+
} \
51+
free(array[i]); \
52+
} \
53+
free(array); \
54+
} while(0)
55+
2056
#define MALLOC_BYTES(type, bytes) (type *)malloc(bytes)
2157
#define MALLOC_ONE_TYPE(type) (type *)malloc(sizeof(type))
2258
#define MALLOC_ARRAY_OF_TYPE(type, n) (type *)malloc(sizeof(type) * (n))
@@ -142,8 +178,8 @@ struct simulation_files {
142178
#define STRING_HASH_PRINT_KEY_VALUE_LOG(tag, d) \
143179
do { \
144180
for(int64_t __i = 0; __i < shlen(d); __i++) { \
145-
struct string_hash_entry __e = (d)[__i]; \
146-
log_info("%s %s = %s\n", tag, __e.key, __e.value); \
181+
struct string_hash_entry __e = (d)[__i]; \
182+
log_info("%s %s = %s\n", tag, __e.key, __e.value); \
147183
} \
148184
} while(0)
149185

src/config/config_common.h

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,24 +46,24 @@ void init_config_functions(struct config *config, char *default_lib, char *confi
4646
do { \
4747
if((s) == NULL) { \
4848
log_info(tag " no configuration.\n"); \
49-
return; \
49+
} else { \
50+
log_info(tag " configuration:\n"); \
51+
log_info(tag " library = %s\n", (s)->library_file_path); \
52+
log_info(tag " main function = %s\n", (s)->main_function_name); \
53+
\
54+
if((s)->init_function_name) { \
55+
log_info(tag " init function = %s\n", (s)->init_function_name); \
56+
} \
57+
\
58+
if((s)->end_function_name) { \
59+
log_info(tag " end function = %s\n", (s)->end_function_name); \
60+
} \
61+
\
62+
for(int __i = 0; __i < arrlen((s)->extra_function_names); __i++) { \
63+
log_info(tag " extra function %d = %s\n", __i+1, (s)->extra_function_names[__i]); \
64+
} \
65+
STRING_HASH_PRINT_KEY_VALUE_LOG(tag, (s)->config_data); \
5066
} \
51-
log_info(tag " configuration:\n"); \
52-
log_info(tag " library = %s\n", (s)->library_file_path); \
53-
log_info(tag " main function = %s\n", (s)->main_function_name); \
54-
\
55-
if((s)->init_function_name) { \
56-
log_info(tag " init function = %s\n", (s)->init_function_name); \
57-
} \
58-
\
59-
if((s)->end_function_name) { \
60-
log_info(tag " end function = %s\n", (s)->end_function_name); \
61-
} \
62-
\
63-
for(int __i = 0; __i < arrlen((s)->extra_function_names); __i++) { \
64-
log_info(tag " extra function %d = %s\n", __i+1, (s)->extra_function_names[__i]); \
65-
} \
66-
STRING_HASH_PRINT_KEY_VALUE_LOG(tag, (s)->config_data); \
6767
} while(0)
6868

6969
#define CALL_EXTRA_FUNCTIONS(fn, ...) \

0 commit comments

Comments
 (0)