qimpy.transport.material.Material
- class Material(*, wk, nk, n_bands, n_dim, process_grid, checkpoint_in=(None, ''))
Bases:
TreeNode
Base class / interface for material specifications.
- Parameters:
wk (float)
nk (int)
n_bands (int)
n_dim (int)
process_grid (ProcessGrid)
checkpoint_in (CheckpointPath)
- __init__(*, wk, nk, n_bands, n_dim, process_grid, checkpoint_in=(None, ''))
Initialize material parameters, typically used from a derived class.
- Parameters:
wk (float)
nk (int)
n_bands (int)
n_dim (int)
process_grid (ProcessGrid)
checkpoint_in (CheckpointPath)
Methods
Initialize material parameters, typically used from a derived class.
add_child
Construct child object self.`attr_name` of type cls.
add_child_one_of
Invoke add_child on one of several child options in args.
Return a function (or callable object) to calculate the distribution function at a contact with orientation n and specified keyword arguments.
Return list of observable names, specific to each material.
Return tensor of complex conjugates of all observables specific to each material.
Return a function (or callable object) to calculate reflections for a sequence of surface points with unit normals (Nsurf x 2).
Initialize spatially-dependent / parameter sweep values.
Return expectation value of observables, (Nx x Ny x No).
Return material contribution to drho/dt.
save_checkpoint
Save self and all children in hierarchy to cp_path.
Attributes
Effective velocity for each density-matrix component.
Communicator for reciprocal-space split over k
Division of k-points over MPI
slice of k on current process
number of k-points on current process
number of bands at each k
dimensionality of material (2 or 3)
Brillouin zone integration weight
nk_mine x n_dim wave vectors
nk_mine x n_bands energies
nk_mine x n_bands x n_dim velocities in plane
nk_mine x n_bands x n_bands initial density matrix
child_names
Names of attributes with child objects.
variant_name
Version of children having variants (if any)
- abstract get_contactor(n, **kwargs)
Return a function (or callable object) to calculate the distribution function at a contact with orientation n and specified keyword arguments. For an Nsurf x 2 tensor n, the function should take time t as an input and return the corresponding Nsurf x Nkbb_mine distribution function.
- Parameters:
n (Tensor)
- Return type:
Callable[[float], Tensor]
- abstract get_observable_names()
Return list of observable names, specific to each material.
- Return type:
list[str]
- abstract get_observables(t)
Return tensor of complex conjugates of all observables specific to each material. (No x Nkbb_mine) where No is number of observables.
- Parameters:
t (float)
- Return type:
Tensor
- abstract get_reflector(n)
Return a function (or callable object) to calculate reflections for a sequence of surface points with unit normals (Nsurf x 2). This function will be called with a Nghost x Nsurf x Nkbb_mine tensor, and the reflection should be calculated pointwise in real-space with output of the same dimensions.
- Parameters:
n (Tensor)
- Return type:
Callable[[Tensor], Tensor]
- abstract initialize_fields(rho, params, patch_id)
Initialize spatially-dependent / parameter sweep values. Using named properties params, containing tensors that should broadcast with the grid dimensions, update the density matrix rho to be spatially varying if necessary and calculate any named fields for use during dynamics. Note that the cached quantities must be associated with patch_id, as there may be multiple spatial domains (patches) sharing the same material.
- Parameters:
rho (Tensor)
params (dict[str, Tensor])
patch_id (int)
- Return type:
None
- measure_observables(rho, t)
Return expectation value of observables, (Nx x Ny x No).
- Parameters:
rho (Tensor)
t (float)
- Return type:
Tensor
- abstract rho_dot(rho, t, patch_id)
Return material contribution to drho/dt. This should include scattering and any coherent evolution in band space.
- Parameters:
rho (Tensor)
t (float)
patch_id (int)
- Return type:
Tensor
- E: Tensor
nk_mine x n_bands energies
- comm: Comm
Communicator for reciprocal-space split over k
- k: Tensor
nk_mine x n_dim wave vectors
- k_division: TaskDivision
Division of k-points over MPI
- k_mine: slice
slice of k on current process
- n_bands: int
number of bands at each k
- n_dim: int
dimensionality of material (2 or 3)
- nk_mine: int
number of k-points on current process
- rho0: Tensor
nk_mine x n_bands x n_bands initial density matrix
- property transport_velocity: Tensor
Effective velocity for each density-matrix component. This always has dimensions (nk_mine * (n_bands**2)) x 2.
- v: Tensor
nk_mine x n_bands x n_dim velocities in plane
- wk: float
Brillouin zone integration weight