public override void compute() { /* Get primitive structures */ HYPRE_ParCRS_vector b_ParCRS = (HYPRE_ParCRS_vector)rhs.Primitive; HYPRE_ParCRS_vector x_ParCRS = (HYPRE_ParCRS_vector)solution.Primitive; HYPRE_ParCSR_matrix A_ParCSR = (HYPRE_ParCSR_matrix)matrix.Primitive; /* Setup solver parameters */ lssdomain.HYPRE_ParCSRPCGSetMaxIter(solverCG, maxiter); lssdomain.HYPRE_ParCSRPCGSetTol(solverCG, tol); lssdomain.HYPRE_ParCSRPCGSetTwoNorm(solverCG, 1); /* Consolidate data structures */ lssdomain.HYPRE_ParCSRPCGSetup(solverCG, A_ParCSR, b_ParCRS, x_ParCRS); /* Solve ! */ lssdomain.HYPRE_ParCSRPCGSolve(solverCG, A_ParCSR, b_ParCRS, x_ParCRS); /* Get some information about execution */ lssdomain.HYPRE_ParCSRPCGGetNumIterations(solverCG, out num_iterations); lssdomain.HYPRE_ParCSRPCGGetFinalRelativeResidualNorm(solverCG, out final_res_norm); /* Destroy solver */ lssdomain.HYPRE_ParCSRPCGDestroy(solverCG); } // end activate method
public int HYPRE_ParCSRPCGSolve(HYPRE_Solver solver, HYPRE_ParCSR_matrix ParCSRMatrix_A, HYPRE_ParCRS_vector ParVector_b, HYPRE_ParCRS_vector ParVector_x) { return(ParCSRPCGSolve(solver, ParCSRMatrix_A, ParVector_b, ParVector_x)); }
private static extern int GetObject(HYPRE_IJVector vector, out HYPRE_ParCRS_vector mtx_object);
public int HYPRE_IJVectorGetObject(HYPRE_IJVector vector, out HYPRE_ParCRS_vector mtx_object) { return(GetObject(vector, out mtx_object)); }
private static extern int ParCSRPCGSolve(HYPRE_Solver solver, HYPRE_ParCSR_matrix ParCSRMatrix_A, HYPRE_ParCRS_vector ParVector_b, HYPRE_ParCRS_vector ParVector_x);