- Timestamp:
- Feb 20, 2012, 6:55:53 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20111122/Ohana/src/opihi/dvo/mextract.c
r33308 r33309 5 5 # define PARALLEL_SERIAL 0 6 6 # define MAX_PATH_LENGTH 1024 7 8 int HostTableLaunchJobs (HostTable *table, char *basecmd); 9 Vector **MergeVectors (Vector **vec, int *Nvec, Vector **invec, int Ninvec); 7 10 8 11 int mextract (int argc, char **argv) { … … 93 96 94 97 // load fields from file 95 // ReadVectorTables 98 int Nvec = 0; 99 Vector **vec = NULL; 100 for (i = 0; i < table->Nhosts; i++) { 101 char resultFile[MAX_PATH_LENGTH]; 102 snprintf (resultFile, MAX_PATH_LENGTH, "%s/dvo.results.fits", table->hosts[i].pathname); 103 104 int Ninvec = 0; 105 Vector **invec = ReadVectorTableFITS (resultFile, "MEXTRACT", &Ninvec); 106 107 vec = MergeVectors (vec, &Nvec, invec, Ninvec); 108 if (vec != invec) { 109 FreeVectorArray (invec, Ninvec); 110 } 111 } 112 113 for (i = 0; i < Nvec; i++) { 114 AssignVector (vec[i], vec[i]->name, ANYVECTOR, TRUE); 115 } 116 free (vec); 117 96 118 return TRUE; 97 119 } … … 449 471 } 450 472 473 // take two arrays of vectors and merge equal named vectors. 474 // for ease, require that the order of the names match & number of vectors match 475 Vector **MergeVectors (Vector **vec, int *Nvec, Vector **invec, int Ninvec) { 476 477 int i, j; 478 479 if (vec == NULL) { 480 *Nvec = Ninvec; 481 return invec; 482 } 483 484 myAssert (*Nvec == Ninvec, "programming error (1)"); 485 486 for (i = 0; i < Ninvec; i++) { 487 myAssert (!strcmp(vec[i]->name, invec[i]->name), "programming error (2)"); 488 myAssert (vec[i]->type == invec[i]->type, "programming error (2)"); 489 490 if (vec[i]->type == OPIHI_FLT) { 491 REALLOCATE (vec[i]->elements.Flt, opihi_flt, vec[i]->Nelements + invec[i]->Nelements); 492 for (j = 0; j < invec[i]->Nelements; j++) { 493 vec[i]->elements.Flt[i+j] = vec[i]->elements.Flt[j]; 494 } 495 } else { 496 REALLOCATE (vec[i]->elements.Int, opihi_int, vec[i]->Nelements + invec[i]->Nelements); 497 for (j = 0; j < invec[i]->Nelements; j++) { 498 vec[i]->elements.Int[i+j] = vec[i]->elements.Int[j]; 499 } 500 } 501 vec[i]->Nelements += invec[i]->Nelements; 502 } 503 return vec; 504 }
Note:
See TracChangeset
for help on using the changeset viewer.
