diff options
Diffstat (limited to 'src/break_data.c')
-rw-r--r-- | src/break_data.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/break_data.c b/src/break_data.c new file mode 100644 index 0000000..0ce6730 --- /dev/null +++ b/src/break_data.c @@ -0,0 +1,34 @@ + +#include "fracture.h" + +break_data *alloc_break_data(unsigned int num_edges) { + break_data *data = malloc(1 * sizeof(break_data)); assert(data != NULL); + + data->num_broken = 0; + + data->break_list = (unsigned int *)malloc(num_edges * sizeof(unsigned int)); + assert(data->break_list != NULL); + + data->extern_field = (double *)malloc(num_edges * sizeof(double)); + assert(data->extern_field != NULL); + + data->conductivity = (double *)malloc(num_edges * sizeof(double)); + assert(data->conductivity != NULL); + + return data; +} + +void free_break_data(break_data *data) { + free(data->break_list); + free(data->extern_field); + free(data->conductivity); + free(data); +} + +void update_break_data(break_data *data, unsigned int last_broke, double strength, double conductivity) { + data->break_list[data->num_broken] = last_broke; + data->extern_field[data->num_broken] = strength; + data->conductivity[data->num_broken] = conductivity; + data->num_broken++; +} + |