BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
forceFieldComponent.h
Go to the documentation of this file.
1 // -*- Mode: C++; tab-width: 2; -*-
2 // vi: set ts=2:
3 //
4 // $Id: forceFieldComponent.h,v 1.20.18.1 2007/03/25 21:23:49 oliver Exp $
5 //
6 
7 // Molecular Mechanics: general force field component class
8 
9 #ifndef BALL_MOLMEC_FORCEFIELDCOMPONENT_H
10 #define BALL_MOLMEC_FORCEFIELDCOMPONENT_H
11 
12 #ifndef BALL_COMMON_H
13 # include <BALL/common.h>
14 #endif
15 
16 #ifndef BALL_DATATYPE_STRING_H
17 # include <BALL/DATATYPE/string.h>
18 #endif
19 
20 #ifndef BALL_KERNEL_ATOM_H
21 # include <BALL/KERNEL/atom.h>
22 #endif
23 
24 namespace BALL
25 {
26  class ForceField;
27 
33  {
34 
35  friend class ForceField;
36 
37  public:
38 
42 
43  public:
44 
46 
47 
50 
53  ForceFieldComponent(ForceField& force_field);
54 
59  ForceFieldComponent(const ForceFieldComponent& force_field_component);
60 
63  virtual ~ForceFieldComponent();
64 
66 
70 
73  virtual bool setup()
74  throw(Exception::TooManyErrors);
75 
77 
80 
84  ForceField* getForceField() const;
85 
88  void setForceField(ForceField& force_field);
89 
92  void setName(const String& name);
93 
96  String getName() const;
97 
99  bool isEnabled() const { return enabled_;}
100 
102  void setEnabled(bool state) { enabled_ = state;}
103 
105 
108 
111  virtual double getEnergy() const;
112 
119  virtual double updateEnergy();
120 
127  virtual void updateForces();
128 
136  virtual void update()
137  throw(Exception::TooManyErrors);
138 
139  protected:
140 
142  /*_ @name Protected Attributes
143  */
144  //_@{
145 
146  /*_ The force field this component is registered in
147  */
148  ForceField* force_field_;
149 
150  /*_ The energy of the component
151  */
152  double energy_;
153 
154  private:
155 
156  //_@}
157  /*_ @name Private Attributes
158  */
159  //_@{
160 
161  /*_ The force field component name
162  */
163  String name_;
164 
165  bool enabled_;
166 
167  //_@}
168 
169  };
170 } // namespace BALL
171 
172 #endif // BALL_MOLMEC_FORCEFIELDCOMPONENT_H