Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

colvarvalue.h File Reference

#include "colvarmodule.h"

Go to the source code of this file.

Classes

class  colvarvalue
 Value of a collective variable: this is a metatype which can be set at runtime. By default it is set to be a scalar number, and can be treated like that in all operations (this is done by most implementations). More...

Functions

colvarvalue operator+ (colvarvalue const &x1, colvarvalue const &x2)
colvarvalue operator- (colvarvalue const &x1, colvarvalue const &x2)
colvarvalue operator * (cvm::real const &a, colvarvalue const &x)
colvarvalue operator * (colvarvalue const &x, cvm::real const &a)
colvarvalue operator/ (colvarvalue const &x, cvm::real const &a)
cvm::real operator * (colvarvalue const &x1, colvarvalue const &x2)
std::ostream & operator<< (std::ostream &os, colvarvalue const &x)
std::ostream & operator<< (std::ostream &os, std::vector< colvarvalue > const &v)
std::istream & operator>> (std::istream &is, colvarvalue &x)


Function Documentation

cvm::real operator * colvarvalue const &  x1,
colvarvalue const &  x2
[inline]
 

Definition at line 608 of file colvarvalue.h.

References colvarvalue::check_types(), colvarmodule::quaternion::inner(), colvarvalue::quaternion_value, colvarvalue::real_value, colvarvalue::rvector_value, colvarvalue::type_checking(), colvarvalue::undef_op(), and colvarvalue::value_type.

00610 {
00611   if (colvarvalue::type_checking())
00612     colvarvalue::check_types (x1, x2);
00613 
00614   switch (x1.value_type) {
00615   case colvarvalue::type_scalar:
00616     return (x1.real_value * x2.real_value);
00617   case colvarvalue::type_vector:
00618   case colvarvalue::type_unitvector:
00619     return (x1.rvector_value * x2.rvector_value);
00620   case colvarvalue::type_quaternion:
00621     // the "*" product is the quaternion product, here the inner
00622     // member function is used instead
00623     return (x1.quaternion_value.inner (x2.quaternion_value));
00624   case colvarvalue::type_notset:
00625   default:
00626     x1.undef_op();
00627     return 0.0;
00628   };
00629 }

colvarvalue operator * colvarvalue const &  x,
cvm::real const &  a
[inline]
 

Definition at line 565 of file colvarvalue.h.

References colvarvalue::quaternion_value, colvarvalue::real_value, colvarvalue::rvector_value, colvarvalue::undef_op(), and colvarvalue::value_type.

00567 {
00568   switch (x.value_type) {
00569   case colvarvalue::type_scalar:
00570     return colvarvalue (x.real_value * a);
00571   case colvarvalue::type_vector:
00572     return colvarvalue (x.rvector_value * a);
00573   case colvarvalue::type_unitvector:
00574     return colvarvalue (x.rvector_value * a,
00575                         colvarvalue::type_unitvector);
00576   case colvarvalue::type_quaternion:
00577     return colvarvalue (x.quaternion_value * a);
00578   case colvarvalue::type_notset:
00579   default:
00580     x.undef_op();
00581     return colvarvalue (colvarvalue::type_notset);
00582   }
00583 }

colvarvalue operator * cvm::real const &  a,
colvarvalue const &  x
[inline]
 

Definition at line 545 of file colvarvalue.h.

References colvarvalue::quaternion_value, colvarvalue::real_value, colvarvalue::rvector_value, colvarvalue::undef_op(), and colvarvalue::value_type.

00547 {
00548   switch (x.value_type) {
00549   case colvarvalue::type_scalar:
00550     return colvarvalue (a * x.real_value);
00551   case colvarvalue::type_vector:
00552     return colvarvalue (a * x.rvector_value);
00553   case colvarvalue::type_unitvector:
00554     return colvarvalue (a * x.rvector_value,
00555                         colvarvalue::type_unitvector);
00556   case colvarvalue::type_quaternion:
00557     return colvarvalue (a * x.quaternion_value);
00558   case colvarvalue::type_notset:
00559   default:
00560     x.undef_op();
00561     return colvarvalue (colvarvalue::type_notset);
00562   }
00563 }

colvarvalue operator+ colvarvalue const &  x1,
colvarvalue const &  x2
[inline]
 

Definition at line 497 of file colvarvalue.h.

References colvarvalue::check_types(), colvarvalue::quaternion_value, colvarvalue::real_value, colvarvalue::rvector_value, colvarvalue::type_checking(), colvarvalue::undef_op(), and colvarvalue::value_type.

