Changeset 36ec71 for src/datacreator.cpp
- Timestamp:
- Jul 24, 2009, 10:38:32 AM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- d30402
- Parents:
- 042f82 (diff), 51c910 (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. - git-author:
- Frederik Heber <heber@…> (07/23/09 14:23:32)
- git-committer:
- Frederik Heber <heber@…> (07/24/09 10:38:32)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/datacreator.cpp
r042f82 r36ec71 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.; … … 213 213 norm += Force.Matrix[Force.MatrixCounter][ j ][l+m]*Force.Matrix[Force.MatrixCounter][ j ][l+m]; 214 214 norm = sqrt(norm); 215 } 215 } 216 216 // if (norm < MYEPSILON) 217 217 output << scientific << Fragments.Matrix[Fragments.MatrixCounter][ j ][l] << "\t"; … … 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, const char *dir, const char *prefix, const char *msg, const char *datum) 275 { 276 stringstream filename; 277 ofstream output; 278 279 filename << prefix << ".dat"; 280 if (!OpenOutputFile(output, dir, filename.str().c_str())) return false; 281 cout << msg << endl; 282 output << "# " << msg << ", created on " << datum; 283 output << "# AtomNo\t" << Fragments.Header[Fragments.MatrixCounter] << endl; 284 Fragments.SetLastMatrix(Hessian.Matrix[Hessian.MatrixCounter], 0); 285 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 286 //cout << "Current order is " << BondOrder << "." << endl; 287 Fragments.SumSubHessians(Fragments, KeySet, BondOrder, -1.); 288 // errors per atom 289 output << endl << "#Order\t" << BondOrder+1 << endl; 290 for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) { 291 output << Fragments.Indices[Fragments.MatrixCounter][j] << "\t"; 292 for (int l=0;l<Fragments.ColumnCounter[ Fragments.MatrixCounter ];l++) { 293 output << scientific << Fragments.Matrix[Fragments.MatrixCounter][ j ][l] << "\t"; 294 } 295 output << endl; 296 } 297 output << endl; 298 } 299 output.close(); 300 return true; 301 }; 302 303 /** Plot hessian error vs. vs atom vs. order in the frobenius norm. 304 * \param &Hessian HessianMatrix containing reference values (in MatrixCounter matrix) 305 * \param &Fragments HessianMatrix class containing matrix values 306 * \param KeySet KeySetContainer class holding bond KeySetContainer::Order 307 * \param *prefix prefix in filename (without ending) 308 * \param *msg message to be place in first line as a comment 309 * \param *datum current date and time 310 * \return true if file was written successfully 311 */ 312 bool CreateDataDeltaFrobeniusOrderPerAtom(class HessianMatrix &Hessian, class HessianMatrix &Fragments, class KeySetsContainer &KeySet, const char *dir, const char *prefix, const char *msg, const char *datum) 313 { 314 stringstream filename; 315 ofstream output; 316 double norm = 0; 317 double tmp; 318 319 filename << prefix << ".dat"; 320 if (!OpenOutputFile(output, dir, filename.str().c_str())) return false; 321 cout << msg << endl; 322 output << "# " << msg << ", created on " << datum; 323 output << "# AtomNo\t"; 324 Fragments.SetLastMatrix(Hessian.Matrix[Hessian.MatrixCounter], 0); 325 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 326 output << "Order" << BondOrder+1 << "\t"; 327 } 328 output << endl; 329 output << Fragments.RowCounter[ Fragments.MatrixCounter ] << "\t"; 330 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 331 //cout << "Current order is " << BondOrder << "." << endl; 332 Fragments.SumSubHessians(Fragments, KeySet, BondOrder, -1.); 333 // frobenius norm of errors per atom 334 norm = 0.; 335 for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) { 336 for (int l=0;l<Fragments.ColumnCounter[ Fragments.MatrixCounter ];l++) { 337 tmp = Fragments.Matrix[Fragments.MatrixCounter][ j ][l]; 338 norm += tmp*tmp; 339 } 340 } 341 output << scientific << sqrt(norm)/(Fragments.RowCounter[ Fragments.MatrixCounter ]*Fragments.ColumnCounter[ Fragments.MatrixCounter] ) << "\t"; 342 } 343 output << endl; 344 output.close(); 345 return true; 346 }; 347 348 /** Plot hessian error vs. vs atom vs. order. 349 * \param &Fragments HessianMatrix class containing matrix values 350 * \param KeySet KeySetContainer class holding bond KeySetContainer::Order 351 * \param *prefix prefix in filename (without ending) 352 * \param *msg message to be place in first line as a comment 353 * \param *datum current date and time 354 * \return true if file was written successfully 355 */ 356 bool CreateDataHessianOrderPerAtom(class HessianMatrix &Fragments, class KeySetsContainer &KeySet, const char *dir, const char *prefix, const char *msg, const char *datum) 357 { 358 stringstream filename; 359 ofstream output; 360 361 filename << prefix << ".dat"; 362 if (!OpenOutputFile(output, dir, filename.str().c_str())) return false; 363 cout << msg << endl; 364 output << "# " << msg << ", created on " << datum; 365 output << "# AtomNo\t" << Fragments.Header[ Fragments.MatrixCounter ] << endl; 366 Fragments.SetLastMatrix(0., 0); 367 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 368 //cout << "Current order is " << BondOrder << "." << endl; 369 Fragments.SumSubHessians(Fragments, KeySet, BondOrder, 1.); 370 // errors per atom 371 output << endl << "#Order\t" << BondOrder+1 << endl; 372 for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) { 373 output << Fragments.Indices[Fragments.MatrixCounter][j] << "\t"; 374 for (int l=0;l<Fragments.ColumnCounter[ Fragments.MatrixCounter ];l++) 375 output << scientific << Fragments.Matrix[Fragments.MatrixCounter][ j ][l] << "\t"; 376 output << endl; 377 } 378 output << endl; 379 } 380 output.close(); 381 return true; 382 }; 383 264 384 /** Plot matrix vs. fragment. 265 385 */ … … 273 393 cout << msg << endl; 274 394 output << "# " << msg << ", created on " << datum << endl; 275 output << "#Order\tFrag.No.\t" << Fragment.Header << endl;395 output << "#Order\tFrag.No.\t" << Fragment.Header[ Fragment.MatrixCounter ] << endl; 276 396 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 277 397 for(int i=0;i<KeySet.FragmentsPerOrder[BondOrder];i++) { 278 398 output << BondOrder+1 << "\t" << KeySet.OrderSet[BondOrder][i]+1; 279 399 CreateFragment(Fragment, KeySet.OrderSet[BondOrder][i]); 280 for (int l=0;l<Fragment.ColumnCounter ;l++)400 for (int l=0;l<Fragment.ColumnCounter[ KeySet.OrderSet[BondOrder][i] ];l++) 281 401 output << scientific << "\t" << Fragment.Matrix[ KeySet.OrderSet[BondOrder][i] ][ Fragment.RowCounter[ KeySet.OrderSet[BondOrder][i] ] ][l]; 282 402 output << endl; … … 297 417 for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;) { 298 418 if (fabs(Fragments.Matrix[ Fragments.MatrixCounter ][j][1]) < fabs(Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][1])) { 299 for (int k=Fragments.ColumnCounter ;k--;)419 for (int k=Fragments.ColumnCounter[ Fragments.MatrixCounter ];k--;) 300 420 Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 301 421 } … … 314 434 int i=0; 315 435 do { // first get a minimum value unequal to 0 316 for (int k=Fragments.ColumnCounter ;k--;)436 for (int k=Fragments.ColumnCounter[ Fragments.MatrixCounter ];k--;) 317 437 Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 318 438 i++; … … 320 440 for(;i<KeySet.FragmentsPerOrder[BondOrder];i++) { // then find lowest 321 441 if (fabs(Fragments.Matrix[ Fragments.MatrixCounter ][j][1]) > fabs(Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][1])) { 322 for (int k=Fragments.ColumnCounter ;k--;)442 for (int k=Fragments.ColumnCounter[ Fragments.MatrixCounter ];k--;) 323 443 Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 324 444 } … … 338 458 cout << msg << endl; 339 459 output << "# " << msg << ", created on " << datum; 340 output << "#Order\tFrag.No.\t" << Fragment.Header << endl;460 output << "#Order\tFrag.No.\t" << Fragment.Header[ Fragment.MatrixCounter ] << endl; 341 461 // max 342 462 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { … … 344 464 CreateFragmentOrder(Fragment, KeySet, BondOrder); 345 465 output << BondOrder+1 << "\t" << KeySet.FragmentsPerOrder[BondOrder]; 346 for (int l=0;l<Fragment.ColumnCounter ;l++)466 for (int l=0;l<Fragment.ColumnCounter[ Fragment.MatrixCounter ];l++) 347 467 output << scientific << "\t" << Fragment.Matrix[ Fragment.MatrixCounter ][ Fragment.RowCounter[ Fragment.MatrixCounter ]-1 ][l]; 348 468 output << endl; … … 358 478 void CreateEnergy(class MatrixContainer &Energy, int MatrixNumber) 359 479 { 360 for(int k=0;k<Energy.ColumnCounter ;k++)480 for(int k=0;k<Energy.ColumnCounter[MatrixNumber];k++) 361 481 Energy.Matrix[MatrixNumber][ Energy.RowCounter[MatrixNumber] ] [k] = Energy.Matrix[MatrixNumber][ Energy.RowCounter[MatrixNumber]-1 ] [k]; 362 482 }; … … 369 489 void CreateMinimumForce(class MatrixContainer &Force, int MatrixNumber) 370 490 { 371 for (int l=Force.ColumnCounter ;l--;)491 for (int l=Force.ColumnCounter[MatrixNumber];l--;) 372 492 Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.; 373 for (int l=5;l<Force.ColumnCounter ;l+=3) {493 for (int l=5;l<Force.ColumnCounter[MatrixNumber];l+=3) { 374 494 double stored = 0; 375 495 int k=0; … … 404 524 { 405 525 int divisor = 0; 406 for (int l=Force.ColumnCounter ;l--;)526 for (int l=Force.ColumnCounter[MatrixNumber];l--;) 407 527 Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.; 408 for (int l=5;l<Force.ColumnCounter ;l+=3) {528 for (int l=5;l<Force.ColumnCounter[MatrixNumber];l+=3) { 409 529 double tmp = 0; 410 530 for (int k=Force.RowCounter[MatrixNumber];k--;) { … … 428 548 void CreateMaximumForce(class MatrixContainer &Force, int MatrixNumber) 429 549 { 430 for (int l=5;l<Force.ColumnCounter ;l+=3) {550 for (int l=5;l<Force.ColumnCounter[MatrixNumber];l+=3) { 431 551 double stored = 0; 432 552 for (int k=Force.RowCounter[MatrixNumber];k--;) { … … 460 580 void CreateVectorSumForce(class MatrixContainer &Force, int MatrixNumber) 461 581 { 462 for (int l=Force.ColumnCounter ;l--;)582 for (int l=Force.ColumnCounter[MatrixNumber];l--;) 463 583 Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.; 464 for (int l=0;l<Force.ColumnCounter ;l++) {584 for (int l=0;l<Force.ColumnCounter[MatrixNumber];l++) { 465 585 for (int k=Force.RowCounter[MatrixNumber];k--;) 466 586 Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] += Force.Matrix[MatrixNumber][k][l]; … … 538 658 void AbsEnergyPlotLine(ofstream &output, class MatrixContainer &Energy, const char *prefix, const char *xargument, const char *uses) 539 659 { 540 stringstream line(Energy.Header );660 stringstream line(Energy.Header[ Energy.MatrixCounter ]); 541 661 string token; 542 662 543 663 getline(line, token, '\t'); 544 for (int i=2; i<= Energy.ColumnCounter ;i++) {664 for (int i=2; i<= Energy.ColumnCounter[Energy.MatrixCounter];i++) { 545 665 getline(line, token, '\t'); 546 666 while (token[0] == ' ') // remove leading white spaces 547 667 token.erase(0,1); 548 668 output << "'" << prefix << ".dat' title '" << token << "' using " << xargument << ":(abs($" << i+2 << ")) " << uses; 549 if (i != (Energy.ColumnCounter ))669 if (i != (Energy.ColumnCounter[Energy.MatrixCounter])) 550 670 output << ", \\"; 551 671 output << endl; … … 562 682 void EnergyPlotLine(ofstream &output, class MatrixContainer &Energy, const char *prefix, const char *xargument, const char *uses) 563 683 { 564 stringstream line(Energy.Header );684 stringstream line(Energy.Header[Energy.MatrixCounter]); 565 685 string token; 566 686 567 687 getline(line, token, '\t'); 568 for (int i=1; i<= Energy.ColumnCounter ;i++) {688 for (int i=1; i<= Energy.ColumnCounter[Energy.MatrixCounter];i++) { 569 689 getline(line, token, '\t'); 570 690 while (token[0] == ' ') // remove leading white spaces 571 691 token.erase(0,1); 572 692 output << "'" << prefix << ".dat' title '" << token << "' using " << xargument << ":" << i+2 << " " << uses; 573 if (i != (Energy.ColumnCounter ))693 if (i != (Energy.ColumnCounter[Energy.MatrixCounter])) 574 694 output << ", \\"; 575 695 output << endl; … … 586 706 void ForceMagnitudePlotLine(ofstream &output, class MatrixContainer &Force, const char *prefix, const char *xargument, const char *uses) 587 707 { 588 stringstream line(Force.Header );708 stringstream line(Force.Header[Force.MatrixCounter]); 589 709 string token; 590 710 … … 594 714 getline(line, token, '\t'); 595 715 getline(line, token, '\t'); 596 for (int i=7; i< Force.ColumnCounter ;i+=NDIM) {716 for (int i=7; i< Force.ColumnCounter[Force.MatrixCounter];i+=NDIM) { 597 717 getline(line, token, '\t'); 598 718 while (token[0] == ' ') // remove leading white spaces … … 600 720 token.erase(token.length(), 1); // kill residual index char (the '0') 601 721 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))722 if (i != (Force.ColumnCounter[Force.MatrixCounter]-1)) 603 723 output << ", \\"; 604 724 output << endl; … … 617 737 void AbsFirstForceValuePlotLine(ofstream &output, class MatrixContainer &Force, const char *prefix, const char *xargument, const char *uses) 618 738 { 619 stringstream line(Force.Header );739 stringstream line(Force.Header[Force.MatrixCounter]); 620 740 string token; 621 741 … … 625 745 getline(line, token, '\t'); 626 746 getline(line, token, '\t'); 627 for (int i=7; i< Force.ColumnCounter ;i+=NDIM) {747 for (int i=7; i< Force.ColumnCounter[Force.MatrixCounter];i+=NDIM) { 628 748 getline(line, token, '\t'); 629 749 while (token[0] == ' ') // remove leading white spaces … … 631 751 token.erase(token.length(), 1); // kill residual index char (the '0') 632 752 output << "'" << prefix << ".dat' title '" << token << "' using " << xargument << ":(abs($" << i+1 << ")) " << uses; 633 if (i != (Force.ColumnCounter -1))753 if (i != (Force.ColumnCounter[Force.MatrixCounter]-1)) 634 754 output << ", \\"; 635 755 output << endl; … … 648 768 void BoxesForcePlotLine(ofstream &output, class MatrixContainer &Force, const char *prefix, const char *xargument, const char *uses) 649 769 { 650 stringstream line(Force.Header );651 c onst char *fillcolor[5] = {"black", "red", "blue", "green", "cyan"};770 stringstream line(Force.Header[Force.MatrixCounter]); 771 char *fillcolor[5] = {"black", "red", "blue", "green", "cyan"}; 652 772 string token; 653 773 … … 657 777 getline(line, token, '\t'); 658 778 getline(line, token, '\t'); 659 for (int i=7; i< Force.ColumnCounter ;i+=NDIM) {779 for (int i=7; i< Force.ColumnCounter[Force.MatrixCounter];i+=NDIM) { 660 780 getline(line, token, '\t'); 661 781 while (token[0] == ' ') // remove leading white spaces … … 663 783 token.erase(token.length(), 1); // kill residual index char (the '0') 664 784 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))785 if (i != (Force.ColumnCounter[Force.MatrixCounter]-1)) 666 786 output << ", \\"; 667 787 output << endl; … … 680 800 void BoxesFirstForceValuePlotLine(ofstream &output, class MatrixContainer &Force, const char *prefix, const char *xargument, const char *uses) 681 801 { 682 stringstream line(Force.Header );683 c onst char *fillcolor[5] = {"black", "red", "blue", "green", "cyan"};802 stringstream line(Force.Header[Force.MatrixCounter]); 803 char *fillcolor[5] = {"black", "red", "blue", "green", "cyan"}; 684 804 string token; 685 805 … … 689 809 getline(line, token, '\t'); 690 810 getline(line, token, '\t'); 691 for (int i=7; i< Force.ColumnCounter ;i+=NDIM) {811 for (int i=7; i< Force.ColumnCounter[Force.MatrixCounter];i+=NDIM) { 692 812 getline(line, token, '\t'); 693 813 while (token[0] == ' ') // remove leading white spaces … … 695 815 token.erase(token.length(), 1); // kill residual index char (the '0') 696 816 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))817 if (i != (Force.ColumnCounter[Force.MatrixCounter]-1)) 698 818 output << ", \\"; 699 819 output << endl;
Note:
See TracChangeset
for help on using the changeset viewer.