Changeset 17e4fd for src


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
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/Actions/FragmentationAction/FragmentationAutomationAction.cpp

    r445ce6 r17e4fd  
    260260        params.DoValenceOnly.get() ? MPQCData::DoSampleValenceOnly : MPQCData::DontSampleValenceOnly,
    261261        params.DoPrintDebug.get(),
    262         OpenBoundaryConditions)) {
     262        OpenBoundaryConditions,
     263        params.DoSmearCharges.get())) {
    263264      STATUS("Could not create long-range jobs for electronic charge distribution.");
    264265      return Action::failure;
     
    290291          params.DoValenceOnly.get() ? MPQCData::DoSampleValenceOnly : MPQCData::DontSampleValenceOnly,
    291292          params.DoPrintDebug.get(),
    292           OpenBoundaryConditions)) {
     293          OpenBoundaryConditions,
     294          params.DoSmearCharges.get())) {
    293295        STATUS("Could not create long-range jobs for nuclei charge distribution.");
    294296        return Action::failure;
  • TabularUnified src/Actions/FragmentationAction/FragmentationAutomationAction.def

    r445ce6 r17e4fd  
    1818// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    1919// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    20 #define paramtypes (std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)(boost::filesystem::path)(bool)(bool)
    21 #define paramtokens ("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("fragment-resultfile")("DoValenceOnly")("DoPrintDebug")
    22 #define paramdescriptions ("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")("parse fragment results from the given file")("whether the sampling uses only the valence electron and nuclei charge")("whether to print grids for debug visualization")
    23 #define paramdefaults (PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
    24 #define paramreferences (host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(resultsfile)(DoValenceOnly)(DoPrintDebug)
     20#define paramtypes (std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)(boost::filesystem::path)(bool)(bool)(bool)
     21#define paramtokens ("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("fragment-resultfile")("DoValenceOnly")("DoPrintDebug")("DoSmearElectronicCharges")
     22#define paramdescriptions ("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")("parse fragment results from the given file")("whether the sampling uses only the valence electron and nuclei charge")("whether to print grids for debug visualization")("whether to smear out electronic charge distributions with bsplines or not")
     23#define paramdefaults (PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
     24#define paramreferences (host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(resultsfile)(DoValenceOnly)(DoPrintDebug)(DoSmearCharges)
    2525#define paramvalids \
    2626(DummyValidator< std::string >()) \
     
    3232(DummyValidator< bool >()) \
    3333(DummyValidator< boost::filesystem::path >()) \
     34(DummyValidator< bool >()) \
    3435(DummyValidator< bool >()) \
    3536(DummyValidator< bool >())
  • TabularUnified src/Fragmentation/Automation/VMGFragmentController.cpp

    r445ce6 r17e4fd  
    7676    const MPQCData::DoValenceOnly_t _DoValenceOnly,
    7777    const bool _DoPrintDebug,
    78     const bool _OpenBoundaryConditions)
     78    const bool _OpenBoundaryConditions,
     79    const bool _DoSmearCharges)
    7980{
    8081  std::vector<FragmentJob::ptr> jobs;
     
    99100            _SampleParticles == DoSampleParticles,
    100101            _DoPrintDebug,
    101             _OpenBoundaryConditions) );
     102            _OpenBoundaryConditions,
     103            _DoSmearCharges) );
    102104    jobs.push_back(testJob);
    103105  }
     
    147149            _SampleParticles == DoSampleParticles,
    148150            _DoPrintDebug,
    149             _OpenBoundaryConditions) );
     151            _OpenBoundaryConditions,
     152            _DoSmearCharges) );
    150153    jobs.push_back(testJob);
    151154  }
  • TabularUnified src/Fragmentation/Automation/VMGFragmentController.hpp

    r445ce6 r17e4fd  
    6363   * \param _OpenBoundaryConditions whether we have open (true) or periodic (false)
    6464   *        boundary conditions
     65   * \param _DoSmearCharges whether to smear out electronic charge distributions with bsplines or not
    6566   */
    6667  bool createLongRangeJobs(
     
    7374      const MPQCData::DoValenceOnly_t _DoValenceOnly,
    7475      const bool _DoPrintDebug,
    75       const bool _OpenBoundaryConditions = false);
     76      const bool _OpenBoundaryConditions = false,
     77      const bool _DoSmearCharges = false);
    7678
    7779  void waitforResults(const size_t NoExpectedResults)
  • TabularUnified src/Fragmentation/Interfragmenter.cpp

    r445ce6 r17e4fd  
    270270          ClosestPair.first = (*setiter)->getId();
    271271          ClosestPair.second = Walker->getId();
     272          LOG(2, "DEBUG: Found new pair " << ClosestPair << " with distance " << sqrt(Rcut));
    272273        }
    273274      }
    274275    }
    275276  }
    276   LOG(1, "INFO: Largest inter-fragment distance to cause no additional fragments: " << Rcut);
    277 
    278   return Rcut;
    279 }
     277  const double largest_distance = sqrt(Rcut);
     278  LOG(1, "INFO: Largest inter-fragment distance to cause no additional fragments: "
     279      << largest_distance);
     280
     281  return largest_distance;
     282}
  • TabularUnified 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) {
  • TabularUnified 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
  • TabularUnified 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) {
  • TabularUnified 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  }
  • TabularUnified 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}
  • TabularUnified 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.