Action_Thermostats
        Add_AtomRandomPerturbation
        Add_RotateAroundBondAction
        Add_SelectAtomByNameAction
        Adding_Graph_to_ChangeBondActions
        Adding_MD_integration_tests
        Adding_StructOpt_integration_tests
        Automaking_mpqc_open
        AutomationFragmentation_failures
        Candidate_v1.6.0
        Candidate_v1.6.1
        Candidate_v1.7.0
        ChangeBugEmailaddress
        ChangingTestPorts
        ChemicalSpaceEvaluator
        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_ChronosMutex
        Fix_StatusMsg
        Fix_StepWorldTime_single_argument
        Fix_Verbose_Codepatterns
        ForceAnnealing_goodresults
        ForceAnnealing_oldresults
        ForceAnnealing_tocheck
        ForceAnnealing_with_BondGraph
        ForceAnnealing_with_BondGraph_continued
        ForceAnnealing_with_BondGraph_continued_betteresults
        ForceAnnealing_with_BondGraph_contraction-expansion
        GeometryObjects
        Gui_displays_atomic_force_velocity
        IndependentFragmentGrids_IntegrationTest
        JobMarket_RobustOnKillsSegFaults
        JobMarket_StableWorkerPool
        JobMarket_unresolvable_hostname_fix
        ODR_violation_mpqc_open
        PartialCharges_OrthogonalSummation
        PythonUI_with_named_parameters
        QtGui_reactivate_TimeChanged_changes
        Recreated_GuiChecks
        RotateToPrincipalAxisSystem_UndoRedo
        StoppableMakroAction
        Subpackage_CodePatterns
        Subpackage_JobMarket
        Subpackage_LinearAlgebra
        Subpackage_levmar
        Subpackage_mpqc_open
        Subpackage_vmg
        ThirdParty_MPQC_rebuilt_buildsystem
        TremoloParser_IncreasedPrecision
        TremoloParser_MultipleTimesteps
        Ubuntu_1604_changes
        stable
      
      
        
          | Last change
 on this file since 884d8c was             a82f61, checked in by Frederik Heber <heber@…>, 10 years ago | 
        
          | 
Added Action::setOptionValue() which allows setting the option via a string.
 this is preparatory for allowing the creation of MakroActions inside the
code. We need to set the options without going through dialogs in some
way or another and without being completely inside the Actions as is the
case for the COMMAND variants and the python function calls.
 | 
        
          | 
              
Property                 mode
 set to                 100644 | 
        
          | File size:
            2.1 KB | 
      
      
