52 UserAllocated_(false),
62 UserAllocated_(false),
72 UserAllocated_(false),
112 for (
int i=0; i<iend; i++)
Values_[i] = V[i];
138 for (
int i=0; i<iend; i++) V[i] =
Values_[i];
152 for (
int i=0; i<iend; i++)
Values_[i] = Value;
158 int result = -2000000000;
160 if (iend>0) result =
Values_[0];
163 this->
Comm().
MaxAll(&result, &globalResult, 1);
164 return(globalResult);
169 int result = 2000000000;
171 if (iend>0) result =
Values_[0];
174 this->
Comm().
MinAll(&result, &globalResult, 1);
175 return(globalResult);
186 for (
int i=0; i<iend; i++)
Values_[i] =V[i];
194 for (
int iproc=0; iproc < NumProc; iproc++) {
196 int NumMyElements1 =
Map(). NumMyElements();
198 int * MyGlobalElements1_int = 0;
199 long long * MyGlobalElements1_LL = 0;
200 if(
Map().GlobalIndicesInt()) {
201 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
204 throw ReportError(
"Epetra_IntVector::Print: Global indices int but no API for it.",-1);
207 else if(
Map().GlobalIndicesLongLong()) {
208 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
211 throw ReportError(
"Epetra_IntVector::Print: Global indices long long but no API for it.",-1);
214 int * FirstPointInElementList1=0;
219 os <<
" MyPID"; os <<
" ";
221 if (MaxElementSize1==1)
229 for (
int i=0; i < NumMyElements1; i++) {
233 os << MyPID; os <<
" ";
235 if (MaxElementSize1==1) {
236 if(MyGlobalElements1_int)
237 os << MyGlobalElements1_int[i] <<
" ";
238 if(MyGlobalElements1_LL)
239 os << MyGlobalElements1_LL[i] <<
" ";
243 if(MyGlobalElements1_int)
244 os << MyGlobalElements1_int[i]<<
"/" << ii <<
" ";
245 if(MyGlobalElements1_LL)
246 os << MyGlobalElements1_LL[i]<<
"/" << ii <<
" ";
247 iii = FirstPointInElementList1[i]+ii;
276 int *PermuteFromLIDs,
284 A.ExtractView(&From);
287 int * ToFirstPointInElementList = 0;
288 int * FromFirstPointInElementList = 0;
289 int * FromElementSizeList = 0;
293 if (!ConstantElementSize) {
295 FromFirstPointInElementList =
A.Map().FirstPointInElementList();
296 FromElementSizeList =
A.Map().ElementSizeList();
306 if (MaxElementSize==1) {
308 NumSameEntries = NumSameIDs;
310 else if (ConstantElementSize) {
312 NumSameEntries = NumSameIDs * MaxElementSize;
316 NumSameEntries = FromFirstPointInElementList[NumSameIDs];
320 if (To==From) NumSameEntries = 0;
326 for (j=0; j<NumSameEntries; j++) To[j] += From[j];
328 for (j=0; j<NumSameEntries; j++) To[j] = From[j];
331 if (NumPermuteIDs>0) {
337 for (j=0; j<NumPermuteIDs; j++) To[PermuteToLIDs[j]] += From[PermuteFromLIDs[j]];
339 for (j=0; j<NumPermuteIDs; j++) To[PermuteToLIDs[j]] = From[PermuteFromLIDs[j]];
345 for (j=0; j<NumPermuteIDs; j++) {
346 jj = MaxElementSize*PermuteToLIDs[j];
347 jjj = MaxElementSize*PermuteFromLIDs[j];
348 for (k=0; k<MaxElementSize; k++)
349 To[jj+k] += From[jjj+k];
352 for (j=0; j<NumPermuteIDs; j++) {
353 jj = MaxElementSize*PermuteToLIDs[j];
354 jjj = MaxElementSize*PermuteFromLIDs[j];
355 for (k=0; k<MaxElementSize; k++)
356 To[jj+k] = From[jjj+k];
364 for (j=0; j<NumPermuteIDs; j++) {
365 jj = ToFirstPointInElementList[PermuteToLIDs[j]];
366 jjj = FromFirstPointInElementList[PermuteFromLIDs[j]];
367 int ElementSize = FromElementSizeList[PermuteFromLIDs[j]];
368 for (k=0; k<ElementSize; k++)
369 To[jj+k] += From[jjj+k];
372 for (j=0; j<NumPermuteIDs; j++) {
373 jj = ToFirstPointInElementList[PermuteToLIDs[j]];
374 jjj = FromFirstPointInElementList[PermuteFromLIDs[j]];
375 int ElementSize = FromElementSizeList[PermuteFromLIDs[j]];
376 for (k=0; k<ElementSize; k++)
377 To[jj+k] = From[jjj+k];
403 A.ExtractView(&From);
407 int * FromFirstPointInElementList = 0;
408 int * FromElementSizeList = 0;
410 if (!ConstantElementSize) {
411 FromFirstPointInElementList =
A.Map().FirstPointInElementList();
412 FromElementSizeList =
A.Map().ElementSizeList();
415 SizeOfPacket = MaxElementSize * (int)
sizeof(
int);
417 if(NumExportIDs*SizeOfPacket>LenExports) {
418 if (LenExports>0)
delete [] Exports;
419 LenExports = NumExportIDs*SizeOfPacket;
420 Exports =
new char[LenExports];
425 if (NumExportIDs>0) {
426 ptr = (
int *) Exports;
429 if (MaxElementSize==1)
for (j=0; j<NumExportIDs; j++) *ptr++ = From[ExportLIDs[j]];
432 else if (ConstantElementSize) {
434 for (j=0; j<NumExportIDs; j++) {
435 jj = MaxElementSize*ExportLIDs[j];
436 for (k=0; k<MaxElementSize; k++)
444 int thisSizeOfPacket = MaxElementSize;
445 for (j=0; j<NumExportIDs; j++) {
446 ptr = (
int *) Exports + j*thisSizeOfPacket;
447 jj = FromFirstPointInElementList[ExportLIDs[j]];
448 int ElementSize = FromElementSizeList[ExportLIDs[j]];
449 for (k=0; k<ElementSize; k++)
476 if( CombineMode !=
Add
477 && CombineMode !=
Zero
480 && CombineMode !=
AbsMax )
483 if (NumImportIDs<=0)
return(0);
489 int * ToFirstPointInElementList = 0;
490 int * ToElementSizeList = 0;
492 if (!ConstantElementSize) {
500 ptr = (
int *) Imports;
503 if (MaxElementSize==1) {
505 if (CombineMode==
Add)
506 for (j=0; j<NumImportIDs; j++) To[ImportLIDs[j]] += *ptr++;
507 else if(CombineMode==
Insert)
508 for (j=0; j<NumImportIDs; j++) To[ImportLIDs[j]] = *ptr++;
509 else if(CombineMode==
AbsMax)
510 for (j=0; j<NumImportIDs; j++) {
511 To[ImportLIDs[j]] =
EPETRA_MAX( To[ImportLIDs[j]],std::abs(*ptr));
517 for (j=0; j<NumImportIDs; j++) {To[ImportLIDs[j]] += *ptr++; To[ImportLIDs[j]] /= 2;}
522 else if (ConstantElementSize) {
524 if (CombineMode==
Add) {
525 for (j=0; j<NumImportIDs; j++) {
526 jj = MaxElementSize*ImportLIDs[j];
527 for (k=0; k<MaxElementSize; k++)
531 else if(CombineMode==
Insert) {
532 for (j=0; j<NumImportIDs; j++) {
533 jj = MaxElementSize*ImportLIDs[j];
534 for (k=0; k<MaxElementSize; k++)
538 else if(CombineMode==
AbsMax) {
539 for (j=0; j<NumImportIDs; j++) {
540 jj = MaxElementSize*ImportLIDs[j];
541 for (k=0; k<MaxElementSize; k++) {
542 To[jj+k] =
EPETRA_MAX( To[jj+k], std::abs(*ptr));
549 else if(CombineMode==
Average) {
550 for (j=0; j<NumImportIDs; j++) {
551 jj = MaxElementSize*ImportLIDs[j];
552 for (k=0; k<MaxElementSize; k++)
553 { To[jj+k] += *ptr++; To[jj+k] /= 2;}
562 int thisSizeOfPacket = MaxElementSize;
564 if (CombineMode==
Add) {
565 for (j=0; j<NumImportIDs; j++) {
566 ptr = (
int *) Imports + j*thisSizeOfPacket;
567 jj = ToFirstPointInElementList[ImportLIDs[j]];
568 int ElementSize = ToElementSizeList[ImportLIDs[j]];
569 for (k=0; k<ElementSize; k++)
573 else if(CombineMode==
Insert){
574 for (j=0; j<NumImportIDs; j++) {
575 ptr = (
int *) Imports + j*thisSizeOfPacket;
576 jj = ToFirstPointInElementList[ImportLIDs[j]];
577 int ElementSize = ToElementSizeList[ImportLIDs[j]];
578 for (k=0; k<ElementSize; k++)
582 else if(CombineMode==
AbsMax){
583 for (j=0; j<NumImportIDs; j++) {
584 ptr = (
int *) Imports + j*thisSizeOfPacket;
585 jj = ToFirstPointInElementList[ImportLIDs[j]];
586 int ElementSize = ToElementSizeList[ImportLIDs[j]];
587 for (k=0; k<ElementSize; k++) {
588 To[jj+k] =
EPETRA_MAX( To[jj+k], std::abs(*ptr));
595 else if(CombineMode==
Average) {
596 for (j=0; j<NumImportIDs; j++) {
597 ptr = (
int *) Imports + j*thisSizeOfPacket;
598 jj = ToFirstPointInElementList[ImportLIDs[j]];
599 int ElementSize = ToElementSizeList[ImportLIDs[j]];
600 for (k=0; k<ElementSize; k++)
601 { To[jj+k] += *ptr++; To[jj+k] /= 2;}