Changeset e9cfc4 for src


Ignore:
Timestamp:
Nov 13, 2012, 11:11:38 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:
8a8c8c
Parents:
d2a0f6d
git-author:
Frederik Heber <heber@…> (07/15/12 11:22:16)
git-committer:
Frederik Heber <heber@…> (11/13/12 11:11:38)
Message:

Added rudimentarily complete structure of interface to VMG and VMGJob that uses VMG.

  • interface is adapted from interface_particles.cpp.
  • VMGJob is adapted from interface_fcs.cpp.
  • this is a test whether we may compile solidly against VMG component.
  • so far, the grid is initialized to zero, the MG solver is called and the potential should return as zero.
Location:
src/Jobs
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • src/Jobs/Makefile.am

    rd2a0f6d re9cfc4  
    77        Jobs/MPQCJob.cpp
    88if CONDVMG
    9 JOBSSOURCE += Jobs/VMGJob.cpp
     9JOBSSOURCE += \
     10        Jobs/InterfaceVMGJob.cpp \
     11        Jobs/VMGJob.cpp
    1012endif
    1113
     
    1820        Jobs/MPQCJob.hpp
    1921if CONDVMG
    20 JOBSSOURCE += Jobs/VMGJob.hpp
     22JOBSHEADER += \
     23        Jobs/InterfaceVMGJob.hpp \
     24        Jobs/VMGJob.hpp
    2125endif
    2226
  • src/Jobs/VMGJob.cpp

    rd2a0f6d re9cfc4  
    4343#include "Jobs/VMGJob.hpp"
    4444
    45 #include "grid/tempgrid.hpp"
     45#include "mg.hpp"
     46#include "base/object.hpp"
     47#include "base/defs.hpp"
     48#include "comm/comm_serial.hpp"
     49#include "cycles/cycle_cs_periodic.hpp"
     50#include "grid/multigrid.hpp"
     51//#include "grid/tempgrid.hpp"
     52#include "level/level_operator_cs.hpp"
     53#include "level/stencils.hpp"
     54#include "samples/discretization_poisson_fd.hpp"
     55#include "smoother/gsrb_poisson_4.hpp"
     56#include "solver/givens.hpp"
     57//#include "solver/solver_regular.hpp"
     58#include "solver/solver_singular.hpp"
     59//#include "units/particle/comm_mpi_particle.hpp"
     60
     61#include "LinearAlgebra/defs.hpp"
     62#include "Jobs/InterfaceVMGJob.hpp"
     63
     64using namespace VMG;
    4665
    4766VMGJob::VMGJob(const JobId_t _JobId, const std::vector< double > &_sampled_input) :
     
    5978FragmentResult::ptr VMGJob::Work()
    6079{
    61   VMG::TempGrid *grid = new VMG::TempGrid();
     80  // initialize VMG library solver
     81  InitVMG();
     82
     83  /*
     84   * Start the multigrid solver
     85   */
     86  MG::Solve();
     87
     88  /// create and fill result object
    6289  FragmentResult::ptr ptr( new FragmentResult(getId()) );
    63   delete grid;
     90
     91  /*
     92   * Delete all data.
     93   */
     94  MG::Destroy();
     95
    6496  return ptr;
     97}
     98
     99/** Initialization of VMG library.
     100 *
     101 * The contents is heavily inspired from interface_fcs.cpp: VMG_fcs_init() of
     102 * the ScaFaCoS project.
     103 *
     104 */
     105void VMGJob::InitVMG()
     106{
     107  // TODO: As a matter of fact should use open boundary conditions
     108  const Boundary boundary(Periodic, Periodic, Periodic);
     109  int level = 7;
     110  double box_offset[NDIM] = { 0., 0., 0. };
     111  double box_size = 1;
     112//  int near_field_cells = 10;
     113
     114  /*
     115   * Choose multigrid components (self-registering)
     116   */
     117  new CommSerial(boundary);
     118  new DiscretizationPoissonFD(4);
     119  new VMGInterfaces::InterfaceVMGJob(
     120      sampled_input,
     121      boundary,
     122      2,
     123      level,
     124      Vector(box_offset),
     125      box_size);
     126  new LevelOperatorCS(Stencils::RestrictionFullWeight, Stencils::InterpolationTrilinear);
     127  new Givens<SolverSingular>();
     128  const int cycle_type = 1; // V-type
     129  new CycleCSPeriodic(cycle_type);
     130  new GaussSeidelRBPoisson4();
     131
     132  /*
     133   * Register required parameters
     134   */
     135  new ObjectStorage<int>("PRESMOOTHSTEPS", 3);
     136  new ObjectStorage<int>("POSTSMOOTHSTEPS", 3);
     137  new ObjectStorage<vmg_float>("PRECISION", 1.0e-10);
     138  new ObjectStorage<int>("MAX_ITERATION", 15);
     139//  new ObjectStorage<int>("PARTICLE_NEAR_FIELD_CELLS", near_field_cells);
     140//  new ObjectStorage<int>("PARTICLE_INTERPOLATION_DEGREE", 3);
     141
     142  /*
     143   * Post init
     144   */
     145  MG::PostInit();
     146
     147  /*
     148   * Check whether the library is correctly initialized now.
     149   */
     150  MG::IsInitialized();
    65151}
    66152
  • src/Jobs/VMGJob.hpp

    rd2a0f6d re9cfc4  
    4242
    4343private:
     44  void InitVMG();
     45
     46private:
    4447  //!> contents of the input file
    4548  const std::vector< double > sampled_input;
Note: See TracChangeset for help on using the changeset viewer.