pyscfad.pbc.gto.cell.Cell.pbc_eval_gto#

Cell.pbc_eval_gto(eval_name, coords, comp=None, kpts=None, kpt=None, shls_slice=None, non0tab=None, ao_loc=None, out=None)[source]#

Evaluate PBC-AO function value on the given grids,

Parameters:
  • eval_name

    str:

    ==========================  =======================
    Function                    Expression
    ==========================  =======================
    "GTOval_sph"                \sum_T exp(ik*T) |AO>
    "GTOval_ip_sph"             nabla \sum_T exp(ik*T) |AO>
    "GTOval_cart"               \sum_T exp(ik*T) |AO>
    "GTOval_ip_cart"            nabla \sum_T exp(ik*T) |AO>
    ==========================  =======================
    

  • atm – int32 ndarray libcint integral function argument

  • bas – int32 ndarray libcint integral function argument

  • env – float64 ndarray libcint integral function argument

  • coords – 2D array, shape (N,3) The coordinates of the grids.

Kwargs:
shls_slice2-element list

(shl_start, shl_end). If given, only part of AOs (shl_start <= shell_id < shl_end) are evaluated. By default, all shells defined in cell will be evaluated.

non0tab2D bool array

mask array to indicate whether the AO values are zero. The mask array can be obtained by calling dft.gen_grid.make_mask()

cutofffloat

AO values smaller than cutoff will be set to zero. The default cutoff threshold is ~1e-22 (defined in gto/grid_ao_drv.h)

outndarray

If provided, results are written into this array.

Returns:

A list of 2D (or 3D) arrays to hold the AO values on grids. Each element of the list corresponds to a k-point and it has the shape (N,nao) Or shape (*,N,nao).

Examples:

>>> cell = pbc.gto.M(a=numpy.eye(3)*4, atom='He 1 1 1', basis='6-31g')
>>> coords = cell.get_uniform_grids([10,10,10])
>>> kpts = cell.make_kpts([3,3,3])
>>> ao_value = cell.pbc_eval_gto("GTOval_sph", coords, kpts)
>>> len(ao_value)
27
>>> ao_value[0].shape
(1000, 2)
>>> ao_value = cell.pbc_eval_gto("GTOval_ig_sph", coords, kpts, comp=3)
>>> print(ao_value.shape)
>>> len(ao_value)
27
>>> ao_value[0].shape
(3, 1000, 2)