| Rev | Line |  | 
|---|
| [7c4e29] | 1 | /* | 
|---|
|  | 2 | * Calculation.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: Feb 19, 2010 | 
|---|
|  | 5 | *      Author: crueger | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 | #ifndef CALCULATION_HPP_ | 
|---|
|  | 9 | #define CALCULATION_HPP_ | 
|---|
|  | 10 |  | 
|---|
| [56f73b] | 11 | // include config.h | 
|---|
|  | 12 | #ifdef HAVE_CONFIG_H | 
|---|
|  | 13 | #include <config.h> | 
|---|
|  | 14 | #endif | 
|---|
|  | 15 |  | 
|---|
| [7c4e29] | 16 | #include "Actions/Process.hpp" | 
|---|
|  | 17 |  | 
|---|
| [ce7fdc] | 18 | namespace MoleCuilder { | 
|---|
|  | 19 |  | 
|---|
| [0c8056] | 20 | class ActionRegistry; | 
|---|
|  | 21 |  | 
|---|
| [dbb474] | 22 | /** | 
|---|
|  | 23 | * A calculation is a Process that has some kind of result. | 
|---|
|  | 24 | * | 
|---|
|  | 25 | * This class can be used in the same way as any other Action or Process, but has some special methods | 
|---|
|  | 26 | * for inspecting the result of the calculation. | 
|---|
|  | 27 | */ | 
|---|
| [7c4e29] | 28 | template<typename T> | 
|---|
| [b54ac8] | 29 | class Calculation : public Process | 
|---|
| [7c4e29] | 30 | { | 
|---|
|  | 31 | public: | 
|---|
| [126867] | 32 | Calculation(int _maxSteps, const ActionTrait &_trait); | 
|---|
| [7c4e29] | 33 | virtual ~Calculation(); | 
|---|
|  | 34 |  | 
|---|
| [dbb474] | 35 | /** | 
|---|
|  | 36 | * Reimplemented call method for Action Base class. | 
|---|
|  | 37 | * Resets the result and then redoes the calculation. Can be used to retrigger calculations | 
|---|
|  | 38 | * from menu Items or other places. | 
|---|
|  | 39 | */ | 
|---|
| [7c4e29] | 40 | virtual bool canUndo(); | 
|---|
|  | 41 |  | 
|---|
| [67e2b3] | 42 | virtual bool shouldUndo(); | 
|---|
|  | 43 |  | 
|---|
| [af5384] | 44 | virtual Action* clone(enum QueryOptions flag = Interactive) const=0; | 
|---|
|  | 45 |  | 
|---|
| [46b181] | 46 | virtual void outputAsCLI(std::ostream &ost) const; | 
|---|
| [477012] | 47 | virtual void outputAsPython(std::ostream &ost, const std::string &prefix) const; | 
|---|
| [46b181] | 48 |  | 
|---|
| [a82f61] | 49 | virtual void setOptionValue(const std::string &_token, const std::string &_value); | 
|---|
|  | 50 |  | 
|---|
| [dbb474] | 51 | /** | 
|---|
|  | 52 | * Does the actual calculation and returns the result. | 
|---|
|  | 53 | * When the calculation has been done before it is not redone, but the previous cached result is returned. | 
|---|
|  | 54 | * Call reset to delete the cached value. | 
|---|
|  | 55 | */ | 
|---|
| [b54ac8] | 56 | virtual T operator()(); | 
|---|
| [dbb474] | 57 |  | 
|---|
|  | 58 | /** | 
|---|
|  | 59 | * Check if a cached result is available. | 
|---|
|  | 60 | */ | 
|---|
| [af5384] | 61 | virtual bool hasResult() const; | 
|---|
| [dbb474] | 62 |  | 
|---|
|  | 63 | /** | 
|---|
|  | 64 | * Get the cached result. | 
|---|
|  | 65 | * Fails if there is no cached result. | 
|---|
|  | 66 | */ | 
|---|
| [af5384] | 67 | virtual T getResult() const; | 
|---|
| [dbb474] | 68 |  | 
|---|
|  | 69 | /** | 
|---|
|  | 70 | * Delete a previously calculated result from the cache. | 
|---|
|  | 71 | */ | 
|---|
| [7c4e29] | 72 | virtual void reset(); | 
|---|
|  | 73 |  | 
|---|
|  | 74 | protected: | 
|---|
|  | 75 | T* result; | 
|---|
| [dbb474] | 76 |  | 
|---|
|  | 77 | /** | 
|---|
|  | 78 | * Pure virtual method for implementation of the actual calculation procedure. | 
|---|
|  | 79 | */ | 
|---|
| [7c4e29] | 80 | virtual T* doCalc()=0; | 
|---|
|  | 81 | private: | 
|---|
| [b5b01e] | 82 | virtual ActionState::ptr performCall(); | 
|---|
|  | 83 | virtual ActionState::ptr performUndo(ActionState::ptr); | 
|---|
|  | 84 | virtual ActionState::ptr performRedo(ActionState::ptr); | 
|---|
| [67e2b3] | 85 |  | 
|---|
| [7c4e29] | 86 | bool done; | 
|---|
|  | 87 | }; | 
|---|
|  | 88 |  | 
|---|
| [ce7fdc] | 89 | } | 
|---|
|  | 90 |  | 
|---|
| [7c4e29] | 91 | #endif /* CALCULATION_HPP_ */ | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.