hypre/struct_mv/HYPRE_struct_vector.c

180 lines
5.9 KiB
C
Raw Normal View History

/*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*/
/******************************************************************************
*
1998-02-18 01:56:00 +08:00
* HYPRE_StructVector interface
*
*****************************************************************************/
#include "headers.h"
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_NewStructVector
*--------------------------------------------------------------------------*/
1998-02-18 01:56:00 +08:00
HYPRE_StructVector
HYPRE_NewStructVector( MPI_Comm *comm,
HYPRE_StructGrid grid,
HYPRE_StructStencil stencil )
{
1998-02-18 01:56:00 +08:00
return ( (HYPRE_StructVector)
hypre_NewStructVector( comm,
(hypre_StructGrid *) grid ) );
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_FreeStructVector
*--------------------------------------------------------------------------*/
int
1998-02-18 01:56:00 +08:00
HYPRE_FreeStructVector( HYPRE_StructVector struct_vector )
{
1998-02-18 01:56:00 +08:00
return( hypre_FreeStructVector( (hypre_StructVector *) struct_vector ) );
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_InitializeStructVector
*--------------------------------------------------------------------------*/
int
1998-02-18 01:56:00 +08:00
HYPRE_InitializeStructVector( HYPRE_StructVector vector )
{
1998-02-18 01:56:00 +08:00
return ( hypre_InitializeStructVector( (hypre_StructVector *) vector ) );
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_SetStructVectorValues
*--------------------------------------------------------------------------*/
int
1998-02-18 01:56:00 +08:00
HYPRE_SetStructVectorValues( HYPRE_StructVector vector,
int *grid_index,
double values )
{
1998-02-18 01:56:00 +08:00
hypre_StructVector *new_vector = (hypre_StructVector *) vector;
hypre_Index new_grid_index;
int d;
int ierr;
1998-02-18 01:56:00 +08:00
for (d = 0;d < hypre_StructGridDim(hypre_StructVectorGrid(new_vector)); d++)
{
1998-02-18 01:56:00 +08:00
hypre_IndexD(new_grid_index, d) = grid_index[d];
}
1998-02-18 01:56:00 +08:00
ierr = hypre_SetStructVectorValues( new_vector, new_grid_index, values );
return (ierr);
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_GetStructVectorValues
*--------------------------------------------------------------------------*/
int
1998-02-18 01:56:00 +08:00
HYPRE_GetStructVectorValues( HYPRE_StructVector vector,
int *grid_index,
double *values )
{
1998-02-18 01:56:00 +08:00
hypre_StructVector *new_vector = (hypre_StructVector *) vector;
hypre_Index new_grid_index;
int d;
int ierr;
1998-02-18 01:56:00 +08:00
for (d = 0;d < hypre_StructGridDim(hypre_StructVectorGrid(new_vector)); d++)
{
1998-02-18 01:56:00 +08:00
hypre_IndexD(new_grid_index, d) = grid_index[d];
}
1998-02-18 01:56:00 +08:00
ierr = hypre_GetStructVectorValues( new_vector, new_grid_index, values );
return (ierr);
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_SetStructVectorBoxValues
*--------------------------------------------------------------------------*/
int
1998-02-18 01:56:00 +08:00
HYPRE_SetStructVectorBoxValues( HYPRE_StructVector vector,
int *ilower,
int *iupper,
int num_stencil_indices,
int *stencil_indices,
double *values )
{
1998-02-18 01:56:00 +08:00
hypre_StructVector *new_vector = (hypre_StructVector *) vector;
hypre_Index new_ilower;
hypre_Index new_iupper;
hypre_Box *new_value_box;
int d;
int ierr;
1998-02-18 01:56:00 +08:00
for (d = 0;d < hypre_StructGridDim(hypre_StructVectorGrid(new_vector)); d++)
{
1998-02-18 01:56:00 +08:00
hypre_IndexD(new_ilower, d) = ilower[d];
hypre_IndexD(new_iupper, d) = iupper[d];
}
1998-02-18 01:56:00 +08:00
new_value_box = hypre_NewBox(new_ilower, new_iupper);
1998-02-18 01:56:00 +08:00
ierr = hypre_SetStructVectorBoxValues( new_vector, new_value_box, values );
1998-02-18 01:56:00 +08:00
hypre_FreeBox(new_value_box);
return (ierr);
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_AssembleStructVector
*--------------------------------------------------------------------------*/
int
1998-02-18 01:56:00 +08:00
HYPRE_AssembleStructVector( HYPRE_StructVector vector )
{
1998-02-18 01:56:00 +08:00
return( hypre_AssembleStructVector( (hypre_StructVector *) vector ) );
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_PrintStructVector
*--------------------------------------------------------------------------*/
void
1998-02-18 01:56:00 +08:00
HYPRE_PrintStructVector( char *filename,
HYPRE_StructVector vector,
int all )
{
1998-02-18 01:56:00 +08:00
hypre_PrintStructVector( filename,
(hypre_StructVector *) vector,
all );
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_SetStructVectorNumGhost
*--------------------------------------------------------------------------*/
void
1998-02-18 01:56:00 +08:00
HYPRE_SetStructVectorNumGhost( HYPRE_StructMatrix vector,
int *num_ghost )
{
1998-02-18 01:56:00 +08:00
hypre_SetStructVectorNumGhost( (hypre_StructVector *) vector, num_ghost);
}
/*--------------------------------------------------------------------------
1998-02-18 01:56:00 +08:00
* HYPRE_SetStructVectorConstantValues
*--------------------------------------------------------------------------*/
int
1998-02-18 01:56:00 +08:00
HYPRE_SetStructVectorConstantValues( HYPRE_StructMatrix vector,
double values )
{
1998-02-18 01:56:00 +08:00
return( hypre_SetStructVectorConstantValues( (hypre_StructVector *) vector, values) );
}