aboutsummaryrefslogtreecommitdiff
path: root/src/patch/test_patch_system.cc
diff options
context:
space:
mode:
authorjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2001-09-12 17:08:03 +0000
committerjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2001-09-12 17:08:03 +0000
commiteea58772930eb3ff0aff6ca96fbf3f89455aa218 (patch)
tree625e86119c4a32634284f2414088742ef513deaf /src/patch/test_patch_system.cc
parent30ee1ee936c71712b95dc4514f5f458539414a08 (diff)
properly symmetrize test data when setting up xyz gridfn
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@322 f88db872-0e4f-0410-b76b-b9085cfa78c5
Diffstat (limited to 'src/patch/test_patch_system.cc')
-rw-r--r--src/patch/test_patch_system.cc75
1 files changed, 46 insertions, 29 deletions
diff --git a/src/patch/test_patch_system.cc b/src/patch/test_patch_system.cc
index 5f81863..42182b9 100644
--- a/src/patch/test_patch_system.cc
+++ b/src/patch/test_patch_system.cc
@@ -259,30 +259,7 @@ printf("##");
}
printf("\n");
-fp origin_x = 0.314, origin_y = 0.159, origin_z = 0.265;
-switch (type)
- {
-case patch_system::full_sphere_patch_system:
- break;
-case patch_system::plus_z_hemisphere_patch_system:
- origin_z = 0.0;
- break;
-case patch_system::plus_xy_quadrant_patch_system:
- origin_x = origin_y = 0.0;
- break;
-case patch_system::plus_xz_quadrant_patch_system:
- origin_x = origin_z = 0.0;
- break;
-case patch_system::octant_patch_system:
- origin_x = origin_y = origin_z = 0.0;
- break;
-default:
- error_exit(PANIC_EXIT,
-"***** test_patch_system: impossible patch system type=(int)%d!\n"
-" (this should never happen!)\n"
-,
- int(type)); /*NOTREACHED*/
- }
+const fp origin_x = 0.314, origin_y = 0.159, origin_z = 0.265;
printf("## creating patch_system...\n");
patch_system ps(origin_x, origin_y, origin_z,
@@ -297,7 +274,6 @@ case test_fn:
setup_fn_xyz(ps, gfn_fn, true);
ps.print_gridfn(gfn_to_print, true);
break;
-
case test_ghost_zone:
setup_fn_xyz(ps, gfn_fn, false);
ps.extend_scalar_gridfn_to_all_ghost_zones(gfn_fn);
@@ -305,7 +281,6 @@ case test_ghost_zone:
gridfn_minus(ps, gfn_fn, gfn_ghosted_fn, gfn_error, true);
ps.print_gridfn(gfn_to_print, true);
break;
-
case test_deriv:
setup_fn_rho_sigma(ps, gfn_fn, true); // fn(rho,sigma), ghost zones
finite_diff(ps, gfn_fn, gfn_deriv_fd, which_derivs);
@@ -313,6 +288,10 @@ case test_deriv:
gridfn_minus(ps, gfn_deriv_fd, gfn_deriv_analytic, gfn_error, false);
ps.print_gridfn(gfn_to_print, false);
break;
+default:
+ error_exit(PANIC_EXIT,
+"main(): impossible which_test=(int)%d!\n",
+ int(which_test)); /*NOTREACHED*/
}
}
@@ -322,7 +301,8 @@ case test_deriv:
//
// This function sets up the test function for the function and
-// ghost-zone tests.
+// ghost-zone tests. The test function is adjusted to have the
+// appropriate symmetry for the patch system.
//
// Arguments:
// ps = The patch system.
@@ -359,8 +339,45 @@ printf("## setting up test fn(x,y,z) on %s grid...\n",
const fp global_y = ps.global_y_of_local_y(local_y);
const fp global_z = ps.global_z_of_local_z(local_z);
- p.gridfn(gfn, irho,isigma)
- = fn_xyz(global_x, global_y, global_z);
+ fp temp;
+ switch (ps.type())
+ {
+ case patch_system::full_sphere_patch_system:
+ temp = fn_xyz(global_x, global_y, global_z);
+ break;
+ case patch_system::plus_z_hemisphere_patch_system:
+ temp = fn_xyz(global_x, global_y, +global_z)
+ + fn_xyz(global_x, global_y, -global_z);
+ break;
+ case patch_system::plus_xy_quadrant_patch_system:
+ temp = fn_xyz(+global_x, +global_y, global_z)
+ + fn_xyz(-global_y, +global_x, global_z)
+ + fn_xyz(-global_x, -global_y, global_z)
+ + fn_xyz(+global_y, -global_x, global_z);
+ break;
+ case patch_system::plus_xz_quadrant_patch_system:
+ temp = fn_xyz(+global_x, +global_y, +global_z)
+ + fn_xyz(-global_x, -global_y, +global_z)
+ + fn_xyz(+global_x, +global_y, -global_z)
+ + fn_xyz(-global_x, -global_y, -global_z);
+ break;
+ case patch_system::octant_patch_system:
+ temp = fn_xyz(+global_x, +global_y, +global_z)
+ + fn_xyz(-global_y, +global_x, +global_z)
+ + fn_xyz(-global_x, -global_y, +global_z)
+ + fn_xyz(+global_y, -global_x, +global_z)
+ + fn_xyz(+global_x, +global_y, -global_z)
+ + fn_xyz(-global_y, +global_x, -global_z)
+ + fn_xyz(-global_x, -global_y, -global_z)
+ + fn_xyz(+global_y, -global_x, -global_z);
+ break;
+ default:
+ error_exit(PANIC_EXIT,
+"***** setup_fn_xyz(): impossible ps.type()=(int)%d!\n",
+ int(ps.type())); /*NOTREACHED*/
+ }
+
+ p.gridfn(gfn, irho,isigma) = temp;
}
}
}