pyscf.pbc.tdscf package#

Submodules#

pyscf.pbc.tdscf.krhf module#

pyscf.pbc.tdscf.krhf.CIS#

alias of TDA

pyscf.pbc.tdscf.krhf.KTDA#

alias of TDA

class pyscf.pbc.tdscf.krhf.KTDBase(mf, kshift_lst=None)[source]#

Bases: TDBase

Attributes:
kshift_lstlist of integers

Each element in the list is the index of the k-point that represents the transition between k-points in the excitation coefficients. For excitation amplitude T_{ai}[k] at point k, the kshift connects orbital i at k and orbital a at k+kshift

check_sanity()[source]#

Check input of class/object attributes, check whether a class method is overwritten. It does not check the attributes which are prefixed with “_”. The return value of method set is the object itself. This allows a series of functions/methods to be executed in pipe.

conv_tol = 0.0001#
dump_flags(verbose=None)[source]#
get_nto(*args, **kwargs)#

Natural transition orbital analysis.

The natural transition density matrix between ground state and excited state \(Tia = \langle \Psi_{ex} | i a^\dagger | \Psi_0 \rangle\) can be transformed to diagonal form through SVD \(T = O \sqrt{\lambda} V^\dagger\). O and V are occupied and virtual natural transition orbitals. The diagonal elements \(\lambda\) are the weights of the occupied-virtual orbital pair in the excitation.

Ref: Martin, R. L., JCP, 118, 4775-4777

Note in the TDHF/TDDFT calculations, the excitation part (X) is interpreted as the CIS coefficients and normalized to 1. The de-excitation part (Y) is ignored.

Args:

tdobj : TDA, or TDHF, or TDDFT object

stateint

Excited state ID. state = 1 means the first excited state. If state < 0, state ID is counted from the last excited state.

Kwargs:
thresholdfloat

Above which the NTO coefficients will be printed in the output.

Returns:

A list (weights, NTOs). NTOs are natural orbitals represented in AO basis. The first N_occ NTOs are occupied NTOs and the rest are virtual NTOs.

pyscf.pbc.tdscf.krhf.KTDHF#

alias of TDHF

pyscf.pbc.tdscf.krhf.RPA#

alias of TDHF

class pyscf.pbc.tdscf.krhf.TDA(mf, kshift_lst=None)[source]#

Bases: KTDBase

gen_vind(mf=None, kshift=0)[source]#

Compute Ax

Kwargs:
kshiftinteger

The index of the k-point that represents the transition between k-points in the excitation coefficients.

get_ab(mf=None, kshift=0)[source]#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

Kwargs:
kshiftinteger

The index of the k-point that represents the transition between k-points in the excitation coefficients.

init_guess(mf, kshift, nstates=None)[source]#
kernel(x0=None)[source]#

TDA diagonalization solver

Args:
x0: list of init guess arrays for each k-shift specified in self.kshift_lst

[x0_1, x0_2, …, x0_nshift]

x0_i ~ (nstates, nkpts*nocc*nvir)

class pyscf.pbc.tdscf.krhf.TDHF(mf, kshift_lst=None)[source]#

Bases: KTDBase

gen_vind(mf, kshift=0)[source]#

[ A B ][X] [-B* -A*][Y]

get_ab(mf=None, kshift=0)#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

Kwargs:
kshiftinteger

The index of the k-point that represents the transition between k-points in the excitation coefficients.

get_precond(hdiag)#
init_guess(mf, kshift, nstates=None)[source]#
kernel(x0=None)[source]#

TDHF diagonalization with non-Hermitian eigenvalue solver

pyscf.pbc.tdscf.krhf.get_ab(mf, kshift=0)[source]#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

Kwargs:
kshiftinteger

The index of the k-point that represents the transition between k-points in the excitation coefficients.

pyscf.pbc.tdscf.krks module#

pyscf.pbc.tdscf.krks.KTDA#

alias of TDA

pyscf.pbc.tdscf.krks.KTDDFT#

alias of TDDFT

pyscf.pbc.tdscf.krks.RPA#

alias of TDDFT

class pyscf.pbc.tdscf.krks.TDA(mf, kshift_lst=None)[source]#

Bases: TDA

kernel(x0=None)[source]#

TDA diagonalization solver

Args:
x0: list of init guess arrays for each k-shift specified in self.kshift_lst

[x0_1, x0_2, …, x0_nshift]

x0_i ~ (nstates, nkpts*nocc*nvir)

class pyscf.pbc.tdscf.krks.TDDFT(mf, kshift_lst=None)[source]#

Bases: TDHF

kernel(x0=None)[source]#

TDHF diagonalization with non-Hermitian eigenvalue solver

