aboutsummaryrefslogtreecommitdiff
path: root/src/patch/grid.hh
diff options
context:
space:
mode:
authorjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2002-07-08 13:53:12 +0000
committerjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2002-07-08 13:53:12 +0000
commitfb7ab7e9fff3ff480cc278e7d8b03dab9c867918 (patch)
tree2c3b47920d8a23a790670d8f8f298b94e68a5722 /src/patch/grid.hh
parent75a52836516dc22f60133fa132fe5f63b07a7309 (diff)
added a bunch of functions to convert (irho,isigma) <-->
0-origin grid point numbers within a patch (either nominal or ghosted) git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@613 f88db872-0e4f-0410-b76b-b9085cfa78c5
Diffstat (limited to 'src/patch/grid.hh')
-rw-r--r--src/patch/grid.hh70
1 files changed, 63 insertions, 7 deletions
diff --git a/src/patch/grid.hh b/src/patch/grid.hh
index aadec38..9a304e4 100644
--- a/src/patch/grid.hh
+++ b/src/patch/grid.hh
@@ -10,6 +10,7 @@
// <stdio.h>
// <assert.h>
// <math.h>
+// "cctk.h" or "fake_cctk.h"
// "stdc.h"
// "config.hh"
// "../jtutil/util.hh"
@@ -262,21 +263,32 @@ public:
//
- // ***** grid-point membership predicates *****
+ // ***** grid-point validity and membership predicates *****
//
public:
+ bool is_valid_irho(int irho) const
+ { return (irho >= min_irho()) && (irho <= max_irho()); }
+ bool is_valid_isigma(int isigma) const
+ { return (isigma >= min_isigma()) && (isigma <= max_isigma()); }
bool is_in_nominal_grid(int irho, int isigma) const
+ { return is_valid_irho(irho) && is_valid_isigma(isigma); }
+
+ bool is_valid_ghosted_irho(int irho) const
{
- return (irho >= min_irho()) && (irho <= max_irho())
- && (isigma >= min_isigma()) && (isigma <= max_isigma());
+ return (irho >= ghosted_min_irho())
+ && (irho <= ghosted_max_irho());
}
- bool is_in_ghosted_grid(int irho, int isigma) const
+ bool is_valid_ghosted_isigma(int isigma) const
{
- return (irho >= ghosted_min_irho())
- && (irho <= ghosted_max_irho())
- && (isigma >= ghosted_min_isigma())
+ return (isigma >= ghosted_min_isigma())
&& (isigma <= ghosted_max_isigma());
}
+ bool is_in_ghosted_grid(int irho, int isigma) const
+ {
+ return is_valid_ghosted_irho(irho)
+ && is_valid_ghosted_isigma(isigma);
+ }
+
bool is_in_ghost_zone(int irho, int isigma) const
{
return is_in_ghosted_grid(irho, isigma)
@@ -421,6 +433,50 @@ public:
: ghosted_isigma_stride();
}
+ // validity predicates for 1-D 0-origin grid point number (gpn)
+ bool is_valid_gpn(int gpn) const
+ { return (gpn >= 0) && (gpn < N_grid_points()); }
+ bool is_valid_ghosted_gpn(int gpn) const
+ { return (gpn >= 0) && (gpn < ghosted_N_grid_points()); }
+
+ // convert (irho,isigma) <--> 1-D 0-origin grid point number (gpn)
+ int gpn_of_irho_isigma(int irho, int isigma) const
+ {
+ assert( is_valid_irho(irho) );
+ assert( is_valid_isigma(isigma) );
+ return (irho - min_irho() ) * irho_stride()
+ + (isigma - min_isigma()) * isigma_stride();
+ }
+ int ghosted_gpn_of_irho_isigma(int irho, int isigma) const
+ {
+ assert( is_valid_ghosted_irho(irho) );
+ assert( is_valid_ghosted_isigma(isigma) );
+ return
+ (irho - ghosted_min_irho() ) * ghosted_irho_stride()
+ + (isigma - ghosted_min_isigma()) * ghosted_isigma_stride();
+ }
+ // ... current implementation assumes (& verifies) isigma is contiguous
+ void irho_isigma_of_gpn(int gpn, int& irho, int& isigma) const
+ {
+ assert( is_valid_gpn(gpn) );
+ assert( isigma_stride() == 1 ); // implementation restriction
+ irho = min_irho() + gpn / N_isigma();
+ isigma = min_isigma() + gpn % N_isigma();
+ assert( is_valid_irho(irho) );
+ assert( is_valid_isigma(isigma) );
+ }
+ // ... current implementation assumes (& verifies) isigma is contiguous
+ void ghosted_irho_isigma_of_gpn(int gpn, int& irho, int& isigma) const
+ {
+ assert( is_valid_ghosted_gpn(gpn) );
+ assert( ghosted_isigma_stride() == 1 ); // implementation
+ // restriction
+ irho = ghosted_min_irho() + gpn / ghosted_N_isigma();
+ isigma = ghosted_min_isigma() + gpn % ghosted_N_isigma();
+ assert( is_valid_ghosted_irho(irho) );
+ assert( is_valid_ghosted_isigma(isigma) );
+ }
+
// low-level access to data arrays (!!dangerous!!)
const fp* gridfn_data_array(int gfn) const
{ return & gridfn(gfn, min_irho(),min_isigma()); }