BALL 1.5.0
Loading...
Searching...
No Matches
gradient.h
Go to the documentation of this file.
1// -*- Mode: C++; tab-width: 2; -*-
2// vi: set ts=2:
3//
4// $Id: gradient.h,v 1.20.20.1 2007/05/18 12:02:44 oliver Exp $
5//
6// Author:
7// Oliver Kohlbacher
8//
9
10// A conjugate gradient minimizer for geometry optimisation
11
12#ifndef BALL_MOLMEC_COMMON_GRADIENT_H
13#define BALL_MOLMEC_COMMON_GRADIENT_H
14
15#ifndef BALL_COMMON_H
16# include <BALL/common.h>
17#endif
18
19#ifndef BALL_MATHS_VECTOR3_H
20# include <BALL/MATHS/vector3.h>
21#endif
22
23#include <vector>
24
25namespace BALL
26{
27 class AtomVector;
28
44 : private std::vector<Vector3>
45 {
46 public:
47
49
50
53
54
56 typedef std::vector<Vector3>::iterator Iterator;
57
60 typedef std::vector<Vector3>::const_iterator ConstIterator;
61
64 typedef std::vector<Vector3>::reverse_iterator ReverseIterator;
65
68 typedef std::vector<Vector3>::const_reverse_iterator ConstReverseIterator;
69
70
72
75
79
82 Gradient(const AtomVector& atoms);
83
86 Gradient(const Gradient& gradient, bool deep = true);
87
90 virtual ~Gradient();
92
96
99 Gradient& operator = (const Gradient& rhs);
100
103 Gradient& operator = (const AtomVector& rhs);
104
107 void set(const Gradient& gradient);
108
111 void set(const AtomVector& atoms);
112
117 void negate();
118
122 void normalize();
123
127 double operator * (const Gradient& gradient) const;
129
133
134 /* Return the number of components of the gradient.
135 */
136 using std::vector<Vector3>::size;
137
138 /* Return the component for an atom.
139 */
140 //?????: GCC3 using std::vector<Vector3>::operator [];
141 const Vector3& operator [] (int i) const { return std::vector<Vector3>::operator [] (i); }
142 Vector3& operator [] (int i) { return std::vector<Vector3>::operator [] (i); }
143
147
150 bool isValid() const;
152
153
157
160 //?????: GCC3 using std::vector<Vector3>::begin;
161 Iterator begin() { return vector<Vector3>::begin(); }
162 ConstIterator begin() const { return vector<Vector3>::begin(); }
163
166 //?????: GCC3 using std::vector<Vector3>::end;
167 Iterator end() { return vector<Vector3>::end(); }
168 ConstIterator end() const { return vector<Vector3>::end(); }
169
172 //?????: GCC3 using std::vector<Vector3>::begin;
173 ReverseIterator rbegin() { return vector<Vector3>::rbegin(); }
174 ConstReverseIterator rbegin() const { return vector<Vector3>::rbegin(); }
175
178 //?????: GCC3 using std::vector<Vector3>::end;
179 ReverseIterator rend() { return vector<Vector3>::rend(); }
180 ConstReverseIterator rend() const { return vector<Vector3>::rend(); }
182
186
189 double norm;
190
193 double inv_norm;
194
197 double rms;
198
200
201 protected:
202
203 /*_ The validity flag.
204 */
205 bool valid_;
206
207 };
208 } // end of namespace BALL
209
210#endif // BALL_MOLMEC_COMMON_GRADIENT_H
#define BALL_CREATE_DEEP(name)
Definition create.h:26
STL namespace.
bool isValid() const
ConstReverseIterator rend() const
Definition gradient.h:180
ConstIterator end() const
Definition gradient.h:168
double inv_norm
Definition gradient.h:193
std::vector< Vector3 >::const_reverse_iterator ConstReverseIterator
Definition gradient.h:68
Iterator end()
Definition gradient.h:167
ReverseIterator rend()
Definition gradient.h:179
ConstIterator begin() const
Definition gradient.h:162
std::vector< Vector3 >::const_iterator ConstIterator
Definition gradient.h:60
Iterator begin()
Definition gradient.h:161
std::vector< Vector3 >::iterator Iterator
Definition gradient.h:56
std::vector< Vector3 >::reverse_iterator ReverseIterator
Definition gradient.h:64
ConstReverseIterator rbegin() const
Definition gradient.h:174
ReverseIterator rbegin()
Definition gradient.h:173
#define BALL_EXPORT