Changeset c3a303 for molecuilder/src/joiner.cpp
- Timestamp:
- Jul 24, 2009, 10:38:32 AM (16 years ago)
- Children:
- 53d153
- Parents:
- a048fa (diff), 47548d (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
-
molecuilder/src/joiner.cpp
ra048fa rc3a303 19 19 periodentafel *periode = NULL; // and a period table of all elements 20 20 EnergyMatrix Energy; 21 EnergyMatrix EnergyFragments; 22 21 23 EnergyMatrix Hcorrection; 24 EnergyMatrix HcorrectionFragments; 25 22 26 ForceMatrix Force; 23 EnergyMatrix EnergyFragments;24 EnergyMatrix HcorrectionFragments;25 27 ForceMatrix ForceFragments; 28 29 HessianMatrix Hessian; 30 HessianMatrix HessianFragments; 31 26 32 ForceMatrix Shielding; 27 33 ForceMatrix ShieldingPAS; 28 34 ForceMatrix ShieldingFragments; 29 35 ForceMatrix ShieldingPASFragments; 30 KeySetsContainer KeySet; 36 ForceMatrix Chi; 37 ForceMatrix ChiPAS; 38 ForceMatrix ChiFragments; 39 ForceMatrix ChiPASFragments; 40 KeySetsContainer KeySet; 31 41 stringstream prefix; 32 42 char *dir = NULL; 33 bool Hcorrected = true; 43 bool NoHCorrection = false; 44 bool NoHessian = false; 34 45 35 46 cout << "Joiner" << endl; … … 61 72 // ------------- Parse through all Fragment subdirs -------- 62 73 if (!Energy.ParseFragmentMatrix(argv[1], dir, EnergySuffix, 0,0)) return 1; 63 Hcorrected = Hcorrection.ParseFragmentMatrix(argv[1], "", HCORRECTIONSUFFIX, 0,0); 74 if (!Hcorrection.ParseFragmentMatrix(argv[1], "", HCORRECTIONSUFFIX, 0,0)) { 75 NoHCorrection = true; 76 cout << "No HCorrection matrices found, skipping these." << endl; 77 } 64 78 if (!Force.ParseFragmentMatrix(argv[1], dir, ForcesSuffix, 0,0)) return 1; 79 if (!Hessian.ParseFragmentMatrix(argv[1], dir, HessianSuffix, 0,0)) { 80 NoHessian = true; 81 cout << "No hessian matrices found, skipping these." << endl; 82 } 65 83 if (periode != NULL) { // also look for PAS values 66 84 if (!Shielding.ParseFragmentMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1; 67 85 if (!ShieldingPAS.ParseFragmentMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1; 86 if (!Chi.ParseFragmentMatrix(argv[1], dir, ChiSuffix, 1, 0)) return 1; 87 if (!ChiPAS.ParseFragmentMatrix(argv[1], dir, ChiPASSuffix, 1, 0)) return 1; 68 88 } 69 89 70 90 // ---------- Parse the TE Factors into an array ----------------- 71 if (!Energy.ParseIndices()) return 1; 72 if (Hcorrected) Hcorrection.ParseIndices(); 73 91 if (!Energy.InitialiseIndices()) return 1; 92 if (!NoHCorrection) 93 Hcorrection.InitialiseIndices(); 94 74 95 // ---------- Parse the Force indices into an array --------------- 75 96 if (!Force.ParseIndices(argv[1])) return 1; 76 97 98 // ---------- Parse the Hessian (=force) indices into an array --------------- 99 if (!NoHessian) 100 if (!Hessian.InitialiseIndices((class MatrixContainer *)&Force)) return 1; 101 77 102 // ---------- Parse the shielding indices into an array --------------- 78 103 if (periode != NULL) { // also look for PAS values 79 104 if(!Shielding.ParseIndices(argv[1])) return 1; 80 105 if(!ShieldingPAS.ParseIndices(argv[1])) return 1; 106 if(!Chi.ParseIndices(argv[1])) return 1; 107 if(!ChiPAS.ParseIndices(argv[1])) return 1; 81 108 } 82 109 … … 85 112 86 113 if (!KeySet.ParseManyBodyTerms()) return 1; 114 87 115 if (!EnergyFragments.AllocateMatrix(Energy.Header, Energy.MatrixCounter, Energy.RowCounter, Energy.ColumnCounter)) return 1; 88 if (Hcorrected) HcorrectionFragments.AllocateMatrix(Hcorrection.Header, Hcorrection.MatrixCounter, Hcorrection.RowCounter, Hcorrection.ColumnCounter); 116 if (!NoHCorrection) 117 HcorrectionFragments.AllocateMatrix(Hcorrection.Header, Hcorrection.MatrixCounter, Hcorrection.RowCounter, Hcorrection.ColumnCounter); 89 118 if (!ForceFragments.AllocateMatrix(Force.Header, Force.MatrixCounter, Force.RowCounter, Force.ColumnCounter)) return 1; 119 if (!NoHessian) 120 if (!HessianFragments.AllocateMatrix(Hessian.Header, Hessian.MatrixCounter, Hessian.RowCounter, Hessian.ColumnCounter)) return 1; 90 121 if (periode != NULL) { // also look for PAS values 91 122 if (!ShieldingFragments.AllocateMatrix(Shielding.Header, Shielding.MatrixCounter, Shielding.RowCounter, Shielding.ColumnCounter)) return 1; 92 123 if (!ShieldingPASFragments.AllocateMatrix(ShieldingPAS.Header, ShieldingPAS.MatrixCounter, ShieldingPAS.RowCounter, ShieldingPAS.ColumnCounter)) return 1; 124 if (!ChiFragments.AllocateMatrix(Chi.Header, Chi.MatrixCounter, Chi.RowCounter, Chi.ColumnCounter)) return 1; 125 if (!ChiPASFragments.AllocateMatrix(ChiPAS.Header, ChiPAS.MatrixCounter, ChiPAS.RowCounter, ChiPAS.ColumnCounter)) return 1; 93 126 } 94 127 … … 96 129 if(!Energy.SetLastMatrix(0., 0)) return 1; 97 130 if(!Force.SetLastMatrix(0., 2)) return 1; 131 if (!NoHessian) 132 if (!Hessian.SetLastMatrix(0., 0)) return 1; 98 133 if (periode != NULL) { // also look for PAS values 99 134 if(!Shielding.SetLastMatrix(0., 2)) return 1; 100 135 if(!ShieldingPAS.SetLastMatrix(0., 2)) return 1; 136 if(!Chi.SetLastMatrix(0., 2)) return 1; 137 if(!ChiPAS.SetLastMatrix(0., 2)) return 1; 101 138 } 102 139 … … 108 145 cout << "Summing energy of order " << BondOrder+1 << " ..." << endl; 109 146 if (!EnergyFragments.SumSubManyBodyTerms(Energy, KeySet, BondOrder)) return 1; 110 if ( Hcorrected) {147 if (!NoHCorrection) { 111 148 HcorrectionFragments.SumSubManyBodyTerms(Hcorrection, KeySet, BondOrder); 112 149 if (!Energy.SumSubEnergy(EnergyFragments, &HcorrectionFragments, KeySet, BondOrder, 1.)) return 1; 113 if (Hcorrected)Hcorrection.SumSubEnergy(HcorrectionFragments, NULL, KeySet, BondOrder, 1.);114 } else 150 Hcorrection.SumSubEnergy(HcorrectionFragments, NULL, KeySet, BondOrder, 1.); 151 } else 115 152 if (!Energy.SumSubEnergy(EnergyFragments, NULL, KeySet, BondOrder, 1.)) return 1; 116 153 // --------- sum up Forces -------------------- … … 118 155 if (!ForceFragments.SumSubManyBodyTerms(Force, KeySet, BondOrder)) return 1; 119 156 if (!Force.SumSubForces(ForceFragments, KeySet, BondOrder, 1.)) return 1; 157 // --------- sum up Hessian -------------------- 158 if (!NoHessian) { 159 cout << "Summing Hessian of order " << BondOrder+1 << " ..." << endl; 160 if (!HessianFragments.SumSubManyBodyTerms(Hessian, KeySet, BondOrder)) return 1; 161 if (!Hessian.SumSubHessians(HessianFragments, KeySet, BondOrder, 1.)) return 1; 162 } 120 163 if (periode != NULL) { // also look for PAS values 121 cout << "Summing shieldings of order " << BondOrder+1 << " ..." << endl;164 cout << "Summing shieldings and susceptibilities of order " << BondOrder+1 << " ..." << endl; 122 165 if (!ShieldingFragments.SumSubManyBodyTerms(Shielding, KeySet, BondOrder)) return 1; 123 166 if (!Shielding.SumSubForces(ShieldingFragments, KeySet, BondOrder, 1.)) return 1; 124 167 if (!ShieldingPASFragments.SumSubManyBodyTerms(ShieldingPAS, KeySet, BondOrder)) return 1; 125 168 if (!ShieldingPAS.SumSubForces(ShieldingPASFragments, KeySet, BondOrder, 1.)) return 1; 169 if (!ChiFragments.SumSubManyBodyTerms(Chi, KeySet, BondOrder)) return 1; 170 if (!Chi.SumSubForces(ChiFragments, KeySet, BondOrder, 1.)) return 1; 171 if (!ChiPASFragments.SumSubManyBodyTerms(ChiPAS, KeySet, BondOrder)) return 1; 172 if (!ChiPAS.SumSubForces(ChiPASFragments, KeySet, BondOrder, 1.)) return 1; 126 173 } 127 174 … … 134 181 // forces 135 182 if (!Force.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ForcesSuffix)) return 1; 183 // hessian 184 if (!NoHessian) 185 if (!Hessian.WriteLastMatrix(argv[1], (prefix.str()).c_str(), HessianSuffix)) return 1; 136 186 // shieldings 137 187 if (periode != NULL) { // also look for PAS values 138 188 if (!Shielding.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ShieldingSuffix)) return 1; 139 189 if (!ShieldingPAS.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ShieldingPASSuffix)) return 1; 190 if (!Chi.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ChiSuffix)) return 1; 191 if (!ChiPAS.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ChiPASSuffix)) return 1; 140 192 } 141 193 } … … 144 196 prefix << dir << EnergyFragmentSuffix; 145 197 if (!EnergyFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 146 if ( Hcorrected) {198 if (!NoHCorrection) { 147 199 prefix.str(" "); 148 200 prefix << dir << HcorrectionFragmentSuffix; … … 153 205 if (!ForceFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 154 206 if (!CreateDataFragment(EnergyFragments, KeySet, argv[1], FRAGMENTPREFIX ENERGYPERFRAGMENT, "fragment energy versus the Fragment No", "today", CreateEnergy)) return 1; 207 if (!NoHessian) { 208 prefix.str(" "); 209 prefix << dir << HessianFragmentSuffix; 210 if (!HessianFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 211 } 155 212 if (periode != NULL) { // also look for PAS values 156 213 prefix.str(" "); … … 160 217 prefix << dir << ShieldingPASFragmentSuffix; 161 218 if (!ShieldingPASFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 219 prefix.str(" "); 220 prefix << dir << ChiFragmentSuffix; 221 if (!ChiFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 222 prefix.str(" "); 223 prefix << dir << ChiPASFragmentSuffix; 224 if (!ChiPASFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1; 162 225 } 163 226 164 227 // write last matrices as fragments into central dir (not subdir as above), for analyzer to know index bounds 165 228 if (!Energy.WriteLastMatrix(argv[1], dir, EnergyFragmentSuffix)) return 1; 166 if ( Hcorrected) Hcorrection.WriteLastMatrix(argv[1], dir, HcorrectionFragmentSuffix);229 if (!NoHCorrection) Hcorrection.WriteLastMatrix(argv[1], dir, HcorrectionFragmentSuffix); 167 230 if (!Force.WriteLastMatrix(argv[1], dir, ForceFragmentSuffix)) return 1; 231 if (!NoHessian) 232 if (!Hessian.WriteLastMatrix(argv[1], dir, HessianFragmentSuffix)) return 1; 168 233 if (periode != NULL) { // also look for PAS values 169 234 if (!Shielding.WriteLastMatrix(argv[1], dir, ShieldingFragmentSuffix)) return 1; 170 235 if (!ShieldingPAS.WriteLastMatrix(argv[1], dir, ShieldingPASFragmentSuffix)) return 1; 236 if (!Chi.WriteLastMatrix(argv[1], dir, ChiFragmentSuffix)) return 1; 237 if (!ChiPAS.WriteLastMatrix(argv[1], dir, ChiPASFragmentSuffix)) return 1; 171 238 } 172 239
Note:
See TracChangeset
for help on using the changeset viewer.