remove/replace extended ASCII characters from comments
This commit is contained in:
@ -2,9 +2,9 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c), Ilya Valuev 2005 All Rights Reserved.
|
* Copyright (c), Ilya Valuev 2005 All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Author : Ilya Valuev, MIPT, Moscow, Russia
|
* Author : Ilya Valuev, MIPT, Moscow, Russia
|
||||||
*
|
*
|
||||||
* Project : GridMD, ivutils
|
* Project : GridMD, ivutils
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
@ -69,11 +69,11 @@
|
|||||||
* Revision 1.11 2008/04/15 13:11:41 valuev
|
* Revision 1.11 2008/04/15 13:11:41 valuev
|
||||||
* Added antisymmetrized wave packets
|
* Added antisymmetrized wave packets
|
||||||
*
|
*
|
||||||
|
|
||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
/*r @file vector_3.h @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
/*r @file vector_3.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
# ifndef VECTOR_3_H
|
# ifndef VECTOR_3_H
|
||||||
|
|
||||||
@ -92,7 +92,6 @@
|
|||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifndef fmod
|
# ifndef fmod
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
# define fmod(a,b) ((a)-((long)((a)/(b))*(b)))
|
# define fmod(a,b) ((a)-((long)((a)/(b))*(b)))
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -104,8 +103,6 @@ typedef double vec_type;
|
|||||||
typedef float vec_type;
|
typedef float vec_type;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//e "infinitely" large number in Vector_3 sense
|
|
||||||
//r "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector_3
|
|
||||||
//# ifndef SINGLE_PRECISION
|
//# ifndef SINGLE_PRECISION
|
||||||
//# define VEC_INFTY 1.e20
|
//# define VEC_INFTY 1.e20
|
||||||
//# else
|
//# else
|
||||||
@ -113,8 +110,6 @@ typedef float vec_type;
|
|||||||
//# endif
|
//# endif
|
||||||
#define VEC_INFTY numeric_limits<vec_type>::max()
|
#define VEC_INFTY numeric_limits<vec_type>::max()
|
||||||
|
|
||||||
//e "infinitely" small number in Vector_3 sense (used for vector comparisons)
|
|
||||||
//r "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector_3 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
||||||
//# ifndef SINGLE_PRECISION
|
//# ifndef SINGLE_PRECISION
|
||||||
//# define VEC_ZERO 1.e-20
|
//# define VEC_ZERO 1.e-20
|
||||||
//# else
|
//# else
|
||||||
@ -122,11 +117,10 @@ typedef float vec_type;
|
|||||||
//# endif
|
//# endif
|
||||||
#define VEC_ZERO 512*numeric_limits<vec_type>::epsilon()
|
#define VEC_ZERO 512*numeric_limits<vec_type>::epsilon()
|
||||||
|
|
||||||
//r N-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> T, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
template <class T, const int N=3>
|
||||||
template <class T, const int N=3>
|
|
||||||
struct Vector_Nt {
|
struct Vector_Nt {
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
|
|
||||||
T v[N];
|
T v[N];
|
||||||
|
|
||||||
Vector_Nt(const T &a=0){
|
Vector_Nt(const T &a=0){
|
||||||
@ -134,7 +128,7 @@ struct Vector_Nt {
|
|||||||
v[i]=a;
|
v[i]=a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
explicit Vector_Nt(const T &a1, const T &a2) {
|
explicit Vector_Nt(const T &a1, const T &a2) {
|
||||||
if(N>0)v[0]=a1;
|
if(N>0)v[0]=a1;
|
||||||
if(N>1)v[1]=a2;
|
if(N>1)v[1]=a2;
|
||||||
@ -160,14 +154,12 @@ struct Vector_Nt {
|
|||||||
for (int i=0; i<N; i++) v[i]=v1[i];
|
for (int i=0; i<N; i++) v[i]=v1[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> it
|
|
||||||
template <class A>
|
template <class A>
|
||||||
void copy_to(A *beg) const {
|
void copy_to(A *beg) const {
|
||||||
for (int i=0; i<N; i++, ++beg)
|
for (int i=0; i<N; i++, ++beg)
|
||||||
*beg=v[i];
|
*beg=v[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline T& operator[](int i) const { return (T&)v[i]; };
|
inline T& operator[](int i) const { return (T&)v[i]; };
|
||||||
|
|
||||||
|
|
||||||
@ -177,14 +169,12 @@ struct Vector_Nt {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> a.
|
|
||||||
inline Vector_Nt& operator=(const T &a){
|
inline Vector_Nt& operator=(const T &a){
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
v[i]=a;
|
v[i]=a;
|
||||||
return *this;
|
return *this;
|
||||||
};
|
};
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> VEC_ZERO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline bool operator==(const Vector_Nt &vect) const{
|
inline bool operator==(const Vector_Nt &vect) const{
|
||||||
for (int i=0; i<N ;i++)
|
for (int i=0; i<N ;i++)
|
||||||
if(fabs(v[i]-vect.v[i])>VEC_ZERO)return false;
|
if(fabs(v[i]-vect.v[i])>VEC_ZERO)return false;
|
||||||
@ -208,8 +198,7 @@ struct Vector_Nt {
|
|||||||
result.v[i]=v[i]-vect.v[i];
|
result.v[i]=v[i]-vect.v[i];
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline T operator*(const Vector_Nt& vect) const {
|
inline T operator*(const Vector_Nt& vect) const {
|
||||||
T result=0;
|
T result=0;
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
@ -217,7 +206,6 @@ struct Vector_Nt {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline Vector_Nt operator*(const T &coeff) const {
|
inline Vector_Nt operator*(const T &coeff) const {
|
||||||
Vector_Nt result;
|
Vector_Nt result;
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
@ -226,7 +214,6 @@ struct Vector_Nt {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//e vector multiplication (N=3 only)
|
//e vector multiplication (N=3 only)
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline Vector_Nt operator%(const Vector_Nt &r) const{ //reserved for N specializations
|
inline Vector_Nt operator%(const Vector_Nt &r) const{ //reserved for N specializations
|
||||||
if(N==3){
|
if(N==3){
|
||||||
return Vector_Nt(v[1]*r.v[2]-v[2]*r.v[1],v[2]*r.v[0]-v[0]*r.v[2],v[0]*r.v[1]-v[1]*r.v[0]);
|
return Vector_Nt(v[1]*r.v[2]-v[2]*r.v[1],v[2]*r.v[0]-v[0]*r.v[2],v[0]*r.v[1]-v[1]*r.v[0]);
|
||||||
@ -234,10 +221,8 @@ struct Vector_Nt {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
|
||||||
// friend Vector_Nt operator*(T coeff,const Vector_Nt& vec);
|
// friend Vector_Nt operator*(T coeff,const Vector_Nt& vec);
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline Vector_Nt operator/(const T &coeff) const {
|
inline Vector_Nt operator/(const T &coeff) const {
|
||||||
Vector_Nt result;
|
Vector_Nt result;
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
@ -245,7 +230,6 @@ struct Vector_Nt {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> -1
|
|
||||||
inline Vector_Nt operator-() const {
|
inline Vector_Nt operator-() const {
|
||||||
Vector_Nt r;
|
Vector_Nt r;
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
@ -253,48 +237,41 @@ struct Vector_Nt {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline Vector_Nt& operator+=(const Vector_Nt &vect){
|
inline Vector_Nt& operator+=(const Vector_Nt &vect){
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
v[i]+=vect.v[i];
|
v[i]+=vect.v[i];
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline Vector_Nt& operator-=(const Vector_Nt &vect){
|
inline Vector_Nt& operator-=(const Vector_Nt &vect){
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
v[i]-=vect.v[i];
|
v[i]-=vect.v[i];
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline Vector_Nt& operator*=(const T &coeff){
|
inline Vector_Nt& operator*=(const T &coeff){
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
v[i]*=coeff;
|
v[i]*=coeff;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
inline Vector_Nt& operator/=(const T &coeff){
|
inline Vector_Nt& operator/=(const T &coeff){
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
v[i]/=coeff;
|
v[i]/=coeff;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
T norm2() const {
|
T norm2() const {
|
||||||
T result=0;
|
T result=0;
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
result+=v[i]*v[i];
|
result+=v[i]*v[i];
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
T norm() const {
|
T norm() const {
|
||||||
return sqrt(norm2());
|
return sqrt(norm2());
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> norm() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> newnorm).
|
|
||||||
T normalize(T newnorm=1.){
|
T normalize(T newnorm=1.){
|
||||||
T norm=this->norm();
|
T norm=this->norm();
|
||||||
if(norm>=VEC_ZERO){
|
if(norm>=VEC_ZERO){
|
||||||
@ -325,22 +302,14 @@ struct Vector_Nt {
|
|||||||
newnorm/=sqrt(fabs(result));
|
newnorm/=sqrt(fabs(result));
|
||||||
for (int i=0; i<N; i++)
|
for (int i=0; i<N; i++)
|
||||||
v[i]*=newnorm;
|
v[i]*=newnorm;
|
||||||
return result<0 ? VEC_INFTY : result;
|
return result<0 ? VEC_INFTY : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//e nearest image distance within rectangular cell (FOR DISTANCE MEASUREMENTS)
|
//e nearest image distance within rectangular cell (FOR DISTANCE MEASUREMENTS)
|
||||||
//e assumes that each coordinate absolute value is in the range [0,cell[i])
|
//e assumes that each coordinate absolute value is in the range [0,cell[i])
|
||||||
//e returned vector is in the range [-cell[i]/2,cell[i]/2)
|
//e returned vector is in the range [-cell[i]/2,cell[i]/2)
|
||||||
//e flags indicate the periodicity in specific directions: 0x1 for X, 0x2 for Y, 0x4 for Z
|
//e flags indicate the periodicity in specific directions: 0x1 for X, 0x2 for Y, 0x4 for Z
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
/*r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> rcell, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> *this <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> *this.\n
|
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> *this <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 3*3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
*this <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n
|
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
||||||
*/
|
|
||||||
Vector_Nt rcell1(const Vector_Nt &cell,int flags=0xffff) const{
|
Vector_Nt rcell1(const Vector_Nt &cell,int flags=0xffff) const{
|
||||||
Vector_Nt ret(*this);
|
Vector_Nt ret(*this);
|
||||||
int i;
|
int i;
|
||||||
@ -378,9 +347,6 @@ struct Vector_Nt {
|
|||||||
|
|
||||||
//e reduction to elementary cell [0, cell[i]) (FOR REDUCTION TO ELEMENTARY CELL)
|
//e reduction to elementary cell [0, cell[i]) (FOR REDUCTION TO ELEMENTARY CELL)
|
||||||
//e flags indicate the periodicity in specific directions: 0x1 for X, 0x2 for Y, 0x4 for Z
|
//e flags indicate the periodicity in specific directions: 0x1 for X, 0x2 for Y, 0x4 for Z
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>, <20><><EFBFBD> <20> rcell1, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *this <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
|
||||||
/*r <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
||||||
Vector_Nt rcell(const Vector_Nt &cell, int flags=0xffff) const {
|
Vector_Nt rcell(const Vector_Nt &cell, int flags=0xffff) const {
|
||||||
Vector_Nt ret(*this);
|
Vector_Nt ret(*this);
|
||||||
for (int i=0, flag=1; i<N; i++, flag<<=1) {
|
for (int i=0, flag=1; i<N; i++, flag<<=1) {
|
||||||
@ -406,9 +372,8 @@ struct Vector_Nt {
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ind
|
|
||||||
T maxcoord(int *ind=NULL) const {
|
T maxcoord(int *ind=NULL) const {
|
||||||
int im=0;
|
int im=0;
|
||||||
T vv=v[0];
|
T vv=v[0];
|
||||||
@ -452,7 +417,6 @@ struct Vector_Nt {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ind
|
|
||||||
T mincoord(int *ind=NULL) const {
|
T mincoord(int *ind=NULL) const {
|
||||||
int im=0;
|
int im=0;
|
||||||
T vv=v[0];
|
T vv=v[0];
|
||||||
@ -466,7 +430,6 @@ struct Vector_Nt {
|
|||||||
return vv;
|
return vv;
|
||||||
}
|
}
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (x,y,z)\\n
|
|
||||||
void print() const{
|
void print() const{
|
||||||
cout<< "(";
|
cout<< "(";
|
||||||
for(int i=0;i<N;i++){
|
for(int i=0;i<N;i++){
|
||||||
@ -505,7 +468,7 @@ typedef Vector_3 *Vector_3P;
|
|||||||
typedef Vector_Nt<vec_type, 2> Vector_2;
|
typedef Vector_Nt<vec_type, 2> Vector_2;
|
||||||
typedef Vector_2 *Vector_2P;
|
typedef Vector_2 *Vector_2P;
|
||||||
|
|
||||||
template <int N>
|
template <int N>
|
||||||
class Vector_N: public Vector_Nt<vec_type, N>{
|
class Vector_N: public Vector_Nt<vec_type, N>{
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -515,25 +478,18 @@ class Vector_N: public Vector_Nt<vec_type, N>{
|
|||||||
|
|
||||||
|
|
||||||
//e finds the maximum distance between vector pairs
|
//e finds the maximum distance between vector pairs
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> va1[i], va2[i], i=1..n
|
|
||||||
/*r @param va1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector_3[n]
|
|
||||||
@param n - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> va1 <20> va2
|
|
||||||
*/
|
|
||||||
vec_type dist_max(Vector_3 *va1,Vector_3 *va2,int n);
|
vec_type dist_max(Vector_3 *va1,Vector_3 *va2,int n);
|
||||||
|
|
||||||
//e finds average distance between vector pairs
|
//e finds average distance between vector pairs
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> va1[i], va2[i], i=1..n
|
|
||||||
vec_type dist_av(Vector_3 *va1,Vector_3 *va2,int n);
|
vec_type dist_av(Vector_3 *va1,Vector_3 *va2,int n);
|
||||||
|
|
||||||
//e finds the average difference norm between two vector sets of the same length
|
//e finds the average difference norm between two vector sets of the same length
|
||||||
/*e optionally gives the indexes for maximal and minimal difference
|
/*e optionally gives the indexes for maximal and minimal difference
|
||||||
va2 can be NULL, then the norm of va1 is used */
|
va2 can be NULL, then the norm of va1 is used */
|
||||||
|
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> va1[i] <20> va2[i], <20> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> min <20> max <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
vec_type diff_av(Vector_3 *va1,Vector_3 *va2,int n, int *minind=0, int *maxind=0);
|
vec_type diff_av(Vector_3 *va1,Vector_3 *va2,int n, int *minind=0, int *maxind=0);
|
||||||
|
|
||||||
//e finds suitable perpendicular to a vector
|
//e finds suitable perpendicular to a vector
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vAB
|
|
||||||
Vector_3 FindPerp(const Vector_3 &vAB);
|
Vector_3 FindPerp(const Vector_3 &vAB);
|
||||||
|
|
||||||
|
|
||||||
@ -551,19 +507,12 @@ Vector_3 GetIScopei(const Vector_3 *varr,int *indarr,int n,Vector_3* box_min,Vec
|
|||||||
// neue Funktionen
|
// neue Funktionen
|
||||||
|
|
||||||
//e clears vector array with optional integer index
|
//e clears vector array with optional integer index
|
||||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
/*r
|
|
||||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector_3 vec[] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> ind==NULL, <20><>
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> ind!=NULL, <20><> <20><><EFBFBD> i=0..n-1
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vec[ind[i]]
|
|
||||||
<EFBFBD><EFBFBD>. @ref indexed_calculations.
|
|
||||||
*/
|
|
||||||
void clear_vecarri(int n,Vector_3 *vec, int *ind=0);
|
void clear_vecarri(int n,Vector_3 *vec, int *ind=0);
|
||||||
|
|
||||||
//e reflects the vector ini+dir*t+0.5*force*t^2 to be inside a box limited by 0 and box sizes
|
//e reflects the vector ini+dir*t+0.5*force*t^2 to be inside a box limited by 0 and box sizes
|
||||||
//e changes dir according to the final state
|
//e changes dir according to the final state
|
||||||
//e fills crossed dir with bit flags corresponding directions along which the walls were crossed
|
//e fills crossed dir with bit flags corresponding directions along which the walls were crossed
|
||||||
Vector_3 Reflect(Vector_3& ini, double t,Vector_3 &dir, double *box, int flag=0x7, const Vector_3 &force=Vector_3());
|
Vector_3 Reflect(Vector_3& ini, double t,Vector_3 &dir, double *box, int flag=0x7, const Vector_3 &force=Vector_3());
|
||||||
|
|
||||||
|
|
||||||
inline vec_type vec_area(const Vector_2 &vect1, const Vector_2 &vect2) {
|
inline vec_type vec_area(const Vector_2 &vect1, const Vector_2 &vect2) {
|
||||||
|
|||||||
@ -1442,7 +1442,7 @@ public:
|
|||||||
|
|
||||||
/// \brief Colvar component: alternative path collective variable using geometry, variable s
|
/// \brief Colvar component: alternative path collective variable using geometry, variable s
|
||||||
/// For more information see https://plumed.github.io/doc-v2.5/user-doc/html/_p_a_t_h.html
|
/// For more information see https://plumed.github.io/doc-v2.5/user-doc/html/_p_a_t_h.html
|
||||||
/// Díaz Leines, G.; Ensing, B. Path Finding on High-Dimensional Free Energy Landscapes. Phys. Rev. Lett. 2012, 109 (2), 020601. https://doi.org/10.1103/PhysRevLett.109.020601.
|
/// Diaz Leines, G.; Ensing, B. Path Finding on High-Dimensional Free Energy Landscapes. Phys. Rev. Lett. 2012, 109 (2), 020601. https://doi.org/10.1103/PhysRevLett.109.020601.
|
||||||
class colvar::gspath
|
class colvar::gspath
|
||||||
: public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::S>
|
: public colvar::CartesianBasedPath, public GeometricPathCV::GeometricPathBase<cvm::atom_pos, cvm::real, GeometricPathCV::path_sz::S>
|
||||||
{
|
{
|
||||||
@ -1534,7 +1534,7 @@ public:
|
|||||||
/// \brief Colvar component: alternative path collective variable using geometry, variable s
|
/// \brief Colvar component: alternative path collective variable using geometry, variable s
|
||||||
/// Allow any combination of existing (scalar) CVs
|
/// Allow any combination of existing (scalar) CVs
|
||||||
/// For more information see https://plumed.github.io/doc-v2.5/user-doc/html/_p_a_t_h.html
|
/// For more information see https://plumed.github.io/doc-v2.5/user-doc/html/_p_a_t_h.html
|
||||||
/// Díaz Leines, G.; Ensing, B. Path Finding on High-Dimensional Free Energy Landscapes. Phys. Rev. Lett. 2012, 109 (2), 020601. https://doi.org/10.1103/PhysRevLett.109.020601.
|
/// Diaz Leines, G.; Ensing, B. Path Finding on High-Dimensional Free Energy Landscapes. Phys. Rev. Lett. 2012, 109 (2), 020601. https://doi.org/10.1103/PhysRevLett.109.020601.
|
||||||
class colvar::gspathCV
|
class colvar::gspathCV
|
||||||
: public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::S>
|
: public colvar::CVBasedPath, public GeometricPathCV::GeometricPathBase<colvarvalue, cvm::real, GeometricPathCV::path_sz::S>
|
||||||
{
|
{
|
||||||
|
|||||||
@ -65,7 +65,7 @@ class Soft : public BaseAtomic<numtyp, acctyp> {
|
|||||||
/// Special LJ values
|
/// Special LJ values
|
||||||
UCL_D_Vec<numtyp> sp_lj;
|
UCL_D_Vec<numtyp> sp_lj;
|
||||||
|
|
||||||
/// If atom type constants fit in shared memory, use fast kßernels
|
/// If atom type constants fit in shared memory, use fast kernels
|
||||||
bool shared_types;
|
bool shared_types;
|
||||||
|
|
||||||
/// Number of atom types
|
/// Number of atom types
|
||||||
|
|||||||
Reference in New Issue
Block a user