Source code for moha.system.basis.gaussian_orbital

from scipy.special import factorial2 as fact2

import numpy as np
import copy

[docs]class GaussianOrbital(object): """Gaussian type orbital class. Attributes ---------- n_number : int Principal quantum number shell : list Angular momentum exp : scalar Primitive Gaussian exponent coef : scalar Primitive Gaussian coefficient norm : scalar Normalization factor origin : list Coordinate of the nuclei Methods ------- """ def __init__(self,type,atom_index,origin,n_number,shell=(),exps=[],coefs=[]): """Initialize the instance. Parameters ---------- n_number : int Principal quantum number shell : list Angular momentum exp : scalar Primitive Gaussian exponent coef : scalar Primitive Gaussian coefficient norm : scalar Normalization factor origin : list Coordinate of the nuclei """ self.type = type self.atom_index = atom_index self.origin = origin self.n_number = n_number self.shell = shell self.exps = exps self.coefs = coefs self.norm = self.normalize()
[docs] def normalize(self): """ method to calculate the normalization factors """ l,m,n = self.shell # self.norm is a list of length equal to number primitives norm = np.sqrt(np.power(2,2*(l+m+n)+1.5)* np.power(self.exps,l+m+n+1.5)/ fact2(2*l-1)/fact2(2*m-1)/ fact2(2*n-1)/np.power(np.pi,1.5)) return norm
[docs] @classmethod def spatial(cls,atom_index,origin,n_number=0,shell=(),exps=[],coefs=[]): orbital = cls('spatial',atom_index,origin,n_number,shell,exps,coefs) return orbital
[docs] @classmethod def spin(cls,atom_index,origin,spin,n_number=0,shell=(),exps=[],coefs=[]): orbital = cls('spin',atom_index,origin,n_number,shell,exps,coefs) orbital.spin = spin return orbital