78int main(
int argc,
char *argv[])
82 MPI_Init(&argc,&argv);
96 int rank = Comm.
MyPID();
98 if (
verbose) cout << Comm <<endl;
105 double * X =
new double[NRHS];
106 double * ed_X =
new double[NRHS];
108 double * B =
new double[NRHS];
109 double * ed_B =
new double[NRHS];
117 bool Transpose =
false;
119 solver.SolveWithTranspose(Transpose);
120 solver.SolveToRefinedSolution(Refine);
122 ed_solver.SolveWithTranspose(Transpose);
123 ed_solver.SolveToRefinedSolution(Refine);
128 for(
int i=0;i<
N;++i) {
132 Matrix->
DL()[i]=-1.0;
133 if(i!=2) Matrix->
DU()[i]=-1.0;
137 Matrix->
Print(std::cout);
139 double * ed_a = ed_Matrix->A();
141 for(
int j=0;j<
N;++j) {
142 if(i==j) ed_a[j*
N+i] = 2.0;
143 else if(abs(i-j) == 1) ed_a[j*
N+i] = -1.0;
144 else ed_a[j*
N + i] = 0;
145 if(i==2&&j==3) ed_a[j*
N+i] = 0.0;
155 solver.SetMatrix(*Matrix);
156 solver.SetVectors(LHS,
RHS);
158 ed_solver.SetMatrix(*ed_Matrix);
159 ed_solver.SetVectors(ed_LHS, ed_RHS);
164 std::cout <<
" LHS vals are: "<<std::endl;
165 bool TestPassed=
true;
166 for(
int i=0;i<
N;++i) {
167 std::cout <<
"["<<i<<
"] "<< LHS(i)<<
" "<<ed_LHS(i)<<
" delta "<<LHS(i)-ed_LHS(i)<<std::endl;
168 if( fabs( (LHS(i)- ed_LHS(i))/(LHS(i)+ ed_LHS(i)) ) > 1.0e-12 ) {
170 std::cout <<
" not equal for "<<i<<
" delta "<< LHS(i)- ed_LHS(i)<<std::endl;
177 std::cout <<
" Tri Di Factored "<<std::endl;
178 tdfac->
Print(std::cout);
179 std::cout <<
" Dense Factored "<<std::endl;
180 sdfac->Print(std::cout);
191 cout <<
"Test `TestRelaxation.exe' failed!" << endl;
200 cout <<
"Test `TestRelaxation.exe' passed!" << endl;
202 return(EXIT_SUCCESS);
void GEMM(const char TRANSA, const char TRANSB, const int M, const int N, const int K, const float ALPHA, const float *A, const int LDA, const float *B, const int LDB, const float BETA, float *C, const int LDC) const
int main(int argc, char *argv[])
int matrixCpyCtr(bool verbose, bool debug)
int check(Ifpack_SerialTriDiSolver &solver, double *A1, int LDA, int N1, int NRHS1, double OneNorm1, double *B1, int LDB1, double *X1, int LDX1, bool Transpose, bool verbose)
void printArray(double *array, int length)
void printMat(const char *name, Ifpack_SerialTriDiMatrix &matrix)
void printHeading(const char *heading)
bool Residual(int N, int NRHS, double *A, int LDA, bool Transpose, double *X, int LDX, double *B, int LDB, double *resid)