hypre/sstruct_ls/_hypre_sstruct_ls.h
2008-07-31 23:11:23 +00:00

753 lines
42 KiB
C

/*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision$
***********************************************************************EHEADER*/
#include <HYPRE_config.h>
#include "HYPRE_sstruct_ls.h"
#ifndef hypre_SSTRUCT_LS_HEADER
#define hypre_SSTRUCT_LS_HEADER
#include "_hypre_utilities.h"
#include "krylov.h"
#include "_hypre_struct_ls.h"
#include "_hypre_sstruct_mv.h"
#include "_hypre_parcsr_ls.h"
#include "multivector.h"
#ifdef __cplusplus
extern "C" {
#endif
/*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision$
***********************************************************************EHEADER*/
/*--------------------------------------------------------------------------
* hypre_SStructOwnInfo data structure
* This structure is for the coarsen fboxes that are on this processor,
* and the cboxes of cgrid/(all coarsened fboxes) on this processor (i.e.,
* the coarse boxes of the composite cgrid (no underlying) on this processor).
*--------------------------------------------------------------------------*/
#ifndef hypre_OWNINFODATA_HEADER
#define hypre_OWNINFODATA_HEADER
typedef struct
{
int size;
hypre_BoxArrayArray *own_boxes; /* size of fgrid */
int **own_cboxnums; /* local cbox number- each fbox
leads to an array of cboxes */
hypre_BoxArrayArray *own_composite_cboxes; /* size of cgrid */
int own_composite_size;
} hypre_SStructOwnInfoData;
/*--------------------------------------------------------------------------
* Accessor macros: hypre_SStructOwnInfoData;
*--------------------------------------------------------------------------*/
#define hypre_SStructOwnInfoDataSize(own_data) ((own_data) -> size)
#define hypre_SStructOwnInfoDataOwnBoxes(own_data) ((own_data) -> own_boxes)
#define hypre_SStructOwnInfoDataOwnBoxNums(own_data) \
((own_data) -> own_cboxnums)
#define hypre_SStructOwnInfoDataCompositeCBoxes(own_data) \
((own_data) -> own_composite_cboxes)
#define hypre_SStructOwnInfoDataCompositeSize(own_data) \
((own_data) -> own_composite_size)
#endif
/*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision$
***********************************************************************EHEADER*/
/*--------------------------------------------------------------------------
* hypre_SStructRecvInfo data structure
*--------------------------------------------------------------------------*/
#ifndef hypre_RECVINFODATA_HEADER
#define hypre_RECVINFODATA_HEADER
typedef struct
{
int size;
hypre_BoxArrayArray *recv_boxes;
int **recv_procs;
} hypre_SStructRecvInfoData;
#endif
/*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision$
***********************************************************************EHEADER*/
/*--------------------------------------------------------------------------
* hypre_SStructSendInfo data structure
*--------------------------------------------------------------------------*/
#ifndef hypre_SENDINFODATA_HEADER
#define hypre_SENDINFODATA_HEADER
typedef struct
{
int size;
hypre_BoxArrayArray *send_boxes;
int **send_procs;
int **send_remote_boxnums;
} hypre_SStructSendInfoData;
#endif
/*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision$
***********************************************************************EHEADER*/
typedef struct
{
hypre_IJMatrix *Face_iedge;
hypre_IJMatrix *Element_iedge;
hypre_IJMatrix *Edge_iedge;
hypre_IJMatrix *Element_Face;
hypre_IJMatrix *Element_Edge;
} hypre_PTopology;
/*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision$
***********************************************************************EHEADER*/
/******************************************************************************
*
* Header info for the Maxwell solver
*
*****************************************************************************/
#ifndef hypre_MAXWELL_HEADER
#define hypre_MAXWELL_HEADER
/*--------------------------------------------------------------------------
* hypre_MaxwellData:
*--------------------------------------------------------------------------*/
typedef struct
{
MPI_Comm comm;
double tol;
int max_iter;
int rel_change;
int zero_guess;
int ndim;
int num_pre_relax; /* number of pre relaxation sweeps */
int num_post_relax; /* number of post relaxation sweeps */
int constant_coef;
hypre_Index *rfactor;
hypre_SStructGrid **egrid_l;
HYPRE_IJMatrix Aen;
hypre_ParCSRMatrix **Aen_l;
/* these will be extracted from the amg_data structure. Note that there is no grid
underlying these matrices and vectors if they are generated by the amg_setup.
So, will be stored as Parcsr_matrices and Par_vectors. */
hypre_SStructMatrix *Ann;
hypre_SStructVector *bn;
hypre_SStructVector *xn;
void *amg_vdata;
hypre_ParCSRMatrix **Ann_l;
hypre_SStructStencil **Ann_stencils;
hypre_ParCSRMatrix **Pn_l;
hypre_ParCSRMatrix **RnT_l;
hypre_ParVector **bn_l;
hypre_ParVector **xn_l;
hypre_ParVector **resn_l;
hypre_ParVector **en_l;
hypre_ParVector **nVtemp_l;
hypre_ParVector **nVtemp2_l;
int **nCF_marker_l;
double *nrelax_weight;
double *nomega;
int nrelax_type;
int node_numlevels;
hypre_ParCSRMatrix *Tgrad;
hypre_ParCSRMatrix *T_transpose;
/* edge data structure. These will have grids. */
int edge_maxlevels;
int edge_numlevels;
hypre_ParCSRMatrix **Aee_l;
hypre_ParVector **be_l;
hypre_ParVector **xe_l;
hypre_ParVector **rese_l;
hypre_ParVector **ee_l;
hypre_ParVector **eVtemp_l;
hypre_ParVector **eVtemp2_l;
int **eCF_marker_l;
double *erelax_weight;
double *eomega;
int erelax_type;
/* edge data structure. These will have no grid. */
hypre_IJMatrix **Pe_l;
hypre_IJMatrix **ReT_l;
int **BdryRanks_l;
int *BdryRanksCnts_l;
/* edge-node data structure. These will have grids. */
int en_numlevels;
/* log info (always logged) */
int num_iterations;
int time_index;
/* additional log info (logged when `logging' > 0) */
int print_level;
int logging;
double *norms;
double *rel_norms;
} hypre_MaxwellData;
#endif
/*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision$
***********************************************************************EHEADER*/
typedef struct
{
int row;
int ncols;
int *cols;
double *data;
} hypre_MaxwellOffProcRow;
/* eliminate_rowscols.c */
int hypre_ParCSRMatrixEliminateRowsCols ( hypre_ParCSRMatrix *A , int nrows_to_eliminate , int *rows_to_eliminate );
int hypre_CSRMatrixEliminateRowsColsDiag ( hypre_ParCSRMatrix *A , int nrows_to_eliminate , int *rows_to_eliminate );
int hypre_CSRMatrixEliminateRowsOffd ( hypre_ParCSRMatrix *A , int nrows_to_eliminate , int *rows_to_eliminate );
int hypre_CSRMatrixEliminateColsOffd ( hypre_CSRMatrix *Aoffd , int ncols_to_eliminate , int *cols_to_eliminate );
/* fac_amr_fcoarsen.c */
int hypre_AMR_FCoarsen ( hypre_SStructMatrix *A , hypre_SStructMatrix *fac_A , hypre_SStructPMatrix *A_crse , hypre_Index refine_factors , int level );
/* fac_amr_rap.c */
int hypre_AMR_RAP ( hypre_SStructMatrix *A , hypre_Index *rfactors , hypre_SStructMatrix **fac_A_ptr );
/* fac_amr_zero_data.c */
int hypre_ZeroAMRVectorData ( hypre_SStructVector *b , int *plevels , hypre_Index *rfactors );
int hypre_ZeroAMRMatrixData ( hypre_SStructMatrix *A , int part_crse , hypre_Index rfactors );
/* fac.c */
void *hypre_FACCreate ( MPI_Comm comm );
int hypre_FACDestroy2 ( void *fac_vdata );
int hypre_FACSetTol ( void *fac_vdata , double tol );
int hypre_FACSetPLevels ( void *fac_vdata , int nparts , int *plevels );
int hypre_FACSetPRefinements ( void *fac_vdata , int nparts , int (*prefinements )[3 ]);
int hypre_FACSetMaxLevels ( void *fac_vdata , int nparts );
int hypre_FACSetMaxIter ( void *fac_vdata , int max_iter );
int hypre_FACSetRelChange ( void *fac_vdata , int rel_change );
int hypre_FACSetZeroGuess ( void *fac_vdata , int zero_guess );
int hypre_FACSetRelaxType ( void *fac_vdata , int relax_type );
int hypre_FACSetJacobiWeight ( void *fac_vdata , double weight );
int hypre_FACSetNumPreSmooth ( void *fac_vdata , int num_pre_smooth );
int hypre_FACSetNumPostSmooth ( void *fac_vdata , int num_post_smooth );
int hypre_FACSetCoarseSolverType ( void *fac_vdata , int csolver_type );
int hypre_FACSetLogging ( void *fac_vdata , int logging );
int hypre_FACGetNumIterations ( void *fac_vdata , int *num_iterations );
int hypre_FACPrintLogging ( void *fac_vdata , int myid );
int hypre_FACGetFinalRelativeResidualNorm ( void *fac_vdata , double *relative_residual_norm );
/* fac_cf_coarsen.c */
int hypre_AMR_CFCoarsen ( hypre_SStructMatrix *A , hypre_SStructMatrix *fac_A , hypre_Index refine_factors , int level );
/* fac_CFInterfaceExtents.c */
hypre_BoxArray *hypre_CFInterfaceExtents ( hypre_Box *fgrid_box , hypre_Box *cgrid_box , hypre_StructStencil *stencils , hypre_Index rfactors );
int hypre_CFInterfaceExtents2 ( hypre_Box *fgrid_box , hypre_Box *cgrid_box , hypre_StructStencil *stencils , hypre_Index rfactors , hypre_BoxArray *cf_interface );
/* fac_cfstencil_box.c */
hypre_Box *hypre_CF_StenBox ( hypre_Box *fgrid_box , hypre_Box *cgrid_box , hypre_Index stencil_shape , hypre_Index rfactors , int ndim );
/* fac_interp2.c */
int hypre_FacSemiInterpCreate2 ( void **fac_interp_vdata_ptr );
int hypre_FacSemiInterpDestroy2 ( void *fac_interp_vdata );
int hypre_FacSemiInterpSetup2 ( void *fac_interp_vdata , hypre_SStructVector *e , hypre_SStructPVector *ec , hypre_Index rfactors );
int hypre_FAC_IdentityInterp2 ( void *fac_interp_vdata , hypre_SStructPVector *xc , hypre_SStructVector *e );
int hypre_FAC_WeightedInterp2 ( void *fac_interp_vdata , hypre_SStructPVector *xc , hypre_SStructVector *e_parts );
/* fac_relax.c */
int hypre_FacLocalRelax ( void *relax_vdata , hypre_SStructPMatrix *A , hypre_SStructPVector *x , hypre_SStructPVector *b , int num_relax , int *zero_guess );
/* fac_restrict2.c */
int hypre_FacSemiRestrictCreate2 ( void **fac_restrict_vdata_ptr );
int hypre_FacSemiRestrictSetup2 ( void *fac_restrict_vdata , hypre_SStructVector *r , int part_crse , int part_fine , hypre_SStructPVector *rc , hypre_Index rfactors );
int hypre_FACRestrict2 ( void *fac_restrict_vdata , hypre_SStructVector *xf , hypre_SStructPVector *xc );
int hypre_FacSemiRestrictDestroy2 ( void *fac_restrict_vdata );
/* fac_setup2.c */
int hypre_FacSetup2 ( void *fac_vdata , hypre_SStructMatrix *A_in , hypre_SStructVector *b , hypre_SStructVector *x );
/* fac_solve3.c */
int hypre_FACSolve3 ( void *fac_vdata , hypre_SStructMatrix *A_user , hypre_SStructVector *b_in , hypre_SStructVector *x_in );
/* fac_zero_cdata.c */
int hypre_FacZeroCData ( void *fac_vdata , hypre_SStructMatrix *A );
/* fac_zero_stencilcoef.c */
int hypre_FacZeroCFSten ( hypre_SStructPMatrix *Af , hypre_SStructPMatrix *Ac , hypre_SStructGrid *grid , int fine_part , hypre_Index rfactors );
int hypre_FacZeroFCSten ( hypre_SStructPMatrix *A , hypre_SStructGrid *grid , int fine_part );
/* hypre_bsearch.c */
int hypre_LowerBinarySearch ( int *list , int value , int list_length );
int hypre_UpperBinarySearch ( int *list , int value , int list_length );
/* hypre_MaxwellSolve2.c */
int hypre_MaxwellSolve2 ( void *maxwell_vdata , hypre_SStructMatrix *A_in , hypre_SStructVector *f , hypre_SStructVector *u );
/* hypre_MaxwellSolve.c */
int hypre_MaxwellSolve ( void *maxwell_vdata , hypre_SStructMatrix *A_in , hypre_SStructVector *f , hypre_SStructVector *u );
/* HYPRE_sstruct_bicgstab.c */
int HYPRE_SStructBiCGSTABCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver );
int HYPRE_SStructBiCGSTABDestroy ( HYPRE_SStructSolver solver );
int HYPRE_SStructBiCGSTABSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructBiCGSTABSolve ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructBiCGSTABSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructBiCGSTABSetAbsoluteTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructBiCGSTABSetMinIter ( HYPRE_SStructSolver solver , int min_iter );
int HYPRE_SStructBiCGSTABSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructBiCGSTABSetStopCrit ( HYPRE_SStructSolver solver , int stop_crit );
int HYPRE_SStructBiCGSTABSetPrecond ( HYPRE_SStructSolver solver , HYPRE_PtrToSStructSolverFcn precond , HYPRE_PtrToSStructSolverFcn precond_setup , void *precond_data );
int HYPRE_SStructBiCGSTABSetLogging ( HYPRE_SStructSolver solver , int logging );
int HYPRE_SStructBiCGSTABSetPrintLevel ( HYPRE_SStructSolver solver , int print_level );
int HYPRE_SStructBiCGSTABGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructBiCGSTABGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
int HYPRE_SStructBiCGSTABGetResidual ( HYPRE_SStructSolver solver , void **residual );
/* HYPRE_sstruct_flexgmres.c */
int HYPRE_SStructFlexGMRESCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver );
int HYPRE_SStructFlexGMRESDestroy ( HYPRE_SStructSolver solver );
int HYPRE_SStructFlexGMRESSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructFlexGMRESSolve ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructFlexGMRESSetKDim ( HYPRE_SStructSolver solver , int k_dim );
int HYPRE_SStructFlexGMRESSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructFlexGMRESSetAbsoluteTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructFlexGMRESSetMinIter ( HYPRE_SStructSolver solver , int min_iter );
int HYPRE_SStructFlexGMRESSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructFlexGMRESSetPrecond ( HYPRE_SStructSolver solver , HYPRE_PtrToSStructSolverFcn precond , HYPRE_PtrToSStructSolverFcn precond_setup , void *precond_data );
int HYPRE_SStructFlexGMRESSetLogging ( HYPRE_SStructSolver solver , int logging );
int HYPRE_SStructFlexGMRESSetPrintLevel ( HYPRE_SStructSolver solver , int level );
int HYPRE_SStructFlexGMRESGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructFlexGMRESGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
int HYPRE_SStructFlexGMRESGetResidual ( HYPRE_SStructSolver solver , void **residual );
int HYPRE_SStructFlexGMRESSetModifyPC ( HYPRE_SStructSolver solver , HYPRE_PtrToModifyPCFcn modify_pc );
/* HYPRE_sstruct_gmres.c */
int HYPRE_SStructGMRESCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver );
int HYPRE_SStructGMRESDestroy ( HYPRE_SStructSolver solver );
int HYPRE_SStructGMRESSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructGMRESSolve ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructGMRESSetKDim ( HYPRE_SStructSolver solver , int k_dim );
int HYPRE_SStructGMRESSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructGMRESSetAbsoluteTol ( HYPRE_SStructSolver solver , double atol );
int HYPRE_SStructGMRESSetMinIter ( HYPRE_SStructSolver solver , int min_iter );
int HYPRE_SStructGMRESSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructGMRESSetStopCrit ( HYPRE_SStructSolver solver , int stop_crit );
int HYPRE_SStructGMRESSetPrecond ( HYPRE_SStructSolver solver , HYPRE_PtrToSStructSolverFcn precond , HYPRE_PtrToSStructSolverFcn precond_setup , void *precond_data );
int HYPRE_SStructGMRESSetLogging ( HYPRE_SStructSolver solver , int logging );
int HYPRE_SStructGMRESSetPrintLevel ( HYPRE_SStructSolver solver , int level );
int HYPRE_SStructGMRESGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructGMRESGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
int HYPRE_SStructGMRESGetResidual ( HYPRE_SStructSolver solver , void **residual );
/* HYPRE_sstruct_int.c */
int hypre_SStructPVectorSetRandomValues ( hypre_SStructPVector *pvector , int seed );
int hypre_SStructVectorSetRandomValues ( hypre_SStructVector *vector , int seed );
int hypre_SStructSetRandomValues ( void *v , int seed );
int HYPRE_SStructSetupInterpreter ( mv_InterfaceInterpreter *i );
int HYPRE_SStructSetupMatvec ( HYPRE_MatvecFunctions *mv );
/* HYPRE_sstruct_InterFAC.c */
int HYPRE_SStructFACCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver );
int HYPRE_SStructFACDestroy2 ( HYPRE_SStructSolver solver );
int HYPRE_SStructFACAMR_RAP ( HYPRE_SStructMatrix A , int (*rfactors )[3 ], HYPRE_SStructMatrix *fac_A );
int HYPRE_SStructFACSetup2 ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructFACSolve3 ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructFACSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructFACSetPLevels ( HYPRE_SStructSolver solver , int nparts , int *plevels );
int HYPRE_SStructFACZeroCFSten ( HYPRE_SStructMatrix A , HYPRE_SStructGrid grid , int part , int rfactors [3 ]);
int HYPRE_SStructFACZeroFCSten ( HYPRE_SStructMatrix A , HYPRE_SStructGrid grid , int part );
int HYPRE_SStructFACZeroAMRMatrixData ( HYPRE_SStructMatrix A , int part_crse , int rfactors [3 ]);
int HYPRE_SStructFACZeroAMRVectorData ( HYPRE_SStructVector b , int *plevels , int (*rfactors )[3 ]);
int HYPRE_SStructFACSetPRefinements ( HYPRE_SStructSolver solver , int nparts , int (*rfactors )[3 ]);
int HYPRE_SStructFACSetMaxLevels ( HYPRE_SStructSolver solver , int max_levels );
int HYPRE_SStructFACSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructFACSetRelChange ( HYPRE_SStructSolver solver , int rel_change );
int HYPRE_SStructFACSetZeroGuess ( HYPRE_SStructSolver solver );
int HYPRE_SStructFACSetNonZeroGuess ( HYPRE_SStructSolver solver );
int HYPRE_SStructFACSetRelaxType ( HYPRE_SStructSolver solver , int relax_type );
int HYPRE_SStructFACSetJacobiWeight ( HYPRE_SStructSolver solver , double weight );
int HYPRE_SStructFACSetNumPreRelax ( HYPRE_SStructSolver solver , int num_pre_relax );
int HYPRE_SStructFACSetNumPostRelax ( HYPRE_SStructSolver solver , int num_post_relax );
int HYPRE_SStructFACSetCoarseSolverType ( HYPRE_SStructSolver solver , int csolver_type );
int HYPRE_SStructFACSetLogging ( HYPRE_SStructSolver solver , int logging );
int HYPRE_SStructFACGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructFACGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
/* HYPRE_sstruct_lgmres.c */
int HYPRE_SStructLGMRESCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver );
int HYPRE_SStructLGMRESDestroy ( HYPRE_SStructSolver solver );
int HYPRE_SStructLGMRESSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructLGMRESSolve ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructLGMRESSetKDim ( HYPRE_SStructSolver solver , int k_dim );
int HYPRE_SStructLGMRESSetAugDim ( HYPRE_SStructSolver solver , int aug_dim );
int HYPRE_SStructLGMRESSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructLGMRESSetAbsoluteTol ( HYPRE_SStructSolver solver , double atol );
int HYPRE_SStructLGMRESSetMinIter ( HYPRE_SStructSolver solver , int min_iter );
int HYPRE_SStructLGMRESSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructLGMRESSetPrecond ( HYPRE_SStructSolver solver , HYPRE_PtrToSStructSolverFcn precond , HYPRE_PtrToSStructSolverFcn precond_setup , void *precond_data );
int HYPRE_SStructLGMRESSetLogging ( HYPRE_SStructSolver solver , int logging );
int HYPRE_SStructLGMRESSetPrintLevel ( HYPRE_SStructSolver solver , int level );
int HYPRE_SStructLGMRESGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructLGMRESGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
int HYPRE_SStructLGMRESGetResidual ( HYPRE_SStructSolver solver , void **residual );
/* HYPRE_sstruct_maxwell.c */
int HYPRE_SStructMaxwellCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver );
int HYPRE_SStructMaxwellDestroy ( HYPRE_SStructSolver solver );
int HYPRE_SStructMaxwellSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructMaxwellSolve ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructMaxwellSolve2 ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_MaxwellGrad ( HYPRE_SStructGrid grid , HYPRE_ParCSRMatrix *T );
int HYPRE_SStructMaxwellSetGrad ( HYPRE_SStructSolver solver , HYPRE_ParCSRMatrix T );
int HYPRE_SStructMaxwellSetRfactors ( HYPRE_SStructSolver solver , int rfactors [3 ]);
int HYPRE_SStructMaxwellSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructMaxwellSetConstantCoef ( HYPRE_SStructSolver solver , int constant_coef );
int HYPRE_SStructMaxwellSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructMaxwellSetRelChange ( HYPRE_SStructSolver solver , int rel_change );
int HYPRE_SStructMaxwellSetNumPreRelax ( HYPRE_SStructSolver solver , int num_pre_relax );
int HYPRE_SStructMaxwellSetNumPostRelax ( HYPRE_SStructSolver solver , int num_post_relax );
int HYPRE_SStructMaxwellSetLogging ( HYPRE_SStructSolver solver , int logging );
int HYPRE_SStructMaxwellSetPrintLevel ( HYPRE_SStructSolver solver , int print_level );
int HYPRE_SStructMaxwellPrintLogging ( HYPRE_SStructSolver solver , int myid );
int HYPRE_SStructMaxwellGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructMaxwellGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
int HYPRE_SStructMaxwellPhysBdy ( HYPRE_SStructGrid *grid_l , int num_levels , int rfactors [3 ], int ***BdryRanks_ptr , int **BdryRanksCnt_ptr );
int HYPRE_SStructMaxwellEliminateRowsCols ( HYPRE_ParCSRMatrix parA , int nrows , int *rows );
int HYPRE_SStructMaxwellZeroVector ( HYPRE_ParVector v , int *rows , int nrows );
/* HYPRE_sstruct_pcg.c */
int HYPRE_SStructPCGCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver );
int HYPRE_SStructPCGDestroy ( HYPRE_SStructSolver solver );
int HYPRE_SStructPCGSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructPCGSolve ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructPCGSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructPCGSetAbsoluteTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructPCGSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructPCGSetTwoNorm ( HYPRE_SStructSolver solver , int two_norm );
int HYPRE_SStructPCGSetRelChange ( HYPRE_SStructSolver solver , int rel_change );
int HYPRE_SStructPCGSetPrecond ( HYPRE_SStructSolver solver , HYPRE_PtrToSStructSolverFcn precond , HYPRE_PtrToSStructSolverFcn precond_setup , void *precond_data );
int HYPRE_SStructPCGSetLogging ( HYPRE_SStructSolver solver , int logging );
int HYPRE_SStructPCGSetPrintLevel ( HYPRE_SStructSolver solver , int level );
int HYPRE_SStructPCGGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructPCGGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
int HYPRE_SStructPCGGetResidual ( HYPRE_SStructSolver solver , void **residual );
int HYPRE_SStructDiagScaleSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector y , HYPRE_SStructVector x );
int HYPRE_SStructDiagScale ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector y , HYPRE_SStructVector x );
/* HYPRE_sstruct_split.c */
int HYPRE_SStructSplitCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver_ptr );
int HYPRE_SStructSplitDestroy ( HYPRE_SStructSolver solver );
int HYPRE_SStructSplitSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructSplitSolve ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructSplitSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructSplitSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructSplitSetZeroGuess ( HYPRE_SStructSolver solver );
int HYPRE_SStructSplitSetNonZeroGuess ( HYPRE_SStructSolver solver );
int HYPRE_SStructSplitSetStructSolver ( HYPRE_SStructSolver solver , int ssolver );
int HYPRE_SStructSplitGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructSplitGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
/* HYPRE_sstruct_sys_pfmg.c */
int HYPRE_SStructSysPFMGCreate ( MPI_Comm comm , HYPRE_SStructSolver *solver );
int HYPRE_SStructSysPFMGDestroy ( HYPRE_SStructSolver solver );
int HYPRE_SStructSysPFMGSetup ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructSysPFMGSolve ( HYPRE_SStructSolver solver , HYPRE_SStructMatrix A , HYPRE_SStructVector b , HYPRE_SStructVector x );
int HYPRE_SStructSysPFMGSetTol ( HYPRE_SStructSolver solver , double tol );
int HYPRE_SStructSysPFMGSetMaxIter ( HYPRE_SStructSolver solver , int max_iter );
int HYPRE_SStructSysPFMGSetRelChange ( HYPRE_SStructSolver solver , int rel_change );
int HYPRE_SStructSysPFMGSetZeroGuess ( HYPRE_SStructSolver solver );
int HYPRE_SStructSysPFMGSetNonZeroGuess ( HYPRE_SStructSolver solver );
int HYPRE_SStructSysPFMGSetRelaxType ( HYPRE_SStructSolver solver , int relax_type );
int HYPRE_SStructSysPFMGSetJacobiWeight ( HYPRE_SStructSolver solver , double weight );
int HYPRE_SStructSysPFMGSetNumPreRelax ( HYPRE_SStructSolver solver , int num_pre_relax );
int HYPRE_SStructSysPFMGSetNumPostRelax ( HYPRE_SStructSolver solver , int num_post_relax );
int HYPRE_SStructSysPFMGSetSkipRelax ( HYPRE_SStructSolver solver , int skip_relax );
int HYPRE_SStructSysPFMGSetDxyz ( HYPRE_SStructSolver solver , double *dxyz );
int HYPRE_SStructSysPFMGSetLogging ( HYPRE_SStructSolver solver , int logging );
int HYPRE_SStructSysPFMGSetPrintLevel ( HYPRE_SStructSolver solver , int print_level );
int HYPRE_SStructSysPFMGGetNumIterations ( HYPRE_SStructSolver solver , int *num_iterations );
int HYPRE_SStructSysPFMGGetFinalRelativeResidualNorm ( HYPRE_SStructSolver solver , double *norm );
/* krylov.c */
int hypre_SStructKrylovIdentitySetup ( void *vdata , void *A , void *b , void *x );
int hypre_SStructKrylovIdentity ( void *vdata , void *A , void *b , void *x );
/* krylov_sstruct.c */
char *hypre_SStructKrylovCAlloc ( int count , int elt_size );
int hypre_SStructKrylovFree ( char *ptr );
void *hypre_SStructKrylovCreateVector ( void *vvector );
void *hypre_SStructKrylovCreateVectorArray ( int n , void *vvector );
int hypre_SStructKrylovDestroyVector ( void *vvector );
void *hypre_SStructKrylovMatvecCreate ( void *A , void *x );
int hypre_SStructKrylovMatvec ( void *matvec_data , double alpha , void *A , void *x , double beta , void *y );
int hypre_SStructKrylovMatvecDestroy ( void *matvec_data );
double hypre_SStructKrylovInnerProd ( void *x , void *y );
int hypre_SStructKrylovCopyVector ( void *x , void *y );
int hypre_SStructKrylovClearVector ( void *x );
int hypre_SStructKrylovScaleVector ( double alpha , void *x );
int hypre_SStructKrylovAxpy ( double alpha , void *x , void *y );
int hypre_SStructKrylovCommInfo ( void *A , int *my_id , int *num_procs );
/* maxwell_grad.c */
hypre_ParCSRMatrix *hypre_Maxwell_Grad ( hypre_SStructGrid *grid );
/* maxwell_physbdy.c */
int hypre_Maxwell_PhysBdy ( hypre_SStructGrid **grid_l , int num_levels , hypre_Index rfactors , int ***BdryRanksl_ptr , int **BdryRanksCntsl_ptr );
int hypre_Maxwell_VarBdy ( hypre_SStructPGrid *pgrid , hypre_BoxArrayArray **bdry );
/* maxwell_PNedelec_bdy.c */
int hypre_Maxwell_PNedelec_Bdy ( hypre_StructGrid *cell_grid , hypre_SStructPGrid *pgrid , hypre_BoxArrayArray ****bdry_ptr );
/* maxwell_PNedelec.c */
hypre_IJMatrix *hypre_Maxwell_PNedelec ( hypre_SStructGrid *fgrid_edge , hypre_SStructGrid *cgrid_edge , hypre_Index rfactor );
/* maxwell_semi_interp.c */
int hypre_CreatePTopology ( void **PTopology_vdata_ptr );
int hypre_DestroyPTopology ( void *PTopology_vdata );
hypre_IJMatrix *hypre_Maxwell_PTopology ( hypre_SStructGrid *fgrid_edge , hypre_SStructGrid *cgrid_edge , hypre_SStructGrid *fgrid_face , hypre_SStructGrid *cgrid_face , hypre_SStructGrid *fgrid_element , hypre_SStructGrid *cgrid_element , hypre_ParCSRMatrix *Aee , hypre_Index rfactor , void *PTopology_vdata );
int hypre_CollapseStencilToStencil ( hypre_ParCSRMatrix *Aee , hypre_SStructGrid *grid , int part , int var , hypre_Index pt_location , int collapse_dir , int new_stencil_dir , double **collapsed_vals_ptr );
int hypre_TriDiagSolve ( double *diag , double *upper , double *lower , double *rhs , int size );
/* maxwell_TV.c */
void *hypre_MaxwellTVCreate ( MPI_Comm comm );
int hypre_MaxwellTVDestroy ( void *maxwell_vdata );
int hypre_MaxwellSetRfactors ( void *maxwell_vdata , int rfactor [3 ]);
int hypre_MaxwellSetGrad ( void *maxwell_vdata , hypre_ParCSRMatrix *T );
int hypre_MaxwellSetConstantCoef ( void *maxwell_vdata , int constant_coef );
int hypre_MaxwellSetTol ( void *maxwell_vdata , double tol );
int hypre_MaxwellSetMaxIter ( void *maxwell_vdata , int max_iter );
int hypre_MaxwellSetRelChange ( void *maxwell_vdata , int rel_change );
int hypre_MaxwellSetNumPreRelax ( void *maxwell_vdata , int num_pre_relax );
int hypre_MaxwellSetNumPostRelax ( void *maxwell_vdata , int num_post_relax );
int hypre_MaxwellGetNumIterations ( void *maxwell_vdata , int *num_iterations );
int hypre_MaxwellSetPrintLevel ( void *maxwell_vdata , int print_level );
int hypre_MaxwellSetLogging ( void *maxwell_vdata , int logging );
int hypre_MaxwellPrintLogging ( void *maxwell_vdata , int myid );
int hypre_MaxwellGetFinalRelativeResidualNorm ( void *maxwell_vdata , double *relative_residual_norm );
/* maxwell_TV_setup.c */
int hypre_MaxwellTV_Setup ( void *maxwell_vdata , hypre_SStructMatrix *Aee_in , hypre_SStructVector *b_in , hypre_SStructVector *x_in );
int hypre_CoarsenPGrid ( hypre_SStructGrid *fgrid , hypre_Index index , hypre_Index stride , int part , hypre_SStructGrid *cgrid , int *nboxes );
hypre_Box *hypre_BoxContraction ( hypre_Box *box , hypre_StructGrid *sgrid , hypre_Index rfactor );
/* maxwell_zeroBC.c */
int hypre_ParVectorZeroBCValues ( hypre_ParVector *v , int *rows , int nrows );
int hypre_SeqVectorZeroBCValues ( hypre_Vector *v , int *rows , int nrows );
/* nd1_amge_interpolation.c */
int hypre_ND1AMGeInterpolation ( hypre_ParCSRMatrix *Aee , hypre_ParCSRMatrix *ELEM_idof , hypre_ParCSRMatrix *FACE_idof , hypre_ParCSRMatrix *EDGE_idof , hypre_ParCSRMatrix *ELEM_FACE , hypre_ParCSRMatrix *ELEM_EDGE , int num_OffProcRows , hypre_MaxwellOffProcRow **OffProcRows , hypre_IJMatrix *IJ_dof_DOF );
int hypre_HarmonicExtension ( hypre_CSRMatrix *A , hypre_CSRMatrix *P , int num_DOF , int *DOF , int num_idof , int *idof , int num_bdof , int *bdof );
/* node_relax.c */
void *hypre_NodeRelaxCreate ( MPI_Comm comm );
int hypre_NodeRelaxDestroy ( void *relax_vdata );
int hypre_NodeRelaxSetup ( void *relax_vdata , hypre_SStructPMatrix *A , hypre_SStructPVector *b , hypre_SStructPVector *x );
int hypre_NodeRelax ( void *relax_vdata , hypre_SStructPMatrix *A , hypre_SStructPVector *b , hypre_SStructPVector *x );
int hypre_NodeRelaxSetTol ( void *relax_vdata , double tol );
int hypre_NodeRelaxSetMaxIter ( void *relax_vdata , int max_iter );
int hypre_NodeRelaxSetZeroGuess ( void *relax_vdata , int zero_guess );
int hypre_NodeRelaxSetWeight ( void *relax_vdata , double weight );
int hypre_NodeRelaxSetNumNodesets ( void *relax_vdata , int num_nodesets );
int hypre_NodeRelaxSetNodeset ( void *relax_vdata , int nodeset , int nodeset_size , hypre_Index nodeset_stride , hypre_Index *nodeset_indices );
int hypre_NodeRelaxSetNodesetRank ( void *relax_vdata , int nodeset , int nodeset_rank );
int hypre_NodeRelaxSetTempVec ( void *relax_vdata , hypre_SStructPVector *t );
/* sstruct_amr_intercommunication.c */
int hypre_SStructAMRInterCommunication ( hypre_SStructSendInfoData *sendinfo , hypre_SStructRecvInfoData *recvinfo , hypre_BoxArray *send_data_space , hypre_BoxArray *recv_data_space , int num_values , MPI_Comm comm , hypre_CommPkg **comm_pkg_ptr );
/* sstruct_owninfo.c */
int hypre_SStructIndexScaleF_C ( hypre_Index findex , hypre_Index index , hypre_Index stride , hypre_Index cindex );
int hypre_SStructIndexScaleC_F ( hypre_Index cindex , hypre_Index index , hypre_Index stride , hypre_Index findex );
hypre_SStructOwnInfoData *hypre_SStructOwnInfo ( hypre_StructGrid *fgrid , hypre_StructGrid *cgrid , hypre_BoxMap *cmap , hypre_BoxMap *fmap , hypre_Index rfactor );
int hypre_SStructOwnInfoDataDestroy ( hypre_SStructOwnInfoData *owninfo_data );
/* sstruct_recvinfo.c */
hypre_SStructRecvInfoData *hypre_SStructRecvInfo ( hypre_StructGrid *cgrid , hypre_BoxMap *fmap , hypre_Index rfactor );
int hypre_SStructRecvInfoDataDestroy ( hypre_SStructRecvInfoData *recvinfo_data );
/* sstruct_sendinfo.c */
hypre_SStructSendInfoData *hypre_SStructSendInfo ( hypre_StructGrid *fgrid , hypre_BoxMap *cmap , hypre_Index rfactor );
int hypre_SStructSendInfoDataDestroy ( hypre_SStructSendInfoData *sendinfo_data );
/* sstruct_sharedDOFComm.c */
hypre_MaxwellOffProcRow *hypre_MaxwellOffProcRowCreate ( int ncols );
int hypre_MaxwellOffProcRowDestroy ( void *OffProcRow_vdata );
int hypre_SStructSharedDOF_ParcsrMatRowsComm ( hypre_SStructGrid *grid , hypre_ParCSRMatrix *A , int *num_offprocrows_ptr , hypre_MaxwellOffProcRow ***OffProcRows_ptr );
/* sys_pfmg.c */
void *hypre_SysPFMGCreate ( MPI_Comm comm );
int hypre_SysPFMGDestroy ( void *sys_pfmg_vdata );
int hypre_SysPFMGSetTol ( void *sys_pfmg_vdata , double tol );
int hypre_SysPFMGSetMaxIter ( void *sys_pfmg_vdata , int max_iter );
int hypre_SysPFMGSetRelChange ( void *sys_pfmg_vdata , int rel_change );
int hypre_SysPFMGSetZeroGuess ( void *sys_pfmg_vdata , int zero_guess );
int hypre_SysPFMGSetRelaxType ( void *sys_pfmg_vdata , int relax_type );
int hypre_SysPFMGSetJacobiWeight ( void *sys_pfmg_vdata , double weight );
int hypre_SysPFMGSetNumPreRelax ( void *sys_pfmg_vdata , int num_pre_relax );
int hypre_SysPFMGSetNumPostRelax ( void *sys_pfmg_vdata , int num_post_relax );
int hypre_SysPFMGSetSkipRelax ( void *sys_pfmg_vdata , int skip_relax );
int hypre_SysPFMGSetDxyz ( void *sys_pfmg_vdata , double *dxyz );
int hypre_SysPFMGSetLogging ( void *sys_pfmg_vdata , int logging );
int hypre_SysPFMGSetPrintLevel ( void *sys_pfmg_vdata , int print_level );
int hypre_SysPFMGGetNumIterations ( void *sys_pfmg_vdata , int *num_iterations );
int hypre_SysPFMGPrintLogging ( void *sys_pfmg_vdata , int myid );
int hypre_SysPFMGGetFinalRelativeResidualNorm ( void *sys_pfmg_vdata , double *relative_residual_norm );
/* sys_pfmg_relax.c */
void *hypre_SysPFMGRelaxCreate ( MPI_Comm comm );
int hypre_SysPFMGRelaxDestroy ( void *sys_pfmg_relax_vdata );
int hypre_SysPFMGRelax ( void *sys_pfmg_relax_vdata , hypre_SStructPMatrix *A , hypre_SStructPVector *b , hypre_SStructPVector *x );
int hypre_SysPFMGRelaxSetup ( void *sys_pfmg_relax_vdata , hypre_SStructPMatrix *A , hypre_SStructPVector *b , hypre_SStructPVector *x );
int hypre_SysPFMGRelaxSetType ( void *sys_pfmg_relax_vdata , int relax_type );
int hypre_SysPFMGRelaxSetJacobiWeight ( void *sys_pfmg_relax_vdata , double weight );
int hypre_SysPFMGRelaxSetPreRelax ( void *sys_pfmg_relax_vdata );
int hypre_SysPFMGRelaxSetPostRelax ( void *sys_pfmg_relax_vdata );
int hypre_SysPFMGRelaxSetTol ( void *sys_pfmg_relax_vdata , double tol );
int hypre_SysPFMGRelaxSetMaxIter ( void *sys_pfmg_relax_vdata , int max_iter );
int hypre_SysPFMGRelaxSetZeroGuess ( void *sys_pfmg_relax_vdata , int zero_guess );
int hypre_SysPFMGRelaxSetTempVec ( void *sys_pfmg_relax_vdata , hypre_SStructPVector *t );
/* sys_pfmg_setup.c */
int hypre_SysPFMGSetup ( void *sys_pfmg_vdata , hypre_SStructMatrix *A_in , hypre_SStructVector *b_in , hypre_SStructVector *x_in );
int hypre_SysStructCoarsen ( hypre_SStructPGrid *fgrid , hypre_Index index , hypre_Index stride , int prune , hypre_SStructPGrid **cgrid_ptr );
/* sys_pfmg_setup_interp.c */
hypre_SStructPMatrix *hypre_SysPFMGCreateInterpOp ( hypre_SStructPMatrix *A , hypre_SStructPGrid *cgrid , int cdir );
int hypre_SysPFMGSetupInterpOp ( hypre_SStructPMatrix *A , int cdir , hypre_Index findex , hypre_Index stride , hypre_SStructPMatrix *P );
/* sys_pfmg_setup_rap.c */
hypre_SStructPMatrix *hypre_SysPFMGCreateRAPOp ( hypre_SStructPMatrix *R , hypre_SStructPMatrix *A , hypre_SStructPMatrix *P , hypre_SStructPGrid *coarse_grid , int cdir );
int hypre_SysPFMGSetupRAPOp ( hypre_SStructPMatrix *R , hypre_SStructPMatrix *A , hypre_SStructPMatrix *P , int cdir , hypre_Index cindex , hypre_Index cstride , hypre_SStructPMatrix *Ac );
/* sys_pfmg_solve.c */
int hypre_SysPFMGSolve ( void *sys_pfmg_vdata , hypre_SStructMatrix *A_in , hypre_SStructVector *b_in , hypre_SStructVector *x_in );
/* sys_semi_interp.c */
int hypre_SysSemiInterpCreate ( void **sys_interp_vdata_ptr );
int hypre_SysSemiInterpSetup ( void *sys_interp_vdata , hypre_SStructPMatrix *P , int P_stored_as_transpose , hypre_SStructPVector *xc , hypre_SStructPVector *e , hypre_Index cindex , hypre_Index findex , hypre_Index stride );
int hypre_SysSemiInterp ( void *sys_interp_vdata , hypre_SStructPMatrix *P , hypre_SStructPVector *xc , hypre_SStructPVector *e );
int hypre_SysSemiInterpDestroy ( void *sys_interp_vdata );
/* sys_semi_restrict.c */
int hypre_SysSemiRestrictCreate ( void **sys_restrict_vdata_ptr );
int hypre_SysSemiRestrictSetup ( void *sys_restrict_vdata , hypre_SStructPMatrix *R , int R_stored_as_transpose , hypre_SStructPVector *r , hypre_SStructPVector *rc , hypre_Index cindex , hypre_Index findex , hypre_Index stride );
int hypre_SysSemiRestrict ( void *sys_restrict_vdata , hypre_SStructPMatrix *R , hypre_SStructPVector *r , hypre_SStructPVector *rc );
int hypre_SysSemiRestrictDestroy ( void *sys_restrict_vdata );
#ifdef __cplusplus
}
#endif
#endif