Continue reorganisation to promote readability.
Specifically:
* Move linearindex() ahead of all existing functions and use it in
compute_cell_index().
* compute_cell_index(): Insert white-space and comments.
* process_vertical_faces(): Add comments to describe stages in the
process of computing new connections (faces).
Signed-off-by: Bård Skaflestad <Bard.Skaflestad@sintef.no>
This commit is contained in:
committed by
Bård Skaflestad
parent
0d84dad30c
commit
406016998b
53
preprocess.c
53
preprocess.c
@@ -63,6 +63,13 @@ process_horizontal_faces(int **intersections,
|
|||||||
int *plist,
|
int *plist,
|
||||||
struct processed_grid *out);
|
struct processed_grid *out);
|
||||||
|
|
||||||
|
static int
|
||||||
|
linearindex(const int dims[3], int i, int j, int k)
|
||||||
|
{
|
||||||
|
return i + dims[0]*(j + dims[1]*k);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------
|
/*-----------------------------------------------------------------
|
||||||
Given a vector <field> with k index running faster than i running
|
Given a vector <field> with k index running faster than i running
|
||||||
faster than j, and Cartesian dimensions <dims>, find pointers to the
|
faster than j, and Cartesian dimensions <dims>, find pointers to the
|
||||||
@@ -95,19 +102,22 @@ static void igetvectors(int dims[3], int i, int j, int *field, int *v[])
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
compute_cell_index(const int dims[3], int i, int j, int *neighbors, int len)
|
compute_cell_index(const int dims[3], int i, int j,
|
||||||
|
int *neighbors, int len)
|
||||||
{
|
{
|
||||||
|
|
||||||
int k;
|
int k;
|
||||||
if (i<0 || i>=dims[0] || j<0 || j >= dims[1]){
|
|
||||||
for(k=0; k<len; k+=2){
|
if (((i < 0) || (i >= dims[0])) || /* 'i' outside [0, dims[0]) */
|
||||||
neighbors[k] = -1;
|
((j < 0) || (j >= dims[1]))) { /* 'j' outside [0, dims[1]) */
|
||||||
|
|
||||||
|
for (k = 0; k < len; k += 2) {
|
||||||
|
neighbors[k] = -1; /* Neighbour is outside domain */
|
||||||
}
|
}
|
||||||
}else{
|
}
|
||||||
for(k=0; k<len; k+=2){
|
else {
|
||||||
if (neighbors[k] != -1){
|
for (k = 0; k < len; k += 2) {
|
||||||
int tmp = i + dims[0]*(j + dims[1]*neighbors[k]);
|
if (neighbors[k] != -1) {
|
||||||
neighbors[k] = tmp;
|
neighbors[k] = linearindex(dims, i, j, neighbors[k]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,7 +215,7 @@ process_vertical_faces(int direction,
|
|||||||
d[2] = 2+2*nz;
|
d[2] = 2+2*nz;
|
||||||
igetvectors(d, 2*i+direction, 2*j+1-direction, plist, cornerpts);
|
igetvectors(d, 2*i+direction, 2*j+1-direction, plist, cornerpts);
|
||||||
|
|
||||||
if(direction==1){
|
if (direction == 1) {
|
||||||
/* 1 3 0 1 */
|
/* 1 3 0 1 */
|
||||||
/* ---> */
|
/* ---> */
|
||||||
/* 0 2 2 3 */
|
/* 0 2 2 3 */
|
||||||
@@ -223,15 +233,23 @@ process_vertical_faces(int direction,
|
|||||||
num_intersections = out->number_of_nodes -
|
num_intersections = out->number_of_nodes -
|
||||||
out->number_of_nodes_on_pillars;
|
out->number_of_nodes_on_pillars;
|
||||||
|
|
||||||
findconnections(2*nz+2, cornerpts,
|
/* Establish new connections (faces) along pillar pair. */
|
||||||
*intersections+4*num_intersections,
|
findconnections(2*nz + 2, cornerpts,
|
||||||
|
*intersections + 4*num_intersections,
|
||||||
work, out);
|
work, out);
|
||||||
|
|
||||||
|
/* Start of ->face_neighbors[] for this set of connections. */
|
||||||
ptr = out->face_neighbors + 2*startface;
|
ptr = out->face_neighbors + 2*startface;
|
||||||
|
|
||||||
|
/* Total number of cells (both sides) connected by this
|
||||||
|
* set of connections (faces). */
|
||||||
len = 2*out->number_of_faces - 2*startface;
|
len = 2*out->number_of_faces - 2*startface;
|
||||||
|
|
||||||
compute_cell_index(out->dimensions, i-1+direction, j-direction, ptr, len);
|
/* Derive inter-cell connectivity (i.e. ->face_neighbors)
|
||||||
compute_cell_index(out->dimensions, i, j, ptr+1, len);
|
* of global (uncompressed) cells for this set of
|
||||||
|
* connections (faces). */
|
||||||
|
compute_cell_index(out->dimensions, i-1+direction, j-direction, ptr , len);
|
||||||
|
compute_cell_index(out->dimensions, i , j , ptr + 1, len);
|
||||||
|
|
||||||
/* Tag the new faces */
|
/* Tag the new faces */
|
||||||
f = startface;
|
f = startface;
|
||||||
@@ -242,11 +260,6 @@ process_vertical_faces(int direction,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int linearindex(const int dims[3], int i, int j, int k)
|
|
||||||
{
|
|
||||||
return i + dims[0]*(j + dims[1]*k);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------
|
/*-----------------------------------------------------------------
|
||||||
For each horizontal face (i.e. k constant),
|
For each horizontal face (i.e. k constant),
|
||||||
|
|||||||
Reference in New Issue
Block a user