pyscf.pbc.tdscf.kuhf module#

pyscf.pbc.tdscf.kuhf.CIS#

alias of TDA

pyscf.pbc.tdscf.kuhf.KTDA#

alias of TDA

pyscf.pbc.tdscf.kuhf.KTDHF#

alias of TDHF

pyscf.pbc.tdscf.kuhf.RPA#

alias of TDHF

class pyscf.pbc.tdscf.kuhf.TDA(mf, kshift_lst=None)[source]#

Bases: KTDBase

gen_vind(mf, kshift=0)[source]#

Compute Ax

Kwargs:
kshiftinteger

The index of the k-point that represents the transition between k-points in the excitation coefficients.

get_ab(mf=None, kshift=0)[source]#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

init_guess(mf, kshift, nstates=None)[source]#
kernel(x0=None)[source]#

TDA diagonalization solver

class pyscf.pbc.tdscf.kuhf.TDHF(mf, kshift_lst=None)[source]#

Bases: KTDBase

gen_vind(mf, kshift=0)[source]#
get_ab(mf=None, kshift=0)#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

get_precond(hdiag)#
init_guess(mf, kshift, nstates=None, wfnsym=None)[source]#
kernel(x0=None)[source]#

TDHF diagonalization with non-Hermitian eigenvalue solver

pyscf.pbc.tdscf.kuhf.get_ab(mf, kshift=0)[source]#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

Kwargs:
kshiftinteger

The index of the k-point that represents the transition between k-points in the excitation coefficients.

pyscf.pbc.tdscf.kuks module#

pyscf.pbc.tdscf.kuks.KTDA#

alias of TDA

pyscf.pbc.tdscf.kuks.KTDDFT#

alias of TDDFT

pyscf.pbc.tdscf.kuks.RPA#

alias of TDDFT

class pyscf.pbc.tdscf.kuks.TDA(mf, kshift_lst=None)[source]#

Bases: TDA

kernel(x0=None)[source]#

TDA diagonalization solver

class pyscf.pbc.tdscf.kuks.TDDFT(mf, kshift_lst=None)[source]#

Bases: TDHF

kernel(x0=None)[source]#

TDHF diagonalization with non-Hermitian eigenvalue solver

pyscf.pbc.tdscf.rhf module#

pyscf.pbc.tdscf.rhf.CIS#

alias of TDA

pyscf.pbc.tdscf.rhf.RPA#

alias of TDHF

class pyscf.pbc.tdscf.rhf.TDA(mf)[source]#

Bases: TDBase

gen_vind(mf=None)[source]#
init_guess(mf, nstates=None, wfnsym=None, return_symmetry=False)[source]#

Generate initial guess for TDA

Kwargs:
nstatesint

The number of initial guess vectors.

wfnsymint or str

The irrep label or ID of the wavefunction.

return_symmetrybool

Whether to return symmetry labels for initial guess vectors.

kernel(x0=None, nstates=None)[source]#

TDA diagonalization solver

class pyscf.pbc.tdscf.rhf.TDBase(mf)[source]#

Bases: TDBase

analyze(*args, **kwargs)#
get_ab(mf=None)[source]#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

get_nto(state=1, threshold=0.3, verbose=None)#

Natural transition orbital analysis.

The natural transition density matrix between ground state and excited state \(Tia = \langle \Psi_{ex} | i a^\dagger | \Psi_0 \rangle\) can be transformed to diagonal form through SVD \(T = O \sqrt{\lambda} V^\dagger\). O and V are occupied and virtual natural transition orbitals. The diagonal elements \(\lambda\) are the weights of the occupied-virtual orbital pair in the excitation.

Ref: Martin, R. L., JCP, 118, 4775-4777

Note in the TDHF/TDDFT calculations, the excitation part (X) is interpreted as the CIS coefficients and normalized to 1. The de-excitation part (Y) is ignored.

Args:

tdobj : TDA, or TDHF, or TDDFT object

stateint

Excited state ID. state = 1 means the first excited state. If state < 0, state ID is counted from the last excited state.

Kwargs:
thresholdfloat

Above which the NTO coefficients will be printed in the output.

Returns:

A list (weights, NTOs). NTOs are natural orbitals represented in AO basis. The first N_occ NTOs are occupied NTOs and the rest are virtual NTOs.

nuc_grad_method()[source]#
oscillator_strength(*args, **kwargs)#
transition_dipole(*args, **kwargs)#

Transition dipole moments in the length gauge

transition_magnetic_dipole(*args, **kwargs)#

Transition magnetic dipole moments (imaginary part only)

transition_magnetic_quadrupole(*args, **kwargs)#

