/*BHEADER********************************************************************** * (c) 1997 The Regents of the University of California * * See the file COPYRIGHT_and_DISCLAIMER for a complete copyright * notice, contact person, and disclaimer. * * $Revision$ *********************************************************************EHEADER*/ /****************************************************************************** * * Functions for scanning and printing "box-dimensioned" data. * *****************************************************************************/ #ifdef HYPRE_USE_PTHREADS #undef HYPRE_USE_PTHREADS #endif #include "headers.h" /*-------------------------------------------------------------------------- * hypre_PrintBoxArrayData *--------------------------------------------------------------------------*/ int hypre_PrintBoxArrayData( FILE *file, hypre_BoxArray *box_array, hypre_BoxArray *data_space, int num_values, double *data ) { int ierr = 0; hypre_Box *box; hypre_Box *data_box; int data_box_volume; int datai; hypre_Index loop_size; hypre_IndexRef start; hypre_Index stride; int i, j; int loopi, loopj, loopk; /*---------------------------------------- * Print data *----------------------------------------*/ hypre_SetIndex(stride, 1, 1, 1); hypre_ForBoxI(i, box_array) { box = hypre_BoxArrayBox(box_array, i); data_box = hypre_BoxArrayBox(data_space, i); start = hypre_BoxIMin(box); data_box_volume = hypre_BoxVolume(data_box); hypre_BoxGetSize(box, loop_size); hypre_BoxLoop1Begin(loop_size, data_box, start, stride, datai); #define HYPRE_BOX_SMP_PRIVATE loopk,loopi,loopj,datai #include "hypre_box_smp_forloop.h" hypre_BoxLoop1For(loopi, loopj, loopk, datai) { for (j = 0; j < num_values; j++) { fprintf(file, "%d: (%d, %d, %d; %d) %e\n", i, hypre_IndexX(start) + loopi, hypre_IndexY(start) + loopj, hypre_IndexZ(start) + loopk, j, data[datai + j*data_box_volume]); } } hypre_BoxLoop1End(datai); data += num_values*data_box_volume; } return ierr; } /*-------------------------------------------------------------------------- * hypre_ReadBoxArrayData *--------------------------------------------------------------------------*/ int hypre_ReadBoxArrayData( FILE *file, hypre_BoxArray *box_array, hypre_BoxArray *data_space, int num_values, double *data ) { int ierr = 0; hypre_Box *box; hypre_Box *data_box; int data_box_volume; int datai; hypre_Index loop_size; hypre_IndexRef start; hypre_Index stride; int i, j, idummy; int loopi, loopj, loopk; /*---------------------------------------- * Read data *----------------------------------------*/ hypre_SetIndex(stride, 1, 1, 1); hypre_ForBoxI(i, box_array) { box = hypre_BoxArrayBox(box_array, i); data_box = hypre_BoxArrayBox(data_space, i); start = hypre_BoxIMin(box); data_box_volume = hypre_BoxVolume(data_box); hypre_BoxGetSize(box, loop_size); hypre_BoxLoop1Begin(loop_size, data_box, start, stride, datai); #define HYPRE_BOX_SMP_PRIVATE loopk,loopi,loopj,datai #include "hypre_box_smp_forloop.h" hypre_BoxLoop1For(loopi, loopj, loopk, datai) { for (j = 0; j < num_values; j++) { fscanf(file, "%d: (%d, %d, %d; %d) %le\n", &idummy, &idummy, &idummy, &idummy, &idummy, &data[datai + j*data_box_volume]); } } hypre_BoxLoop1End(datai); data += num_values*data_box_volume; } return ierr; }