File Second3D.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine

This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.

This header contains alias definitions defining which classes to use for the different degrees of derivatives.

namespace Utils
namespace AutomaticDifferentiation

Functions

Second3D operator*(double f, const Second3D &der)
Second3D sqrt(const Second3D &der)
Second3D exp(const Second3D &der)
Second3D arccos(const Second3D &der)
class Second3D
#include <Second3D.h>

Class representing values in three dimensions and allowing for the automatic calculation of first and second derivatives.

Public Functions

Second3D()

Constructor that takes no arguments and intializes value and derivatives to Zero.

Second3D(double v, double dx, double dy, double dz, double xx = 0, double yy = 0, double zz = 0, double xy = 0, double xz = 0, double yz = 0)

Constructor that takes the value and all derivatives as doubles.

Second3D opposite() const

Returns a Second3D object with first derivatives only multiplied by -1.

Return

Second3D

double value() const

Getter for the value.

Return

double Value.

void setValue(double v)

Setter for the value.

void setFirst3D(const Eigen::Ref<Eigen::Vector3d> d)

Setter for first derivative as Eigen::Vector3d.

void setZero()

Zero initializer.

Eigen::Vector3d deriv() const

Getter for first derivative.

Return

Eigen::Vector3d

void setXX(double v)

Setter for all the second derivatives.

XX refers to (dv)^2/(dx)^2, XY to (dv)^2/(dxdy), and so on…

void setYY(double v)
void setZZ(double v)
void setXY(double v)
void setYX(double v)
void setXZ(double v)
void setZX(double v)
void setYZ(double v)
void setZY(double v)
double dx() const

Getter for dv/dx derivative.

Return

double dv/dx

double dy() const

Getter for dv/dy derivative.

Return

double dv/dy

double dz() const

Getter for dv/dz derivative.

Return

double dv/dz

double XX() const

Getter for the second derivatives.

Return

double

double YY() const
double ZZ() const
double XY() const
double YX() const
double XZ() const
double ZX() const
double YZ() const
double ZY() const
Second3D operator-() const

Definition of all differentiation rules.

Second3D operator+() const
const Second3D &operator+=(const Second3D &rhs)
const Second3D &operator-=(const Second3D &rhs)
const Second3D &operator*=(const Second3D &rhs)
const Second3D &operator/=(const Second3D &rhs)
const Second3D &operator*=(double rhs)
const Second3D &operator/=(double rhs)
Second3D operator+(const Second3D &der) const
Second3D operator-(const Second3D &der) const
Second3D operator*(const Second3D &rhs) const
Second3D operator/(const Second3D &rhs) const
Second3D operator*(double f) const
Second3D operator/(double f) const

Private Members

double v_
double dx_
double dy_
double dz_
double xx_
double yy_
double zz_
double xy_
double xz_
double yz_