Ignore:
Timestamp:
Feb 22, 2012, 11:28:52 AM (14 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, Candidate_v1.7.0, 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().
File:
1 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}
Note: See TracChangeset for help on using the changeset viewer.