GQCP
|
#include <SimpleTransformation.hpp>
Public Types | |
using | Scalar = _Scalar |
using | DerivedTransformation = _DerivedTransformation |
using | Self = SimpleTransformation< Scalar, DerivedTransformation > |
using | JacobiRotationType = JacobiRotation |
using | OrbitalRotationGeneratorType = typename OrbitalRotationGeneratorTraits< DerivedTransformation >::OrbitalRotationGenerators |
![]() | |
using | Transformation = typename BasisTransformableTraits< _DerivedTransformation >::Transformation |
![]() | |
using | JacobiRotationType = typename JacobiRotatableTraits< _DerivedTransformation >::JacobiRotationType |
Public Member Functions | |
SimpleTransformation (const SquareMatrix< Scalar > &T) | |
SimpleTransformation (const OrbitalRotationGeneratorType &kappa) | |
size_t | numberOfOrbitals () const |
size_t | dimension () const |
const SquareMatrix< Scalar > & | matrix () const |
DerivedTransformation | adjoint () const |
DerivedTransformation | inverse () const |
bool | isUnitary (const double threshold=1.0e-12) const |
DerivedTransformation | transformed (const DerivedTransformation &T) const override |
DerivedTransformation | rotated (const JacobiRotationType &jacobi_rotation) const override |
![]() | |
virtual _DerivedTransformation | transformed (const Transformation &T) const=0 |
virtual void | transform (const Transformation &T) |
virtual _DerivedTransformation | rotated (const Transformation &U) const |
void | rotate (const Transformation &U) |
![]() | |
virtual _DerivedTransformation | rotated (const JacobiRotationType &jacobi_rotation) const=0 |
void | rotate (const JacobiRotationType &jacobi_rotation) |
Static Public Member Functions | |
static DerivedTransformation | FromJacobi (const JacobiRotation &jacobi_rotation, const size_t dim) |
static DerivedTransformation | Identity (const size_t dim) |
static DerivedTransformation | Random (const size_t dim) |
static DerivedTransformation | RandomUnitary (const size_t dim) |
static DerivedTransformation | Zero (const size_t dim) |
Protected Attributes | |
SquareMatrix< Scalar > | T |
A basis transformation that can be represented by a single transformation matrix.
In general, we adopt the convention outlined in (https://gqcg-res.github.io/knowdes/spinor-transformations.html), where the new orbitals' coefficients can be found in the respective column of the related transformation matrix.
This class is used as a base class for RTransformation
and GTransformation
, since they are both expressed using a single matrix, as opposed to UTransformation
, which uses separate transformation coefficients for alpha- and beta- matrices. The word 'simple' is used here as an antonym for 'compound'.
_Scalar | The scalar type used for a transformation coefficient: real or complex. |
_DerivedTransformation | The type of the transformation matrix that derives from this class, enabling CRTP and compile-time polymorphism. |
using GQCP::SimpleTransformation< _Scalar, _DerivedTransformation >::DerivedTransformation = _DerivedTransformation |
using GQCP::SimpleTransformation< _Scalar, _DerivedTransformation >::JacobiRotationType = JacobiRotation |
using GQCP::SimpleTransformation< _Scalar, _DerivedTransformation >::OrbitalRotationGeneratorType = typename OrbitalRotationGeneratorTraits<DerivedTransformation>::OrbitalRotationGenerators |
using GQCP::SimpleTransformation< _Scalar, _DerivedTransformation >::Scalar = _Scalar |
using GQCP::SimpleTransformation< _Scalar, _DerivedTransformation >::Self = SimpleTransformation<Scalar, DerivedTransformation> |
|
inline |
Construct a SimpleTransformation
from the transformation matrix that it encapsulates.
T | The transformation matrix that collects the expansion coefficients of the new basis (vectors) in the old basis as columns. |
|
inline |
Construct a SimpleTransformation
from a set of orbital rotation generators.
kappa | The orbital rotation generators from which a transformation so-called kappa matrix is constructed. |
|
inline |
|
inline |
|
inlinestatic |
Create a general transformation from Jacobi rotation. Note that we work with the (cos, sin, -sin, cos) definition.
jacobi_rotation | The Jacobi rotation. |
dim | The dimension of the resulting matrix. |
|
inlinestatic |
Create an identity transformation between two orbital bases.
dim | The dimension of the transformation matrix. |
|
inline |
|
inline |
Check if this transformation is unitary.
threshold | The threshold used to check for unitarity. |
|
inline |
|
inline |
|
inlinestatic |
Create a random transformation.
dim | The dimension of the transformation matrix. |
|
inlinestatic |
Create a random unitary transformation.
dim | The dimension of the transformation matrix. |
|
inlineoverride |
Apply the Jacobi rotation and return the result.
jacobi_rotation | The Jacobi rotation. |
|
inlineoverride |
Apply the basis transformation and return the result, which corresponds to the concatenation of two basis transformations.
T | The basis transformation. |
|
inlinestatic |
Create a zero transformation.
dim | The dimension of the transformation matrix. |
|
protected |