blob: 64023d67f31410968f69074a268446e6aaac96ca [file] [log] [blame]
/*BHEADER**********************************************************************
* (c) 2000 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_PCG interface
*
*****************************************************************************/
#include "krylov.h"
/*--------------------------------------------------------------------------
* HYPRE_PCGCreate does not exist. Call the appropriate function which
* also specifies the vector type, e.g. HYPRE_ParCSRPCGCreate
*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
* HYPRE_PCGDestroy
*--------------------------------------------------------------------------*/
/*
int
HYPRE_PCGDestroy( HYPRE_Solver solver )*/
/* >>> This is something we can't do without knowing the vector_type.
We can't save it in and pull it out of solver because that isn't
really a known struct. */
/*
{
if ( vector_type=="ParCSR" ) {
return HYPRE_ParCSRPCGDestroy( HYPRE_Solver solver );
}
else {
return 0;
}
}*/
/*--------------------------------------------------------------------------
* HYPRE_PCGSetup
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSetup( HYPRE_Solver solver,
HYPRE_Matrix A,
HYPRE_Vector b,
HYPRE_Vector x )
{
return( hypre_PCGSetup( solver,
A,
b,
x ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGSolve
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSolve( HYPRE_Solver solver,
HYPRE_Matrix A,
HYPRE_Vector b,
HYPRE_Vector x )
{
return( hypre_PCGSolve( (void *) solver,
(void *) A,
(void *) b,
(void *) x ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGSetTol
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSetTol( HYPRE_Solver solver,
double tol )
{
return( hypre_PCGSetTol( (void *) solver, tol ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGSetMaxIter
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSetMaxIter( HYPRE_Solver solver,
int max_iter )
{
return( hypre_PCGSetMaxIter( (void *) solver, max_iter ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGSetStopCrit
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSetStopCrit( HYPRE_Solver solver,
int stop_crit )
{
return( hypre_PCGSetStopCrit( (void *) solver, stop_crit ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGSetTwoNorm
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSetTwoNorm( HYPRE_Solver solver,
int two_norm )
{
return( hypre_PCGSetTwoNorm( (void *) solver, two_norm ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGSetRelChange
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSetRelChange( HYPRE_Solver solver,
int rel_change )
{
return( hypre_PCGSetRelChange( (void *) solver, rel_change ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGSetPrecond
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSetPrecond( HYPRE_Solver solver,
HYPRE_PtrToSolverFcn precond,
HYPRE_PtrToSolverFcn precond_setup,
HYPRE_Solver precond_solver )
{
return( hypre_PCGSetPrecond( (void *) solver,
precond, precond_setup,
(void *) precond_solver ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGGetPrecond
*--------------------------------------------------------------------------*/
int
HYPRE_PCGGetPrecond( HYPRE_Solver solver,
HYPRE_Solver *precond_data_ptr )
{
return( hypre_PCGGetPrecond( (void *) solver,
(HYPRE_Solver *) precond_data_ptr ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGSetLogging
*--------------------------------------------------------------------------*/
int
HYPRE_PCGSetLogging( HYPRE_Solver solver,
int logging )
{
return( hypre_PCGSetLogging( (void *) solver, logging ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGGetNumIterations
*--------------------------------------------------------------------------*/
int
HYPRE_PCGGetNumIterations( HYPRE_Solver solver,
int *num_iterations )
{
return( hypre_PCGGetNumIterations( (void *) solver, num_iterations ) );
}
/*--------------------------------------------------------------------------
* HYPRE_PCGGetFinalRelativeResidualNorm
*--------------------------------------------------------------------------*/
int
HYPRE_PCGGetFinalRelativeResidualNorm( HYPRE_Solver solver,
double *norm )
{
return( hypre_PCGGetFinalRelativeResidualNorm( (void *) solver, norm ) );
}