Changeset 065574


Ignore:
Timestamp:
Dec 10, 2012, 10:10:56 AM (12 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:
de84ef
Parents:
758e56
git-author:
Frederik Heber <heber@…> (08/29/12 13:09:08)
git-committer:
Frederik Heber <heber@…> (12/10/12 10:10:56)
Message:

Added level and near_field_cells as options to FragmentationAutomationAction.

  • new options are grid-level and near-field-cells that allow setting the precision of the electron charge density sampling (and potentil calculation) and the smearing out of nuclei charge density on the command-line.
Files:
9 edited

Legend:

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

    r758e56 r065574  
    595595  mpqccontroller.setHost(params.host.get());
    596596  mpqccontroller.setPort(params.port.get());
     597  mpqccontroller.setLevel(params.level.get());
    597598  VMGFragmentController vmgcontroller(io_service);
    598599  vmgcontroller.setHost(params.host.get());
     
    633634
    634635  // Phase Five: create VMGJobs
    635   if (!vmgcontroller.createLongRangeJobs(fragmentData, full_sample, full_fragment))
     636  const size_t near_field_cells = params.near_field_cells.get();
     637  if (!vmgcontroller.createLongRangeJobs(fragmentData, full_sample, full_fragment, near_field_cells))
    636638    return Action::failure;
    637639
  • src/Actions/FragmentationAction/FragmentationAutomationAction.def

    r758e56 r065574  
    1313#include "Parameters/Validators/DummyValidator.hpp"
    1414#include "Parameters/Validators/Ops_Validator.hpp"
     15#include "Parameters/Validators/RangeValidator.hpp"
    1516#include "Parameters/Validators/STLVectorValidator.hpp"
    1617#include "Parameters/Validators/Specific/ParserFileValidator.hpp"
     
    2021// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    2122// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    22 #define paramtypes (std::vector< boost::filesystem::path >)(std::string)(std::string)(std::string)(boost::filesystem::path)(bool)
    23 #define paramtokens ("fragment-jobs")("fragment-path")("server-address")("server-port")("fragment-executable")("DoLongrange")
    24 #define paramdescriptions ("vector of fragment files")("prefix of each fragment file")("hostname of server")("controller port of server")("executable to launch on clients")("whether to calculate long-range contributions")
    25 #define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT("127.0.0.1"))(PARAM_DEFAULT("1026"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))
    26 #define paramreferences (jobfiles)(path)(host)(port)(executable)(DoLongrange)
     23#define paramtypes (std::vector< boost::filesystem::path >)(std::string)(std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(bool)
     24#define paramtokens ("fragment-jobs")("fragment-path")("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("DoLongrange")
     25#define paramdescriptions ("vector of fragment files")("prefix of each fragment file")("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("whether to calculate long-range contributions")
     26#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT("127.0.0.1"))(PARAM_DEFAULT("1026"))(NOPARAM_DEFAULT)(PARAM_DEFAULT(5))(PARAM_DEFAULT(5))(PARAM_DEFAULT("0"))
     27#define paramreferences (jobfiles)(path)(host)(port)(executable)(level)(near_field_cells)(DoLongrange)
    2728#define paramvalids \
    2829(STLVectorValidator< std::vector< boost::filesystem::path > >(ParserFileValidator() && FilePresentValidator())) \
     
    3132(DummyValidator< std::string >()) \
    3233(DummyValidator< boost::filesystem::path >()) \
     34(RangeValidator< unsigned int >(1, 10)) \
     35(RangeValidator< unsigned int >(0, 20)) \
    3336(DummyValidator< bool >())
    3437
  • src/Fragmentation/Automation/MPQCFragmentController.cpp

    r758e56 r065574  
    4848#include "World.hpp"
    4949
    50 const int MPQCFragmentController::LEVEL = 5;
    51 
    5250bool MPQCFragmentController::addJobsFromFiles(
    5351    const std::string &executable,
     
    9896  ASSERT( M.determinant() == size*size*size,
    9997      "parsejob() - current domain matrix "+toString(M)+" is not cubic.");
    100   const int level = LEVEL;
    10198  FragmentJob::ptr testJob( new MPQCJob(nextid, output, begin, size, level) );
    10299  jobs.push_back(testJob);
  • src/Fragmentation/Automation/MPQCFragmentController.hpp

    r758e56 r065574  
    3434public:
    3535  MPQCFragmentController(boost::asio::io_service &io_service) :
    36     SpecificFragmentController(io_service)
     36    SpecificFragmentController(io_service),
     37    level(5)
    3738  {}
    3839  virtual ~MPQCFragmentController()
     
    4647  }
    4748
     49  void setLevel(const size_t _level) { level = _level; }
     50
    4851private:
    4952  void parsejob(
     
    5558private:
    5659  //!> resolution of sampled electron density as \f$2^{\text{level}}\f$
    57   static const int LEVEL;
     60  size_t level;
    5861};
    5962
  • src/Fragmentation/Automation/VMGFragmentController.cpp

    r758e56 r065574  
    5050    const std::map<JobId_t, MPQCData> &fragmentData,
    5151    const SamplingGrid &full_sampled_grid,
    52     const Fragment &full_fragment)
     52    const Fragment &full_fragment,
     53    const size_t near_field_cells)
    5354{
    5455  std::vector<FragmentJob::ptr> jobs;
     
    6263        << " gridpoints and " << data.charges.size() << " particle charges.");
    6364    FragmentJob::ptr testJob(
    64         new VMGJob(next_id, data.sampled_grid, data.positions, data.charges) );
     65        new VMGJob(next_id, data.sampled_grid, data.positions, data.charges, near_field_cells) );
    6566    jobs.push_back(testJob);
    6667  }
     
    8485        << " gridpoints and " << charges.size() << " particle charges.");
    8586    FragmentJob::ptr testJob(
    86         new VMGJob(next_id, full_sampled_grid, positions, charges) );
     87        new VMGJob(next_id, full_sampled_grid, positions, charges, near_field_cells) );
    8788    jobs.push_back(testJob);
    8889  }
  • src/Fragmentation/Automation/VMGFragmentController.hpp

    r758e56 r065574  
    3939      const std::map<JobId_t, MPQCData> &fragmentData,
    4040      const SamplingGrid &full_sampled_grid,
    41       const Fragment &full_fragment);
     41      const Fragment &full_fragment,
     42      const size_t near_field_cells);
    4243  void getResults(std::map<JobId_t, VMGData> &fragmentData) {
    4344    SpecificFragmentController::getResults<VMGData>(fragmentData);
  • src/Jobs/VMGJob.cpp

    r758e56 r065574  
    7878    const SamplingGrid &_density_grid,
    7979    const std::vector< std::vector< double > > &_particle_positions,
    80     const std::vector< double > &_particle_charges) :
     80    const std::vector< double > &_particle_charges,
     81    const size_t _near_field_cells) :
    8182  FragmentJob(_JobId),
    8283  density_grid(_density_grid),
    8384  particle_positions(_particle_positions),
    8485  particle_charges(_particle_charges),
     86  near_field_cells(_near_field_cells),
    8587  returndata(static_cast<const SamplingGridProperties &>(_density_grid))
    8688{}
    8789
    8890VMGJob::VMGJob() :
    89   FragmentJob(JobId::IllegalJob)
     91  FragmentJob(JobId::IllegalJob),
     92  near_field_cells(5)
    9093{}
    9194
     
    129132  // TODO: As a matter of fact should use open boundary conditions
    130133  const Boundary boundary(Periodic, Periodic, Periodic);
    131   int near_field_cells = 10;
    132134
    133135  /*
  • src/Jobs/VMGJob.hpp

    r758e56 r065574  
    3636   *
    3737   * @param _JobId id of the job
    38    * @param _begin offset of the domain
    39    * @param _size edge length of the cubic(!) domain
    40    * @param _level level is \f$2^{\text{level}}\f$ grid points
    41    * @param _sampled_input vector of sampled points of the grid as right-hand side
     38   * @param _density_grid sampled electron charge density from short-range solutions
     39   * @param _particle_positions position per nuclei
     40   * @param _particle_charges charges per nuclei
     41   * @param _near_field_cells number of grid-points used to smear our nuclei charge
    4242   */
    4343  VMGJob(const JobId_t _JobId,
    4444      const SamplingGrid &density_grid,
    4545      const std::vector< std::vector< double > > &_particle_positions,
    46       const std::vector< double > &_particle_charges);
     46      const std::vector< double > &_particle_charges,
     47      const size_t _near_field_cells);
    4748  virtual ~VMGJob();
    4849
     
    5960  //!> charges of all nuclei
    6061  const std::vector< double > particle_charges;
     62  //!> near field cells used in smearing out core charge density
     63  const size_t near_field_cells;
    6164
    6265private:
     
    7881    ar & const_cast< std::vector< std::vector< double > > &>(particle_positions);
    7982    ar & const_cast< std::vector< double > &>(particle_charges);
     83    ar & const_cast< size_t &>(near_field_cells);
    8084    ar & returndata;
    8185  }
  • tests/Python/AllActions/options.dat

    r758e56 r065574  
    7575fragment-molecule       "./"
    7676fragment-path   "test/"
     77grid-level      "5"
    7778id-mapping      "1"
    7879input   "test.data"
     
    8687min-distance    "1."
    8788molecule-by-id  "0"
     89near-field-cells        "3"
    8890nonconvex-envelope      "25"
    8991nonconvex-file  "NonConvexEnvelope"
Note: See TracChangeset for help on using the changeset viewer.