00499 {
00500   if (colvarvalue::type_checking())
00501     colvarvalue::check_types (x1, x2);
00502 
00503   switch (x1.value_type) {
00504   case colvarvalue::type_scalar:
00505     return colvarvalue (x1.real_value + x2.real_value);
00506   case colvarvalue::type_vector:
00507     return colvarvalue (x1.rvector_value + x2.rvector_value);
00508   case colvarvalue::type_unitvector:
00509     return colvarvalue (x1.rvector_value + x2.rvector_value,
00510                         colvarvalue::type_unitvector);
00511   case colvarvalue::type_quaternion:
00512     return colvarvalue (x1.quaternion_value + x2.quaternion_value);
00513   case colvarvalue::type_notset:
00514   default:
00515     x1.undef_op();
00516     return colvarvalue (colvarvalue::type_notset);
00517   };
00518 }

colvarvalue operator- colvarvalue const &  x1,
colvarvalue const &  x2
[inline]
 

Definition at line 520 of file colvarvalue.h.

References colvarvalue::check_types(), colvarvalue::quaternion_value, colvarvalue::real_value, colvarvalue::rvector_value, colvarvalue::type_checking(), colvarvalue::undef_op(), and colvarvalue::value_type.

00522 {
00523   if (colvarvalue::type_checking())
00524     colvarvalue::check_types (x1, x2);
00525 
00526   switch (x1.value_type) {
00527   case colvarvalue::type_scalar:
00528     return colvarvalue (x1.real_value - x2.real_value);
00529   case colvarvalue::type_vector:
00530     return colvarvalue (x1.rvector_value - x2.rvector_value);
00531   case colvarvalue::type_unitvector:
00532     return colvarvalue (x1.rvector_value - x2.rvector_value,
00533                         colvarvalue::type_unitvector);
00534   case colvarvalue::type_quaternion:
00535     return colvarvalue (x1.quaternion_value - x2.quaternion_value);
00536   default:
00537     x1.undef_op();
00538     return colvarvalue (colvarvalue::type_notset);
00539   };
00540 }

colvarvalue operator/ colvarvalue const &  x,
cvm::real const &  a
[inline]
 

Definition at line 585 of file colvarvalue.h.

References colvarvalue::quaternion_value, colvarvalue::real_value, colvarvalue::rvector_value, colvarvalue::undef_op(), and colvarvalue::value_type.

00587 {
00588   switch (x.value_type) {
00589   case colvarvalue::type_scalar:
00590     return colvarvalue (x.real_value / a);
00591   case colvarvalue::type_vector:
00592     return colvarvalue (x.rvector_value / a);
00593   case colvarvalue::type_unitvector:
00594     return colvarvalue (x.rvector_value / a,
00595                         colvarvalue::type_unitvector);
00596   case colvarvalue::type_quaternion:
00597     return colvarvalue (x.quaternion_value / a);
00598   case colvarvalue::type_notset:
00599   default:
00600     x.undef_op();
00601     return colvarvalue (colvarvalue::type_notset);
00602   }
00603 }

std::ostream& operator<< std::ostream &  os,
std::vector< colvarvalue > const &  v
 

Definition at line 212 of file colvarvalue.C.

00213 {
00214   for (size_t i = 0; i < v.size(); i++) os << v[i];
00215   return os;
00216 }

std::ostream& operator<< std::ostream &  os,
colvarvalue const &  x
 

Definition at line 195 of file colvarvalue.C.

References colvarvalue::quaternion_value, colvarvalue::real_value, colvarvalue::rvector_value, and colvarvalue::type().

00196 {
00197   switch (x.type()) {
00198   case colvarvalue::type_scalar:
00199     os << x.real_value; break;
00200   case colvarvalue::type_vector:
00201   case colvarvalue::type_unitvector:
00202     os << x.rvector_value; break;
00203   case colvarvalue::type_quaternion:
00204     os << x.quaternion_value; break;
00205   case colvarvalue::type_notset:
00206     os << "not set"; break;
00207   }
00208   return os;
00209 }

std::istream& operator>> std::istream &  is,
colvarvalue x
 

Definition at line 219 of file colvarvalue.C.

References colvarvalue::apply_constraints(), colvarmodule::fatal_error(), colvarvalue::quaternion_value, colvarvalue::real_value, colvarvalue::rvector_value, colvarvalue::type(), and colvarvalue::undef_op().

00220 {
00221   if (x.type() == colvarvalue::type_notset) {
00222     cvm::fatal_error ("Trying to read from a stream a colvarvalue, "
00223                       "which has not yet been assigned a data type.\n");
00224   }
00225 
00226   switch (x.type()) {
00227   case colvarvalue::type_scalar:
00228     is >> x.real_value; 
00229     break;
00230   case colvarvalue::type_vector:
00231   case colvarvalue::type_unitvector:
00232     is >> x.rvector_value; 
00233     break;
00234   case colvarvalue::type_quaternion:
00235     is >> x.quaternion_value;
00236     break;
00237   default:
00238     x.undef_op();
00239   }
00240   x.apply_constraints();
00241   return is;
00242 }


Generated on Mon Nov 23 04:59:26 2009 for NAMD by  doxygen 1.3.9.1