Ignore:
Timestamp:
Aug 28, 2010, 12:52:58 AM (15 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:
b4fa106
Parents:
0b2ce9
git-author:
Frederik Heber <heber@…> (08/25/10 17:20:37)
git-committer:
Frederik Heber <heber@…> (08/28/10 00:52:58)
Message:

Extended macro framework.

Extensions:

  • all central definitions reside in .def files
    • This if file is necessary because we need the definitions at two places: hpp and cpp
    • And as we always use the same define names, we have to undefine them at the end of both (otherwise we get compiler warnings and are prone to dumb mistakes of forgotten defines seeming present)
  • the .hpp is just a very tiny header, that should be possible to batch- construct inside Makefile as well
  • .cpp includes some Action_...hpp files and implements the function

For later (i.e. when ActionRegistry becomes prototype copier)

  • instead of waiting for clone(), for now we simply call the prototype.
  • in the action command we must not yet prefix paramreferences with "params."

Changes:

  • Dialog::query<> is a template which is specialized for every present query...() function. We need it to automatize fillDialog()
  • all AnalysisAction's are now converted, i.e. framework is functional with parameters and queries (MolecularVolume had none).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/AnalysisAction/PointCorrelationAction.cpp

    r0b2ce9 r9ee38b  
    2020#include "Helpers/MemDebug.hpp"
    2121
    22 #include "Actions/AnalysisAction/PointCorrelationAction.hpp"
    23 #include "Actions/ActionRegistry.hpp"
    2422#include "analysis_correlation.hpp"
    2523#include "boundary.hpp"
     
    3937using namespace std;
    4038
    41 #include "UIElements/UIFactory.hpp"
    42 #include "UIElements/Dialog.hpp"
    43 #include "Actions/ValueStorage.hpp"
     39#include "Actions/AnalysisAction/PointCorrelationAction.hpp"
    4440
    45 const char AnalysisPointCorrelationAction::NAME[] = "point-correlation";
    4641
    47 AnalysisPointCorrelationAction::AnalysisPointCorrelationAction() :
    48   Action(NAME)
    49 {}
     42// and construct the stuff
     43#include "PointCorrelationAction.def"
     44#include "Action_impl_pre.hpp"
    5045
    51 AnalysisPointCorrelationAction::~AnalysisPointCorrelationAction()
    52 {}
    53 
    54 void AnalysisPointCorrelation(std::vector< element *> &elements, Vector &position, double BinStart, double BinWidth, double BinEnd, string &outputname, string &binoutputname, bool periodic) {
    55   ValueStorage::getInstance().setCurrentValue("elements", elements);
    56   ValueStorage::getInstance().setCurrentValue("position", position);
    57   ValueStorage::getInstance().setCurrentValue("bin-start", BinStart);
    58   ValueStorage::getInstance().setCurrentValue("bin-width", BinWidth);
    59   ValueStorage::getInstance().setCurrentValue("bin-end", BinEnd);
    60   ValueStorage::getInstance().setCurrentValue("output-file", outputname);
    61   ValueStorage::getInstance().setCurrentValue("bin-output-file", binoutputname);
    62   ValueStorage::getInstance().setCurrentValue("periodic", periodic);
    63   ActionRegistry::getInstance().getActionByName(AnalysisPointCorrelationAction::NAME)->call(Action::NonInteractive);
    64 };
    65 
    66 void AnalysisPointCorrelationAction::getParametersfromValueStorage()
    67 {};
    68 
    69 Dialog* AnalysisPointCorrelationAction::fillDialog(Dialog *dialog) {
    70   ASSERT(dialog,"No Dialog given when filling action dialog");
    71 
    72   dialog->queryVector("position", false, ValueStorage::getInstance().getDescription("position"));
    73   dialog->queryElements("elements", ValueStorage::getInstance().getDescription("elements"));
    74   dialog->queryDouble("bin-start", ValueStorage::getInstance().getDescription("bin-start"));
    75   dialog->queryDouble("bin-width", ValueStorage::getInstance().getDescription("bin-width"));
    76   dialog->queryDouble("bin-end", ValueStorage::getInstance().getDescription("bin-end"));
    77   dialog->queryString("output-file", ValueStorage::getInstance().getDescription("output-file"));
    78   dialog->queryString("bin-output-file", ValueStorage::getInstance().getDescription("bin-output-file"));
    79   dialog->queryBoolean("periodic", ValueStorage::getInstance().getDescription("periodic"));
    80 
    81   return dialog;
    82 }
    83 
     46/** =========== define the function ====================== */
    8447Action::state_ptr AnalysisPointCorrelationAction::performCall() {
    8548  int ranges[3] = {1, 1, 1};
    86   double BinEnd = 0.;
    87   double BinStart = 0.;
    88   double BinWidth = 0.;
    89   string outputname;
    90   string binoutputname;
    91   bool periodic;
    9249  ofstream output;
    9350  ofstream binoutput;
    94   std::vector<const element *> elements;
    9551  string type;
    96   Vector Point;
    9752  BinPairMap *binmap = NULL;
    9853
    9954  // obtain information
    100   ValueStorage::getInstance().queryCurrentValue("position", Point);
    101   ValueStorage::getInstance().queryCurrentValue("elements", elements);
    102   ValueStorage::getInstance().queryCurrentValue("bin-start", BinStart);
    103   ValueStorage::getInstance().queryCurrentValue("bin-width", BinWidth);
    104   ValueStorage::getInstance().queryCurrentValue("bin-end", BinEnd);
    105   ValueStorage::getInstance().queryCurrentValue("output-file", outputname);
    106   ValueStorage::getInstance().queryCurrentValue("bin-output-file", binoutputname);
    107   ValueStorage::getInstance().queryCurrentValue("periodic", periodic);
     55  getParametersfromValueStorage();
    10856
    10957  // execute action
    110   output.open(outputname.c_str());
    111   binoutput.open(binoutputname.c_str());
    112   cout << "Point to correlate to is  " << Point << endl;
     58  output.open(params.outputname.c_str());
     59  binoutput.open(params.binoutputname.c_str());
     60  cout << "Point to correlate to is  " << params.Point << endl;
    11361  CorrelationToPointMap *correlationmap = NULL;
    114   for(std::vector<const element *>::iterator iter = elements.begin(); iter != elements.end(); ++iter)
     62  for(std::vector<const element *>::iterator iter = params.elements.begin(); iter != params.elements.end(); ++iter)
    11563    cout << "element is " << (*iter)->getSymbol() << endl;
    11664  std::vector<molecule*> molecules = World::getInstance().getSelectedMolecules();
    117   if (periodic)
    118     correlationmap  = PeriodicCorrelationToPoint(molecules, elements, &Point, ranges);
     65  if (params.periodic)
     66    correlationmap  = PeriodicCorrelationToPoint(molecules, params.elements, &params.Point, ranges);
    11967  else
    120     correlationmap = CorrelationToPoint(molecules, elements, &Point);
     68    correlationmap = CorrelationToPoint(molecules, params.elements, &params.Point);
    12169  OutputCorrelationToPoint(&output, correlationmap);
    122   binmap = BinData( correlationmap, BinWidth, BinStart, BinEnd );
     70  binmap = BinData( correlationmap, params.BinWidth, params.BinStart, params.BinEnd );
    12371  OutputCorrelation ( &binoutput, binmap );
    12472  delete(binmap);
     
    14896  return NAME;
    14997}
     98/** =========== end of function ====================== */
Note: See TracChangeset for help on using the changeset viewer.