18 #define ITYPE long long
19 #define OFFSET_EPETRA64 0
28 #define FINALIZE MPI_Finalize()
49 #define MIN(a,b) ((a) < (b) ? (a) : (b))
51 int main(
int narg,
char *arg[])
63 int me = comm.
MyPID();
66 ITYPE nGlobalRows = 10;
68 nGlobalRows = (
ITYPE) atol(arg[1]);
70 bool verbose = (nGlobalRows < 20);
74 int nMyRows = (int) (nGlobalRows / np + (nGlobalRows % np > me));
75 ITYPE myFirstRow = (
ITYPE)(me * (nGlobalRows / np) +
MIN(nGlobalRows%np, me));
77 for (
int i = 0; i < nMyRows; i++)
80 if (verbose) rowMap->
Print(std::cout);
84 std::vector<int> nnzPerRow(nMyRows+1, 0);
89 std::vector<ITYPE> iv(3*nMyRows+1);
90 std::vector<ITYPE> jv(3*nMyRows+1);
91 std::vector<double> vv(3*nMyRows+1);
94 ITYPE nMyNonzeros = 0;
95 for (
ITYPE i = 0, myrowcnt = 0; i < nGlobalRows; i++) {
101 vv[nMyNonzeros] = -1;
103 std::cout <<
"(" << iv[nMyNonzeros] <<
"," << jv[nMyNonzeros] <<
")="
104 << vv[nMyNonzeros] <<
" on processor " << me
105 <<
" in " << myrowcnt << std::endl;
107 nnzPerRow[myrowcnt]++;
112 vv[nMyNonzeros] = ((i == 0 || i == nGlobalRows-1) ? 1. : 2.);
114 std::cout <<
"(" << iv[nMyNonzeros] <<
"," << jv[nMyNonzeros] <<
")="
115 << vv[nMyNonzeros] <<
" on processor " << me
116 <<
" in " << myrowcnt << std::endl;
118 nnzPerRow[myrowcnt]++;
120 if (i < nGlobalRows - 1) {
123 vv[nMyNonzeros] = -1;
125 std::cout <<
"(" << iv[nMyNonzeros] <<
"," << jv[nMyNonzeros] <<
")="
126 << vv[nMyNonzeros] <<
" on processor " << me
127 <<
" in " << myrowcnt << std::endl;
129 nnzPerRow[myrowcnt]++;
141 for (
int i=0; i < nMyRows; i++) {
144 std::cout <<
"InsertGlobalValus row " << iv[sum]
145 <<
" count " << nnzPerRow[i]
146 <<
" cols " << jv[sum] <<
" " << jv[sum+1] <<
" ";
147 if (nnzPerRow[i] == 3) std::cout << jv[sum+2];
148 std::cout << std::endl;
150 info =
A->InsertGlobalValues(iv[sum],nnzPerRow[i],&vv[sum],&jv[sum]);
157 info =
A->FillComplete();
159 if (verbose)
A->Print(std::cout);
166 A->Multiply(
false, sanity, sanityres);
168 double jjone, jjtwo, jjmax;
169 sanityres.Norm1(&jjone);
170 sanityres.Norm2(&jjtwo);
171 sanityres.NormInf(&jjmax);
173 std::cout <<
"SanityTest norms 1/2/inf: " << jjone <<
" "
174 << jjtwo <<
" " << jjmax << std::endl;
176 bool test_failed = (jjone != 0) || (jjtwo != 0) || (jjmax != 0);
178 sanityres.MinValue(&jjone);
179 sanityres.MeanValue(&jjtwo);
180 sanityres.MaxValue(&jjmax);
182 std::cout <<
"SanityTest values min/max/avg: " << jjone <<
" "
183 << jjmax <<
" " << jjtwo << std::endl;
185 test_failed = test_failed || (jjone != 0) || (jjtwo != 0) || (jjmax != 0);
189 std::cout <<
"Bug_5791_StaticProifle_LL tests FAILED" << std::endl;
194 delete [] myGlobalRows;