blob: b519ebdc91c43b1bf22b0652dc00a4f7b20fd28a [file] [log] [blame]
/*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) );
}