Changeset f60d95
- Timestamp:
- Aug 9, 2013, 2:20:36 PM (12 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:
- ff09f3
- Parents:
- 58fcbe5
- git-author:
- Frederik Heber <heber@…> (07/25/13 17:39:27)
- git-committer:
- Frederik Heber <heber@…> (08/09/13 14:20:36)
- Location:
- src/Potentials
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Potentials/PartialNucleiChargeFitter.cpp
r58fcbe5 rf60d95 187 187 "PartialNucleiChargeFitter::PartialNucleiChargeFitter() - not enough or more than calculated sample points."); 188 188 189 #ifndef NDEBUG 190 // write vector as paraview csv file file 191 { 192 size_t N[3]; 193 size_t index = 0; 194 std::ofstream paraview_output("solution.csv"); 195 paraview_output << "x coord,y coord,z coord,scalar" << std::endl; 196 for(N[0]=0; N[0] < total[0]; ++N[0]) { 197 for(N[1]=0; N[1] < total[1]; ++N[1]) { 198 for(N[2]=0; N[2] < total[2]; ++N[2]) { 199 paraview_output 200 << (double)N[0]/(double)total[0] << "," 201 << (double)N[1]/(double)total[1] << "," 202 << (double)N[2]/(double)total[2] << "," 203 << SampledPotential.at(index++) << std::endl; 204 } 205 } 206 } 207 paraview_output.close(); 208 } 209 #endif 189 210 190 211 LOG(1, "INFO: I masked " << masked_points << " points in right-hand-side."); … … 275 296 SampledPotential); 276 297 277 LOG(4, "DEBUG: Solution vector is " << (*PotentialFromCharges) * (*PartialCharges) << ".");298 // LOG(4, "DEBUG: Solution vector is " << (*PotentialFromCharges) * (*PartialCharges) << "."); 278 299 279 300 // calculate residual vector 280 301 VectorContent residuum = (*PotentialFromCharges) * (*PartialCharges) - SampledPotential; 302 303 #ifndef NDEBUG 304 // write solution to file 305 writeMatrix(); 306 307 // write vector as paraview csv file file 308 { 309 size_t N[3]; 310 size_t index = 0; 311 std::ofstream paraview_output("residuum.csv"); 312 paraview_output << "x coord,y coord,z coord,scalar" << std::endl; 313 for(N[0]=0; N[0] < total[0]; ++N[0]) { 314 for(N[1]=0; N[1] < total[1]; ++N[1]) { 315 for(N[2]=0; N[2] < total[2]; ++N[2]) { 316 paraview_output 317 << (double)N[0]/(double)total[0] << "," 318 << (double)N[1]/(double)total[1] << "," 319 << (double)N[2]/(double)total[2] << "," 320 << residuum.at(index++) << std::endl; 321 } 322 } 323 } 324 paraview_output.close(); 325 } 326 #endif 327 328 // calculate L1 and L2 errors 329 double residuum_l1 = 0.; 330 for (size_t i=0; i< residuum.getDimension(); ++i) 331 if (residuum_l1 < residuum[i]) 332 residuum_l1 = residuum[i]; 333 LOG(1, "INFO: L2-Norm of residuum is " << residuum.Norm() << "."); 334 LOG(1, "INFO: L1-Norm of residuum is " << residuum_l1 << "."); 335 281 336 return residuum.Norm(); 337 } 338 339 void PartialNucleiChargeFitter::writeMatrix() 340 { 341 constructMatrix(); 342 343 // write matrix as paraview csv file file 344 size_t N[3]; 345 size_t index=0; 346 std::string filename = std::string("potential.csv"); 347 std::ofstream paraview_output(filename.c_str()); 348 paraview_output << "x coord,y coord,z coord,scalar" << std::endl; 349 for(N[0]=0; N[0] < total[0]; ++N[0]) { 350 for(N[1]=0; N[1] < total[1]; ++N[1]) { 351 for(N[2]=0; N[2] < total[2]; ++N[2]) { 352 double sum = 0.; 353 for (size_t nuclei_index = 0; nuclei_index < positions.size(); ++nuclei_index) { 354 sum+= PotentialFromCharges->at(index, nuclei_index)*PartialCharges->at(nuclei_index); 355 } 356 paraview_output 357 << (double)N[0]/(double)total[0] << "," 358 << (double)N[1]/(double)total[1] << "," 359 << (double)N[2]/(double)total[2] << "," 360 << sum << std::endl; 361 index++; 362 } 363 } 364 } 365 paraview_output.close(); 282 366 } 283 367 -
src/Potentials/PartialNucleiChargeFitter.hpp
r58fcbe5 rf60d95 105 105 charges_t getSolutionAsCharges_t() const; 106 106 107 void writeMatrix(); 108 107 109 private: 108 110 /** Helper function to construct the problem Matrix A.
Note:
See TracChangeset
for help on using the changeset viewer.