Changeset ce81e76 for src/LinkedCell


Ignore:
Timestamp:
Feb 22, 2012, 11:28:52 AM (13 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:
5d41b3f
Parents:
5e2864
git-author:
Frederik Heber <heber@…> (01/05/12 18:30:28)
git-committer:
Frederik Heber <heber@…> (02/22/12 11:28:52)
Message:

LinkedCell_Controller now signs on to Channel WorldTime::TimeChanged.

  • we need to know when WorldTime changes because then all atomic positions change. we might use some more elaborate method here but for the moment we just use the method which is also employed in case of Box::MatrixChanged.
  • renamed LinkedCell_Controller::updateModelsForNewBoxMatrix() -> ::updateModels().
Location:
src/LinkedCell
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • src/LinkedCell/LinkedCell_Controller.cpp

    r5e2864 rce81e76  
    3232#include "LinkedCell_View_ModelWrapper.hpp"
    3333#include "IPointCloud.hpp"
     34#include "WorldTime.hpp"
    3435
    3536
     
    4849  // sign on to specific notifications
    4950  domain.signOn(this, Box::MatrixChanged);
     51  WorldTime::getInstance().signOn(this, WorldTime::TimeChanged);
    5052
    5153  /// Check that upper_threshold fits within half the box.
     
    7375  // sign off
    7476  domain.signOff(this, Box::MatrixChanged);
     77  WorldTime::getInstance().signOff(this, WorldTime::TimeChanged);
    7578
    7679  /// we free all LinkedCell_Model instances again.
     
    190193/** Internal function to re-create all present and used models for the new Box.
    191194 *
     195 * This is necessary in the following cases:
     196 * -# the Box is changed
     197 * -# we step on to a different time step, i.e. all atomic positions change
     198 *
    192199 * The main problem are the views currently in use.
    193200 *
     
    198205 *
    199206 */
    200 void LinkedCell_Controller::updateModelsForNewBoxMatrix()
     207void LinkedCell_Controller::updateModels()
    201208{
    202209  LOG(1, "INFO: Updating all models.");
     
    306313void LinkedCell_Controller::recieveNotification(Observable *publisher, Notification_ptr notification)
    307314{
    308   switch(notification->getChannelNo()) {
    309     case Box::MatrixChanged:
    310       updateModelsForNewBoxMatrix();
    311       break;
    312     default:
    313       ASSERT(0,
    314           "LinkedCell_Controller::recieveNotification() - unwanted notification "
    315           +toString(notification->getChannelNo())+" received.");
    316       break;
     315  if (publisher == &domain) {
     316    switch(notification->getChannelNo()) {
     317      case Box::MatrixChanged:
     318        LOG(1, "INFO: LinkedCell_Controller got update from Box.");
     319        updateModels();
     320        break;
     321      default:
     322        ASSERT(0,
     323            "LinkedCell_Controller::recieveNotification() - unwanted notification from Box "
     324            +toString(notification->getChannelNo())+" received.");
     325        break;
     326    }
     327  } else if (publisher == WorldTime::getPointer()) {
     328    switch(notification->getChannelNo()) {
     329      case WorldTime::TimeChanged:
     330        LOG(1, "INFO: LinkedCell_Controller got update from WorldTime.");
     331        updateModels();
     332        break;
     333      default:
     334        ASSERT(0,
     335            "LinkedCell_Controller::recieveNotification() - unwanted notification from WorldTime "
     336            +toString(notification->getChannelNo())+" received.");
     337        break;
     338    }
     339  } else {
     340    ELOG(1, "Notification " << notification->getChannelNo()
     341        << " from unknown publisher " << publisher << ".");
    317342  }
    318343}
  • src/LinkedCell/LinkedCell_Controller.hpp

    r5e2864 rce81e76  
    5959    const range<double> getHeuristicRange(const double distance) const;
    6060    void insertNewModel(const double edgelength, const LinkedCell_Model* instance);
    61     void updateModelsForNewBoxMatrix();
     61    void updateModels();
    6262
    6363  private:
  • src/LinkedCell/unittests/LinkedCell_ControllerUnitTest.cpp

    r5e2864 rce81e76  
    259259}
    260260
    261 /** UnitTest for LinkedCell_Controller::updateModelsForNewBoxMatrix().
     261/** UnitTest for LinkedCell_Controller::updateModels().
    262262 */
    263263void LinkedCell_ControllerTest::updateBoxTest()
  • src/LinkedCell/unittests/LinkedCell_ModelUnitTest.cpp

    r5e2864 rce81e76  
    3737#include "LinkedCell/PointCloudAdaptor.hpp"
    3838#include "LinkedCell/unittests/defs.hpp"
     39#include "World.hpp"
     40#include "WorldTime.hpp"
    3941
    4042#include "LinkedCell_ModelUnitTest.hpp"
     
    9395    NodeList.erase(iter);
    9496  }
     97
     98  // delete in correct order
     99  World::purgeInstance();
     100  WorldTime::purgeInstance();
    95101}
    96102
  • src/LinkedCell/unittests/LinkedCell_ViewUnitTest.cpp

    r5e2864 rce81e76  
    3737#include "LinkedCell/PointCloudAdaptor.hpp"
    3838#include "LinkedCell/unittests/defs.hpp"
     39#include "World.hpp"
     40#include "WorldTime.hpp"
    3941
    4042#include "LinkedCell_ViewUnitTest.hpp"
     
    98100    NodeList.erase(iter);
    99101  }
     102
     103  // delete in correct order
     104  World::purgeInstance();
     105  WorldTime::purgeInstance();
    100106}
    101107
  • src/LinkedCell/unittests/Makefile.am

    r5e2864 rce81e76  
    5858        ../LinkedCell/unittests/stubs/TesselPointStub.cpp \
    5959        ../LinkedCell/unittests/stubs/WorldStub.cpp \
     60        ../LinkedCell/unittests/stubs/WorldTimeStub.cpp \
    6061        ../LinkedCell/PointCloudAdaptor.hpp \
    6162        ../Box_BoundaryConditions.cpp \
Note: See TracChangeset for help on using the changeset viewer.