Changeset 47d041 for src/Fragmentation/HessianMatrix.cpp
- Timestamp:
- Nov 3, 2011, 7:44:01 PM (14 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:
- 41a467
- Parents:
- 50e4e5
- git-author:
- Frederik Heber <heber@…> (10/27/11 11:53:58)
- git-committer:
- Frederik Heber <heber@…> (11/03/11 19:44:01)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/HessianMatrix.cpp
r50e4e5 r47d041 43 43 stringstream line; 44 44 45 DoLog(0) && (Log() << Verbose(0) << "Parsing hessian indices for " << MatrixCounter << " matrices." << endl);45 LOG(0, "Parsing hessian indices for " << MatrixCounter << " matrices."); 46 46 Indices.resize(MatrixCounter + 1); 47 47 line << name << FRAGMENTPREFIX << FORCESFILE; 48 48 input.open(line.str().c_str(), ios::in); 49 //L og() << Verbose(0) << "Opening " << line.str() << " ... " << input << endl;49 //LOG(0, "Opening " << line.str() << " ... " << input); 50 50 if (input.fail()) { 51 DoLog(0) && (Log() << Verbose(0) << endl << "HessianMatrix::ParseIndices: Unable to open " << line.str() << ", is the directory correct?" << endl);51 LOG(0, endl << "HessianMatrix::ParseIndices: Unable to open " << line.str() << ", is the directory correct?"); 52 52 return false; 53 53 } … … 59 59 Indices[i].resize(RowCounter[i]); 60 60 FragmentNumber = FixedDigitNumber(MatrixCounter, i); 61 //Log() << Verbose(0) << FRAGMENTPREFIX << FragmentNumber << "[" << RowCounter[i] << "]:"; 61 //std::stringstream output; 62 //output << FRAGMENTPREFIX << FragmentNumber << "[" << RowCounter[i] << "]:"; 62 63 delete[](FragmentNumber); 63 64 for(int j=0;(j<RowCounter[i]) && (!line.eof());j++) { 64 65 line >> Indices[i][j]; 65 // Log() << Verbose(0)<< " " << Indices[i][j];66 } 67 //L og() << Verbose(0) << endl;66 //output << " " << Indices[i][j]; 67 } 68 //LOG(0, output.str()); 68 69 } 69 70 Indices[MatrixCounter].resize(RowCounter[MatrixCounter]); … … 92 93 int j = Indices[ FragmentNr ][l]; 93 94 if (j > RowCounter[MatrixCounter]) { 94 DoeLog(0) && (eLog()<< Verbose(0) << "Current hessian index " << j << " is greater than " << RowCounter[MatrixCounter] << ", where i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!" << endl);95 ELOG(0, "Current hessian index " << j << " is greater than " << RowCounter[MatrixCounter] << ", where i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!"); 95 96 performCriticalExit(); 96 97 return false; … … 100 101 int k = Indices[ FragmentNr ][m]; 101 102 if (k > ColumnCounter[MatrixCounter]) { 102 DoeLog(0) && (eLog()<< Verbose(0) << "Current hessian index " << k << " is greater than " << ColumnCounter[MatrixCounter] << ", where m=" << m << ", j=" << j << ", i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!" << endl);103 ELOG(0, "Current hessian index " << k << " is greater than " << ColumnCounter[MatrixCounter] << ", where m=" << m << ", j=" << j << ", i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!"); 103 104 performCriticalExit(); 104 105 return false; 105 106 } 106 107 if (k != -1) { 107 //L og() << Verbose(0) << "Adding " << sign*Fragments.Matrix[ FragmentNr ][l][m] << " from [" << l << "][" << m << "] onto [" << j << "][" << k << "]." << endl;108 //LOG(0, "Adding " << sign*Fragments.Matrix[ FragmentNr ][l][m] << " from [" << l << "][" << m << "] onto [" << j << "][" << k << "]."); 108 109 Matrix[MatrixCounter][j][k] += sign*Fragments.Matrix[ FragmentNr ][l][m]; 109 110 } … … 133 134 // go through each order 134 135 for (int CurrentFragment=0;CurrentFragment<KeySets.FragmentsPerOrder[Order];CurrentFragment++) { 135 //L og() << Verbose(0) << "Current Fragment is " << CurrentFragment << "/" << KeySets.OrderSet[Order][CurrentFragment] << "." << endl;136 //LOG(0, "Current Fragment is " << CurrentFragment << "/" << KeySets.OrderSet[Order][CurrentFragment] << "."); 136 137 // then go per order through each suborder and pick together all the terms that contain this fragment 137 138 for(int SubOrder=0;SubOrder<=Order;SubOrder++) { // go through all suborders up to the desired order 138 139 for (int j=0;j<KeySets.FragmentsPerOrder[SubOrder];j++) { // go through all possible fragments of size suborder 139 140 if (KeySets.Contains(KeySets.OrderSet[Order][CurrentFragment], KeySets.OrderSet[SubOrder][j])) { 140 //L og() << Verbose(0) << "Current other fragment is " << j << "/" << KeySets.OrderSet[SubOrder][j] << "." << endl;141 //LOG(0, "Current other fragment is " << j << "/" << KeySets.OrderSet[SubOrder][j] << "."); 141 142 // if the fragment's indices are all in the current fragment 142 143 for(int k=0;k<RowCounter[ KeySets.OrderSet[SubOrder][j] ];k++) { // go through all atoms in this fragment 143 144 int m = MatrixValues.Indices[ KeySets.OrderSet[SubOrder][j] ][k]; 144 //L og() << Verbose(0) << "Current row index is " << k << "/" << m << "." << endl;145 //LOG(0, "Current row index is " << k << "/" << m << "."); 145 146 if (m != -1) { // if it's not an added hydrogen 146 147 for (int l=0;l<RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ];l++) { // look for the corresponding index in the current fragment 147 //L og() << Verbose(0) << "Comparing " << m << " with " << MatrixValues.Indices[ KeySets.OrderSet[Order][CurrentFragment] ][l] << "." << endl;148 //LOG(0, "Comparing " << m << " with " << MatrixValues.Indices[ KeySets.OrderSet[Order][CurrentFragment] ][l] << "."); 148 149 if (m == MatrixValues.Indices[ KeySets.OrderSet[Order][CurrentFragment] ][l]) { 149 150 m = l; … … 151 152 } 152 153 } 153 //L og() << Verbose(0) << "Corresponding row index for " << k << " in CurrentFragment is " << m << "." << endl;154 //LOG(0, "Corresponding row index for " << k << " in CurrentFragment is " << m << "."); 154 155 if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) { 155 DoeLog(0) && (eLog()<< Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment] << " current row index " << m << " is greater than " << RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl);156 ELOG(0, "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment] << " current row index " << m << " is greater than " << RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!"); 156 157 performCriticalExit(); 157 158 return false; … … 160 161 for(int l=0;l<ColumnCounter[ KeySets.OrderSet[SubOrder][j] ];l++) { 161 162 int n = MatrixValues.Indices[ KeySets.OrderSet[SubOrder][j] ][l]; 162 //L og() << Verbose(0) << "Current column index is " << l << "/" << n << "." << endl;163 //LOG(0, "Current column index is " << l << "/" << n << "."); 163 164 if (n != -1) { // if it's not an added hydrogen 164 165 for (int p=0;p<ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ];p++) { // look for the corresponding index in the current fragment 165 //L og() << Verbose(0) << "Comparing " << n << " with " << MatrixValues.Indices[ KeySets.OrderSet[Order][CurrentFragment] ][p] << "." << endl;166 //LOG(0, "Comparing " << n << " with " << MatrixValues.Indices[ KeySets.OrderSet[Order][CurrentFragment] ][p] << "."); 166 167 if (n == MatrixValues.Indices[ KeySets.OrderSet[Order][CurrentFragment] ][p]) { 167 168 n = p; … … 169 170 } 170 171 } 171 //L og() << Verbose(0) << "Corresponding column index for " << l << " in CurrentFragment is " << n << "." << endl;172 //LOG(0, "Corresponding column index for " << l << " in CurrentFragment is " << n << "."); 172 173 if (n > ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) { 173 DoeLog(0) && (eLog()<< Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment] << " current column index " << n << " is greater than " << ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl);174 ELOG(0, "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment] << " current column index " << n << " is greater than " << ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!"); 174 175 performCriticalExit(); 175 176 return false; 176 177 } 177 178 if (Order == SubOrder) { // equal order is always copy from Energies 178 //L og() << Verbose(0) << "Adding " << MatrixValues.Matrix[ KeySets.OrderSet[SubOrder][j] ][k][l] << " from [" << k << "][" << l << "] onto [" << m << "][" << n << "]." << endl;179 //LOG(0, "Adding " << MatrixValues.Matrix[ KeySets.OrderSet[SubOrder][j] ][k][l] << " from [" << k << "][" << l << "] onto [" << m << "][" << n << "]."); 179 180 Matrix[ KeySets.OrderSet[Order][CurrentFragment] ][m][n] += MatrixValues.Matrix[ KeySets.OrderSet[SubOrder][j] ][k][l]; 180 181 } else { 181 //L og() << Verbose(0) << "Subtracting " << Matrix[ KeySets.OrderSet[SubOrder][j] ][k][l] << " from [" << k << "][" << l << "] onto [" << m << "][" << n << "]." << endl;182 //LOG(0, "Subtracting " << Matrix[ KeySets.OrderSet[SubOrder][j] ][k][l] << " from [" << k << "][" << l << "] onto [" << m << "][" << n << "]."); 182 183 Matrix[ KeySets.OrderSet[Order][CurrentFragment] ][m][n] -= Matrix[ KeySets.OrderSet[SubOrder][j] ][k][l]; 183 184 } … … 186 187 } 187 188 //if ((ColumnCounter[ KeySets.OrderSet[SubOrder][j] ]>1) && (RowCounter[0]-1 >= 1)) 188 //L og() << Verbose(0) << "Fragments[ KeySets.OrderSet[" << Order << "][" << CurrentFragment << "]=" << KeySets.OrderSet[Order][CurrentFragment] << " ][" << RowCounter[0]-1 << "][" << 1 << "] = " << Matrix[ KeySets.OrderSet[Order][CurrentFragment] ][RowCounter[0]-1][1] << endl;189 //LOG(0, "Fragments[ KeySets.OrderSet[" << Order << "][" << CurrentFragment << "]=" << KeySets.OrderSet[Order][CurrentFragment] << " ][" << RowCounter[0]-1 << "][" << 1 << "] = " << Matrix[ KeySets.OrderSet[Order][CurrentFragment] ][RowCounter[0]-1][1]); 189 190 } 190 191 } else { 191 //L og() << Verbose(0) << "Fragment " << KeySets.OrderSet[SubOrder][j] << " is not contained in fragment " << KeySets.OrderSet[Order][CurrentFragment] << "." << endl;192 //LOG(0, "Fragment " << KeySets.OrderSet[SubOrder][j] << " is not contained in fragment " << KeySets.OrderSet[Order][CurrentFragment] << "."); 192 193 } 193 194 } 194 195 } 195 //L og() << Verbose(0) << "Final Fragments[ KeySets.OrderSet[" << Order << "][" << CurrentFragment << "]=" << KeySets.OrderSet[Order][CurrentFragment] << " ][" << KeySets.AtomCounter[0]-1 << "][" << 1 << "] = " << Matrix[ KeySets.OrderSet[Order][CurrentFragment] ][KeySets.AtomCounter[0]-1][1] << endl;196 //LOG(0, "Final Fragments[ KeySets.OrderSet[" << Order << "][" << CurrentFragment << "]=" << KeySets.OrderSet[Order][CurrentFragment] << " ][" << KeySets.AtomCounter[0]-1 << "][" << 1 << "] = " << Matrix[ KeySets.OrderSet[Order][CurrentFragment] ][KeySets.AtomCounter[0]-1][1]); 196 197 } 197 198 … … 220 221 input.open(file.str().c_str(), ios::in); 221 222 if (input.fail()) { 222 DoLog(0) && (Log() << Verbose(0) << endl << "HessianMatrix::ParseFragmentMatrix: Unable to open " << file.str() << ", is the directory correct?" << endl);223 LOG(0, endl << "HessianMatrix::ParseFragmentMatrix: Unable to open " << file.str() << ", is the directory correct?"); 223 224 return false; 224 225 } … … 230 231 while (!zeile.eof()) { 231 232 zeile >> nr; 232 //L og() << Verbose(0) << "Current index: " << getNr() << "." << endl;233 //LOG(0, "Current index: " << getNr() << "."); 233 234 if (nr > RowCounter[MatrixCounter]) { 234 235 RowCounter[MatrixCounter] = nr; … … 242 243 243 244 // allocate last plus one matrix 244 DoLog(0) && (Log() << Verbose(0) << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl);245 LOG(0, "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns."); 245 246 if (Matrix[MatrixCounter].size() <= RowCounter[MatrixCounter] + 2) 246 247 Matrix[MatrixCounter].resize(RowCounter[MatrixCounter] + 1);
Note:
See TracChangeset
for help on using the changeset viewer.