| [791a12] | 1 | /* | 
|---|
|  | 2 | * FourBodyPotential_Improper.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: Jul 10, 2013 | 
|---|
|  | 5 | *      Author: heber | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 | #ifndef FOURBODYPOTENTIAL_IMPROPER_HPP_ | 
|---|
|  | 9 | #define FOURBODYPOTENTIAL_IMPROPER_HPP_ | 
|---|
|  | 10 |  | 
|---|
|  | 11 | // include config.h | 
|---|
|  | 12 | #ifdef HAVE_CONFIG_H | 
|---|
|  | 13 | #include <config.h> | 
|---|
|  | 14 | #endif | 
|---|
|  | 15 |  | 
|---|
|  | 16 | #include "FourBodyPotential_Torsion.hpp" | 
|---|
|  | 17 |  | 
|---|
|  | 18 | class FourBodyPotential_ImproperTest; | 
|---|
|  | 19 | class PotentialFactory; | 
|---|
|  | 20 |  | 
|---|
|  | 21 | /** The improper potential is identical to the torsion potential with exception | 
|---|
|  | 22 | * of the way the angle is calculated. | 
|---|
|  | 23 | * | 
|---|
|  | 24 | * Hence, we only need to override function_theta(). | 
|---|
|  | 25 | * | 
|---|
|  | 26 | */ | 
|---|
|  | 27 | class FourBodyPotential_Improper : public FourBodyPotential_Torsion | 
|---|
|  | 28 | { | 
|---|
|  | 29 | //!> grant unit test access to internal parts | 
|---|
|  | 30 | friend class FourBodyPotential_ImproperTest; | 
|---|
|  | 31 | //!> grant PotentialFactory access to default cstor | 
|---|
|  | 32 | friend class PotentialFactory; | 
|---|
|  | 33 | // some repeated typedefs to avoid ambiguities | 
|---|
|  | 34 | typedef FunctionModel::result_t result_t; | 
|---|
|  | 35 | typedef FunctionModel::results_t results_t; | 
|---|
|  | 36 | private: | 
|---|
|  | 37 | /** Private default constructor. | 
|---|
|  | 38 | * | 
|---|
|  | 39 | * This prevents creation of potential without set ParticleTypes_t. | 
|---|
|  | 40 | * | 
|---|
|  | 41 | * \note PotentialFactory may use this default cstor | 
|---|
|  | 42 | * | 
|---|
|  | 43 | */ | 
|---|
|  | 44 | FourBodyPotential_Improper(); | 
|---|
|  | 45 |  | 
|---|
| [94453f1] | 46 | /** Returns the functor that converts argument_s into the | 
|---|
|  | 47 | * internal coordinate described by this potential function. | 
|---|
|  | 48 | * | 
|---|
|  | 49 | * \return coordinator functor | 
|---|
|  | 50 | */ | 
|---|
|  | 51 | Coordinator::ptr getCoordinator() const | 
|---|
|  | 52 | { return coordinator; } | 
|---|
|  | 53 |  | 
|---|
| [791a12] | 54 | public: | 
|---|
|  | 55 | FourBodyPotential_Improper(const ParticleTypes_t &_ParticleTypes); | 
|---|
|  | 56 | FourBodyPotential_Improper( | 
|---|
|  | 57 | const ParticleTypes_t &_ParticleTypes, | 
|---|
|  | 58 | const double _spring_constant, | 
|---|
|  | 59 | const double _equilibrium_distance); | 
|---|
|  | 60 | virtual ~FourBodyPotential_Improper() {} | 
|---|
|  | 61 |  | 
|---|
| [d5ca1a] | 62 | /** Getter for the graph specifying the binding model of the potential. | 
|---|
|  | 63 | * | 
|---|
| [9c793c] | 64 | * \return BindingModel ref of the binding model | 
|---|
| [d5ca1a] | 65 | */ | 
|---|
| [9c793c] | 66 | const BindingModel& getBindingModel() const | 
|---|
| [d5ca1a] | 67 | { return bindingmodel; } | 
|---|
|  | 68 |  | 
|---|
| [791a12] | 69 | private: | 
|---|
|  | 70 |  | 
|---|
|  | 71 | /** Return the token name of this specific potential. | 
|---|
|  | 72 | * | 
|---|
|  | 73 | *  We need to override the function in order to use a different static variable. | 
|---|
|  | 74 | * | 
|---|
|  | 75 | * \return token name of the potential | 
|---|
|  | 76 | */ | 
|---|
|  | 77 | const std::string& getToken() const | 
|---|
|  | 78 | { return improper_token; } | 
|---|
|  | 79 |  | 
|---|
|  | 80 | private: | 
|---|
|  | 81 | //!> static definitions of the parameter name for this potential | 
|---|
|  | 82 | static const ParameterNames_t ParameterNames; | 
|---|
|  | 83 |  | 
|---|
|  | 84 | //!> static token of this potential type | 
|---|
|  | 85 | static const std::string improper_token; | 
|---|
| [94453f1] | 86 |  | 
|---|
|  | 87 | //!> internal coordinator object for converting arguments_t | 
|---|
|  | 88 | static Coordinator::ptr coordinator; | 
|---|
| [d5ca1a] | 89 |  | 
|---|
|  | 90 | //!> binding model for this potential | 
|---|
| [9c793c] | 91 | const BindingModel bindingmodel; | 
|---|
| [791a12] | 92 | }; | 
|---|
|  | 93 |  | 
|---|
|  | 94 | #endif /* FOURBODYPOTENTIAL_IMPROPER_HPP_ */ | 
|---|