Added an example code to test CG on a 4D HYPRE_SSTRUCT complex problem. Added regression tests for bigint, maxdim, and complex. Added a test to make sure double types are not added to the source. See [Issue995] in the tracker for more details.
140 lines
4.6 KiB
C
140 lines
4.6 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*/
|
|
|
|
/******************************************************************************
|
|
*
|
|
* HYPRE_ParCSRPilut Fortran interface
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#include "_hypre_parcsr_ls.h"
|
|
#include "fortran.h"
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* HYPRE_ParCSRPilutCreate
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void
|
|
hypre_F90_IFACE(hypre_parcsrpilutcreate, HYPRE_PARCSRPILUTCREATE)
|
|
( hypre_F90_Comm *comm,
|
|
hypre_F90_Obj *solver,
|
|
hypre_F90_Int *ierr )
|
|
{
|
|
*ierr = (hypre_F90_Int)
|
|
( HYPRE_ParCSRPilutCreate(
|
|
hypre_F90_PassComm (comm),
|
|
hypre_F90_PassObjRef (HYPRE_Solver, solver) ) );
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* HYPRE_ParCSRPilutDestroy
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void
|
|
hypre_F90_IFACE(hypre_parcsrpilutdestroy, HYPRE_PARCSRPILUTDESTROY)
|
|
( hypre_F90_Obj *solver,
|
|
hypre_F90_Int *ierr )
|
|
{
|
|
*ierr = (hypre_F90_Int)
|
|
( HYPRE_ParCSRPilutDestroy(
|
|
hypre_F90_PassObj (HYPRE_Solver, solver) ) );
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* HYPRE_ParCSRPilutSetup
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void
|
|
hypre_F90_IFACE(hypre_parcsrpilutsetup, HYPRE_PARCSRPILUTSETUP)
|
|
( hypre_F90_Obj *solver,
|
|
hypre_F90_Obj *A,
|
|
hypre_F90_Obj *b,
|
|
hypre_F90_Obj *x,
|
|
hypre_F90_Int *ierr )
|
|
{
|
|
*ierr = (hypre_F90_Int)
|
|
( HYPRE_ParCSRPilutSetup(
|
|
hypre_F90_PassObj (HYPRE_Solver, solver),
|
|
hypre_F90_PassObj (HYPRE_ParCSRMatrix, A),
|
|
hypre_F90_PassObj (HYPRE_ParVector, b),
|
|
hypre_F90_PassObj (HYPRE_ParVector, x) ) );
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* HYPRE_ParCSRPilutSolve
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void
|
|
hypre_F90_IFACE(hypre_parcsrpilutsolve, HYPRE_PARCSRPILUTSOLVE)
|
|
( hypre_F90_Obj *solver,
|
|
hypre_F90_Obj *A,
|
|
hypre_F90_Obj *b,
|
|
hypre_F90_Obj *x,
|
|
hypre_F90_Int *ierr )
|
|
{
|
|
*ierr = (hypre_F90_Int)
|
|
( HYPRE_ParCSRPilutSolve(
|
|
hypre_F90_PassObj (HYPRE_Solver, solver),
|
|
hypre_F90_PassObj (HYPRE_ParCSRMatrix, A),
|
|
hypre_F90_PassObj (HYPRE_ParVector, b),
|
|
hypre_F90_PassObj (HYPRE_ParVector, x) ) );
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* HYPRE_ParCSRPilutSetMaxIter
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void
|
|
hypre_F90_IFACE(hypre_parcsrpilutsetmaxiter, HYPRE_PARCSRPILUTSETMAXITER)
|
|
( hypre_F90_Obj *solver,
|
|
hypre_F90_Int *max_iter,
|
|
hypre_F90_Int *ierr )
|
|
{
|
|
*ierr = (hypre_F90_Int)
|
|
( HYPRE_ParCSRPilutSetMaxIter(
|
|
hypre_F90_PassObj (HYPRE_Solver, solver),
|
|
hypre_F90_PassInt (max_iter) ) );
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* HYPRE_ParCSRPilutSetDropToleran
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void
|
|
hypre_F90_IFACE(hypre_parcsrpilutsetdroptoleran, HYPRE_PARCSRPILUTSETDROPTOLERAN)
|
|
( hypre_F90_Obj *solver,
|
|
hypre_F90_Real *tol,
|
|
hypre_F90_Int *ierr )
|
|
{
|
|
*ierr = (hypre_F90_Int)
|
|
( HYPRE_ParCSRPilutSetDropTolerance(
|
|
hypre_F90_PassObj (HYPRE_Solver, solver),
|
|
hypre_F90_PassReal (tol) ) );
|
|
}
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* HYPRE_ParCSRPilutSetFacRowSize
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
void
|
|
hypre_F90_IFACE(hypre_parcsrpilutsetfacrowsize, HYPRE_PARCSRPILUTSETFACROWSIZE)
|
|
( hypre_F90_Obj *solver,
|
|
hypre_F90_Int *size,
|
|
hypre_F90_Int *ierr )
|
|
{
|
|
*ierr = (hypre_F90_Int)
|
|
( HYPRE_ParCSRPilutSetFactorRowSize(
|
|
hypre_F90_PassObj (HYPRE_Solver, solver),
|
|
hypre_F90_PassInt (size) ) );
|
|
}
|
|
|