Changeset e6971b for molecuilder/src


Ignore:
Timestamp:
Aug 18, 2008, 8:35:40 AM (17 years ago)
Author:
Frederik Heber <heber@…>
Children:
644ba1
Parents:
7b67a3
Message:

analyzer has been adapted to the aforementioned change in the calling scheme.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/analyzer.cpp

    r7b67a3 re6971b  
    2929  ForceMatrix Shielding;
    3030  ForceMatrix ShieldingPAS;
    31   MatrixContainer Time;
     31  EnergyMatrix Time;
    3232  EnergyMatrix EnergyFragments;
    3333  EnergyMatrix HcorrectionFragments;
     
    5151  bool Hcorrected = true;
    5252  double norm;
     53  int counter;
    5354 
    5455  cout << "ANOVA Analyzer" << endl;
     
    8283 
    8384  // ------------- Parse through all Fragment subdirs --------
    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;
     85  if (!Energy.ParseFragmentMatrix(argv[1], dir, EnergySuffix,0,0)) return 1;
     86  Hcorrected = Hcorrection.ParseFragmentMatrix(argv[1], "", HCORRECTIONSUFFIX,0,0);
     87  if (!Force.ParseFragmentMatrix(argv[1], dir, ForcesSuffix,0,0)) return 1;
     88  if (!Time.ParseFragmentMatrix(argv[1], dir, TimeSuffix, 10,1)) return 1;
    8889  if (periode != NULL) { // also look for PAS values
    89     if (!Shielding.ParseMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1;
    90     if (!ShieldingPAS.ParseMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1;
     90    if (!Shielding.ParseFragmentMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1;
     91    if (!ShieldingPAS.ParseFragmentMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1;
    9192  }
    9293
     
    111112 
    112113  // ---------- Parse fragment files created by 'joiner' into an array -------------
    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;
     114  if (!EnergyFragments.ParseFragmentMatrix(argv[1], dir, EnergyFragmentSuffix,0,0)) return 1;
     115  if (Hcorrected) HcorrectionFragments.ParseFragmentMatrix(argv[1], dir, HcorrectionFragmentSuffix,0,0);
     116  if (!ForceFragments.ParseFragmentMatrix(argv[1], dir, ForceFragmentSuffix,0,0)) return 1;
    116117  if (periode != NULL) { // also look for PAS values
    117     if (!ShieldingFragments.ParseMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1;
    118     if (!ShieldingPASFragments.ParseMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1;
     118    if (!ShieldingFragments.ParseFragmentMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1;
     119    if (!ShieldingPASFragments.ParseFragmentMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1;
    119120  }
    120121
     
    160161 
    161162  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         }
    169163  for(int j=0;j<Time.RowCounter[Time.MatrixCounter];j++) {
    170     for(int k=0;k<Time.ColumnCounter;k++)
     164    for(int k=0;k<Time.ColumnCounter;k++) {
    171165      output << scientific << Time.Matrix[ Time.MatrixCounter ][j][k] << "\t";
     166    }
    172167    output << endl;
    173168  }
    174169  output << endl;
    175170  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];
    176173
    177174  // +++++++++++++++ ANALYZING ++++++++++++++++++++++++++++++
     
    182179
    183180  // +++++++++++++++++++++++++++++++++++++++ Plotting Simtime vs Bond Order
     181  // +++++++++++++++++++++++++++++++++++++++ Plotting Delta Simtime vs Bond Order
    184182  if (!OpenOutputFile(output, argv[3], "SimTime-Order.dat" )) return false;
    185   Time.SetLastMatrix(0., 0);
     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;
    186189  output << "#Order\tFrag.No.\t" << Time.Header << endl;
     190  output2 << "#Order\tFrag.No.\t" << Time.Header << endl;
    187191  for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) {
    188192    for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;)
     
    191195          Time.Matrix[ Time.MatrixCounter ][j][k] += Time.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k];
    192196        }
    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;
     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;
    197209  }
    198210  output.close();
     211  output2.close();
     212
    199213
    200214  // +++++++++++++++++++++++++++++++++++++++ Plotting deviation in energy to full QM
Note: See TracChangeset for help on using the changeset viewer.