File MolecularOrbitalsManipulation.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 LcaoUtil
class MolecularOrbitalsManipulation
#include <MolecularOrbitalsManipulation.h>

Class for transformations on molecular orbitals.

Public Static Functions

static void swapRestricted(MolecularOrbitals &orbitals, const std::vector<Swap> &swaps)
static void swapUnrestricted(MolecularOrbitals &orbitals, const std::vector<Swap> &alphaSwaps, const std::vector<Swap> &betaSwaps)
static void mixRestricted(MolecularOrbitals &orbitals, const std::vector<Mix> &mixes)
static void mixUnrestricted(MolecularOrbitals &orbitals, const std::vector<Mix> &alphaMixes, const std::vector<Mix> &betaMixes)
static MolecularOrbitals createRestrictedWithSwaps(const MolecularOrbitals &orbitals, const std::vector<Swap> &swaps)
static MolecularOrbitals createUnrestrictedWithSwaps(const MolecularOrbitals &orbitals, const std::vector<Swap> &alphaSwaps, const std::vector<Swap> &betaSwaps)
static MolecularOrbitals createRestrictedWithMixes(const MolecularOrbitals &orbitals, const std::vector<Mix> &mixes)
static MolecularOrbitals createUnrestrictedWithMixes(const MolecularOrbitals &orbitals, const std::vector<Mix> &alphaMixes, const std::vector<Mix> &betaMixes)

Private Static Functions

static void swapOrbitalCoefficients(Eigen::MatrixXd &coefficientMatrix, const std::vector<Swap> &swaps)
static void mixOrbitalCoefficients(Eigen::MatrixXd &coefficientMatrix, const std::vector<Mix> &mixes)
struct DeprecatedMix
#include <MolecularOrbitalsManipulation.h>

Struct to specify Mixing. Given two orbitals, they will be mixed for the generation of the density matrix. Thereby, lowLyingOrbitalNotToFill is going to be -1 (HOMO), -2, -3, -4, … and highLyingOrbitalToFill is going to be +1 (LUMO), +2, +3, +4, … angleInRad_ specifies the angle with which they will be mixed (0 doesn’t do anything, pi/2 swaps them).

Public Functions

DeprecatedMix(int lowLyingOrbitalNotToFill, int highLyingOrbitalToFill, double angleInrad)

Public Members

int lowLyingOrbitalNotToFill_
int highLyingOrbitalToFill_
double angleInRad_
struct DeprecatedSwap
#include <MolecularOrbitalsManipulation.h>

Struct to specify swaps. Given two orbitals, they will be switched for the generation of the density matrix. Thereby, lowLyingOrbitalNotToFill is going to be -1 (HOMO), -2, -3, -4, … and highLyingOrbitalToFill is going to be +1 (LUMO), +2, +3, +4, …

Public Functions

DeprecatedSwap(int lowLyingOrbitalNotToFill, int highLyingOrbitalToFill)

Public Members

int lowLyingOrbitalNotToFill_
int highLyingOrbitalToFill_
struct Mix
#include <MolecularOrbitalsManipulation.h>

Struct to specify Mixing. Given two orbitals, they will be mixed. angleInRad_ specifies the angle with which they will be mixed (0 doesn’t do anything, pi/2 swaps them).

Public Functions

Mix(int orbital1, int orbital2, double angleInrad)

Public Members

int orbital1_
int orbital2_
double angleInRad_
struct Swap
#include <MolecularOrbitalsManipulation.h>

Struct to specify swaps. Given two orbitals, they will be swapped.

Public Functions

Swap(int orbital1, int orbital2)

Public Members

int orbital1_
int orbital2_