/// <summary> /// Create a solver object /// </summary> public static int HYPRE_ParaSailsCreate(MPI_Comm MPI_Comm, out T_Solver solver) { ulong _com8; uint _com4; // we need to convert the MPI comm in ilPSP (which is a FORTRAN MPI comm) // to a C-MPI comm: can be either 4 or 8 bytes! int sz = csMPI.Raw.MPI_Comm_f2c(MPI_Comm, out _com4, out _com8); switch (sz) { case 4: return(Create4(_com4, out solver)); case 8: return(Create8(_com8, out solver)); default: throw new NotImplementedException(); } }
public static extern int CreateGMRES(MPI_Comm MPI_Comm, out T_Solver solver);
public static extern int GetMaxIterations(T_Solver solver, out int _MaxIterations);
public static extern int GetRelativeTolerance(T_Solver solver, out double tolerance);
public static extern int SetAbsoluteTolerance(T_Solver solver, double p);
public static extern int Solve(T_Solver solver, T_ParCSR_matrix Matrix_A, T_ParCRS_vector Vector_b, T_ParCRS_vector Vector_x);
public static extern int GetRelChange(T_Solver solver, out int rel_change);
public static extern int SetPrintLevel(T_Solver solver, int verbosity_lvl);
public extern static int HYPRE_ParaSailsBuildIJMatrix(T_Solver solver, out T_IJMatrix pij_A);
public extern static int HYPRE_ParaSailsSetLogging(T_Solver solver, int logging);
public extern static int HYPRE_ParaSailsSetFilter(T_Solver solver, double filter);
public extern static int HYPRE_ParaSailsGetLoadbal(T_Solver solver, double loadbal);
public extern static int HYPRE_ParaSailsGetSym(T_Solver solver, out int sym);
public extern static int HYPRE_ParaSailsGetThresh(T_Solver solver, out double thresh);
public static extern int Destroy(T_Solver solver);
public static extern int GetKrylovSpaceDim(T_Solver solver, out int k_Dim);
public static extern int GetNumOfIterations(T_Solver solver, out int num_iterations);
public static extern int HYPRE_ParaSailsGetNlevels(T_Solver solver, out int nlevels);
public static extern int SetRelChange(T_Solver solver, int rel_change);
public static extern int HYPRE_ParaSailsGetReuse(T_Solver solver, out int reuse);
public static extern int GetConverged(T_Solver m_GMRESSolver, out int _Converged);
static public int __HYPRE_ParaSailsSetup(T_Solver solver, T_ParCSR_matrix ParCSRMatrix_A, T_ParCRS_vector ParVector_b, T_ParCRS_vector ParVector_x) { return(my.HYPRE_ParaSailsSetup(solver, ParCSRMatrix_A, ParVector_b, ParVector_x)); }
public static extern int SetPrecond(T_Solver solver, IntPtr PtrToSolverFcn_precond_solve, IntPtr PtrToSolverFcn_precond_setup, T_Solver Solver_precond_solver);
static extern int Create8(ulong MPI_comm, out T_Solver solver);
public static extern int SetRelativeTolerance(T_Solver solver, double p);
static extern int Create4(uint MPI_comm, out T_Solver solver);
public static extern int GetAbsoluteTolerance(T_Solver solver, out double tolerance);
public extern static int HYPRE_ParaSailsDestroy(T_Solver solver);
public static extern int SetMaxIterations(T_Solver solver, int num_iterations);
static public extern int HYPRE_EuclidSetRowScale(T_Solver HYPRE_Solver, int row_scale);