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: Material

Fermi-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

__init__

Initialize Fermi-circle model material.

accumulate_edges

Accumulate momentum-space advection edge contributions outL and outR into out, and return out for convenience.

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.

get_contactor

Return a function (or callable object) to calculate the distribution function at a contact with orientation n and specified keyword arguments.

get_observable_names

Return list of observable names, specific to each material.

get_observables

Return tensor of complex conjugates of all observables specific to each material.

get_reflector

Return a function (or callable object) to calculate reflections for a sequence of surface points with unit normals (Nsurf x 2).

initialize

Initialize shared material parameters (call from a derived class.)

initialize_fields

Initialize spatially-dependent / parameter sweep values.

measure_observables

Return expectation value of observables, (Nx x Ny x No).

pad_ghost

Pad by ghost zones for monetum-space advection.

rho_dot

Return material contribution to drho/dt.

rho_dot_collisions

save_checkpoint

Save self and all children in hierarchy to cp_path.

Attributes

transport_velocity

Effective velocity for each density-matrix component.

kF

Fermi wave-vector

vF

Fermi velocity

tau_inv_p

Momentum relaxation rate

tau_inv_ee

Electron internal scattering rate (momentum-conserving)

theta0

Initial angle in fermi circle grid

specularity

Specularity of reflection at all boundaries

r_c

Cyclotron radius for extenral magnetic field (disabled if infinity)

F_theta

Angular force in grid coordinates

advect

Momentum-space advection logic

comm

Communicator for reciprocal-space split over k

k_division

Division of k-points over MPI

k_mine

slice of k on current process

nk_mine

number of k-points on current process

n_bands

number of bands at each k

n_dim

dimensionality of material (2 or 3)

wk

Brillouin zone integration weight

k

nk_mine x n_dim wave vectors

E

nk_mine x n_bands energies

v

nk_mine x n_bands x n_dim velocities in plane

rho0

nk_mine x n_bands x n_bands initial density matrix

dt_max

maximum stable time-step (set to inf if not available)

child_names

Names of attributes with child objects.

variant_name

Version 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