diff options
author | jthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5> | 2002-08-06 14:27:46 +0000 |
---|---|---|
committer | jthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5> | 2002-08-06 14:27:46 +0000 |
commit | 3e54475d62ea452a248cdc4715709c0b18b08ed1 (patch) | |
tree | cfdcd738626bb8ab20a571353291a70ced86f2a2 /src/patch | |
parent | d7e7357dc509c6fcbbade4933cbe9676d80dea11 (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.cc | 59 |
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); |