qimpy.transport.material.FermiCircle
- class FermiCircle(*, kF, vF, N_theta, tau_p, tau_ee, r_c=inf, theta0=0.0, specularity=1.0, process_grid, checkpoint_in=(None, ''))
Bases:
MaterialFermi-circle representation suitable for graphene and 2DEGs.
- Parameters:
kF (float)
vF (float)
N_theta (int)
tau_p (float)
tau_ee (float)
r_c (float)
theta0 (float)
specularity (float)
process_grid (ProcessGrid)
checkpoint_in (CheckpointPath)
- __init__(*, kF, vF, N_theta, tau_p, tau_ee, r_c=inf, theta0=0.0, specularity=1.0, process_grid, checkpoint_in=(None, ''))
Initialize Fermi-circle model material.
- Parameters:
kF (float) – [Input file] Fermi wave vector in atomic units.
vF (float) – [Input file] Fermi velocity in atomic units.
N_theta (int) – [Input file] Number of k along Fermi circle.
theta0 (float) – [Input file] Angle of first k-point.
r_c (float) – [Input file] Cyclotron radius, corresponding to external magnetic field. If infinite, disable magentic field (default).
specularity (float) – [Input file] Specularity of reflection at all surfaces. Should be in the range of 0 for fully diffuse scattering, to 1 for perfectly specular reflection.
tau_p (float)
tau_ee (float)
process_grid (ProcessGrid)
checkpoint_in (CheckpointPath)
Methods
Initialize Fermi-circle model material.
Accumulate momentum-space advection edge contributions outL and outR into out, and return out for convenience.
add_childConstruct child object self.`attr_name` of type cls.
add_child_one_ofInvoke 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).
initializeInitialize shared material parameters (call from a derived class.)
Initialize spatially-dependent / parameter sweep values.
measure_observablesReturn expectation value of observables, (Nx x Ny x No).
Pad by ghost zones for monetum-space advection.
Return material contribution to drho/dt.
rho_dot_collisionssave_checkpointSave self and all children in hierarchy to cp_path.
Attributes
transport_velocityEffective velocity for each density-matrix component.
Fermi wave-vector
Fermi velocity
Momentum relaxation rate
Electron internal scattering rate (momentum-conserving)
Initial angle in fermi circle grid
Specularity of reflection at all boundaries
Cyclotron radius for extenral magnetic field (disabled if infinity)
Angular force in grid coordinates
Momentum-space advection logic
commCommunicator for reciprocal-space split over k
k_divisionDivision of k-points over MPI
k_mineslice of k on current process
nk_minenumber of k-points on current process
n_bandsnumber of bands at each k
n_dimdimensionality of material (2 or 3)
wkBrillouin zone integration weight
knk_mine x n_dim wave vectors
Enk_mine x n_bands energies
vnk_mine x n_bands x n_dim velocities in plane
rho0nk_mine x n_bands x n_bands initial density matrix
dt_maxmaximum stable time-step (set to inf if not available)
child_namesNames of attributes with child objects.
variant_nameVersion of children having variants (if any)
- accumulate_edges(out, outL, outR)
Accumulate momentum-space advection edge contributions outL and outR into out, and return out for convenience.
- Parameters:
out (Tensor)
outL (Tensor)
outR (Tensor)
- Return type:
Tensor
- 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]
- get_observable_names()
Return list of observable names, specific to each material.
- Return type:
list[str]
- 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
- 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]
- 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
- pad_ghost(rho)
Pad by ghost zones for monetum-space advection.
- Parameters:
rho (Tensor)
- Return type:
Tensor
- 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
- F_theta: float
Angular force in grid coordinates
- advect: ScriptModule
Momentum-space advection logic
- kF: float
Fermi wave-vector
- r_c: float
Cyclotron radius for extenral magnetic field (disabled if infinity)
- specularity: float
Specularity of reflection at all boundaries
- tau_inv_ee: float
Electron internal scattering rate (momentum-conserving)
- tau_inv_p: float
Momentum relaxation rate
- theta0: float
Initial angle in fermi circle grid
- vF: float
Fermi velocity