12#include <util/accumulators/setToZero.h>
64 template <
int D,
typename T>
258 template <
class Archive>
259 void serialize(Archive& ar,
const unsigned int version);
264 static const int Width = 25;
267 static const int Precision = 17;
283 template <
int D,
typename T>
289 for (
int i = 0; i < D; ++i) {
290 value += v1[i]*v2[i];
302 template <
int D,
typename T>
316 template <
int D,
typename T>
323 template <
int D,
typename T>
326 for (
int i = 0; i < D; ++i) {
327 elem_[i] = v.elem_[i];
334 template <
int D,
typename T>
337 for (
int i = 0; i < D; ++i) {
345 template <
int D,
typename T>
348 for (
int i = 0; i < D; ++i) {
356 template <
int D,
typename T>
359 for (
int i = 0; i < D; ++i) {
360 elem_[i] = v.elem_[i];
368 template <
int D,
typename T>
371 for (
int i = 0; i < D; ++i) {
380 template <
int D,
typename T>
383 for (
int i = 0; i < D; ++i) {
392 template <
int D,
typename T>
395 for (
int i = 0; i < D; ++i) {
396 elem_[i] += dv.elem_[i];
403 template <
int D,
typename T>
406 for (
int i = 0; i < D; ++i) {
407 elem_[i] -= dv.elem_[i];
414 template <
int D,
typename T>
417 for (
int i = 0; i < D; ++i) {
425 template <
int D,
typename T>
428 for (
int i = 0; i < D; ++i) {
436 template <
int D,
typename T>
439 for (
int i = 0; i < D; ++i) {
447 template <
int D,
typename T>
458 template <
int D,
typename T>
471 template <
int D,
typename T>
476 for (
int i = 0; i < D; ++i) {
477 elem_[i] = v1.elem_[i] + v2.elem_[i];
488 template <
int D,
typename T>
492 for (
int i = 0; i < D; ++i) {
493 elem_[i] = v1.elem_[i] - v2.elem_[i];
503 template <
int D,
typename T>
507 for (
int i = 0; i < D; ++i) {
508 elem_[i] = v.elem_[i]*s;
518 template <
int D,
typename T>
522 for (
int i = 0; i < D; ++i) {
523 elem_[i] = -v.elem_[i];
533 template <
int D,
typename T>
537 for (
int i = 0; i < D; ++i) {
538 elem_[i] = -elem_[i];
546 template <
int D,
typename T>
547 template <
class Archive>
551 for (
int i = 0; i < D; ++i) {
A Vec<D, T><D,T> is a D-component vector with elements of type T.
Vec< D, T > & subtract(const Vec< D, T > &v1, const Vec< D, T > &v2)
Subtract vector v2 from v1.
const T & operator[](int i) const
Return one Cartesian element by value.
Vec()
Default constructor.
Vec< D, T > & negate()
Negate all elements of this vector.
void operator*=(T s)
Multiply this vector by scalar s.
void operator+=(const Vec< D, T > &dv)
Add vector dv to this vector.
Vec< D, T > & multiply(const Vec< D, T > &v, T s)
Multiply a vector v by a scalar s.
Vec< D, T > & add(const Vec< D, T > &v1, const Vec< D, T > &v2)
Add vectors v1 and v2.
Vec< D, T > & operator=(const Vec< D, T > &v)
Copy assignment.
Vec< D, T > & setToZero()
Set all elements to zero.
void serialize(Archive &ar, const unsigned int version)
Serialize to/from an archive.
Vec< D, T > & negate(const Vec< D, T > &v)
Return negative of vector v.
void operator-=(const Vec< D, T > &dv)
Subtract vector dv from this vector.
File containing preprocessor macros for error handling.
C++ namespace for polymer self-consistent field theory (PSCF).
T dot(Vec< D, T > const &v1, Vec< D, T > const &v2)
Return dot product of two vectors.
Utility classes for scientific computation.
Rational operator+(Rational const &a, Rational const &b)
Compute sum of two rationals.
void setToZero(int &value)
Set an int variable to zero.