diff options
author | Thomas White <taw@physics.org> | 2011-10-07 16:31:52 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2012-02-22 15:27:39 +0100 |
commit | dffe82f6c5f7283abef6f0979f10045094b1eab9 (patch) | |
tree | 4ba6cfa23df077069133cb367df3a08d9ca60b4d | |
parent | 055fc06b42b9917ddf466b90cfd61f1df3f337b1 (diff) |
Test divergence gradient
-rw-r--r-- | tests/pr_gradient_check.c | 61 |
1 files changed, 46 insertions, 15 deletions
diff --git a/tests/pr_gradient_check.c b/tests/pr_gradient_check.c index ca66cc76..25d5a527 100644 --- a/tests/pr_gradient_check.c +++ b/tests/pr_gradient_check.c @@ -100,24 +100,60 @@ static UnitCell *new_shifted_cell(UnitCell *input, int k, double shift) } +static void shift_parameter(struct image *image, int k, double shift) +{ + switch ( k ) + { + case REF_DIV : image->div += shift; break; + } +} + + static void calc_either_side(struct image *image, double incr_val, int *valid, long double *vals[3], int refine) { RefList *compare; UnitCell *cell; - cell = new_shifted_cell(image->indexed_cell, refine, -incr_val); - compare = find_intersections(image, cell); - scan_partialities(image->reflections, compare, valid, vals, 0); - cell_free(cell); + if ( (refine != REF_DIV) && (refine != REF_R) ) { + + cell = new_shifted_cell(image->indexed_cell, refine, -incr_val); + compare = find_intersections(image, cell); + scan_partialities(image->reflections, compare, valid, vals, 0); + cell_free(cell); + reflist_free(compare); + + cell = new_shifted_cell(image->indexed_cell, refine, +incr_val); + compare = find_intersections(image, cell); + scan_partialities(image->reflections, compare, valid, vals, 2); + cell_free(cell); + reflist_free(compare); + + } else { - cell = new_shifted_cell(image->indexed_cell, refine, +incr_val); - compare = find_intersections(image, cell); - scan_partialities(image->reflections, compare, valid, vals, 2); - cell_free(cell); + struct image im_moved; + + im_moved = *image; + shift_parameter(&im_moved, refine, -incr_val); + compare = find_intersections(&im_moved, im_moved.indexed_cell); + scan_partialities(im_moved.reflections, compare, + valid, vals, 0); + cell_free(cell); + reflist_free(compare); + + im_moved = *image; + shift_parameter(&im_moved, refine, +incr_val); + compare = find_intersections(&im_moved, im_moved.indexed_cell); + scan_partialities(im_moved.reflections, compare, + valid, vals, 2); + cell_free(cell); + reflist_free(compare); + + } } + static int test_gradients(struct image *image, double incr_val, int refine, const char *str) { @@ -237,12 +273,6 @@ static int test_gradients(struct image *image, double incr_val, int refine, } -static void plot_graph(struct image *image, double incr_frac, int refine) -{ - -} - - int main(int argc, char *argv[]) { struct image image; @@ -287,7 +317,8 @@ int main(int argc, char *argv[]) &ax, &ay, &az, &bx, &by, &bz, &cx, &cy, &cz); - plot_graph(&image, incr_frac, REF_ASX); + incr_val = incr_frac * image.div; + val += test_gradients(&image, incr_val, REF_DIV, "div"); incr_val = incr_frac * ax; val += test_gradients(&image, incr_val, REF_ASX, "ax*"); |