Export the cell-face tags (i.e., cells.faces(:,2)) back to M in a manner consistent with the traditional semantics of the grid_structure.

Signed-off-by: Bård Skaflestad <Bard.Skaflestad@sintef.no>
This commit is contained in:
Bård Skaflestad 2010-12-20 10:39:20 +00:00 committed by Bård Skaflestad
parent a566bc8346
commit fbe8157332

View File

@ -184,16 +184,26 @@ void fill_grid(mxArray **out, struct processed_grid *grid)
} }
} }
mxArray *cellfaces = mxCreateNumericMatrix(num_half_faces, 1, mxArray *cellfaces = mxCreateNumericMatrix(num_half_faces, 2,
mxINT32_CLASS, mxREAL); mxINT32_CLASS, mxREAL);
{ {
int *iptr = mxGetData(cellfaces); int *iptr = mxGetData(cellfaces);
int c1, c2, cf_tag;
for (i=0; i<grid->number_of_faces; ++i) for (i=0; i<grid->number_of_faces; ++i)
{ {
int c1 = grid->face_neighbors[2*i]; cf_tag = 2 * grid->face_tag[i] + 1; /* [1, 3, 5] */
int c2 = grid->face_neighbors[2*i+1]; c1 = grid->face_neighbors[2*i+0];
if(c1 != -1) iptr[counter[c1]++] = i+1; c2 = grid->face_neighbors[2*i+1];
if(c2 != -1) iptr[counter[c2]++] = i+1; if(c1 != -1) {
iptr[counter[c1] + 0*num_half_faces] = i+1;
iptr[counter[c1] + 1*num_half_faces] = cf_tag + 1; /* out */
counter[c1] += 1;
}
if(c2 != -1) {
iptr[counter[c2] + 0*num_half_faces] = i+1;
iptr[counter[c2] + 1*num_half_faces] = cf_tag + 0; /* in */
counter[c2] += 1;
}
} }
} }
mxSetField(cells, 0, "faces", cellfaces); mxSetField(cells, 0, "faces", cellfaces);