Changeset 3ccea3 for src/Potentials


Ignore:
Timestamp:
Dec 19, 2012, 3:25:31 PM (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:
1dca9a
Parents:
dac89b1
git-author:
Frederik Heber <heber@…> (10/03/12 19:08:38)
git-committer:
Frederik Heber <heber@…> (12/19/12 15:25:31)
Message:

EmpiricalPotential and FunctionModel are now inherited virtually, have overlapping function definitions.

  • EmpiricalPotential and FunctionModel differ only in the way of the derivative. The simple function evaluation is the same. EmpiricalPotential however desires the derivative with respect to the arguments, while FunctionModel requires the derivative with respect to the parameters.
  • therefore, we shifted some of the function definitions in between the two and had to some typedefs in PairPotential_Harmonic and ManyBodyPotential_Tersoff to clarify ambiguities.
Location:
src/Potentials
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/Potentials/EmpiricalPotential.hpp

    rdac89b1 r3ccea3  
    3131{
    3232public:
     33  //!> typedef for the argument vector as input to the function
     34  typedef std::vector<argument_t> arguments_t;
     35  //!> typedef for a single result degree of freedom
     36  typedef double result_t;
     37  //!> typedef for the result vector as returned by the function
     38  typedef std::vector<result_t> results_t;
     39  //!> typedef for the components of the derivative
     40  typedef std::vector<result_t> derivative_components_t;
     41
    3342  /** Default constructor for class EmpiricalPotential.
    3443   *
     
    4049   */
    4150  virtual ~EmpiricalPotential() {}
     51
     52  /** Evaluates the function with the given \a arguments and the current set of
     53   * parameters.
     54   *
     55   * \param arguments set of arguments as input variables to the function
     56   * \return result of the function
     57   */
     58  virtual results_t operator()(const arguments_t &arguments) const=0;
     59
     60  /** Evaluates the derivative of the function with the given \a arguments
     61   * for each component.
     62   *
     63   * \param arguments set of arguments as input variables to the function
     64   * \return result vector containing the derivative with respect to each
     65   *         input comonent of the function
     66   */
     67  virtual derivative_components_t derivative(const arguments_t &arguments) const=0;
    4268};
    4369
  • src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp

    rdac89b1 r3ccea3  
    2727 *
    2828 */
    29 class ManyBodyPotential_Tersoff : public EmpiricalPotential, public FunctionModel
     29class ManyBodyPotential_Tersoff : virtual public EmpiricalPotential, virtual public FunctionModel
    3030{
     31  // some repeated typedefs to avoid ambiguities
     32  typedef FunctionModel::arguments_t arguments_t;
     33  typedef FunctionModel::result_t result_t;
     34  typedef FunctionModel::results_t results_t;
     35  typedef EmpiricalPotential::derivative_components_t derivative_components_t;
    3136private:
    3237  //!> cutoff_offset offset for cutoff parameter
     
    113118  derivative_components_t derivative(const arguments_t &arguments) const;
    114119
     120  /** Evaluates the derivative of the function with the given \a arguments
     121   * with respect to a specific parameter indicated by \a index.
     122   *
     123   * \param arguments set of arguments as input variables to the function
     124   * \param index derivative of which parameter
     125   * \return result vector containing the derivative with respect to the given
     126   *         input
     127   */
     128  virtual results_t paramter_derivative(const arguments_t &arguments, const size_t index) const=0;
     129
    115130private:
    116131  /** This function represents the cutoff \f$ f_C \f$.
  • src/Potentials/Specifics/PairPotential_Harmonic.hpp

    rdac89b1 r3ccea3  
    2424 *
    2525 */
    26 class PairPotential_Harmonic : public EmpiricalPotential, public FunctionModel
     26class PairPotential_Harmonic : virtual public EmpiricalPotential, virtual public FunctionModel
    2727{
     28  // some repeated typedefs to avoid ambiguities
     29  typedef FunctionModel::arguments_t arguments_t;
     30  typedef FunctionModel::result_t result_t;
     31  typedef FunctionModel::results_t results_t;
     32  typedef EmpiricalPotential::derivative_components_t derivative_components_t;
    2833public:
    2934  PairPotential_Harmonic();
     
    7378  derivative_components_t derivative(const arguments_t &arguments) const;
    7479
     80  /** Evaluates the derivative of the function with the given \a arguments
     81   * with respect to a specific parameter indicated by \a index.
     82   *
     83   * \param arguments set of arguments as input variables to the function
     84   * \param index derivative of which parameter
     85   * \return result vector containing the derivative with respect to the given
     86   *         input
     87   */
     88//  results_t parameter_derivative(const arguments_t &arguments, const size_t index) const;
     89
    7590private:
    7691  //!> the spring constant for the harmonic potential
Note: See TracChangeset for help on using the changeset viewer.