Transition magnetic quadrupole moments (imaginary part only)

transition_octupole(*args, **kwargs)#

Transition octupole moments in the length gauge

transition_quadrupole(*args, **kwargs)#

Transition quadrupole moments in the length gauge

transition_velocity_dipole(*args, **kwargs)#

Transition dipole moments in the velocity gauge (imaginary part only)

transition_velocity_octupole(*args, **kwargs)#

Transition octupole moments in the velocity gauge (imaginary part only)

transition_velocity_quadrupole(*args, **kwargs)#

Transition quadrupole moments in the velocity gauge (imaginary part only)

class pyscf.pbc.tdscf.rhf.TDHF(mf)[source]#

Bases: TDBase

gen_vind(mf=None)#
init_guess(mf, nstates=None, wfnsym=None, return_symmetry=False)[source]#
kernel(x0=None, nstates=None)[source]#

TDHF diagonalization with non-Hermitian eigenvalue solver

pyscf.pbc.tdscf.rhf.TDRHF#

alias of TDHF

pyscf.pbc.tdscf.rhf.get_ab(mf)[source]#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

pyscf.pbc.tdscf.rks module#

class pyscf.pbc.tdscf.rks.CasidaTDDFT(mf)[source]#

Bases: TDHF

gen_vind(mf=None)#
init_guess(mf, nstates=None, wfnsym=None, return_symmetry=False)#

Generate initial guess for TDA

Kwargs:
nstatesint

The number of initial guess vectors.

wfnsymint or str

The irrep label or ID of the wavefunction.

return_symmetrybool

Whether to return symmetry labels for initial guess vectors.

kernel(x0=None, nstates=None)[source]#

TDDFT diagonalization solver

pyscf.pbc.tdscf.rks.TDDFTNoHybrid#

alias of CasidaTDDFT

pyscf.pbc.tdscf.rks.tddft(mf)[source]#

Driver to create TDDFT or CasidaTDDFT object

pyscf.pbc.tdscf.uhf module#

pyscf.pbc.tdscf.uhf.CIS#

alias of TDA

pyscf.pbc.tdscf.uhf.RPA#

alias of TDHF

class pyscf.pbc.tdscf.uhf.TDA(mf)[source]#

Bases: TDBase

gen_vind(mf=None)[source]#
get_ab(mf=None)[source]#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

init_guess(mf, nstates=None, wfnsym=None, return_symmetry=False)[source]#
kernel(x0=None, nstates=None)[source]#

TDA diagonalization solver

singlet = None#
class pyscf.pbc.tdscf.uhf.TDHF(mf)[source]#

Bases: TDBase

gen_vind(mf=None)#
get_ab(mf=None)#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Ref: Chem Phys Lett, 256, 454

init_guess(mf, nstates=None, wfnsym=None, return_symmetry=False)[source]#
kernel(x0=None, nstates=None)[source]#

TDHF diagonalization with non-Hermitian eigenvalue solver

singlet = None#
pyscf.pbc.tdscf.uhf.TDUHF#

alias of TDHF

pyscf.pbc.tdscf.uhf.get_ab(mf)[source]#

A and B matrices for TDDFT response function.

A[i,a,j,b] = delta_{ab}delta_{ij}(E_a - E_i) + (ai||jb) B[i,a,j,b] = (ai||bj)

Spin symmetry is considered in the returned A, B lists. List A has three items: (A_aaaa, A_aabb, A_bbbb). A_bbaa = A_aabb.transpose(2,3,0,1). B has three items: (B_aaaa, B_aabb, B_bbbb). B_bbaa = B_aabb.transpose(2,3,0,1).

pyscf.pbc.tdscf.uks module#

class pyscf.pbc.tdscf.uks.CasidaTDDFT(mf)[source]#

Bases: TDHF

gen_vind(mf=None)#
init_guess(mf, nstates=None, wfnsym=None, return_symmetry=False)#
kernel(x0=None, nstates=None)[source]#

TDDFT diagonalization solver

pyscf.pbc.tdscf.uks.TDDFTNoHybrid#

alias of CasidaTDDFT

pyscf.pbc.tdscf.uks.tddft(mf)[source]#

Driver to create TDDFT or CasidaTDDFT object

Module contents#

pyscf.pbc.tdscf.KTD(mf)#
pyscf.pbc.tdscf.KTDA(mf)[source]#
pyscf.pbc.tdscf.KTDDFT(mf)[source]#
pyscf.pbc.tdscf.KTDHF(mf)[source]#
pyscf.pbc.tdscf.TDA(mf)[source]#
pyscf.pbc.tdscf.TDDFT(mf)[source]#
pyscf.pbc.tdscf.TDHF(mf)[source]#