Changeset 375dcf for molecuilder/src/joiner.cpp
- Timestamp:
- Jun 27, 2008, 9:14:58 PM (17 years ago)
- Children:
- 74baec
- Parents:
- d7b1bf
- git-author:
- Frederik Heber <heber@…> (06/27/08 21:12:52)
- git-committer:
- Frederik Heber <heber@…> (06/27/08 21:14:58)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/joiner.cpp
rd7b1bf r375dcf 11 11 #include "helpers.hpp" 12 12 #include "parser.hpp" 13 #include "periodentafel.hpp" 13 14 14 15 //============================== MAIN ============================= … … 16 17 int main(int argc, char **argv) 17 18 { 19 periodentafel *periode = NULL; // and a period table of all elements 18 20 EnergyMatrix Energy; 19 21 ForceMatrix Force; 20 22 EnergyMatrix EnergyFragments; 21 23 ForceMatrix ForceFragments; 24 ForceMatrix Shielding; 25 ForceMatrix ShieldingPAS; 26 ForceMatrix ShieldingFragments; 27 ForceMatrix ShieldingPASFragments; 22 28 KeySetsContainer KeySet; 23 29 stringstream prefix; … … 28 34 // Get the command line options 29 35 if (argc < 3) { 30 cout << "Usage: " << argv[0] << " <inputdir> <prefix> " << endl;36 cout << "Usage: " << argv[0] << " <inputdir> <prefix> [elementsdb]" << endl; 31 37 cout << "<inputdir>\ttherein the output of a molecuilder fragmentation is expected, each fragment with a subdir containing an energy.all and a forces.all file." << endl; 32 38 cout << "<prefix>\tprefix of energy and forces file." << endl; 39 cout << "[elementsdb]\tpath to elements database, needed for shieldings." << endl; 33 40 return 1; 41 } 42 if (argc > 3) { 43 periode = new periodentafel; 44 periode->LoadPeriodentafel(argv[3]); 34 45 } 35 46 … … 42 53 // ------------- Parse through all Fragment subdirs -------- 43 54 if (!Energy.ParseMatrix(argv[1], argv[2], EnergySuffix, 0,0)) return 1; 44 //if (!ParseSubEnergies(argv[1], argv[2], EnergySuffix, data.EnergyHeader, data.Energies, data.EnergyIndices, data.LevelCounter, data.ColumnCounter, data.FragmentCounter)) return 1;45 55 if (!Force.ParseMatrix(argv[1], argv[2], ForcesSuffix, 0,0)) return 1; 46 //if (!ParseSubForces(argv[1], argv[2], ForcesSuffix, data.ForcesHeader, data.Forces, data.AtomCounter, data.Column2Counter, data.FragmentCounter)) return 1; 56 if (periode != NULL) { // also look for PAS values 57 if (!Shielding.ParseMatrix(argv[1], argv[2], ShieldingSuffix, 1, 0)) return 1; 58 if (!ShieldingPAS.ParseMatrix(argv[1], argv[2], ShieldingPASSuffix, 1, 0)) return 1; 59 } 47 60 48 61 // ---------- Parse the TE Factors into an array ----------------- … … 51 64 // ---------- Parse the Force indices into an array --------------- 52 65 if (!Force.ParseIndices(argv[1])) return 1; 53 //if (!ParseForceIndices(argv[1], data.ForcesIndices, data.AtomCounter, data.FragmentCounter)) return 1; 66 67 // ---------- Parse the shielding indices into an array --------------- 68 if (periode != NULL) { // also look for PAS values 69 if(!Shielding.ParseIndices(argv[1])) return 1; 70 if(!ShieldingPAS.ParseIndices(argv[1])) return 1; 71 } 54 72 55 73 // ---------- Parse the KeySets into an array --------------- 56 74 if (!KeySet.ParseKeySets(argv[1], Force.RowCounter, Force.MatrixCounter)) return 1; 57 //if (!ParseKeySets(argv[1], data.KeySets, data.AtomCounter, data.FragmentCounter)) return 1;58 75 59 76 if (!KeySet.ParseManyBodyTerms()) return 1; 60 //if (!ParseManyBodyTerms(data.Order, data.OrderSet, data.FragmentsPerOrder, data.KeySets, data.AtomCounter, data.FragmentCounter)) return 1;61 77 if (!EnergyFragments.AllocateMatrix(Energy.Header, Energy.MatrixCounter, Energy.RowCounter, Energy.ColumnCounter)) return 1; 62 //if (!ParseSubEnergies(argv[1], argv[2], EnergyFragmentSuffix, data.EnergyHeader, data.EnergyFragments, data.EnergyFragmentIndices, data.LevelFragmentCounter, data.ColumnFragmentCounter, data.FragmentCounter)) return 1;63 78 if (!ForceFragments.AllocateMatrix(Force.Header, Force.MatrixCounter, Force.RowCounter, Force.ColumnCounter)) return 1; 64 //if (!ParseSubForces(argv[1], argv[2], ForceFragmentSuffix, data.ForcesHeader, data.ForceFragments, data.AtomCounter, data.Column2Counter, data.FragmentCounter)) return 1; 79 if (periode != NULL) { // also look for PAS values 80 if (!ShieldingFragments.AllocateMatrix(Shielding.Header, Shielding.MatrixCounter, Shielding.RowCounter, Shielding.ColumnCounter)) return 1; 81 if (!ShieldingPASFragments.AllocateMatrix(ShieldingPAS.Header, ShieldingPAS.MatrixCounter, ShieldingPAS.RowCounter, ShieldingPAS.ColumnCounter)) return 1; 82 } 65 83 66 84 // ----------- Resetting last matrices (where full QM values are stored right now) 67 85 if(!Energy.SetLastMatrix(0., 0)) return 1; 68 86 if(!Force.SetLastMatrix(0., 2)) return 1; 69 87 if (periode != NULL) { // also look for PAS values 88 if(!Shielding.SetLastMatrix(0., 0)) return 1; 89 if(!ShieldingPAS.SetLastMatrix(0., 2)) return 1; 90 } 91 70 92 // +++++++++++++++++ SUMMING +++++++++++++++++++++++++++++++ 71 93 … … 80 102 if (!ForceFragments.SumSubManyBodyTerms(Force, KeySet, BondOrder)) return 1; 81 103 if (!Force.SumSubForces(ForceFragments, KeySet, BondOrder)) return 1; 104 if (periode != NULL) { // also look for PAS values 105 cout << "Summing shieldings of order " << BondOrder+1 << " ..." << endl; 106 if (!ShieldingFragments.SumSubManyBodyTerms(Shielding, KeySet, BondOrder)) return 1; 107 if (!Shielding.SumSubForces(ShieldingFragments, KeySet, BondOrder)) return 1; 108 if (!ShieldingPASFragments.SumSubManyBodyTerms(ShieldingPAS, KeySet, BondOrder)) return 1; 109 if (!ShieldingPAS.SumSubForces(ShieldingPASFragments, KeySet, BondOrder)) return 1; 110 } 82 111 83 112 // --------- write the energy and forces file -------------------- … … 89 118 // forces 90 119 if (!Force.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ForcesSuffix)) return 1; 120 // shieldings 121 if (periode != NULL) { // also look for PAS values 122 if (!Shielding.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ShieldingSuffix)) return 1; 123 if (!ShieldingPAS.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ShieldingPASSuffix)) return 1; 124 } 91 125 } 92 126 // fragments … … 98 132 if (!ForceFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 99 133 if (!CreateDataFragment(EnergyFragments, KeySet, argv[1], FRAGMENTPREFIX ENERGYPERFRAGMENT, "fragment energy versus the Fragment No", "today", CreateEnergy)) return 1; 134 if (periode != NULL) { // also look for PAS values 135 prefix.str(" "); 136 prefix << argv[2] << ShieldingFragmentSuffix; 137 if (!ShieldingFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 138 prefix.str(" "); 139 prefix << argv[2] << ShieldingPASFragmentSuffix; 140 if (!ShieldingPASFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 141 } 100 142 101 143 // write last matrices as fragments into central dir (not subdir as above), for analyzer to know index bounds 102 144 if (!Energy.WriteLastMatrix(argv[1], argv[2], EnergyFragmentSuffix)) return 1; 103 145 if (!Force.WriteLastMatrix(argv[1], argv[2], ForceFragmentSuffix)) return 1; 146 if (periode != NULL) { // also look for PAS values 147 if (!Shielding.WriteLastMatrix(argv[1], argv[2], ShieldingFragmentSuffix)) return 1; 148 if (!ShieldingPAS.WriteLastMatrix(argv[1], argv[2], ShieldingPASFragmentSuffix)) return 1; 149 } 104 150 105 151 // exit 152 delete(periode); 106 153 cout << "done." << endl; 107 154 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.