Documentation

OrbitalIndex denotes a LCAO or AO index space.

\implementation OrbitalIndex is a label (wide-char string) whose

semantics follow a convention common in the molecular electronic structure. Thus it forms a basis for a language describing mathematical expressions encountered in this domain.

The labels consist of a single wchar , followed by an optional prime (specified as character Apostrophe (ASCII ' aka U+0027), Prime (U+2032) or Modifier Letter Prime (U+02B9); note that only the latter can be used as part of variable names in a Unicode-encoded C++ source code), followed by zero or more digits (can be regular or subscript), followed by an optional spin label. The non-digit characters must belong to the following dictionary:

Label base OrbitalIndex::Type Description
m,nocc(active and core) occupied
m', n'frozen_occcore occupied
i,j,k,lactive_occactive occupied
x, yactiveactive (e.g. active space in MR theories)
e,fuocc(active and frozen) unoccupied/virtual
e',f'frozen_uoccfrozen unoccupied/virtual
a,b,c,dactive_uoccactive unoccupied/virtual
p,q,r,sanyoccupied or unoccupied expressed in the orbital AO basis and/or virtual AO basis
p',q',r',s'totalanyunion of frozen_occ, corr_occ, active, active_uocc, and frozen_uocc; spans same space as any
a', b', c', d'other_uoccunoccupied orbitals orthogonal to any (in F12 theory denoted as CABS)
A', B', C', D'complete_uoccall unoccupied orbitals, i.e. union of uocc and other_uocc
P', Q', R', S'complete_anyunion of any and other_uocc
κ, λ, μ, νobsorbital AO basis, supports at least occupied orbitals, or more usually supports any and all of its subsets
εminminimal AO basis; supports core and valence orbitals only
Α, Β, Γ, Δvbsunoccupied/virtual AO basis, supports virt in dual-basis theories
Κ, Λ, Μ, Νdfbsdensity-fitting AO basis
α, β, γ, δabsauxiliary AO basis used in F12 theories
ρ, σ, τ, υribsunion of obs and abs, supports other_uocc, complete_uocc, and complete_any
Uubsunit basis used in periodic density-fitting in Coulomb term

Public Types

enum  Type {
  Type::frozen_occ = 1, Type::active = 2, Type::active_occ = 3, Type::occ = 4,
  Type::active_uocc = 5, Type::frozen_uocc = 6, Type::uocc = 7, Type::totalany = 8,
  Type::any = 9, Type::other_uocc = 10, Type::complete_uocc = 15, Type::complete_any = 19,
  Type::obs = -1, Type::vbs = -2, Type::abs = -3, Type::ribs = -4,
  Type::dfbs = -5, Type::ubs = -6, Type::min = -7
}
 
enum  Spin { Spin::Alpha = 1, Spin::Beta = -1, Spin::None = 0 }
 

Public Member Functions

 OrbitalIndex ()=default
 
 OrbitalIndex (OrbitalIndex const &)=default
 
 OrbitalIndex (OrbitalIndex &&)=default
 
OrbitalIndexoperator= (OrbitalIndex const &)=default
 
OrbitalIndexoperator= (OrbitalIndex &&)=default
 
template<typename String , typename = typename std::enable_if<not std::is_same< typename std::decay<String>::type, OrbitalIndex>::value>::type>
 OrbitalIndex (String &&symbol)
 constructs from a label More...
 
bool operator== (OrbitalIndex const &) const
 check equality by comparing index and spin More...
 
bool operator!= (OrbitalIndex const &) const
 check inequality by comparing index and spin More...
 
bool operator< (const OrbitalIndex &) const
 comparison by index and spin More...
 
bool operator> (const OrbitalIndex &) const
 comparison by index and spin More...
 
bool same (const OrbitalIndex &other) const
 if the same index and name More...
 
const Typeindex () const
 return index More...
 
const Spinspin () const
 return spin More...
 
const std::wstring & name () const
 return index name More...
 
bool is_ao () const
 if atomic orbital index More...
 
bool is_lcao () const
 if molecular orbital index More...
 
bool is_mo_in_obs () const
 return true if is mo in obs More...
 
bool is_mo_in_abs () const
 return true if is mo in abs More...
 
bool is_mo_in_ribs () const
 return true if is mo in ribs More...
 
OrbitalIndex mo_to_ao () const
 
std::string to_ta_expression () const
 converts this index's name to a TiledArray-compatible expression More...
 

Static Public Attributes

static const wchar_t frozen_occ_wchar [2] = {L'm', L'n'}
 
static const wchar_t active_occ_wchar [2] = {L'i', L'l'}
 
static const wchar_t occ_wchar [2] = {L'm', L'n'}
 
static const wchar_t active_wchar [2] = {L'x', L'y'}
 
static const wchar_t frozen_uocc_wchar [2] = {L'e', L'f'}
 
static const wchar_t active_uocc_wchar [2] = {L'a', L'd'}
 
static const wchar_t uocc_wchar [2] = {L'e', L'f'}
 
static const wchar_t totalany_wchar [2] = {L'p', L's'}
 
static const wchar_t any_wchar [2] = {L'p', L's'}
 
static const wchar_t other_uocc_wchar [2] = {L'a', L'd'}
 
static const wchar_t complete_uocc_wchar [2] = {L'A', L'D'}
 
static const wchar_t complete_any_wchar [2] = {L'P', L'S'}
 
static const wchar_t obs_wchar [4] = {L'κ', L'λ', L'μ', L'ν'}
 
static const wchar_t vbs_wchar [4] = {L'Α', L'Β', L'Γ', L'Δ'}
 
static const wchar_t dfbs_wchar [4] = {L'Κ', L'Λ', L'Μ', L'Ν'}
 
static const wchar_t abs_wchar [4] = {L'α', L'β', L'γ', L'δ'}
 
static const wchar_t ribs_wchar [4] = {L'ρ', L'σ', L'τ', L'υ'}
 
static const wchar_t ubs_wchar [1] = {L'U'}
 
static const wchar_t min_wchar [1] = {L'ε'}
 

Member Enumeration Documentation

◆ Spin

Spin types

Enumerator
Alpha 
Beta 
None 

◆ Type

Index types positive for molecular orbital index negative for atomic orbital index

Enumerator
frozen_occ 
active 
active_occ 
occ 
active_uocc 
frozen_uocc 
uocc 
totalany 
any 
other_uocc 
complete_uocc 
complete_any 
obs 
vbs 
abs 
ribs 
dfbs 
ubs 
min 

Constructor & Destructor Documentation

◆ OrbitalIndex() [1/3]

mpqc::lcao::OrbitalIndex::OrbitalIndex ( )
default

◆ OrbitalIndex() [2/3]

mpqc::lcao::OrbitalIndex::OrbitalIndex ( OrbitalIndex const &  )
default

◆ OrbitalIndex() [3/3]

mpqc::lcao::OrbitalIndex::OrbitalIndex ( OrbitalIndex &&  )
default

Member Function Documentation

◆ index()

const Type& mpqc::lcao::OrbitalIndex::index ( ) const
inline

return index

◆ is_ao()

bool mpqc::lcao::OrbitalIndex::is_ao ( ) const

if atomic orbital index

◆ is_lcao()

bool mpqc::lcao::OrbitalIndex::is_lcao ( ) const

if molecular orbital index

◆ is_mo_in_abs()

bool mpqc::lcao::OrbitalIndex::is_mo_in_abs ( ) const

return true if is mo in abs

◆ is_mo_in_obs()

bool mpqc::lcao::OrbitalIndex::is_mo_in_obs ( ) const

return true if is mo in obs

◆ is_mo_in_ribs()

bool mpqc::lcao::OrbitalIndex::is_mo_in_ribs ( ) const

return true if is mo in ribs

◆ mo_to_ao()

OrbitalIndex mpqc::lcao::OrbitalIndex::mo_to_ao ( ) const

Default MO to AO mapping othervir, allvir, allany -> ribs everything else -> obs

◆ name()

const std::wstring& mpqc::lcao::OrbitalIndex::name ( ) const
inline

return index name

◆ operator!=()

bool mpqc::lcao::OrbitalIndex::operator!= ( OrbitalIndex const &  other) const

check inequality by comparing index and spin

◆ operator<()

bool mpqc::lcao::OrbitalIndex::operator< ( const OrbitalIndex other) const

comparison by index and spin

◆ operator=() [1/2]

OrbitalIndex& mpqc::lcao::OrbitalIndex::operator= ( OrbitalIndex &&  )
default

◆ operator=() [2/2]

OrbitalIndex& mpqc::lcao::OrbitalIndex::operator= ( OrbitalIndex const &  )
default

◆ operator==()

bool mpqc::lcao::OrbitalIndex::operator== ( OrbitalIndex const &  other) const

check equality by comparing index and spin

◆ operator>()

bool mpqc::lcao::OrbitalIndex::operator> ( const OrbitalIndex other) const

comparison by index and spin

◆ same()

bool mpqc::lcao::OrbitalIndex::same ( const OrbitalIndex other) const

if the same index and name

◆ spin()

const Spin& mpqc::lcao::OrbitalIndex::spin ( ) const
inline

return spin

◆ to_ta_expression()

std::string mpqc::lcao::OrbitalIndex::to_ta_expression ( ) const

converts this index's name to a TiledArray-compatible expression

Conversion narrows the wide characters to human-readable (narrow) char-based string by:

  • converting greek letters with english equivalents
  • converting prime Unicode characters with the apostrophe char
    Returns
    a std::string that can be used to compose TA DistArray annotations

Member Data Documentation

◆ abs_wchar

const wchar_t mpqc::lcao::OrbitalIndex::abs_wchar = {L'α', L'β', L'γ', L'δ'}
static

◆ active_occ_wchar

const wchar_t mpqc::lcao::OrbitalIndex::active_occ_wchar = {L'i', L'l'}
static

◆ active_uocc_wchar

const wchar_t mpqc::lcao::OrbitalIndex::active_uocc_wchar = {L'a', L'd'}
static

◆ active_wchar

const wchar_t mpqc::lcao::OrbitalIndex::active_wchar = {L'x', L'y'}
static

◆ any_wchar

const wchar_t mpqc::lcao::OrbitalIndex::any_wchar = {L'p', L's'}
static

◆ complete_any_wchar

const wchar_t mpqc::lcao::OrbitalIndex::complete_any_wchar = {L'P', L'S'}
static

◆ complete_uocc_wchar

const wchar_t mpqc::lcao::OrbitalIndex::complete_uocc_wchar = {L'A', L'D'}
static

◆ dfbs_wchar

const wchar_t mpqc::lcao::OrbitalIndex::dfbs_wchar = {L'Κ', L'Λ', L'Μ', L'Ν'}
static

◆ frozen_occ_wchar

const wchar_t mpqc::lcao::OrbitalIndex::frozen_occ_wchar = {L'm', L'n'}
static

constant wchar_t used to map to Index

◆ frozen_uocc_wchar

const wchar_t mpqc::lcao::OrbitalIndex::frozen_uocc_wchar = {L'e', L'f'}
static

◆ min_wchar

const wchar_t mpqc::lcao::OrbitalIndex::min_wchar = {L'ε'}
static

◆ obs_wchar

const wchar_t mpqc::lcao::OrbitalIndex::obs_wchar = {L'κ', L'λ', L'μ', L'ν'}
static

◆ occ_wchar

const wchar_t mpqc::lcao::OrbitalIndex::occ_wchar = {L'm', L'n'}
static

◆ other_uocc_wchar

const wchar_t mpqc::lcao::OrbitalIndex::other_uocc_wchar = {L'a', L'd'}
static

◆ ribs_wchar

const wchar_t mpqc::lcao::OrbitalIndex::ribs_wchar = {L'ρ', L'σ', L'τ', L'υ'}
static

◆ totalany_wchar

const wchar_t mpqc::lcao::OrbitalIndex::totalany_wchar = {L'p', L's'}
static

◆ ubs_wchar

const wchar_t mpqc::lcao::OrbitalIndex::ubs_wchar = {L'U'}
static

◆ uocc_wchar

const wchar_t mpqc::lcao::OrbitalIndex::uocc_wchar = {L'e', L'f'}
static

◆ vbs_wchar

const wchar_t mpqc::lcao::OrbitalIndex::vbs_wchar = {L'Α', L'Β', L'Γ', L'Δ'}
static

The documentation for this class was generated from the following files: