/*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_StructVector interface * *****************************************************************************/ #include "headers.h" /*-------------------------------------------------------------------------- * HYPRE_StructVectorCreate *--------------------------------------------------------------------------*/ int HYPRE_StructVectorCreate( MPI_Comm comm, HYPRE_StructGrid grid, HYPRE_StructVector *vector ) { int ierr = 0; *vector = hypre_StructVectorCreate(comm, grid); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructVectorDestroy *--------------------------------------------------------------------------*/ int HYPRE_StructVectorDestroy( HYPRE_StructVector struct_vector ) { return( hypre_StructVectorDestroy(struct_vector) ); } /*-------------------------------------------------------------------------- * HYPRE_StructVectorInitialize *--------------------------------------------------------------------------*/ int HYPRE_StructVectorInitialize( HYPRE_StructVector vector ) { return ( hypre_StructVectorInitialize(vector) ); } /*-------------------------------------------------------------------------- * HYPRE_StructVectorSetValues *--------------------------------------------------------------------------*/ int HYPRE_StructVectorSetValues( HYPRE_StructVector vector, int *grid_index, double values ) { hypre_Index new_grid_index; int d; int ierr = 0; hypre_ClearIndex(new_grid_index); for (d = 0; d < hypre_StructGridDim(hypre_StructVectorGrid(vector)); d++) { hypre_IndexD(new_grid_index, d) = grid_index[d]; } ierr = hypre_StructVectorSetValues(vector, new_grid_index, values, 0); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructVectorSetBoxValues *--------------------------------------------------------------------------*/ int HYPRE_StructVectorSetBoxValues( HYPRE_StructVector vector, int *ilower, int *iupper, 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_StructVectorGrid(vector)); 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_StructVectorSetBoxValues(vector, new_value_box, values, 0 ); hypre_BoxDestroy(new_value_box); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructVectorAddToValues *--------------------------------------------------------------------------*/ int HYPRE_StructVectorAddToValues( HYPRE_StructVector vector, int *grid_index, double values ) { hypre_Index new_grid_index; int d; int ierr = 0; hypre_ClearIndex(new_grid_index); for (d = 0; d < hypre_StructGridDim(hypre_StructVectorGrid(vector)); d++) { hypre_IndexD(new_grid_index, d) = grid_index[d]; } ierr = hypre_StructVectorSetValues(vector, new_grid_index, values, 1); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructVectorAddToBoxValues *--------------------------------------------------------------------------*/ int HYPRE_StructVectorAddToBoxValues( HYPRE_StructVector vector, int *ilower, int *iupper, 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_StructVectorGrid(vector)); 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_StructVectorSetBoxValues(vector, new_value_box, values, 1); hypre_BoxDestroy(new_value_box); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructVectorGetValues *--------------------------------------------------------------------------*/ int HYPRE_StructVectorGetValues( HYPRE_StructVector vector, int *grid_index, double *values_ptr ) { hypre_Index new_grid_index; int d; int ierr = 0; hypre_ClearIndex(new_grid_index); for (d = 0; d < hypre_StructGridDim(hypre_StructVectorGrid(vector)); d++) { hypre_IndexD(new_grid_index, d) = grid_index[d]; } ierr = hypre_StructVectorGetValues(vector, new_grid_index, values_ptr); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructVectorGetBoxValues *--------------------------------------------------------------------------*/ int HYPRE_StructVectorGetBoxValues( HYPRE_StructVector vector, int *ilower, int *iupper, 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_StructVectorGrid(vector)); 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_StructVectorGetBoxValues(vector, new_value_box, values); hypre_BoxDestroy(new_value_box); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructVectorAssemble *--------------------------------------------------------------------------*/ int HYPRE_StructVectorAssemble( HYPRE_StructVector vector ) { return( hypre_StructVectorAssemble(vector) ); } /*-------------------------------------------------------------------------- * HYPRE_StructVectorPrint *--------------------------------------------------------------------------*/ int HYPRE_StructVectorPrint( char *filename, HYPRE_StructVector vector, int all ) { return ( hypre_StructVectorPrint(filename, vector, all) ); } /*-------------------------------------------------------------------------- * HYPRE_StructVectorSetNumGhost *--------------------------------------------------------------------------*/ int HYPRE_StructVectorSetNumGhost( HYPRE_StructVector vector, int *num_ghost ) { return ( hypre_StructVectorSetNumGhost(vector, num_ghost) ); } /*-------------------------------------------------------------------------- * HYPRE_StructVectorSetConstantValues *--------------------------------------------------------------------------*/ int HYPRE_StructVectorSetConstantValues( HYPRE_StructVector vector, double values ) { return( hypre_StructVectorSetConstantValues(vector, values) ); } /*-------------------------------------------------------------------------- * HYPRE_StructVectorGetMigrateCommPkg *--------------------------------------------------------------------------*/ int HYPRE_StructVectorGetMigrateCommPkg( HYPRE_StructVector from_vector, HYPRE_StructVector to_vector, HYPRE_CommPkg *comm_pkg ) { int ierr = 0; *comm_pkg = hypre_StructVectorGetMigrateCommPkg(from_vector, to_vector); return ierr; } /*-------------------------------------------------------------------------- * HYPRE_StructVectorMigrate *--------------------------------------------------------------------------*/ int HYPRE_StructVectorMigrate( HYPRE_CommPkg comm_pkg, HYPRE_StructVector from_vector, HYPRE_StructVector to_vector ) { return( hypre_StructVectorMigrate( comm_pkg, from_vector, to_vector) ); } /*-------------------------------------------------------------------------- * HYPRE_CommPkgDestroy *--------------------------------------------------------------------------*/ int HYPRE_CommPkgDestroy( HYPRE_CommPkg comm_pkg ) { return ( hypre_CommPkgDestroy(comm_pkg) ); }