int main(int argc, char *argv[]) { #ifdef HAVE_MPI MPI_Init(&argc,&argv); Epetra_MpiComm Comm(MPI_COMM_WORLD); #else Epetra_SerialComm Comm; #endif bool verbose = false; if (Comm.MyPID() == 0) { verbose = argument_is_present("-v", argc, argv); } if ( test_bug2863(Comm, verbose) ) { std::cout << "test_bug2863 FAILED."<<std::endl; exit(EXIT_FAILURE); } #ifdef HAVE_MPI MPI_Finalize() ; #endif if (Comm.MyPID() == 0) std::cout << "TEST PASSED" << std::endl; exit(EXIT_SUCCESS); } //end of main program
int main(int argc, char *argv[]) { #ifdef EPETRA_MPI MPI_Init(&argc,&argv); Epetra_MpiComm comm(MPI_COMM_WORLD); #else Epetra_SerialComm comm; #endif int numprocs = comm.NumProc(); int localproc = comm.MyPID(); /////////////////////////////////////////////////// //First figure out whether verbose output is on. //(and if so, only turn it on for proc 0) bool verbose = false; if (localproc == 0) { verbose = argument_is_present("-v", argc, argv); } /////////////////////////////////////////////////// int local_n = 30; int global_n = numprocs*local_n; Epetra_Map emap(global_n, 0, comm); Epetra_CrsMatrix* A = create_and_fill_crs_matrix(emap); Epetra_Vector x(emap), b(emap); x.PutScalar(1.0); A->Multiply(false, x, b); x.PutScalar(0.0); double initial_norm = resid2norm(*A, x, b); if (verbose) { cout << "Initial 2-norm of b-A*x: "<<initial_norm<<endl; } int err = test_azoo_as_precond_op(*A, x, b, verbose); if (err != 0) { cout << "test_azoo_as_precond_op err, test FAILED."<<endl; return(err); } err = test_azoo_conv_anorm(*A, x, b, verbose); if (err != 0) { cout << "test_azoo_conv_anorm err, test FAILED."<<endl; return(err); } if (verbose) { cout << "testing AztecOO with AZ_conv = AZ_Anorm, and AZ_scaling = AZ_sym_diag" << endl; } err = test_azoo_conv_with_scaling(AZ_Anorm, AZ_sym_diag, A->Comm(), verbose); if (err != 0) { cout << "test_azoo_conv_with_scaling err, test FAILED."<<endl; return(err); } if (verbose) { cout << "testing AztecOO with AZ_conv = AZ_rhs, and AZ_scaling = AZ_sym_diag" << endl; } err = test_azoo_conv_with_scaling(AZ_rhs, AZ_sym_diag, A->Comm(), verbose); if (err != 0) { cout << "test_azoo_conv_with_scaling err, test FAILED."<<endl; return(err); } err = test_azoo_with_ilut(*A, x, b, verbose); if (err != 0) { cout << "test_azoo_with_ilut err, test FAILED."<<endl; return(err); } err = test_azoo_scaling(*A, x, b, verbose); if (err != 0) { cout << "test_azoo_scaling err="<<err<<", test FAILED."<<endl; return(err); } delete A; int* options = new int[AZ_OPTIONS_SIZE]; options[AZ_solver] = AZ_cg; options[AZ_subdomain_solve] = AZ_none; options[AZ_precond] = AZ_Jacobi; if (verbose) std::cout << "about to call test_AZ_iterate_AZ_pre_calc_AZ_reuse" <<std::endl; err = test_AZ_iterate_AZ_pre_calc_AZ_reuse(comm, options, verbose); if (err != 0) { cout << "test_AZ_iterate_AZ_pre_calc_AZ_reuse err, test FAILED."<<endl; return(err); } options[AZ_solver] = AZ_cgs; options[AZ_subdomain_solve] = AZ_icc; options[AZ_precond] = AZ_dom_decomp; err = test_AZ_iterate_AZ_pre_calc_AZ_reuse(comm, options, verbose); if (err != 0) { cout << "test_AZ_iterate_AZ_pre_calc_AZ_reuse err, test FAILED."<<endl; return(err); } options[AZ_solver] = AZ_gmres; options[AZ_subdomain_solve] = AZ_ilut; err = test_AZ_iterate_AZ_pre_calc_AZ_reuse(comm, options, verbose); if (err != 0) { cout << "test_AZ_iterate_AZ_pre_calc_AZ_reuse err, test FAILED."<<endl; return(err); } options[AZ_solver] = AZ_tfqmr; options[AZ_subdomain_solve] = AZ_ilu; err = test_AZ_iterate_AZ_pre_calc_AZ_reuse(comm, options, verbose); if (err != 0) { cout << "test_AZ_iterate_AZ_pre_calc_AZ_reuse err, test FAILED."<<endl; return(err); } options[AZ_solver] = AZ_bicgstab; options[AZ_subdomain_solve] = AZ_rilu; err = test_AZ_iterate_AZ_pre_calc_AZ_reuse(comm, options, verbose); if (err != 0) { cout << "test_AZ_iterate_AZ_pre_calc_AZ_reuse err, test FAILED."<<endl; return(err); } err = test_AZ_iterate_then_AZ_scale_f(comm, verbose); if (err != 0) { cout << "test_AZ_iterate_then_AZ_scale_f err, test FAILED."<<endl; return(err); } delete [] options; err = test_bug2554(comm, verbose); if (err != 0) { cout << "test_bug2554 err, test FAILED."<<endl; return(err); } err = test_bug2890(comm, verbose); if (err != 0) { cout << "test_bug2890 err, test FAILED."<<endl; return(err); } cout << "********* Test passed **********" << endl; #ifdef EPETRA_MPI MPI_Finalize() ; #endif return(0); }