18 #define ITYPE long long
21 #define OFFSET_EPETRA64 0
30 #define FINALIZE MPI_Finalize()
53 #define MIN(a,b) ((a) < (b) ? (a) : (b))
55 int main(
int narg,
char *arg[])
67 int me = comm.
MyPID();
70 ITYPE nGlobalRows = 25;
72 nGlobalRows = (
ITYPE) atol(arg[1]);
74 bool verbose = (nGlobalRows < 26);
78 int nMyRows = (int) (nGlobalRows / np + (nGlobalRows % np > me));
79 ITYPE myFirstRow = (
ITYPE)(me * (nGlobalRows / np) +
MIN(nGlobalRows%np, me));
81 for (
int i = 0; i < nMyRows; i++)
84 if (verbose) rowMap->
Print(std::cout);
88 std::vector<int> nnzPerRow(nMyRows+1, 0);
93 std::vector<ITYPE> iv(5*nMyRows+1);
94 std::vector<ITYPE> jv(5*nMyRows+1);
95 std::vector<double> vv(5*nMyRows+1);
98 ITYPE nMyNonzeros = 0;
99 for (
ITYPE i = 0, myrowcnt = 0; i < nGlobalRows; i++) {
106 vv[nMyNonzeros] = -1;
108 std::cout <<
"(" << iv[nMyNonzeros] <<
"," << jv[nMyNonzeros] <<
")="
109 << vv[nMyNonzeros] <<
" on processor " << me
110 <<
" in " << myrowcnt << std::endl;
112 nnzPerRow[myrowcnt]++;
116 if (i < nGlobalRows - 1) {
119 vv[nMyNonzeros] = -1;
121 std::cout <<
"(" << iv[nMyNonzeros] <<
"," << jv[nMyNonzeros] <<
")="
122 << vv[nMyNonzeros] <<
" on processor " << me
123 <<
" in " << myrowcnt << std::endl;
125 nnzPerRow[myrowcnt]++;
129 if (i+5 < nGlobalRows) {
132 vv[nMyNonzeros] = -1;
134 std::cout <<
"(" << iv[nMyNonzeros] <<
"," << jv[nMyNonzeros] <<
")="
135 << vv[nMyNonzeros] <<
" on processor " << me
136 <<
" in " << myrowcnt << std::endl;
138 nnzPerRow[myrowcnt]++;
145 vv[nMyNonzeros] = -1;
147 std::cout <<
"(" << iv[nMyNonzeros] <<
"," << jv[nMyNonzeros] <<
")="
148 << vv[nMyNonzeros] <<
" on processor " << me
149 <<
" in " << myrowcnt << std::endl;
151 nnzPerRow[myrowcnt]++;
157 vv[nMyNonzeros] = idegree;
159 std::cout <<
"(" << iv[nMyNonzeros] <<
"," << jv[nMyNonzeros] <<
")="
160 << vv[nMyNonzeros] <<
" on processor " << me
161 <<
" in " << myrowcnt << std::endl;
163 nnzPerRow[myrowcnt]++;
182 for (
int i=0; i < nMyRows; i++) {
185 std::cout <<
"InsertGlobalValus row " << iv[sum]
186 <<
" count " << nnzPerRow[i]
187 <<
" cols " << jv[sum] <<
" " << jv[sum+1] <<
" ";
188 if (nnzPerRow[i] == 3) std::cout << jv[sum+2];
189 std::cout << std::endl;
191 info =
A->InsertGlobalValues(iv[sum],nnzPerRow[i],&vv[sum],&jv[sum]);
198 info =
A->FillComplete();
200 if (verbose)
A->Print(std::cout);
207 A->Multiply(
false, sanity, sanityres);
209 double jjone, jjtwo, jjmax;
210 sanityres.Norm1(&jjone);
211 sanityres.Norm2(&jjtwo);
212 sanityres.NormInf(&jjmax);
214 std::cout <<
"SanityTest norms 1/2/inf: " << jjone <<
" "
215 << jjtwo <<
" " << jjmax << std::endl;
217 bool test_failed = (jjone != 0) || (jjtwo != 0) || (jjmax != 0);
219 sanityres.MinValue(&jjone);
220 sanityres.MeanValue(&jjtwo);
221 sanityres.MaxValue(&jjmax);
223 std::cout <<
"SanityTest values min/max/avg: " << jjone <<
" "
224 << jjmax <<
" " << jjtwo << std::endl;
226 test_failed = test_failed || (jjone != 0) || (jjtwo != 0) || (jjmax != 0);
230 std::cout <<
"Bug_5797_Sort_MakeColMap_LL tests FAILED" << std::endl;
235 delete [] myGlobalRows;