?getvectors(): Re-factor field offset calculations out to new helper, vector_positions().
Signed-off-by: Bård Skaflestad <Bard.Skaflestad@sintef.no>
This commit is contained in:
committed by
Bård Skaflestad
parent
fd3b5783fc
commit
eaaad64242
@@ -177,6 +177,27 @@ static int assignPointNumbers(int begin,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
static void
|
||||||
|
vector_positions(const int dims[3] ,
|
||||||
|
const int i ,
|
||||||
|
const int j ,
|
||||||
|
size_t start[4])
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
{
|
||||||
|
size_t im, ip, jm, jp;
|
||||||
|
|
||||||
|
im = max(1, i ) - 1;
|
||||||
|
ip = min(dims[0], i+1) - 1;
|
||||||
|
jm = max(1, j ) - 1;
|
||||||
|
jp = min(dims[1], j+1) - 1;
|
||||||
|
|
||||||
|
start[ 0 ] = dims[2] * (im + dims[0]*jm);
|
||||||
|
start[ 1 ] = dims[2] * (im + dims[0]*jp);
|
||||||
|
start[ 2 ] = dims[2] * (ip + dims[0]*jm);
|
||||||
|
start[ 3 ] = dims[2] * (ip + dims[0]*jp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------
|
/*-----------------------------------------------------------------
|
||||||
Given a vector <field> with k index running faster than i running
|
Given a vector <field> with k index running faster than i running
|
||||||
@@ -186,16 +207,13 @@ static int assignPointNumbers(int begin,
|
|||||||
static void igetvectors(const int dims[3], int i, int j,
|
static void igetvectors(const int dims[3], int i, int j,
|
||||||
const int *field, const int *v[])
|
const int *field, const int *v[])
|
||||||
{
|
{
|
||||||
|
size_t p, start[4];
|
||||||
|
|
||||||
int im = max(1, i ) - 1;
|
vector_positions(dims, i, j, start);
|
||||||
int ip = min(dims[0], i+1) - 1;
|
|
||||||
int jm = max(1, j ) - 1;
|
|
||||||
int jp = min(dims[1], j+1) - 1;
|
|
||||||
|
|
||||||
v[0] = field + dims[2]*(im + dims[0]* jm);
|
for (p = 0; p < 4; p++) {
|
||||||
v[1] = field + dims[2]*(im + dims[0]* jp);
|
v[p] = field + start[p];
|
||||||
v[2] = field + dims[2]*(ip + dims[0]* jm);
|
}
|
||||||
v[3] = field + dims[2]*(ip + dims[0]* jp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -207,16 +225,13 @@ static void igetvectors(const int dims[3], int i, int j,
|
|||||||
static void dgetvectors(const int dims[3], int i, int j,
|
static void dgetvectors(const int dims[3], int i, int j,
|
||||||
const double *field, const double *v[])
|
const double *field, const double *v[])
|
||||||
{
|
{
|
||||||
|
size_t p, start[4];
|
||||||
|
|
||||||
int im = max(1, i ) - 1;
|
vector_positions(dims, i, j, start);
|
||||||
int ip = min(dims[0], i+1) - 1;
|
|
||||||
int jm = max(1, j ) - 1;
|
|
||||||
int jp = min(dims[1], j+1) - 1;
|
|
||||||
|
|
||||||
v[0] = field + dims[2]*(im + dims[0]* jm);
|
for (p = 0; p < 4; p++) {
|
||||||
v[1] = field + dims[2]*(im + dims[0]* jp);
|
v[p] = field + start[p];
|
||||||
v[2] = field + dims[2]*(ip + dims[0]* jm);
|
}
|
||||||
v[3] = field + dims[2]*(ip + dims[0]* jp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user