11#include <camp/debug_diff_check.h>
63 (
int *)malloc(
sizeof(
int) * (num_elements + 1));
65 printf(
"\n\nERROR allocating space for diff checker");
69 (
int *)malloc(
sizeof(
int) * (num_elements + 1));
71 printf(
"\n\nERROR allocating space for diff checker");
75 (
int *)malloc(
sizeof(
int) * (num_elements + 1));
77 printf(
"\n\nERROR allocating space for diff checker");
84 int num_cells,
int *int_data,
double *float_data,
85 double *env_data,
int *int_indices,
int *float_indices,
91 for (
int i = 0; i <= num_elements; ++i) {
98 model_element->
n_cells = num_cells;
125 printf(
"\n\nERROR allocating space for diff checker");
131 printf(
"\n\nERROR allocating space for diff checker");
138 printf(
"\n\nERROR allocating space for diff checker");
157 printf(
"\nInitializing solver diff checker %d n_rxn = %d",
num_solvers,
162 model_data.rxn_int_data, model_data.rxn_float_data,
163 model_data.rxn_env_data, model_data.rxn_int_indices,
164 model_data.rxn_float_indices, model_data.rxn_env_idx);
167 model_data.aero_rep_int_data, model_data.aero_rep_float_data,
168 model_data.aero_rep_env_data, model_data.aero_rep_int_indices,
169 model_data.aero_rep_float_indices, model_data.aero_rep_env_idx);
172 model_data.sub_model_int_data, model_data.sub_model_float_data,
173 model_data.sub_model_env_data, model_data.sub_model_int_indices,
174 model_data.sub_model_float_indices, model_data.sub_model_env_idx);
184 char *element_type,
bool do_compare) {
188 printf(
"\n %s: n_element difference: current = %d, last check = %d",
194 printf(
"\n %s: n_cells difference: current = %d, last check = %d",
202 "\n %s[%d]: start int data difference: current = %d, last check = "
211 "\n %s[%d]: end int data difference: current = %d, last check = %d",
218 i < last_check->indices.int_data[e + 1]; ++i) {
222 "\n %s[%d]: int datum %d (at index %d) difference: current = %d, "
235 "\n %s[%d]: start float data difference: current = %d, last check = "
244 "\n %s[%d]: end float data difference: current = %d, last check = "
252 i < last_check->indices.float_data[e + 1]; ++i) {
256 "\n %s[%d]: float datum %d (at index %d) difference: current = "
257 "%lg, last check = %lg",
269 "\n %s[%d]: start float data difference: current = %d, last check = "
278 "\n %s[%d]: end float data difference: current = %d, last check = "
284 for (
int i_cell = 0; i_cell < current.
n_cells; ++i_cell) {
285 double *curr_env_ptr =
288 double *last_env_ptr =
293 i < last_check->indices.env_data[e + 1]; ++i) {
294 if (curr_env_ptr[i] != last_env_ptr[i] && do_compare) {
296 "\n %s[%d]: env datum %d (at index %d) for cell %d difference: "
297 "current = %lg, last check = %lg",
298 element_type, e, count, i, i_cell, curr_env_ptr[i],
302 last_env_ptr[i] = curr_env_ptr[i];
319 printf(
"\nchecking solver %d", i + 1);
329 printf(
"\nNO DIFFERENCES: %s\n", message);
331 printf(
"\n FOUND %i DIFFERENCES: %s\n", num_diff, message);
352 printf(
"\nDIFFERENCE CHECKER UPDATE: %s\n", message);
354 printf(
"\n DIFFERENCE CHECKER UPDATE WITH %i STRUCTURAL DIFFERENCES: %s\n",
DifferenceCheckerData diff_data[2]
void copy_data(ModelElement from, ModelElement *to)
void diff_check(char *message)
void diff_check_update_only(char *message)
void attach_to_data(ModelElement *model_element, int num_elements, int num_cells, int *int_data, double *float_data, double *env_data, int *int_indices, int *float_indices, int *env_indices)
void diff_check_init(ModelData model_data)
void allocate_index_arrays(ModelElement *model_element, int num_elements)
int compare_and_update(ModelElement current, ModelElement *last_check, char *element_type, bool do_compare)
ModelElementDataPointers ptrs
ModelElementDataIndices indices