Changeset 09f4dc for molecuilder/src/datacreator.cpp
- Timestamp:
- Jul 23, 2009, 9:14:18 AM (16 years ago)
- Children:
- 3b470f
- Parents:
- 2218dca (diff), 6ce722 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - File:
-
- 1 edited
-
molecuilder/src/datacreator.cpp (modified) (36 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/datacreator.cpp
r2218dca r09f4dc 63 63 cout << msg << endl; 64 64 output << "# " << msg << ", created on " << datum; 65 output << "#Order\tFrag.No.\t" << Fragments.Header << endl;65 output << "#Order\tFrag.No.\t" << Fragments.Header[Fragments.MatrixCounter] << endl; 66 66 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 67 67 for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;) { 68 68 for(int j=Fragments.RowCounter[ KeySet.OrderSet[BondOrder][i] ];j--;) 69 for(int k=Fragments.ColumnCounter ;k--;)69 for(int k=Fragments.ColumnCounter[ KeySet.OrderSet[BondOrder][i] ];k--;) 70 70 Fragments.Matrix[Fragments.MatrixCounter][j][k] += Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 71 71 } 72 72 output << BondOrder+1 << "\t" << KeySet.FragmentsPerOrder[BondOrder]; 73 for (int l=0;l<Fragments.ColumnCounter ;l++)73 for (int l=0;l<Fragments.ColumnCounter[Fragments.MatrixCounter];l++) 74 74 output << scientific << "\t" << Fragments.Matrix[Fragments.MatrixCounter][ Fragments.RowCounter[Fragments.MatrixCounter]-1 ][l]; 75 75 output << endl; … … 96 96 cout << msg << endl; 97 97 output << "# " << msg << ", created on " << datum; 98 output << "#Order\tFrag.No.\t" << Fragments.Header << endl;98 output << "#Order\tFrag.No.\t" << Fragments.Header[Fragments.MatrixCounter] << endl; 99 99 Fragments.SetLastMatrix(Energy.Matrix[Energy.MatrixCounter],0); 100 100 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 101 101 for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;) { 102 102 for(int j=Fragments.RowCounter[ KeySet.OrderSet[BondOrder][i] ];j--;) 103 for(int k=Fragments.ColumnCounter ;k--;)103 for(int k=Fragments.ColumnCounter[ KeySet.OrderSet[BondOrder][i] ];k--;) 104 104 Fragments.Matrix[Fragments.MatrixCounter][j][k] -= Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 105 105 } 106 106 output << BondOrder+1 << "\t" << KeySet.FragmentsPerOrder[BondOrder]; 107 for (int l=0;l<Fragments.ColumnCounter ;l++)107 for (int l=0;l<Fragments.ColumnCounter[Energy.MatrixCounter];l++) 108 108 if (fabs(Energy.Matrix[Energy.MatrixCounter][ Energy.RowCounter[Energy.MatrixCounter]-1 ][l]) < MYEPSILON) 109 109 output << scientific << "\t" << Fragments.Matrix[Fragments.MatrixCounter][ Fragments.RowCounter[Fragments.MatrixCounter]-1 ][l]; … … 133 133 cout << msg << endl; 134 134 output << "# " << msg << ", created on " << datum; 135 output << "# Order\tFrag.No.\t" << Fragments.Header << endl;135 output << "# Order\tFrag.No.\t" << Fragments.Header[Fragments.MatrixCounter] << endl; 136 136 Fragments.SetLastMatrix(0.,0); 137 137 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { … … 139 139 output << BondOrder+1 << "\t" << KeySet.FragmentsPerOrder[BondOrder]; 140 140 CreateForce(Fragments, Fragments.MatrixCounter); 141 for (int l=0;l<Fragments.ColumnCounter ;l++)141 for (int l=0;l<Fragments.ColumnCounter[Fragments.MatrixCounter];l++) 142 142 output << scientific << "\t" << Fragments.Matrix[Fragments.MatrixCounter][ Fragments.RowCounter[Fragments.MatrixCounter] ][l]; 143 143 output << endl; … … 165 165 cout << msg << endl; 166 166 output << "# " << msg << ", created on " << datum; 167 output << "# Order\tFrag.No.\t" << Fragments.Header << endl;167 output << "# Order\tFrag.No.\t" << Fragments.Header[Fragments.MatrixCounter] << endl; 168 168 Fragments.SetLastMatrix(Force.Matrix[Force.MatrixCounter],0); 169 169 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { … … 171 171 output << BondOrder+1 << "\t" << KeySet.FragmentsPerOrder[BondOrder]; 172 172 CreateForce(Fragments, Fragments.MatrixCounter); 173 for (int l=0;l<Fragments.ColumnCounter ;l++)173 for (int l=0;l<Fragments.ColumnCounter[Fragments.MatrixCounter];l++) 174 174 output << scientific << "\t" << Fragments.Matrix[Fragments.MatrixCounter][ Fragments.RowCounter[Fragments.MatrixCounter] ][l]; 175 175 output << endl; … … 198 198 cout << msg << endl; 199 199 output << "# " << msg << ", created on " << datum; 200 output << "# AtomNo\t" << Fragments.Header << endl;200 output << "# AtomNo\t" << Fragments.Header[Fragments.MatrixCounter] << endl; 201 201 Fragments.SetLastMatrix(Force.Matrix[Force.MatrixCounter], 0); 202 202 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { … … 207 207 for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) { 208 208 output << Fragments.Indices[Fragments.MatrixCounter][j] << "\t"; 209 for (int l=0;l<Fragments.ColumnCounter ;l++) {209 for (int l=0;l<Fragments.ColumnCounter[ Fragments.MatrixCounter ];l++) { 210 210 if (((l+1) % 3) == 0) { 211 211 norm = 0.; … … 244 244 cout << msg << endl; 245 245 output << "# " << msg << ", created on " << datum; 246 output << "# AtomNo\t" << Fragments.Header << endl;246 output << "# AtomNo\t" << Fragments.Header[Fragments.MatrixCounter] << endl; 247 247 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 248 248 //cout << "Current order is " << BondOrder << "." << endl; … … 252 252 for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) { 253 253 output << Fragments.Indices[Fragments.MatrixCounter][j] << "\t"; 254 for (int l=0;l<Fragments.ColumnCounter ;l++)254 for (int l=0;l<Fragments.ColumnCounter[ Fragments.MatrixCounter ];l++) 255 255 output << scientific << Fragments.Matrix[Fragments.MatrixCounter][ j ][l] << "\t"; 256 256 output << endl; … … 262 262 }; 263 263 264 265 /** Plot hessian error vs. vs atom vs. order. 266 * \param &Hessian HessianMatrix containing reference values (in MatrixCounter matrix) 267 * \param &Fragments HessianMatrix class containing matrix values 268 * \param KeySet KeySetContainer class holding bond KeySetContainer::Order 269 * \param *prefix prefix in filename (without ending) 270 * \param *msg message to be place in first line as a comment 271 * \param *datum current date and time 272 * \return true if file was written successfully 273 */ 274 bool CreateDataDeltaHessianOrderPerAtom(class HessianMatrix &Hessian, class HessianMatrix &Fragments, class KeySetsContainer &KeySet, char *dir, char *prefix, char *msg, char *datum) 275 { 276 stringstream filename; 277 ofstream output; 278 double norm = 0.; 279 280 filename << prefix << ".dat"; 281 if (!OpenOutputFile(output, dir, filename.str().c_str())) return false; 282 cout << msg << endl; 283 output << "# " << msg << ", created on " << datum; 284 output << "# AtomNo\t" << Fragments.Header[Fragments.MatrixCounter] << endl; 285 Fragments.SetLastMatrix(Hessian.Matrix[Hessian.MatrixCounter], 0); 286 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 287 //cout << "Current order is " << BondOrder << "." << endl; 288 Fragments.SumSubHessians(Fragments, KeySet, BondOrder, -1.); 289 // errors per atom 290 output << endl << "#Order\t" << BondOrder+1 << endl; 291 for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) { 292 output << Fragments.Indices[Fragments.MatrixCounter][j] << "\t"; 293 for (int l=0;l<Fragments.ColumnCounter[ Fragments.MatrixCounter ];l++) { 294 output << scientific << Fragments.Matrix[Fragments.MatrixCounter][ j ][l] << "\t"; 295 } 296 output << endl; 297 } 298 output << endl; 299 } 300 output.close(); 301 return true; 302 }; 303 304 /** Plot hessian error vs. vs atom vs. order in the frobenius norm. 305 * \param &Hessian HessianMatrix containing reference values (in MatrixCounter matrix) 306 * \param &Fragments HessianMatrix class containing matrix values 307 * \param KeySet KeySetContainer class holding bond KeySetContainer::Order 308 * \param *prefix prefix in filename (without ending) 309 * \param *msg message to be place in first line as a comment 310 * \param *datum current date and time 311 * \return true if file was written successfully 312 */ 313 bool CreateDataDeltaFrobeniusOrderPerAtom(class HessianMatrix &Hessian, class HessianMatrix &Fragments, class KeySetsContainer &KeySet, char *dir, char *prefix, char *msg, char *datum) 314 { 315 stringstream filename; 316 ofstream output; 317 double norm = 0; 318 double tmp; 319 320 filename << prefix << ".dat"; 321 if (!OpenOutputFile(output, dir, filename.str().c_str())) return false; 322 cout << msg << endl; 323 output << "# " << msg << ", created on " << datum; 324 output << "# AtomNo\t"; 325 Fragments.SetLastMatrix(Hessian.Matrix[Hessian.MatrixCounter], 0); 326 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 327 output << "Order" << BondOrder+1 << "\t"; 328 } 329 output << endl; 330 output << Fragments.RowCounter[ Fragments.MatrixCounter ] << "\t"; 331 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 332 //cout << "Current order is " << BondOrder << "." << endl; 333 Fragments.SumSubHessians(Fragments, KeySet, BondOrder, -1.); 334 // frobenius norm of errors per atom 335 norm = 0.; 336 for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) { 337 for (int l=0;l<Fragments.ColumnCounter[ Fragments.MatrixCounter ];l++) { 338 tmp = Fragments.Matrix[Fragments.MatrixCounter][ j ][l]; 339 norm += tmp*tmp; 340 } 341 } 342 output << scientific << sqrt(norm)/(Fragments.RowCounter[ Fragments.MatrixCounter ]*Fragments.ColumnCounter[ Fragments.MatrixCounter] ) << "\t"; 343 } 344 output << endl; 345 output.close(); 346 return true; 347 }; 348 349 /** Plot hessian error vs. vs atom vs. order. 350 * \param &Fragments HessianMatrix class containing matrix values 351 * \param KeySet KeySetContainer class holding bond KeySetContainer::Order 352 * \param *prefix prefix in filename (without ending) 353 * \param *msg message to be place in first line as a comment 354 * \param *datum current date and time 355 * \return true if file was written successfully 356 */ 357 bool CreateDataHessianOrderPerAtom(class HessianMatrix &Fragments, class KeySetsContainer &KeySet, char *dir, char *prefix, char *msg, char *datum) 358 { 359 stringstream filename; 360 ofstream output; 361 362 filename << prefix << ".dat"; 363 if (!OpenOutputFile(output, dir, filename.str().c_str())) return false; 364 cout << msg << endl; 365 output << "# " << msg << ", created on " << datum; 366 output << "# AtomNo\t" << Fragments.Header[ Fragments.MatrixCounter ] << endl; 367 Fragments.SetLastMatrix(0., 0); 368 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 369 //cout << "Current order is " << BondOrder << "." << endl; 370 Fragments.SumSubHessians(Fragments, KeySet, BondOrder, 1.); 371 // errors per atom 372 output << endl << "#Order\t" << BondOrder+1 << endl; 373 for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) { 374 output << Fragments.Indices[Fragments.MatrixCounter][j] << "\t"; 375 for (int l=0;l<Fragments.ColumnCounter[ Fragments.MatrixCounter ];l++) 376 output << scientific << Fragments.Matrix[Fragments.MatrixCounter][ j ][l] << "\t"; 377 output << endl; 378 } 379 output << endl; 380 } 381 output.close(); 382 return true; 383 }; 384 264 385 /** Plot matrix vs. fragment. 265 386 */ … … 273 394 cout << msg << endl; 274 395 output << "# " << msg << ", created on " << datum << endl; 275 output << "#Order\tFrag.No.\t" << Fragment.Header << endl;396 output << "#Order\tFrag.No.\t" << Fragment.Header[ Fragment.MatrixCounter ] << endl; 276 397 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 277 398 for(int i=0;i<KeySet.FragmentsPerOrder[BondOrder];i++) { 278 399 output << BondOrder+1 << "\t" << KeySet.OrderSet[BondOrder][i]+1; 279 400 CreateFragment(Fragment, KeySet.OrderSet[BondOrder][i]); 280 for (int l=0;l<Fragment.ColumnCounter ;l++)401 for (int l=0;l<Fragment.ColumnCounter[ KeySet.OrderSet[BondOrder][i] ];l++) 281 402 output << scientific << "\t" << Fragment.Matrix[ KeySet.OrderSet[BondOrder][i] ][ Fragment.RowCounter[ KeySet.OrderSet[BondOrder][i] ] ][l]; 282 403 output << endl; … … 297 418 for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;) { 298 419 if (fabs(Fragments.Matrix[ Fragments.MatrixCounter ][j][1]) < fabs(Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][1])) { 299 for (int k=Fragments.ColumnCounter ;k--;)420 for (int k=Fragments.ColumnCounter[ Fragments.MatrixCounter ];k--;) 300 421 Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 301 422 } … … 314 435 int i=0; 315 436 do { // first get a minimum value unequal to 0 316 for (int k=Fragments.ColumnCounter ;k--;)437 for (int k=Fragments.ColumnCounter[ Fragments.MatrixCounter ];k--;) 317 438 Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 318 439 i++; … … 320 441 for(;i<KeySet.FragmentsPerOrder[BondOrder];i++) { // then find lowest 321 442 if (fabs(Fragments.Matrix[ Fragments.MatrixCounter ][j][1]) > fabs(Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][1])) { 322 for (int k=Fragments.ColumnCounter ;k--;)443 for (int k=Fragments.ColumnCounter[ Fragments.MatrixCounter ];k--;) 323 444 Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 324 445 } … … 338 459 cout << msg << endl; 339 460 output << "# " << msg << ", created on " << datum; 340 output << "#Order\tFrag.No.\t" << Fragment.Header << endl;461 output << "#Order\tFrag.No.\t" << Fragment.Header[ Fragment.MatrixCounter ] << endl; 341 462 // max 342 463 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { … … 344 465 CreateFragmentOrder(Fragment, KeySet, BondOrder); 345 466 output << BondOrder+1 << "\t" << KeySet.FragmentsPerOrder[BondOrder]; 346 for (int l=0;l<Fragment.ColumnCounter ;l++)467 for (int l=0;l<Fragment.ColumnCounter[ Fragment.MatrixCounter ];l++) 347 468 output << scientific << "\t" << Fragment.Matrix[ Fragment.MatrixCounter ][ Fragment.RowCounter[ Fragment.MatrixCounter ]-1 ][l]; 348 469 output << endl; … … 358 479 void CreateEnergy(class MatrixContainer &Energy, int MatrixNumber) 359 480 { 360 for(int k=0;k<Energy.ColumnCounter ;k++)481 for(int k=0;k<Energy.ColumnCounter[MatrixNumber];k++) 361 482 Energy.Matrix[MatrixNumber][ Energy.RowCounter[MatrixNumber] ] [k] = Energy.Matrix[MatrixNumber][ Energy.RowCounter[MatrixNumber]-1 ] [k]; 362 483 }; … … 369 490 void CreateMinimumForce(class MatrixContainer &Force, int MatrixNumber) 370 491 { 371 for (int l=Force.ColumnCounter ;l--;)492 for (int l=Force.ColumnCounter[MatrixNumber];l--;) 372 493 Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.; 373 for (int l=5;l<Force.ColumnCounter ;l+=3) {494 for (int l=5;l<Force.ColumnCounter[MatrixNumber];l+=3) { 374 495 double stored = 0; 375 496 int k=0; … … 404 525 { 405 526 int divisor = 0; 406 for (int l=Force.ColumnCounter ;l--;)527 for (int l=Force.ColumnCounter[MatrixNumber];l--;) 407 528 Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.; 408 for (int l=5;l<Force.ColumnCounter ;l+=3) {529 for (int l=5;l<Force.ColumnCounter[MatrixNumber];l+=3) { 409 530 double tmp = 0; 410 531 for (int k=Force.RowCounter[MatrixNumber];k--;) { … … 428 549 void CreateMaximumForce(class MatrixContainer &Force, int MatrixNumber) 429 550 { 430 for (int l=5;l<Force.ColumnCounter ;l+=3) {551 for (int l=5;l<Force.ColumnCounter[MatrixNumber];l+=3) { 431 552 double stored = 0; 432 553 for (int k=Force.RowCounter[MatrixNumber];k--;) { … … 460 581 void CreateVectorSumForce(class MatrixContainer &Force, int MatrixNumber) 461 582 { 462 for (int l=Force.ColumnCounter ;l--;)583 for (int l=Force.ColumnCounter[MatrixNumber];l--;) 463 584 Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.; 464 for (int l=0;l<Force.ColumnCounter ;l++) {585 for (int l=0;l<Force.ColumnCounter[MatrixNumber];l++) { 465 586 for (int k=Force.RowCounter[MatrixNumber];k--;) 466 587 Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] += Force.Matrix[MatrixNumber][k][l]; … … 538 659 void AbsEnergyPlotLine(ofstream &output, class MatrixContainer &Energy, const char *prefix, const char *xargument, const char *uses) 539 660 { 540 stringstream line(Energy.Header );661 stringstream line(Energy.Header[ Energy.MatrixCounter ]); 541 662 string token; 542 663 543 664 getline(line, token, '\t'); 544 for (int i=2; i<= Energy.ColumnCounter ;i++) {665 for (int i=2; i<= Energy.ColumnCounter[Energy.MatrixCounter];i++) { 545 666 getline(line, token, '\t'); 546 667 while (token[0] == ' ') // remove leading white spaces 547 668 token.erase(0,1); 548 669 output << "'" << prefix << ".dat' title '" << token << "' using " << xargument << ":(abs($" << i+2 << ")) " << uses; 549 if (i != (Energy.ColumnCounter ))670 if (i != (Energy.ColumnCounter[Energy.MatrixCounter])) 550 671 output << ", \\"; 551 672 output << endl; … … 562 683 void EnergyPlotLine(ofstream &output, class MatrixContainer &Energy, const char *prefix, const char *xargument, const char *uses) 563 684 { 564 stringstream line(Energy.Header );685 stringstream line(Energy.Header[Energy.MatrixCounter]); 565 686 string token; 566 687 567 688 getline(line, token, '\t'); 568 for (int i=1; i<= Energy.ColumnCounter ;i++) {689 for (int i=1; i<= Energy.ColumnCounter[Energy.MatrixCounter];i++) { 569 690 getline(line, token, '\t'); 570 691 while (token[0] == ' ') // remove leading white spaces 571 692 token.erase(0,1); 572 693 output << "'" << prefix << ".dat' title '" << token << "' using " << xargument << ":" << i+2 << " " << uses; 573 if (i != (Energy.ColumnCounter ))694 if (i != (Energy.ColumnCounter[Energy.MatrixCounter])) 574 695 output << ", \\"; 575 696 output << endl; … … 586 707 void ForceMagnitudePlotLine(ofstream &output, class MatrixContainer &Force, const char *prefix, const char *xargument, const char *uses) 587 708 { 588 stringstream line(Force.Header );709 stringstream line(Force.Header[Force.MatrixCounter]); 589 710 string token; 590 711 … … 594 715 getline(line, token, '\t'); 595 716 getline(line, token, '\t'); 596 for (int i=7; i< Force.ColumnCounter ;i+=NDIM) {717 for (int i=7; i< Force.ColumnCounter[Force.MatrixCounter];i+=NDIM) { 597 718 getline(line, token, '\t'); 598 719 while (token[0] == ' ') // remove leading white spaces … … 600 721 token.erase(token.length(), 1); // kill residual index char (the '0') 601 722 output << "'" << prefix << ".dat' title '" << token << "' using " << xargument << ":(sqrt($" << i+1 << "*$" << i+1 << "+$" << i+2 << "*$" << i+2 << "+$" << i+3 << "*$" << i+3 << ")) " << uses; 602 if (i != (Force.ColumnCounter -1))723 if (i != (Force.ColumnCounter[Force.MatrixCounter]-1)) 603 724 output << ", \\"; 604 725 output << endl; … … 617 738 void AbsFirstForceValuePlotLine(ofstream &output, class MatrixContainer &Force, const char *prefix, const char *xargument, const char *uses) 618 739 { 619 stringstream line(Force.Header );740 stringstream line(Force.Header[Force.MatrixCounter]); 620 741 string token; 621 742 … … 625 746 getline(line, token, '\t'); 626 747 getline(line, token, '\t'); 627 for (int i=7; i< Force.ColumnCounter ;i+=NDIM) {748 for (int i=7; i< Force.ColumnCounter[Force.MatrixCounter];i+=NDIM) { 628 749 getline(line, token, '\t'); 629 750 while (token[0] == ' ') // remove leading white spaces … … 631 752 token.erase(token.length(), 1); // kill residual index char (the '0') 632 753 output << "'" << prefix << ".dat' title '" << token << "' using " << xargument << ":(abs($" << i+1 << ")) " << uses; 633 if (i != (Force.ColumnCounter -1))754 if (i != (Force.ColumnCounter[Force.MatrixCounter]-1)) 634 755 output << ", \\"; 635 756 output << endl; … … 648 769 void BoxesForcePlotLine(ofstream &output, class MatrixContainer &Force, const char *prefix, const char *xargument, const char *uses) 649 770 { 650 stringstream line(Force.Header );771 stringstream line(Force.Header[Force.MatrixCounter]); 651 772 char *fillcolor[5] = {"black", "red", "blue", "green", "cyan"}; 652 773 string token; … … 657 778 getline(line, token, '\t'); 658 779 getline(line, token, '\t'); 659 for (int i=7; i< Force.ColumnCounter ;i+=NDIM) {780 for (int i=7; i< Force.ColumnCounter[Force.MatrixCounter];i+=NDIM) { 660 781 getline(line, token, '\t'); 661 782 while (token[0] == ' ') // remove leading white spaces … … 663 784 token.erase(token.length(), 1); // kill residual index char (the '0') 664 785 output << "'" << prefix << ".dat' title '" << token << "' using ($" << xargument << "+" << fixed << setprecision(1) << (double)((i-7)/3)*0.2 << "):(sqrt($" << i+1 << "*$" << i+1 << "+$" << i+2 << "*$" << i+2 << "+$" << i+3 << "*$" << i+3 << ")) " << uses << " " << fillcolor[(i-7)/3]; 665 if (i != (Force.ColumnCounter -1))786 if (i != (Force.ColumnCounter[Force.MatrixCounter]-1)) 666 787 output << ", \\"; 667 788 output << endl; … … 680 801 void BoxesFirstForceValuePlotLine(ofstream &output, class MatrixContainer &Force, const char *prefix, const char *xargument, const char *uses) 681 802 { 682 stringstream line(Force.Header );803 stringstream line(Force.Header[Force.MatrixCounter]); 683 804 char *fillcolor[5] = {"black", "red", "blue", "green", "cyan"}; 684 805 string token; … … 689 810 getline(line, token, '\t'); 690 811 getline(line, token, '\t'); 691 for (int i=7; i< Force.ColumnCounter ;i+=NDIM) {812 for (int i=7; i< Force.ColumnCounter[Force.MatrixCounter];i+=NDIM) { 692 813 getline(line, token, '\t'); 693 814 while (token[0] == ' ') // remove leading white spaces … … 695 816 token.erase(token.length(), 1); // kill residual index char (the '0') 696 817 output << "'" << prefix << ".dat' title '" << token << "' using ($" << xargument << "+" << fixed << setprecision(1) << (double)((i-7)/3)*0.2 << "):" << i+1 << " " << uses << " " << fillcolor[(i-7)/3]; 697 if (i != (Force.ColumnCounter -1))818 if (i != (Force.ColumnCounter[Force.MatrixCounter]-1)) 698 819 output << ", \\"; 699 820 output << endl;
Note:
See TracChangeset
for help on using the changeset viewer.
