File ElectronicOccupation.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 LcaoUtils
class ElectronicOccupation
#include <ElectronicOccupation.h>

Class to hold information about which molecular orbitals are occupied. TODO: Implement fractional occupation ?

Public Functions

int numberRestrictedElectrons() const
int numberOccupiedRestrictedOrbitals() const
int numberAlphaElectrons() const
int numberBetaElectrons() const
bool isFilledUpFromTheBottom() const

Returns true if the electrons all occupy the lowest orbitals.

bool hasUnpairedRHFElectron() const
bool isRestricted() const
bool isUnrestricted() const
void makeUnrestricted()

From a restricted occupation, transform to an unrestricted occupation.

ElectronicOccupation toUnrestricted() const
const std::vector<int> &getFilledRestrictedOrbitals() const
const std::vector<int> &getFilledAlphaOrbitals() const
const std::vector<int> &getFilledBetaOrbitals() const
void fillLowestRestrictedOrbitalsWithElectrons(int nElectrons)
void fillLowestUnrestrictedOrbitals(int nAlphaElectrons, int nBetaElectrons)
void fillSpecifiedRestrictedOrbitals(std::vector<int> occupiedRestrictedOrbitals)
void fillSpecifiedUnrestrictedOrbitals(std::vector<int> occupiedAlphaOrbitals, std::vector<int> occupiedBetaOrbitals)

Private Functions

void reset()
void checkWhetherFilledFromBottom() const
std::vector<int> generateOccupiedArrayFromNumberOfOccupiedOrbitals(int nOrbitals) const

Private Members

bool restricted_ = false
int nRestrictedElectrons_ = 0
int nAlphaElectrons_ = 0
int nBetaElectrons_ = 0
bool hasUnpairedElectron_ = false
bool specifiedWithNumberElectrons_ = false
bool specifiedWithOrbitals_ = false
std::vector<int> filledRestrictedOrbitals_
std::vector<int> filledAlphaOrbitals_
std::vector<int> filledBetaOrbitals_