25 using Teuchos::outArg;
28 using Teuchos::rcp_dynamic_cast;
29 using Teuchos::REDUCE_MIN;
30 using Teuchos::reduceAll;
38 (void) MPI_Comm_rank (MPI_COMM_WORLD, &myRank);
39 (void) MPI_Comm_size (MPI_COMM_WORLD, &numProcs);
44 std::ostringstream os;
45 os <<
"(Process " << myRank <<
") ";
50 std::ostringstream os;
51 os << prefix <<
"Creating Epetra_Comm" << endl;
55 const Epetra_MpiComm epetra_comm (MPI_COMM_WORLD);
57 const Epetra_SerialComm epetra_comm ();
60 std::ostringstream os;
61 os << prefix <<
"Creating Teuchos::Comm" << endl;
68 lclSuccess = success ? 1 : 0;
69 reduceAll (*comm, REDUCE_MIN, lclSuccess, outArg (gblSuccess));
71 if (gblSuccess != 1) {
72 out <<
"FAILED; some process(es) have a null Teuchos::Comm" << endl;
77 const int localDim = myRank % 2;
78 const int globalDim = numProcs / 2;
81 std::ostringstream os;
82 os << prefix <<
"Creating Epetra_Map: localDim=" << localDim <<
", globalDim=" << globalDim << endl;
85 epetra_map =
rcp (
new Epetra_Map (globalDim, localDim, 0, epetra_comm));
88 lclSuccess = success ? 1 : 0;
89 reduceAll (*comm, REDUCE_MIN, lclSuccess, outArg (gblSuccess));
91 if (gblSuccess != 1) {
92 out <<
"FAILED; some process(es) have a null Epetra_Map" << endl;
97 std::ostringstream os;
98 os << prefix <<
"Creating Thyra::DefaultSpmdVectorSpace" << endl;
102 Thyra::DefaultSpmdVectorSpace<double>::create();
106 lclSuccess = success ? 1 : 0;
107 reduceAll (*comm, REDUCE_MIN, lclSuccess, outArg (gblSuccess));
109 if (gblSuccess != 1) {
110 out <<
"FAILED; some process(es) have a null SPMD" << endl;
114 SPMD->initialize(comm, localDim, globalDim);
117 std::ostringstream os;
118 os << prefix <<
"Creating Thyra::MultiVectorBase" << endl;
122 rcp (
new Thyra::DefaultSpmdMultiVector<double> (
124 rcp_dynamic_cast<
const Thyra::ScalarProdVectorSpaceBase<double> > (
125 SPMD->smallVecSpcFcty()->createVecSpc(1),
true)
130 lclSuccess = success ? 1 : 0;
131 reduceAll (*comm, REDUCE_MIN, lclSuccess, outArg (gblSuccess));
133 if (gblSuccess != 1) {
134 out <<
"FAILED; some process(es) have a null Thyra::MultiVectorBase"
140 std::ostringstream os;
141 os << prefix <<
"Calling Thyra::get_Epetra_MultiVector "
142 "(const overload; see #1941)" << endl;
148 const_cast<const Thyra::MultiVectorBase<double>&
> (*spmd));
151 lclSuccess = success ? 1 : 0;
152 reduceAll (*comm, REDUCE_MIN, lclSuccess, outArg (gblSuccess));
154 if (gblSuccess != 1) {
155 out <<
"FAILED; some process(es) have a null const Epetra_MultiVector"
161 std::ostringstream os;
162 os << prefix <<
"Calling Thyra::get_Epetra_MultiVector "
163 "(nonconst overload; see #2061)" << endl;
169 const_cast<Thyra::MultiVectorBase<double>&
> (*spmd));
172 lclSuccess = success ? 1 : 0;
173 reduceAll (*comm, REDUCE_MIN, lclSuccess, outArg (gblSuccess));
175 if (gblSuccess != 1) {
176 out <<
"FAILED; some process(es) have a null nonconst Epetra_MultiVector"
182 std::ostringstream os;
183 os << prefix <<
"Done with test on this process" << endl;