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