aboutsummaryrefslogtreecommitdiff
path: root/src/patch
diff options
context:
space:
mode:
authorjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2002-08-06 14:27:46 +0000
committerjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2002-08-06 14:27:46 +0000
commit3e54475d62ea452a248cdc4715709c0b18b08ed1 (patch)
treecfdcd738626bb8ab20a571353291a70ced86f2a2 /src/patch
parentd7e7357dc509c6fcbbade4933cbe9676d80dea11 (diff)
update comments in compute_synchronize_Jacobian() and synchronize_Jacobian()
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@689 f88db872-0e4f-0410-b76b-b9085cfa78c5
Diffstat (limited to 'src/patch')
-rw-r--r--src/patch/patch_system.cc59
1 files changed, 29 insertions, 30 deletions
diff --git a/src/patch/patch_system.cc b/src/patch/patch_system.cc
index 2138732..f4881e9 100644
--- a/src/patch/patch_system.cc
+++ b/src/patch/patch_system.cc
@@ -1403,33 +1403,10 @@ void patch_system::synchronize(int ghosted_min_gfn_to_sync,
//******************************************************************************
//
-// This function computes the Jacobian of synchronize() into internal
-// buffers, taking into account synchronize()'s full 3-phase algorithm.
-// There are several cases:
-// - ghost zone is symmetry && x point is in non-corner
-// --> x value was computed by a phase 1 symmetry operation,
-// from nominal-grid data
-// ==> use the ghost zone's Jacobian unchanged
-// - ghost zone is symmetry && x point is in corner
-// --> x value was computed by a phase 3 symmetry operation,
-// - from a symmetry ghost zone,
-// which must have been computed in phase 1 from nominal-grid data
-// ==> use the two symmetry ghost zones' combined Jacobian
-// - from an interpatch ghost zone
-// ==> use that interpatch ghost zone's Jacobian
-// - ghost zone is interpatch
-// --> x value was computed by a phase 2 interpatch interpolation
-// - from (only) nominal-grid data
-// ==> use that interpatch ghost zone's Jacobian unchanged
-// - from a mixture of nominal-grid data
-// and data computed by a phase 1 symmetry operation
-// ==> "fold" the interpatch ghost zone's Jacobian
-// to reflect the phase 1 symmetry operation
-//
-// It also properly sets global_{min,max}_ym_ .
-//
-// FIXME FIXME: at the moment we ignore the 3-phase algorithm and just
-// pass all the Jacobian operations down to the ghost zones
+// This function does any precomputation necessary to compute the Jacobian
+// of synchronize() , taking into account synchronize()'s full 3-phase
+// algorithm. In practice, this means it computes the individual Jacobian
+// of each ghost zone, and sets global_{min,max}_ym_ .
//
void patch_system::compute_synchronize_Jacobian(int ghosted_min_gfn_to_sync,
int ghosted_max_gfn_to_sync)
@@ -1491,9 +1468,6 @@ max_ym = global_max_ym_;
// Jacobian_buffer(ym)
// for each ym in the min/max ym range
//
-// FIXME FIXME: at the moment we ignore the 3-phase algorithm and just
-// pass all the operation down to the ghost zones
-//
const patch_edge&
patch_system::synchronize_Jacobian(const ghost_zone& xgz,
int x_iperp, int x_ipar,
@@ -1502,6 +1476,31 @@ const patch_edge&
jtutil::array1d<fp>& Jacobian_buffer)
const
{
+//
+// Implementation notes:
+//
+// There are several cases for the 3-phase algorithm.
+// - ghost zone is symmetry && x point is in non-corner
+// --> x value was computed by a phase 1 symmetry operation,
+// from nominal-grid data
+// ==> use the ghost zone's Jacobian unchanged
+// - ghost zone is symmetry && x point is in corner
+// --> x value was computed by a phase 3 symmetry operation,
+// - from a symmetry ghost zone,
+// which must have been computed in phase 1 from nominal-grid data
+// ==> use the two symmetry ghost zones' combined Jacobian
+// - from an interpatch ghost zone
+// ==> use that interpatch ghost zone's Jacobian
+// - ghost zone is interpatch
+// --> x value was computed by a phase 2 interpatch interpolation
+// - from (only) nominal-grid data
+// ==> use that interpatch ghost zone's Jacobian unchanged
+// - from a mixture of nominal-grid data
+// and data computed by a phase 1 symmetry operation
+// ==> "fold" the interpatch ghost zone's Jacobian
+// to reflect the phase 1 symmetry operation
+//
+
y_iperp = xgz.Jacobian_y_iperp(x_iperp);
y_posn = xgz.Jacobian_y_ipar_posn(x_iperp, x_ipar);