diff options
author | jthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5> | 2002-07-08 13:53:12 +0000 |
---|---|---|
committer | jthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5> | 2002-07-08 13:53:12 +0000 |
commit | fb7ab7e9fff3ff480cc278e7d8b03dab9c867918 (patch) | |
tree | 2c3b47920d8a23a790670d8f8f298b94e68a5722 /src/patch/grid.hh | |
parent | 75a52836516dc22f60133fa132fe5f63b07a7309 (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.hh | 70 |
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()); } |