Changeset 17e4fd for src/Jobs


Ignore:
Timestamp:
Oct 13, 2015, 8:14:33 PM (9 years ago)
Author:
Frederik Heber <heber@…>
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)
Message:

Added new option DoSmearElectronicCharges to FragmentationAutomationAction.

  • this uses ChargeSmearer: is prepared in InterfaceVMGJob and used in WindowGrid_converter.
  • VMGJob and VMGFragmentController need to pass along the DoSmearCharges option from the command-line.
Location:
src/Jobs
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • src/Jobs/InterfaceVMGJob.cpp

    r445ce6 r17e4fd  
    5959#include "Fragmentation/Summation/SetValues/FragmentForces.hpp"
    6060#include "Jobs/WindowGrid_converter.hpp"
     61#include "Jobs/ChargeSmearer.hpp"
    6162
    6263using namespace VMG;
     
    7576    const ImportParticles_t _ImportParticles,
    7677    const bool _DoPrintDebug,
     78    const bool _DoSmearCharges,
    7779    int coarseningSteps,
    7880    double alpha) :
    7981  VMG::Interface(boundary, levelMin, levelMax,
    8082      _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),
    8286  sampled_input(_sampled_input),
    8387  returndata(_returndata),
     
    8589  ImportParticles(_ImportParticles),
    8690  DoPrintDebug(_DoPrintDebug),
    87   OpenBoundaryCondition(boundary[0] == VMG::Open)
     91  OpenBoundaryCondition(boundary[0] == VMG::Open),
     92  DoSmearCharges(_DoSmearCharges)
    8893{
    8994  for (size_t i=0;i<3;++i) {
     
    159164
    160165  // add sampled electron charge density onto grid
     166  if (DoSmearCharges) {
     167    ChargeSmearer &smearer = ChargeSmearer::getInstance();
     168    smearer.initializeSplineArray(spl, nfc, meshwidth);
     169  }
    161170  WindowGrid_converter::addWindowOntoGrid(
    162171      grid,
    163172      sampled_input,
    164173      1.,
    165       OpenBoundaryCondition);
     174      OpenBoundaryCondition,
     175      DoSmearCharges);
    166176
    167177  if (DoPrintDebug) {
  • src/Jobs/InterfaceVMGJob.hpp

    r445ce6 r17e4fd  
    5353      const ImportParticles_t _ImportParticles=DoImportParticles,
    5454      const bool _DoPrintDebug=false,
     55      const bool _DoSmearCharges=false,
    5556      int coarseningSteps=9,
    5657      double alpha=1.6
     
    6364
    6465protected:
     66  unsigned int nfc;
     67  const double meshwidth;
    6568  VMG::Particle::BSpline spl;
    6669
     
    8891  //!> open boundary conditions or not
    8992  const bool OpenBoundaryCondition;
     93
     94  //!> whether to smear out electronic charge distributions with bsplines or not
     95  const bool DoSmearCharges;
    9096};
    9197
  • src/Jobs/VMGJob.cpp

    r445ce6 r17e4fd  
    9292    const bool _DoImportParticles,
    9393    const bool _DoPrintDebug,
    94     const bool _OpenBoundaryConditions) :
     94    const bool _OpenBoundaryConditions,
     95    const bool _DoSmearCharges) :
    9596  FragmentJob(_JobId),
    9697  density_grid(_density_grid),
     
    102103  DoPrintDebug(_DoPrintDebug),
    103104  OpenBoundaryConditions(_OpenBoundaryConditions),
     105  DoSmearCharges(_DoSmearCharges),
    104106  returndata(static_cast<const SamplingGridProperties &>(_density_grid)),
    105107  particles()
     
    113115  DoPrintDebug(false),
    114116  OpenBoundaryConditions(false),
     117  DoSmearCharges(false),
    115118  particles()
    116119{}
     
    246249          VMGInterfaces::InterfaceVMGJob::DoImportParticles
    247250          : VMGInterfaces::InterfaceVMGJob::DontImportParticles,
    248       DoPrintDebug);
     251      DoPrintDebug,
     252      DoSmearCharges);
    249253  const int cycle_type = 1; // V-type
    250254  if (OpenBoundaryConditions) {
  • src/Jobs/VMGJob.hpp

    r445ce6 r17e4fd  
    4444   * @param _DoImportParticles whether we import particles (true) or evaluate only
    4545   * @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
    4648   */
    4749  VMGJob(const JobId_t _JobId,
     
    5355      const bool _DoImportParticles=true,
    5456      const bool _DoPrintDebug=false,
    55       const bool _OpenBoundaryConditions=false
     57      const bool _OpenBoundaryConditions=false,
     58      const bool _DoSmearCharges=false
    5659      );
    5760  virtual ~VMGJob();
     
    8184  //!> whether we have open (true) boundary conditions or periodic (false)
    8285  const bool OpenBoundaryConditions;
     86  //!> whether to smear out electronic charge distributions with bsplines or not
     87  const bool DoSmearCharges;
    8388
    8489private:
     
    134139    ar & const_cast< bool &>(DoPrintDebug);
    135140    ar & const_cast< bool &>(OpenBoundaryConditions);
     141    ar & const_cast< bool &>(DoSmearCharges);
    136142    ar & returndata;
    137143  }
  • src/Jobs/WindowGrid_converter.cpp

    r445ce6 r17e4fd  
    5050
    5151#include "Fragmentation/Summation/SetValues/SamplingGrid.hpp"
     52#include "Jobs/ChargeSmearer.hpp"
    5253
    5354void WindowGrid_converter::addGridOntoWindow(
     
    178179    const SamplingGrid &grid,
    179180    const double prefactor,
    180     const bool OpenBoundaryConditions)
     181    const bool OpenBoundaryConditions,
     182    const bool DoSmearCharges)
    181183{
    182184#ifndef NDEBUG
     
    265267  griditer = window.Iterators().Local().Begin();
    266268  SamplingGrid::sampledvalues_t::const_iterator copyiter = grid.sampled_grid.begin();
     269  const ChargeSmearer &smearer = ChargeSmearer::getInstance();
    267270  // NOTE: GridIterator::operator+=()'s implementation in vmg is broken. DON'T USE!
    268271//  griditer += pre_offset[0] * total[1] * total[2];
     
    293296        ASSERT( copyiter != grid.sampled_grid.end(),
    294297            "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        }
    296304      }
    297305//      griditer += post_offset[2];
     
    324332      "InterfaceVMGJob::addWindowOntoGrid() - copyiter is not at end of window.");
    325333#endif
    326 //  LOG(2, "DEBUG: Grid after adding other is " << grid << ".");
     334
     335  //  LOG(2, "DEBUG: Grid after adding other is " << grid << ".");
    327336}
  • src/Jobs/WindowGrid_converter.hpp

    r445ce6 r17e4fd  
    4949      const SamplingGrid &grid,
    5050      const double prefactor,
    51       const bool OpenBoundaryConditions = false);
     51      const bool OpenBoundaryConditions = false,
     52      const bool DoSmearCharges = false);
    5253
    5354};
Note: See TracChangeset for help on using the changeset viewer.