Gave all of the Krylov solvers implementations of GetPrecond, callable from

C and Fortran
This commit is contained in:
lambda 2000-07-06 00:03:13 +00:00
parent 5726be5a03
commit a80fb1c698
22 changed files with 230 additions and 30 deletions

View File

@ -152,6 +152,21 @@ hypre_F90_IFACE(hypre_parcsrcgnrsetprecond)( long int *solver,
}
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRCGNRGetPrecond
*--------------------------------------------------------------------------*/
void
hypre_F90_IFACE(hypre_parcsrcgnrgetprecond)( long int *solver,
long int *precond_solver_ptr,
int *ierr )
{
*ierr = (int)
( HYPRE_ParCSRCGNRGetPrecond( (HYPRE_Solver) *solver,
(HYPRE_Solver *) precond_solver_ptr ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRCGNRSetLogging
*--------------------------------------------------------------------------*/

View File

@ -194,11 +194,11 @@ hypre_F90_IFACE(hypre_parcsrgmressetprecond)( long int *solver,
void
hypre_F90_IFACE(hypre_parcsrgmresgetprecond)( long int *solver,
long int *precond_solver_ptr,
int *ierr )
int *ierr )
{
*ierr = (int)
( HYPRE_ParCSRGMRESGetPrecond( (HYPRE_Solver) *solver,
(long int *) precond_solver_ptr ) );
( HYPRE_ParCSRGMRESGetPrecond( (HYPRE_Solver) *solver,
(HYPRE_Solver *) precond_solver_ptr ) );
}

View File

@ -179,6 +179,21 @@ hypre_F90_IFACE(hypre_parcsrpcgsetprecond)( long int *solver,
}
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRPCGGetPrecond
*--------------------------------------------------------------------------*/
void
hypre_F90_IFACE(hypre_parcsrpcggetprecond)( long int *solver,
long int *precond_solver_ptr,
int *ierr )
{
*ierr = (int)
( HYPRE_ParCSRPCGGetPrecond( (HYPRE_Solver) *solver,
(HYPRE_Solver *) precond_solver_ptr ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRPCGSetLogging
*--------------------------------------------------------------------------*/

View File

@ -133,7 +133,19 @@ HYPRE_ParCSRCGNRSetPrecond( HYPRE_Solver solver,
void *precond_data )
{
return( hypre_CGNRSetPrecond( (void *) solver, precond,
precondT, precond_setup, precond_data ) );
precondT, precond_setup, precond_data ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRCGNRGetPrecond
*--------------------------------------------------------------------------*/
int
HYPRE_ParCSRCGNRGetPrecond( HYPRE_Solver solver,
HYPRE_Solver *precond_data_ptr )
{
return( hypre_CGNRGetPrecond( (void *) solver,
(HYPRE_Solver *) precond_data_ptr ) );
}
/*--------------------------------------------------------------------------

View File

@ -149,10 +149,10 @@ HYPRE_ParCSRGMRESSetPrecond( HYPRE_Solver solver,
int
HYPRE_ParCSRGMRESGetPrecond( HYPRE_Solver solver,
long int *precond_data_ptr )
HYPRE_Solver *precond_data_ptr )
{
return( hypre_GMRESGetPrecond( (void *) solver,
(long int *) precond_data_ptr ) );
(HYPRE_Solver *) precond_data_ptr ) );
}
/*--------------------------------------------------------------------------

View File

@ -86,6 +86,7 @@ int HYPRE_ParCSRCGNRSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_ParCSRCGNRSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRCGNRSetStopCrit( HYPRE_Solver solver , int stop_crit );
int HYPRE_ParCSRCGNRSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precondT )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRCGNRGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data );
int HYPRE_ParCSRCGNRSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRCGNRGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRCGNRGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -101,6 +102,7 @@ int HYPRE_ParCSRGMRESSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_ParCSRGMRESSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRGMRESSetStopCrit( HYPRE_Solver solver , int stop_crit );
int HYPRE_ParCSRGMRESSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRGMRESGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data );
int HYPRE_ParCSRGMRESSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRGMRESGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRGMRESGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -115,6 +117,7 @@ int HYPRE_ParCSRPCGSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRPCGSetTwoNorm( HYPRE_Solver solver , int two_norm );
int HYPRE_ParCSRPCGSetRelChange( HYPRE_Solver solver , int rel_change );
int HYPRE_ParCSRPCGSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRPCGGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data );
int HYPRE_ParCSRPCGSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRPCGGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRPCGGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );

View File

@ -132,6 +132,18 @@ HYPRE_ParCSRPCGSetPrecond( HYPRE_Solver solver,
precond, precond_setup, precond_data ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRPCGGetPrecond
*--------------------------------------------------------------------------*/
int
HYPRE_ParCSRPCGGetPrecond( HYPRE_Solver solver,
HYPRE_Solver *precond_data_ptr )
{
return( hypre_KrylovGetPrecond( (void *) solver,
(HYPRE_Solver *) precond_data_ptr ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRPCGSetLogging
*--------------------------------------------------------------------------*/

View File

@ -426,6 +426,22 @@ hypre_CGNRSetPrecond(void *cgnr_vdata,
return ierr;
}
/*--------------------------------------------------------------------------
* hypre_CGNRGetPrecond
*--------------------------------------------------------------------------*/
int
hypre_CGNRGetPrecond( void *cgnr_vdata,
HYPRE_Solver *precond_data_ptr )
{
hypre_CGNRData *cgnr_data = cgnr_vdata;
int ierr = 0;
*precond_data_ptr = (HYPRE_Solver)(cgnr_data -> precond_data);
return ierr;
}
/*--------------------------------------------------------------------------
* hypre_CGNRSetLogging
*--------------------------------------------------------------------------*/

View File

@ -536,13 +536,13 @@ hypre_GMRESSetPrecond( void *gmres_vdata,
*--------------------------------------------------------------------------*/
int
hypre_GMRESGetPrecond( void *gmres_vdata,
long int *precond_data_ptr )
hypre_GMRESGetPrecond( void *gmres_vdata,
HYPRE_Solver *precond_data_ptr )
{
hypre_GMRESData *gmres_data = gmres_vdata;
int ierr = 0;
*precond_data_ptr = (long int)(gmres_data -> precond_data);
*precond_data_ptr = (HYPRE_Solver)(gmres_data -> precond_data);
return ierr;
}

View File

@ -40,6 +40,7 @@ void hypre_F90_IFACE( int hypre_boomeramgsetminiter );
void hypre_F90_IFACE( int hypre_boomeramgsetmaxiter );
void hypre_F90_IFACE( int hypre_boomeramgsetcoarsentype );
void hypre_F90_IFACE( int hypre_boomeramgsetmeasuretype );
void hypre_F90_IFACE( int hypre_boomeramgsetsetuptype );
void hypre_F90_IFACE( int hypre_boomeramgsetcycletype );
void hypre_F90_IFACE( int hypre_boomeramgsettol );
void hypre_F90_IFACE( int hypre_boomeramgsetnumgridsweeps );
@ -62,6 +63,7 @@ void hypre_F90_IFACE( int hypre_parcsrcgnrsolve );
void hypre_F90_IFACE( int hypre_parcsrcgnrsettol );
void hypre_F90_IFACE( int hypre_parcsrcgnrsetmaxiter );
void hypre_F90_IFACE( int hypre_parcsrcgnrsetprecond );
void hypre_F90_IFACE( int hypre_parcsrcgnrgetprecond );
void hypre_F90_IFACE( int hypre_parcsrcgnrsetlogging );
void hypre_F90_IFACE( int hypre_parcsrcgnrgetnumiteration );
void hypre_F90_IFACE( int hypre_parcsrcgnrgetfinalrelativ );
@ -76,6 +78,7 @@ void hypre_F90_IFACE( int hypre_parcsrgmressettol );
void hypre_F90_IFACE( int hypre_parcsrgmressetminiter );
void hypre_F90_IFACE( int hypre_parcsrgmressetmaxiter );
void hypre_F90_IFACE( int hypre_parcsrgmressetprecond );
void hypre_F90_IFACE( int hypre_parcsrgmresgetprecond );
void hypre_F90_IFACE( int hypre_parcsrgmressetlogging );
void hypre_F90_IFACE( int hypre_parcsrgmresgetnumiteratio );
void hypre_F90_IFACE( int hypre_parcsrgmresgetfinalrelati );
@ -90,6 +93,7 @@ void hypre_F90_IFACE( int hypre_parcsrpcgsetmaxiter );
void hypre_F90_IFACE( int hypre_parcsrpcgsettwonorm );
void hypre_F90_IFACE( int hypre_parcsrpcgsetrelchange );
void hypre_F90_IFACE( int hypre_parcsrpcgsetprecond );
void hypre_F90_IFACE( int hypre_parcsrpcggetprecond );
void hypre_F90_IFACE( int hypre_parcsrpcgsetlogging );
void hypre_F90_IFACE( int hypre_parcsrpcggetnumiterations );
void hypre_F90_IFACE( int hypre_parcsrpcggetfinalrelative );
@ -118,6 +122,7 @@ int HYPRE_ParCSRParaSailsSetFilter( HYPRE_Solver solver , double filter );
int HYPRE_ParCSRParaSailsSetSym( HYPRE_Solver solver , int sym );
int HYPRE_ParCSRParaSailsSetLoadbal( HYPRE_Solver solver , double loadbal );
int HYPRE_ParCSRParaSailsSetReuse( HYPRE_Solver solver , int reuse );
int HYPRE_ParCSRParaSailsSetLogging( HYPRE_Solver solver , int logging );
/* HYPRE_parcsr_amg.c */
int HYPRE_BoomerAMGCreate( HYPRE_Solver *solver );
@ -135,6 +140,7 @@ int HYPRE_BoomerAMGSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_BoomerAMGSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_BoomerAMGSetCoarsenType( HYPRE_Solver solver , int coarsen_type );
int HYPRE_BoomerAMGSetMeasureType( HYPRE_Solver solver , int measure_type );
int HYPRE_BoomerAMGSetSetupType( HYPRE_Solver solver , int setup_type );
int HYPRE_BoomerAMGSetCycleType( HYPRE_Solver solver , int cycle_type );
int HYPRE_BoomerAMGSetTol( HYPRE_Solver solver , double tol );
int HYPRE_BoomerAMGSetNumGridSweeps( HYPRE_Solver solver , int *num_grid_sweeps );
@ -159,6 +165,7 @@ int HYPRE_ParCSRCGNRSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_ParCSRCGNRSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRCGNRSetStopCrit( HYPRE_Solver solver , int stop_crit );
int HYPRE_ParCSRCGNRSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precondT )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRCGNRGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data_ptr );
int HYPRE_ParCSRCGNRSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRCGNRGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRCGNRGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -174,6 +181,7 @@ int HYPRE_ParCSRGMRESSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_ParCSRGMRESSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRGMRESSetStopCrit( HYPRE_Solver solver , int stop_crit );
int HYPRE_ParCSRGMRESSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRGMRESGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data_ptr );
int HYPRE_ParCSRGMRESSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRGMRESGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRGMRESGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -188,6 +196,7 @@ int HYPRE_ParCSRPCGSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRPCGSetTwoNorm( HYPRE_Solver solver , int two_norm );
int HYPRE_ParCSRPCGSetRelChange( HYPRE_Solver solver , int rel_change );
int HYPRE_ParCSRPCGSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRPCGGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data_ptr );
int HYPRE_ParCSRPCGSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRPCGGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRPCGGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -213,6 +222,7 @@ int hypre_CGNRSetMinIter( void *cgnr_vdata , int min_iter );
int hypre_CGNRSetMaxIter( void *cgnr_vdata , int max_iter );
int hypre_CGNRSetStopCrit( void *cgnr_vdata , int stop_crit );
int hypre_CGNRSetPrecond( void *cgnr_vdata , int (*precond )(), int (*precondT )(), int (*precond_setup )(), void *precond_data );
int hypre_CGNRGetPrecond( void *cgnr_vdata , HYPRE_Solver *precond_data_ptr );
int hypre_CGNRSetLogging( void *cgnr_vdata , int logging );
int hypre_CGNRGetNumIterations( void *cgnr_vdata , int *num_iterations );
int hypre_CGNRGetFinalRelativeResidualNorm( void *cgnr_vdata , double *relative_residual_norm );
@ -238,6 +248,7 @@ int hypre_GMRESSetMinIter( void *gmres_vdata , int min_iter );
int hypre_GMRESSetMaxIter( void *gmres_vdata , int max_iter );
int hypre_GMRESSetStopCrit( void *gmres_vdata , double stop_crit );
int hypre_GMRESSetPrecond( void *gmres_vdata , int (*precond )(), int (*precond_setup )(), void *precond_data );
int hypre_GMRESGetPrecond( void *gmres_vdata , HYPRE_Solver *precond_data_ptr );
int hypre_GMRESSetLogging( void *gmres_vdata , int logging );
int hypre_GMRESGetNumIterations( void *gmres_vdata , int *num_iterations );
int hypre_GMRESGetFinalRelativeResidualNorm( void *gmres_vdata , double *relative_residual_norm );
@ -255,6 +266,7 @@ int hypre_BoomerAMGSetMinIter( void *data , int min_iter );
int hypre_BoomerAMGSetMaxIter( void *data , int max_iter );
int hypre_BoomerAMGSetCoarsenType( void *data , int coarsen_type );
int hypre_BoomerAMGSetMeasureType( void *data , int measure_type );
int hypre_BoomerAMGSetSetupType( void *data , int setup_type );
int hypre_BoomerAMGSetCycleType( void *data , int cycle_type );
int hypre_BoomerAMGSetTol( void *data , double tol );
int hypre_BoomerAMGSetNumGridSweeps( void *data , int *num_grid_sweeps );
@ -347,6 +359,7 @@ int hypre_KrylovSetMaxIter( void *pcg_vdata , int max_iter );
int hypre_KrylovSetTwoNorm( void *pcg_vdata , int two_norm );
int hypre_KrylovSetRelChange( void *pcg_vdata , int rel_change );
int hypre_KrylovSetPrecond( void *pcg_vdata , int (*precond )(), int (*precond_setup )(), void *precond_data );
int hypre_KrylovGetPrecond( void *pcg_vdata , HYPRE_Solver *precond_data_ptr );
int hypre_KrylovSetLogging( void *pcg_vdata , int logging );
int hypre_KrylovGetNumIterations( void *pcg_vdata , int *num_iterations );
int hypre_KrylovPrintLogging( void *pcg_vdata , int myid );

View File

@ -13,9 +13,7 @@
*
*****************************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "headers.h"
/*--------------------------------------------------------------------------
* Prototypes:
@ -541,9 +539,9 @@ hypre_KrylovSetRelChange( void *pcg_vdata,
int
hypre_KrylovSetPrecond( void *pcg_vdata,
int (*precond)(),
int (*precond_setup)(),
void *precond_data )
int (*precond)(),
int (*precond_setup)(),
void *precond_data )
{
hypre_PCGData *pcg_data = pcg_vdata;
int ierr = 0;
@ -555,6 +553,22 @@ hypre_KrylovSetPrecond( void *pcg_vdata,
return ierr;
}
/*--------------------------------------------------------------------------
* hypre_KrylovGetPrecond
*--------------------------------------------------------------------------*/
int
hypre_KrylovGetPrecond( void *pcg_vdata,
HYPRE_Solver *precond_data_ptr )
{
hypre_PCGData *pcg_data = pcg_vdata;
int ierr = 0;
*precond_data_ptr = (HYPRE_Solver)(pcg_data -> precond_data);
return ierr;
}
/*--------------------------------------------------------------------------
* hypre_KrylovSetLogging
*--------------------------------------------------------------------------*/

View File

@ -152,6 +152,21 @@ hypre_F90_IFACE(hypre_parcsrcgnrsetprecond)( long int *solver,
}
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRCGNRGetPrecond
*--------------------------------------------------------------------------*/
void
hypre_F90_IFACE(hypre_parcsrcgnrgetprecond)( long int *solver,
long int *precond_solver_ptr,
int *ierr )
{
*ierr = (int)
( HYPRE_ParCSRCGNRGetPrecond( (HYPRE_Solver) *solver,
(HYPRE_Solver *) precond_solver_ptr ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRCGNRSetLogging
*--------------------------------------------------------------------------*/

View File

@ -194,11 +194,11 @@ hypre_F90_IFACE(hypre_parcsrgmressetprecond)( long int *solver,
void
hypre_F90_IFACE(hypre_parcsrgmresgetprecond)( long int *solver,
long int *precond_solver_ptr,
int *ierr )
int *ierr )
{
*ierr = (int)
( HYPRE_ParCSRGMRESGetPrecond( (HYPRE_Solver) *solver,
(long int *) precond_solver_ptr ) );
( HYPRE_ParCSRGMRESGetPrecond( (HYPRE_Solver) *solver,
(HYPRE_Solver *) precond_solver_ptr ) );
}

View File

@ -179,6 +179,21 @@ hypre_F90_IFACE(hypre_parcsrpcgsetprecond)( long int *solver,
}
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRPCGGetPrecond
*--------------------------------------------------------------------------*/
void
hypre_F90_IFACE(hypre_parcsrpcggetprecond)( long int *solver,
long int *precond_solver_ptr,
int *ierr )
{
*ierr = (int)
( HYPRE_ParCSRPCGGetPrecond( (HYPRE_Solver) *solver,
(HYPRE_Solver *) precond_solver_ptr ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRPCGSetLogging
*--------------------------------------------------------------------------*/

View File

@ -133,7 +133,19 @@ HYPRE_ParCSRCGNRSetPrecond( HYPRE_Solver solver,
void *precond_data )
{
return( hypre_CGNRSetPrecond( (void *) solver, precond,
precondT, precond_setup, precond_data ) );
precondT, precond_setup, precond_data ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRCGNRGetPrecond
*--------------------------------------------------------------------------*/
int
HYPRE_ParCSRCGNRGetPrecond( HYPRE_Solver solver,
HYPRE_Solver *precond_data_ptr )
{
return( hypre_CGNRGetPrecond( (void *) solver,
(HYPRE_Solver *) precond_data_ptr ) );
}
/*--------------------------------------------------------------------------

View File

@ -149,10 +149,10 @@ HYPRE_ParCSRGMRESSetPrecond( HYPRE_Solver solver,
int
HYPRE_ParCSRGMRESGetPrecond( HYPRE_Solver solver,
long int *precond_data_ptr )
HYPRE_Solver *precond_data_ptr )
{
return( hypre_GMRESGetPrecond( (void *) solver,
(long int *) precond_data_ptr ) );
(HYPRE_Solver *) precond_data_ptr ) );
}
/*--------------------------------------------------------------------------

View File

@ -86,6 +86,7 @@ int HYPRE_ParCSRCGNRSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_ParCSRCGNRSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRCGNRSetStopCrit( HYPRE_Solver solver , int stop_crit );
int HYPRE_ParCSRCGNRSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precondT )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRCGNRGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data );
int HYPRE_ParCSRCGNRSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRCGNRGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRCGNRGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -101,6 +102,7 @@ int HYPRE_ParCSRGMRESSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_ParCSRGMRESSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRGMRESSetStopCrit( HYPRE_Solver solver , int stop_crit );
int HYPRE_ParCSRGMRESSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRGMRESGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data );
int HYPRE_ParCSRGMRESSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRGMRESGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRGMRESGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -115,6 +117,7 @@ int HYPRE_ParCSRPCGSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRPCGSetTwoNorm( HYPRE_Solver solver , int two_norm );
int HYPRE_ParCSRPCGSetRelChange( HYPRE_Solver solver , int rel_change );
int HYPRE_ParCSRPCGSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRPCGGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data );
int HYPRE_ParCSRPCGSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRPCGGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRPCGGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );

View File

@ -132,6 +132,18 @@ HYPRE_ParCSRPCGSetPrecond( HYPRE_Solver solver,
precond, precond_setup, precond_data ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRPCGGetPrecond
*--------------------------------------------------------------------------*/
int
HYPRE_ParCSRPCGGetPrecond( HYPRE_Solver solver,
HYPRE_Solver *precond_data_ptr )
{
return( hypre_KrylovGetPrecond( (void *) solver,
(HYPRE_Solver *) precond_data_ptr ) );
}
/*--------------------------------------------------------------------------
* HYPRE_ParCSRPCGSetLogging
*--------------------------------------------------------------------------*/

View File

@ -426,6 +426,22 @@ hypre_CGNRSetPrecond(void *cgnr_vdata,
return ierr;
}
/*--------------------------------------------------------------------------
* hypre_CGNRGetPrecond
*--------------------------------------------------------------------------*/
int
hypre_CGNRGetPrecond( void *cgnr_vdata,
HYPRE_Solver *precond_data_ptr )
{
hypre_CGNRData *cgnr_data = cgnr_vdata;
int ierr = 0;
*precond_data_ptr = (HYPRE_Solver)(cgnr_data -> precond_data);
return ierr;
}
/*--------------------------------------------------------------------------
* hypre_CGNRSetLogging
*--------------------------------------------------------------------------*/

View File

@ -536,13 +536,13 @@ hypre_GMRESSetPrecond( void *gmres_vdata,
*--------------------------------------------------------------------------*/
int
hypre_GMRESGetPrecond( void *gmres_vdata,
long int *precond_data_ptr )
hypre_GMRESGetPrecond( void *gmres_vdata,
HYPRE_Solver *precond_data_ptr )
{
hypre_GMRESData *gmres_data = gmres_vdata;
int ierr = 0;
*precond_data_ptr = (long int)(gmres_data -> precond_data);
*precond_data_ptr = (HYPRE_Solver)(gmres_data -> precond_data);
return ierr;
}

View File

@ -40,6 +40,7 @@ void hypre_F90_IFACE( int hypre_boomeramgsetminiter );
void hypre_F90_IFACE( int hypre_boomeramgsetmaxiter );
void hypre_F90_IFACE( int hypre_boomeramgsetcoarsentype );
void hypre_F90_IFACE( int hypre_boomeramgsetmeasuretype );
void hypre_F90_IFACE( int hypre_boomeramgsetsetuptype );
void hypre_F90_IFACE( int hypre_boomeramgsetcycletype );
void hypre_F90_IFACE( int hypre_boomeramgsettol );
void hypre_F90_IFACE( int hypre_boomeramgsetnumgridsweeps );
@ -62,6 +63,7 @@ void hypre_F90_IFACE( int hypre_parcsrcgnrsolve );
void hypre_F90_IFACE( int hypre_parcsrcgnrsettol );
void hypre_F90_IFACE( int hypre_parcsrcgnrsetmaxiter );
void hypre_F90_IFACE( int hypre_parcsrcgnrsetprecond );
void hypre_F90_IFACE( int hypre_parcsrcgnrgetprecond );
void hypre_F90_IFACE( int hypre_parcsrcgnrsetlogging );
void hypre_F90_IFACE( int hypre_parcsrcgnrgetnumiteration );
void hypre_F90_IFACE( int hypre_parcsrcgnrgetfinalrelativ );
@ -76,6 +78,7 @@ void hypre_F90_IFACE( int hypre_parcsrgmressettol );
void hypre_F90_IFACE( int hypre_parcsrgmressetminiter );
void hypre_F90_IFACE( int hypre_parcsrgmressetmaxiter );
void hypre_F90_IFACE( int hypre_parcsrgmressetprecond );
void hypre_F90_IFACE( int hypre_parcsrgmresgetprecond );
void hypre_F90_IFACE( int hypre_parcsrgmressetlogging );
void hypre_F90_IFACE( int hypre_parcsrgmresgetnumiteratio );
void hypre_F90_IFACE( int hypre_parcsrgmresgetfinalrelati );
@ -90,6 +93,7 @@ void hypre_F90_IFACE( int hypre_parcsrpcgsetmaxiter );
void hypre_F90_IFACE( int hypre_parcsrpcgsettwonorm );
void hypre_F90_IFACE( int hypre_parcsrpcgsetrelchange );
void hypre_F90_IFACE( int hypre_parcsrpcgsetprecond );
void hypre_F90_IFACE( int hypre_parcsrpcggetprecond );
void hypre_F90_IFACE( int hypre_parcsrpcgsetlogging );
void hypre_F90_IFACE( int hypre_parcsrpcggetnumiterations );
void hypre_F90_IFACE( int hypre_parcsrpcggetfinalrelative );
@ -118,6 +122,7 @@ int HYPRE_ParCSRParaSailsSetFilter( HYPRE_Solver solver , double filter );
int HYPRE_ParCSRParaSailsSetSym( HYPRE_Solver solver , int sym );
int HYPRE_ParCSRParaSailsSetLoadbal( HYPRE_Solver solver , double loadbal );
int HYPRE_ParCSRParaSailsSetReuse( HYPRE_Solver solver , int reuse );
int HYPRE_ParCSRParaSailsSetLogging( HYPRE_Solver solver , int logging );
/* HYPRE_parcsr_amg.c */
int HYPRE_BoomerAMGCreate( HYPRE_Solver *solver );
@ -135,6 +140,7 @@ int HYPRE_BoomerAMGSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_BoomerAMGSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_BoomerAMGSetCoarsenType( HYPRE_Solver solver , int coarsen_type );
int HYPRE_BoomerAMGSetMeasureType( HYPRE_Solver solver , int measure_type );
int HYPRE_BoomerAMGSetSetupType( HYPRE_Solver solver , int setup_type );
int HYPRE_BoomerAMGSetCycleType( HYPRE_Solver solver , int cycle_type );
int HYPRE_BoomerAMGSetTol( HYPRE_Solver solver , double tol );
int HYPRE_BoomerAMGSetNumGridSweeps( HYPRE_Solver solver , int *num_grid_sweeps );
@ -159,6 +165,7 @@ int HYPRE_ParCSRCGNRSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_ParCSRCGNRSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRCGNRSetStopCrit( HYPRE_Solver solver , int stop_crit );
int HYPRE_ParCSRCGNRSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precondT )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRCGNRGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data_ptr );
int HYPRE_ParCSRCGNRSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRCGNRGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRCGNRGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -174,6 +181,7 @@ int HYPRE_ParCSRGMRESSetMinIter( HYPRE_Solver solver , int min_iter );
int HYPRE_ParCSRGMRESSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRGMRESSetStopCrit( HYPRE_Solver solver , int stop_crit );
int HYPRE_ParCSRGMRESSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRGMRESGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data_ptr );
int HYPRE_ParCSRGMRESSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRGMRESGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRGMRESGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -188,6 +196,7 @@ int HYPRE_ParCSRPCGSetMaxIter( HYPRE_Solver solver , int max_iter );
int HYPRE_ParCSRPCGSetTwoNorm( HYPRE_Solver solver , int two_norm );
int HYPRE_ParCSRPCGSetRelChange( HYPRE_Solver solver , int rel_change );
int HYPRE_ParCSRPCGSetPrecond( HYPRE_Solver solver , int (*precond )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), int (*precond_setup )(HYPRE_Solver sol ,HYPRE_ParCSRMatrix matrix ,HYPRE_ParVector b ,HYPRE_ParVector x ), void *precond_data );
int HYPRE_ParCSRPCGGetPrecond( HYPRE_Solver solver , HYPRE_Solver *precond_data_ptr );
int HYPRE_ParCSRPCGSetLogging( HYPRE_Solver solver , int logging );
int HYPRE_ParCSRPCGGetNumIterations( HYPRE_Solver solver , int *num_iterations );
int HYPRE_ParCSRPCGGetFinalRelativeResidualNorm( HYPRE_Solver solver , double *norm );
@ -213,6 +222,7 @@ int hypre_CGNRSetMinIter( void *cgnr_vdata , int min_iter );
int hypre_CGNRSetMaxIter( void *cgnr_vdata , int max_iter );
int hypre_CGNRSetStopCrit( void *cgnr_vdata , int stop_crit );
int hypre_CGNRSetPrecond( void *cgnr_vdata , int (*precond )(), int (*precondT )(), int (*precond_setup )(), void *precond_data );
int hypre_CGNRGetPrecond( void *cgnr_vdata , HYPRE_Solver *precond_data_ptr );
int hypre_CGNRSetLogging( void *cgnr_vdata , int logging );
int hypre_CGNRGetNumIterations( void *cgnr_vdata , int *num_iterations );
int hypre_CGNRGetFinalRelativeResidualNorm( void *cgnr_vdata , double *relative_residual_norm );
@ -238,6 +248,7 @@ int hypre_GMRESSetMinIter( void *gmres_vdata , int min_iter );
int hypre_GMRESSetMaxIter( void *gmres_vdata , int max_iter );
int hypre_GMRESSetStopCrit( void *gmres_vdata , double stop_crit );
int hypre_GMRESSetPrecond( void *gmres_vdata , int (*precond )(), int (*precond_setup )(), void *precond_data );
int hypre_GMRESGetPrecond( void *gmres_vdata , HYPRE_Solver *precond_data_ptr );
int hypre_GMRESSetLogging( void *gmres_vdata , int logging );
int hypre_GMRESGetNumIterations( void *gmres_vdata , int *num_iterations );
int hypre_GMRESGetFinalRelativeResidualNorm( void *gmres_vdata , double *relative_residual_norm );
@ -255,6 +266,7 @@ int hypre_BoomerAMGSetMinIter( void *data , int min_iter );
int hypre_BoomerAMGSetMaxIter( void *data , int max_iter );
int hypre_BoomerAMGSetCoarsenType( void *data , int coarsen_type );
int hypre_BoomerAMGSetMeasureType( void *data , int measure_type );
int hypre_BoomerAMGSetSetupType( void *data , int setup_type );
int hypre_BoomerAMGSetCycleType( void *data , int cycle_type );
int hypre_BoomerAMGSetTol( void *data , double tol );
int hypre_BoomerAMGSetNumGridSweeps( void *data , int *num_grid_sweeps );
@ -347,6 +359,7 @@ int hypre_KrylovSetMaxIter( void *pcg_vdata , int max_iter );
int hypre_KrylovSetTwoNorm( void *pcg_vdata , int two_norm );
int hypre_KrylovSetRelChange( void *pcg_vdata , int rel_change );
int hypre_KrylovSetPrecond( void *pcg_vdata , int (*precond )(), int (*precond_setup )(), void *precond_data );
int hypre_KrylovGetPrecond( void *pcg_vdata , HYPRE_Solver *precond_data_ptr );
int hypre_KrylovSetLogging( void *pcg_vdata , int logging );
int hypre_KrylovGetNumIterations( void *pcg_vdata , int *num_iterations );
int hypre_KrylovPrintLogging( void *pcg_vdata , int myid );

View File

@ -13,9 +13,7 @@
*
*****************************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "headers.h"
/*--------------------------------------------------------------------------
* Prototypes:
@ -541,9 +539,9 @@ hypre_KrylovSetRelChange( void *pcg_vdata,
int
hypre_KrylovSetPrecond( void *pcg_vdata,
int (*precond)(),
int (*precond_setup)(),
void *precond_data )
int (*precond)(),
int (*precond_setup)(),
void *precond_data )
{
hypre_PCGData *pcg_data = pcg_vdata;
int ierr = 0;
@ -555,6 +553,22 @@ hypre_KrylovSetPrecond( void *pcg_vdata,
return ierr;
}
/*--------------------------------------------------------------------------
* hypre_KrylovGetPrecond
*--------------------------------------------------------------------------*/
int
hypre_KrylovGetPrecond( void *pcg_vdata,
HYPRE_Solver *precond_data_ptr )
{
hypre_PCGData *pcg_data = pcg_vdata;
int ierr = 0;
*precond_data_ptr = (HYPRE_Solver)(pcg_data -> precond_data);
return ierr;
}
/*--------------------------------------------------------------------------
* hypre_KrylovSetLogging
*--------------------------------------------------------------------------*/