/*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*/ /****************************************************************************** * * HYPRE_StructMatrix interface * *****************************************************************************/ #include "headers.h" /*-------------------------------------------------------------------------- * HYPRE_StructMatrixCreate *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixCreate( MPI_Comm comm, HYPRE_StructGrid grid, HYPRE_StructStencil stencil, HYPRE_StructMatrix *matrix ) { *matrix = hypre_StructMatrixCreate(comm, grid, stencil); return 0; } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixDestroy *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixDestroy( HYPRE_StructMatrix matrix ) { return( hypre_StructMatrixDestroy(matrix) ); } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixInitialize *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixInitialize( HYPRE_StructMatrix matrix ) { return ( hypre_StructMatrixInitialize(matrix) ); } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixSetValues *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixSetValues( HYPRE_StructMatrix matrix, int *grid_index, int num_stencil_indices, int *stencil_indices, double *values ) { hypre_Index new_grid_index; int d; int ierr = 0; hypre_ClearIndex(new_grid_index); for (d = 0; d < hypre_StructGridDim(hypre_StructMatrixGrid(matrix)); d++) { hypre_IndexD(new_grid_index, d) = grid_index[d]; } ierr = hypre_StructMatrixSetValues(matrix, new_grid_index, num_stencil_indices, stencil_indices, values, 0); return (ierr); } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixSetBoxValues *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixSetBoxValues( HYPRE_StructMatrix matrix, int *ilower, int *iupper, int num_stencil_indices, int *stencil_indices, double *values ) { hypre_Index new_ilower; hypre_Index new_iupper; hypre_Box *new_value_box; int d; int ierr = 0; hypre_ClearIndex(new_ilower); hypre_ClearIndex(new_iupper); for (d = 0; d < hypre_StructGridDim(hypre_StructMatrixGrid(matrix)); d++) { hypre_IndexD(new_ilower, d) = ilower[d]; hypre_IndexD(new_iupper, d) = iupper[d]; } new_value_box = hypre_BoxCreate(); hypre_BoxSetExtents(new_value_box, new_ilower, new_iupper); ierr = hypre_StructMatrixSetBoxValues(matrix, new_value_box, num_stencil_indices, stencil_indices, values, 0); hypre_BoxDestroy(new_value_box); return (ierr); } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixAddToValues *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixAddToValues( HYPRE_StructMatrix matrix, int *grid_index, int num_stencil_indices, int *stencil_indices, double *values ) { hypre_Index new_grid_index; int d; int ierr = 0; hypre_ClearIndex(new_grid_index); for (d = 0; d < hypre_StructGridDim(hypre_StructMatrixGrid(matrix)); d++) { hypre_IndexD(new_grid_index, d) = grid_index[d]; } ierr = hypre_StructMatrixSetValues(matrix, new_grid_index, num_stencil_indices, stencil_indices, values, 1); return (ierr); } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixAddToBoxValues *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixAddToBoxValues( HYPRE_StructMatrix matrix, int *ilower, int *iupper, int num_stencil_indices, int *stencil_indices, double *values ) { hypre_Index new_ilower; hypre_Index new_iupper; hypre_Box *new_value_box; int d; int ierr = 0; hypre_ClearIndex(new_ilower); hypre_ClearIndex(new_iupper); for (d = 0; d < hypre_StructGridDim(hypre_StructMatrixGrid(matrix)); d++) { hypre_IndexD(new_ilower, d) = ilower[d]; hypre_IndexD(new_iupper, d) = iupper[d]; } new_value_box = hypre_BoxCreate(); hypre_BoxSetExtents(new_value_box, new_ilower, new_iupper); ierr = hypre_StructMatrixSetBoxValues(matrix, new_value_box, num_stencil_indices, stencil_indices, values, 1); hypre_BoxDestroy(new_value_box); return (ierr); } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixAssemble *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixAssemble( HYPRE_StructMatrix matrix ) { return( hypre_StructMatrixAssemble(matrix) ); } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixSetNumGhost *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixSetNumGhost( HYPRE_StructMatrix matrix, int *num_ghost ) { return ( hypre_StructMatrixSetNumGhost(matrix, num_ghost) ); } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixGetGrid *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixGetGrid( HYPRE_StructMatrix matrix, HYPRE_StructGrid *grid ) { int ierr = 0; *grid = hypre_StructMatrixGrid(matrix); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixSetSymmetric *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixSetSymmetric( HYPRE_StructMatrix matrix, int symmetric ) { int ierr = 0; hypre_StructMatrixSymmetric(matrix) = symmetric; return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructMatrixPrint *--------------------------------------------------------------------------*/ int HYPRE_StructMatrixPrint( char *filename, HYPRE_StructMatrix matrix, int all ) { return ( hypre_StructMatrixPrint(filename, matrix, all) ); }