Changeset 7b67a3 for molecuilder/src/analyzer.cpp
- Timestamp:
- Aug 18, 2008, 8:35:11 AM (17 years ago)
- Children:
- e6971b
- Parents:
- d24e8f0
- File:
-
- 1 edited
-
molecuilder/src/analyzer.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/analyzer.cpp
rd24e8f0 r7b67a3 29 29 ForceMatrix Shielding; 30 30 ForceMatrix ShieldingPAS; 31 EnergyMatrixTime;31 MatrixContainer Time; 32 32 EnergyMatrix EnergyFragments; 33 33 EnergyMatrix HcorrectionFragments; … … 51 51 bool Hcorrected = true; 52 52 double norm; 53 int counter;54 53 55 54 cout << "ANOVA Analyzer" << endl; … … 83 82 84 83 // ------------- Parse through all Fragment subdirs -------- 85 if (!Energy.Parse FragmentMatrix(argv[1], dir, EnergySuffix,0,0)) return 1;86 Hcorrected = Hcorrection.Parse FragmentMatrix(argv[1], "", HCORRECTIONSUFFIX,0,0);87 if (!Force.Parse FragmentMatrix(argv[1], dir, ForcesSuffix,0,0)) return 1;88 if (!Time.Parse FragmentMatrix(argv[1], dir, TimeSuffix, 10,1)) return 1;84 if (!Energy.ParseMatrix(argv[1], dir, EnergySuffix,0,0)) return 1; 85 Hcorrected = Hcorrection.ParseMatrix(argv[1], "", HCORRECTIONSUFFIX,0,0); 86 if (!Force.ParseMatrix(argv[1], dir, ForcesSuffix,0,0)) return 1; 87 if (!Time.ParseMatrix(argv[1], dir, TimeSuffix, 10,1)) return 1; 89 88 if (periode != NULL) { // also look for PAS values 90 if (!Shielding.Parse FragmentMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1;91 if (!ShieldingPAS.Parse FragmentMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1;89 if (!Shielding.ParseMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1; 90 if (!ShieldingPAS.ParseMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1; 92 91 } 93 92 … … 112 111 113 112 // ---------- Parse fragment files created by 'joiner' into an array ------------- 114 if (!EnergyFragments.Parse FragmentMatrix(argv[1], dir, EnergyFragmentSuffix,0,0)) return 1;115 if (Hcorrected) HcorrectionFragments.Parse FragmentMatrix(argv[1], dir, HcorrectionFragmentSuffix,0,0);116 if (!ForceFragments.Parse FragmentMatrix(argv[1], dir, ForceFragmentSuffix,0,0)) return 1;113 if (!EnergyFragments.ParseMatrix(argv[1], dir, EnergyFragmentSuffix,0,0)) return 1; 114 if (Hcorrected) HcorrectionFragments.ParseMatrix(argv[1], dir, HcorrectionFragmentSuffix,0,0); 115 if (!ForceFragments.ParseMatrix(argv[1], dir, ForceFragmentSuffix,0,0)) return 1; 117 116 if (periode != NULL) { // also look for PAS values 118 if (!ShieldingFragments.Parse FragmentMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1;119 if (!ShieldingPASFragments.Parse FragmentMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1;117 if (!ShieldingFragments.ParseMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1; 118 if (!ShieldingPASFragments.ParseMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1; 120 119 } 121 120 … … 161 160 162 161 output << endl << "Total Times" << endl << "===============" << endl << Time.Header << endl; 162 Time.SetLastMatrix(0., 0); 163 for (int BondOrder=KeySet.Order;BondOrder--;) 164 for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;) 165 for(int j=Time.RowCounter[Time.MatrixCounter];j--;) 166 for(int k=Time.ColumnCounter;k--;) { 167 Time.Matrix[ Time.MatrixCounter ][j][k] += Time.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 168 } 163 169 for(int j=0;j<Time.RowCounter[Time.MatrixCounter];j++) { 164 for(int k=0;k<Time.ColumnCounter;k++) {170 for(int k=0;k<Time.ColumnCounter;k++) 165 171 output << scientific << Time.Matrix[ Time.MatrixCounter ][j][k] << "\t"; 166 }167 172 output << endl; 168 173 } 169 174 output << endl; 170 175 output.close(); 171 for(int k=0;k<Time.ColumnCounter;k++)172 Time.Matrix[ Time.MatrixCounter ][ Time.RowCounter[Time.MatrixCounter] ][k] = Time.Matrix[ Time.MatrixCounter ][Time.RowCounter[Time.MatrixCounter]-1][k];173 176 174 177 // +++++++++++++++ ANALYZING ++++++++++++++++++++++++++++++ … … 179 182 180 183 // +++++++++++++++++++++++++++++++++++++++ Plotting Simtime vs Bond Order 181 // +++++++++++++++++++++++++++++++++++++++ Plotting Delta Simtime vs Bond Order182 184 if (!OpenOutputFile(output, argv[3], "SimTime-Order.dat" )) return false; 183 if (!OpenOutputFile(output2, argv[3], "DeltaSimTime-Order.dat" )) return false; 184 for(int j=Time.RowCounter[Time.MatrixCounter];j--;) 185 for(int k=Time.ColumnCounter;k--;) { 186 Time.Matrix[ Time.MatrixCounter ][j][k] = 0.; 187 } 188 counter = 0; 185 Time.SetLastMatrix(0., 0); 189 186 output << "#Order\tFrag.No.\t" << Time.Header << endl; 190 output2 << "#Order\tFrag.No.\t" << Time.Header << endl;191 187 for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) { 192 188 for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;) … … 195 191 Time.Matrix[ Time.MatrixCounter ][j][k] += Time.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k]; 196 192 } 197 counter += KeySet.FragmentsPerOrder[BondOrder]; 198 output << BondOrder+1 << "\t" << counter; 199 output2 << BondOrder+1 << "\t" << counter; 200 for(int k=0;k<Time.ColumnCounter;k++) { 201 output << "\t" << scientific << Time.Matrix[ Time.MatrixCounter ][ Time.RowCounter[Time.MatrixCounter]-1 ][k]; 202 if (fabs(Time.Matrix[ Time.MatrixCounter ][ Time.RowCounter[Time.MatrixCounter] ][k]) > MYEPSILON) 203 output2 << "\t" << scientific << Time.Matrix[ Time.MatrixCounter ][ Time.RowCounter[Time.MatrixCounter]-1 ][k] / Time.Matrix[ Time.MatrixCounter ][ Time.RowCounter[Time.MatrixCounter] ][k]; 204 else 205 output2 << "\t" << scientific << Time.Matrix[ Time.MatrixCounter ][ Time.RowCounter[Time.MatrixCounter]-1 ][k]; 206 } 207 output << endl; 208 output2 << endl; 193 output << BondOrder+1 << "\t" << KeySet.FragmentsPerOrder[BondOrder]; 194 for(int k=0;k<Time.ColumnCounter;k++) 195 output << "\t" << scientific << Time.Matrix[ Time.MatrixCounter ][1][k]; 196 output << endl; 209 197 } 210 198 output.close(); 211 output2.close();212 213 199 214 200 // +++++++++++++++++++++++++++++++++++++++ Plotting deviation in energy to full QM
Note:
See TracChangeset
for help on using the changeset viewer.
