- Timestamp:
- Oct 13, 2015, 8:14:33 PM (9 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:
- 62d092
- Parents:
- 445ce6
- git-author:
- Frederik Heber <heber@…> (09/07/15 19:03:37)
- git-committer:
- Frederik Heber <heber@…> (10/13/15 20:14:33)
- Location:
- src/Jobs
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Jobs/InterfaceVMGJob.cpp
r445ce6 r17e4fd 59 59 #include "Fragmentation/Summation/SetValues/FragmentForces.hpp" 60 60 #include "Jobs/WindowGrid_converter.hpp" 61 #include "Jobs/ChargeSmearer.hpp" 61 62 62 63 using namespace VMG; … … 75 76 const ImportParticles_t _ImportParticles, 76 77 const bool _DoPrintDebug, 78 const bool _DoSmearCharges, 77 79 int coarseningSteps, 78 80 double alpha) : 79 81 VMG::Interface(boundary, levelMin, levelMax, 80 82 _box_begin, _box_end, coarseningSteps, alpha), 81 spl(near_field_cells, Extent(MaxLevel()).MeshWidth().Max()), 83 nfc(near_field_cells), 84 meshwidth(Extent(MaxLevel()).MeshWidth().Max()), 85 spl(nfc, meshwidth), 82 86 sampled_input(_sampled_input), 83 87 returndata(_returndata), … … 85 89 ImportParticles(_ImportParticles), 86 90 DoPrintDebug(_DoPrintDebug), 87 OpenBoundaryCondition(boundary[0] == VMG::Open) 91 OpenBoundaryCondition(boundary[0] == VMG::Open), 92 DoSmearCharges(_DoSmearCharges) 88 93 { 89 94 for (size_t i=0;i<3;++i) { … … 159 164 160 165 // add sampled electron charge density onto grid 166 if (DoSmearCharges) { 167 ChargeSmearer &smearer = ChargeSmearer::getInstance(); 168 smearer.initializeSplineArray(spl, nfc, meshwidth); 169 } 161 170 WindowGrid_converter::addWindowOntoGrid( 162 171 grid, 163 172 sampled_input, 164 173 1., 165 OpenBoundaryCondition); 174 OpenBoundaryCondition, 175 DoSmearCharges); 166 176 167 177 if (DoPrintDebug) { -
src/Jobs/InterfaceVMGJob.hpp
r445ce6 r17e4fd 53 53 const ImportParticles_t _ImportParticles=DoImportParticles, 54 54 const bool _DoPrintDebug=false, 55 const bool _DoSmearCharges=false, 55 56 int coarseningSteps=9, 56 57 double alpha=1.6 … … 63 64 64 65 protected: 66 unsigned int nfc; 67 const double meshwidth; 65 68 VMG::Particle::BSpline spl; 66 69 … … 88 91 //!> open boundary conditions or not 89 92 const bool OpenBoundaryCondition; 93 94 //!> whether to smear out electronic charge distributions with bsplines or not 95 const bool DoSmearCharges; 90 96 }; 91 97 -
src/Jobs/VMGJob.cpp
r445ce6 r17e4fd 92 92 const bool _DoImportParticles, 93 93 const bool _DoPrintDebug, 94 const bool _OpenBoundaryConditions) : 94 const bool _OpenBoundaryConditions, 95 const bool _DoSmearCharges) : 95 96 FragmentJob(_JobId), 96 97 density_grid(_density_grid), … … 102 103 DoPrintDebug(_DoPrintDebug), 103 104 OpenBoundaryConditions(_OpenBoundaryConditions), 105 DoSmearCharges(_DoSmearCharges), 104 106 returndata(static_cast<const SamplingGridProperties &>(_density_grid)), 105 107 particles() … … 113 115 DoPrintDebug(false), 114 116 OpenBoundaryConditions(false), 117 DoSmearCharges(false), 115 118 particles() 116 119 {} … … 246 249 VMGInterfaces::InterfaceVMGJob::DoImportParticles 247 250 : VMGInterfaces::InterfaceVMGJob::DontImportParticles, 248 DoPrintDebug); 251 DoPrintDebug, 252 DoSmearCharges); 249 253 const int cycle_type = 1; // V-type 250 254 if (OpenBoundaryConditions) { -
src/Jobs/VMGJob.hpp
r445ce6 r17e4fd 44 44 * @param _DoImportParticles whether we import particles (true) or evaluate only 45 45 * @param _DoPrintDebug whether we do print grid for debug visualization or not 46 * @param _OpenBoundaryConditions whether we have open (true) boundary conditions or periodic (false) 47 * @param _DoSmearCharges whether to smear out electronic charge distributions with bsplines or not 46 48 */ 47 49 VMGJob(const JobId_t _JobId, … … 53 55 const bool _DoImportParticles=true, 54 56 const bool _DoPrintDebug=false, 55 const bool _OpenBoundaryConditions=false 57 const bool _OpenBoundaryConditions=false, 58 const bool _DoSmearCharges=false 56 59 ); 57 60 virtual ~VMGJob(); … … 81 84 //!> whether we have open (true) boundary conditions or periodic (false) 82 85 const bool OpenBoundaryConditions; 86 //!> whether to smear out electronic charge distributions with bsplines or not 87 const bool DoSmearCharges; 83 88 84 89 private: … … 134 139 ar & const_cast< bool &>(DoPrintDebug); 135 140 ar & const_cast< bool &>(OpenBoundaryConditions); 141 ar & const_cast< bool &>(DoSmearCharges); 136 142 ar & returndata; 137 143 } -
src/Jobs/WindowGrid_converter.cpp
r445ce6 r17e4fd 50 50 51 51 #include "Fragmentation/Summation/SetValues/SamplingGrid.hpp" 52 #include "Jobs/ChargeSmearer.hpp" 52 53 53 54 void WindowGrid_converter::addGridOntoWindow( … … 178 179 const SamplingGrid &grid, 179 180 const double prefactor, 180 const bool OpenBoundaryConditions) 181 const bool OpenBoundaryConditions, 182 const bool DoSmearCharges) 181 183 { 182 184 #ifndef NDEBUG … … 265 267 griditer = window.Iterators().Local().Begin(); 266 268 SamplingGrid::sampledvalues_t::const_iterator copyiter = grid.sampled_grid.begin(); 269 const ChargeSmearer &smearer = ChargeSmearer::getInstance(); 267 270 // NOTE: GridIterator::operator+=()'s implementation in vmg is broken. DON'T USE! 268 271 // griditer += pre_offset[0] * total[1] * total[2]; … … 293 296 ASSERT( copyiter != grid.sampled_grid.end(), 294 297 "InterfaceVMGJob::addWindowOntoGrid() - griditer is already at end of window."); 295 window(*griditer++) += prefactor*(*copyiter++); 298 // either smear out charges or not. 299 if (DoSmearCharges) { 300 smearer(window, griditer++, prefactor*(*copyiter++)); 301 } else { 302 window(*griditer++) += prefactor*(*copyiter++); 303 } 296 304 } 297 305 // griditer += post_offset[2]; … … 324 332 "InterfaceVMGJob::addWindowOntoGrid() - copyiter is not at end of window."); 325 333 #endif 326 // LOG(2, "DEBUG: Grid after adding other is " << grid << "."); 334 335 // LOG(2, "DEBUG: Grid after adding other is " << grid << "."); 327 336 } -
src/Jobs/WindowGrid_converter.hpp
r445ce6 r17e4fd 49 49 const SamplingGrid &grid, 50 50 const double prefactor, 51 const bool OpenBoundaryConditions = false); 51 const bool OpenBoundaryConditions = false, 52 const bool DoSmearCharges = false); 52 53 53 54 };
Note:
See TracChangeset
for help on using the changeset viewer.