137 int_type * myElements = 0;
139 int * elementSizeList = 0;
146 Epetra_Map allGidsMap((int_type) -1, numRows, (int_type) 0,comm);
148 typename Epetra_GIDTypeVector<int_type>::impl allGids(allGidsMap);
149 for (
int i=0; i<numRows; i++) allGids[i] = (int_type) map.
GID64(i);
152 for (
int i=0; i<numRows; i++) allSizes[i] = map.
ElementSize(i);
155 int numChunks = numProc;
156 int stripSize = allGids.GlobalLength64()/numChunks;
157 int remainder = allGids.GlobalLength64()%numChunks;
159 int curStripSize = 0;
162 if (comm.
MyPID()==0) {
163 importGidList.Size(stripSize+1);
164 if (doSizes) importSizeList.
Size(stripSize+1);
166 for (
int i=0; i<numChunks; i++) {
167 if (comm.
MyPID()==0) {
168 curStripSize = stripSize;
169 if (i<remainder) curStripSize++;
170 for (
int j=0; j<curStripSize; j++) importGidList[j] = j + curStart;
171 curStart += curStripSize;
174 Epetra_Map importGidMap((int_type) -1, curStripSize, importGidList.Values(), 0, comm);
177 typename Epetra_GIDTypeVector<int_type>::impl importGids(importGidMap);
178 if (importGids.Import(allGids, gidImporter,
Insert))
return(-1);
180 if (doSizes)
if (importSizes.
Import(allSizes, gidImporter,
Insert))
return(-1);
185 int_type * myElements = importGids.Values();
186 int * elementSizeList = 0;
187 if (doSizes) elementSizeList = importSizes.
Values();
189 writeBlockMap(handle, importGids.MyLength(), myElements, elementSizeList, doSizes);
int BlockMapToMatrixMarketFile(const char *filename, const Epetra_BlockMap &map, const char *mapName, const char *mapDescription, bool writeHeader)
Writes an Epetra_BlockMap or Epetra_Map object to a Matrix Market format file.