source: src/Potentials/Specifics/FourBodyPotential_Improper.hpp@ 96af51

Fix_FitPotential_needs_atomicnumbers
Last change on this file since 96af51 was 0b7036, checked in by Frederik Heber <heber@…>, 9 years ago

Added getSubgraph() to all EmpiricalPotentials.

  • this encodes the specific bonding structure which this potential represents and which allows finding all(!) subgraphs within the fragment graph in the correct manner.
  • Property mode set to 100644
File size: 2.7 KB
RevLine 
[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
18class FourBodyPotential_ImproperTest;
19class 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 */
27class 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;
36private:
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
[0b7036]54protected:
55 /** Provides the specific subgraph for this specific empirical potential.
56 *
57 * \return subgraph encoded as boost::graph's adjacency_list
58 */
59 boost::adjacency_list<> getSubgraph() const;
60
[791a12]61public:
62 FourBodyPotential_Improper(const ParticleTypes_t &_ParticleTypes);
63 FourBodyPotential_Improper(
64 const ParticleTypes_t &_ParticleTypes,
65 const double _spring_constant,
66 const double _equilibrium_distance);
67 virtual ~FourBodyPotential_Improper() {}
68
69private:
70 /** Function to obtain angle between planes from distances.
71 *
72 */
73 result_t function_theta(
74 const double &r_ij,
75 const double &r_ik,
76 const double &r_il,
77 const double &r_jk,
78 const double &r_jl,
79 const double &r_kl
80 ) const;
81
82 /** Return the token name of this specific potential.
83 *
84 * We need to override the function in order to use a different static variable.
85 *
86 * \return token name of the potential
87 */
88 const std::string& getToken() const
89 { return improper_token; }
90
91private:
92 //!> static definitions of the parameter name for this potential
93 static const ParameterNames_t ParameterNames;
94
95 //!> static token of this potential type
96 static const std::string improper_token;
[94453f1]97
98 //!> internal coordinator object for converting arguments_t
99 static Coordinator::ptr coordinator;
[791a12]100};
101
102#endif /* FOURBODYPOTENTIAL_IMPROPER_HPP_ */
Note: See TracBrowser for help on using the repository browser.