medypt.imt

Class for simulating mesoscopic dynamics of insulator-metal transitions in materials.

Classes

IMTModel

Class for simulating mesoscopic dynamics of insulator-metal transitions in materials.

Module Contents

class medypt.imt.IMTModel

Bases: medypt.model.ModelBase

Class for simulating mesoscopic dynamics of insulator-metal transitions in materials.

The names of the fields are:

  • 'op': Order parameter (vector field)

  • 'u': Displacement (vector field)

  • 'ge': Reduced chemical potential for electrons (scalar field). Equivalent to specifying electron density. For definition, see note.

  • 'gh': Reduced chemical potential for holes (scalar field). Equivalent to specifying hole density. For definition, see note.

  • 'phi': Electrical potential (scalar field)

  • 'T': Temperature (scalar field)

  • 'gd': Reduced chemical potential for neutral defects (scalar field).

  • 'gdi': Reduced chemical potential for ionized defects (scalar field). Combined with 'gd' to determine both neutral and ionized defect density.

  • 'j0': Helper real-element field representing the average outward current density on the boundary tagged by 0. Boundary current is j0 multiplied by the area of the boundary. If you need to use boundary current in defining your problem, make sure to tag the corresponding boundary with 0 in the mesh.

Units used in this class are:

  • Length: nm

  • Time: ns

  • Energy: eV (temperature absorbs the Boltzmann constant and is also in this unit)

  • Charge: e (positive elementary charge)

Note

ge = (mu_e - charge_gap(op) / 2 - gap_center(op) + e phi) / T, gh = (mu_h - charge_gap(op) / 2 + gap_center(op) - e phi) / T, where mu_e and mu_h are the electron and hole quasi-chemical potentials, respectively. The chemical potential and the electronic energy (including the electrostatic energy) share the same reference level E_ref which will cancel out. The expressions of ge and gh imply that phi = 0 corresponds to the intrinsic situation free of electrostatic influence, i.e., the system is moved infinitely far away from any charges. This means that the reference point of phi itself can be considered to be the infinitly far point away from the system (the most common choice in electrodynamics), regardless of the choice of E_ref. Hence the grounded boundary condition corresponds to phi = 0 as usual.

params

A dictonary defining physical parameters. Contents include:

  • 'stiffness' (array-like, eV / nm^3): Stiffness tensor. 1D array-like (containing Young’s modulus and Poisson’s ratio: isotropic) or 2D array-like (full tensor in Voigt notation)

  • 'e_eff_mass' (float, dimensionless): Electron effective mass devided by free electron mass

  • 'h_eff_mass' (float, dimensionless): Hole effective mass devided by free electron mass

  • 'therm_expan_coeff' (float | array-like, eV^-1): Thermal expansion coefficient. Scalar (isotropic) or 1D array-like (full vector in Voigt notation)

  • 'therm_expan_Tref' (float, eV): Reference temperature for thermal expansion

  • 'op_relax_rate_const' (float | array-like, nm^3 / (eV ns)): Order-parameter relaxation rate constant. Scalar (isotropic) or 2D array-like (full tensor)

  • 'e_mobility' (float | array-like, nm^2 / (V ns)): Electron mobility. Scalar (isotropic) or 2D array-like (full tensor)

  • 'h_mobility' (float | array-like, nm^2 / (V ns)): Hole mobility. Scalar (isotropic) or 2D array-like (full tensor)

  • 'eh_recomb_rate_const' (float, nm^3 / ns): Electron-hole recombination rate constant

  • 'back_diel_const' (float | array-like, dimensionless): Background dielectric constant. Scalar (isotropic) or 2D array-like (full tensor)

  • 'vol_heat_cap' (float, nm^-3): Volumetric heat capacity

  • 'therm_conduct' (float | array-like, nm^-1 ns^-1): Thermal conductivity. Scalar (isotropic) or 2D array-like (full tensor)

  • 'd_max_density' (float, nm^-3): Maximum defect density

  • 'd_neutral_max_diffus' (float | array-like, nm^2 / ns): Maximum diffusivity for neutral defects. Scalar (isotropic) or 2D array-like (full tensor)

  • 'd_neutral_act_energy' (float, eV): Activation energy for neutral defect diffusion

  • 'd_ionized_max_diffus' (float | array-like, nm^2 / ns): Maximum diffusivity for ionized defects. Scalar (isotropic) or 2D array-like (full tensor)

  • 'd_ionized_act_energy' (float, eV): Activation energy for ionized defect diffusion

  • 'd_valence' (int, dimensionless): Valence of the defect

  • 'd_elec_level' (float, eV): Electronic level of the defect

  • 'd_neutral_volume' (float, nm^3): Volume change induced by one neutral defect

  • 'd_ionized_volume' (float, nm^3): Volume change induced by one ionized defect

  • 'd_ionize_rate_const' (float, nm^(3 * d_valence) / ns): Ionization rate constant of the defect

load_physics(phys: collections.abc.Sequence[str], **kwargs: Any)

Load physics components of the insulator-metal transition model.

Parameters:
  • phys (Sequence[str]) –

    Sequence of strings specifying which physics components to load. Order does not matter. Possible values are:

    • 'op': Order parameter relaxation. Creates op field. Needs

      • temperature: load 'T' or pass a float to T in kwargs.

    • 'T': Heat conduction and generation. Creates T field.

    • 'phi': Electrostatics. Creates phi field.

    • 'u': Mechanical equilibrium. Creates u field. Needs

      • temperature: load 'T' or pass a float to T in kwargs.

    • 'eh': Electron-hole transport and recombination. Creates ge and gh fields. Needs

      • Temperature: load 'T' or pass a float to T in kwargs.

      • Charge gap: load 'op' and pass a callable to charge_gap in kwargs; or pass a float to charge_gap in kwargs.

      • Gap center: load 'op' and pass a callable to gap_center in kwargs; or pass a float to gap_center in kwargs.

    • 'd': Defect diffusion and ionization. Creates gd and gdi fields. Needs

      • temperature: load 'T' or pass a float to T in kwargs.

    • 'j0': Average outward current density on boundary tagged by 0. Creates j0 field. Requires 'eh' to be loaded.

    • 'lambda': Lagrange multiplier for fixing average electrical potential to zero. Creates lambda field. Requires 'phi' to be loaded.

    Coupling between different physics components will be automatically added when multiple components are loaded.

  • kwargs (dict[str, Any]) –

    Additional keyword arguments required for loading certain physics components:

    • op_dim (int): Dimension of the order parameter field. Required when loading 'op'.

    • intrinsic_f (Callable[[Any, Any, Any], Any]): Callable returning the intrinsic free energy density, with a calling signature intrinsic_f(T, op, dop), where op is treated as a 1D array and dop is the gradient of op treated as a 2D array with a shape (op_dim, mesh_dim). Required when loading 'op'.

    • trans_strn (Callable[[Any], Any]): Callable returning the eigenstrain in Voigt notation, with a calling signature trans_strn(op). Required when loading 'u' along with 'op'.

    • charge_gap (Callable[[Any], Any] | float): Callable returning the energy gap with a calling signature charge_gap(op), required when loading 'eh' along with 'op'; or a float, required when loading 'eh' without loading 'op'.

    • gap_center (Callable[[Any], Any] | float): Callable returning the center of the gap measured from a fixed energy level (reference level) with a calling signature gap_center(op), required when loading 'eh' along with 'op'; or a float, required when loading 'eh' without loading 'op'.

    • light_intens (dolfinx.fem.Function | dolfinx.fem.Constant | float): Light intensity field in unit of eV / (nm^2 ns). Optional when loading 'eh'.

    • light_freq (float): Light frequency (multiplied by h) in unit of eV. Optional when loading 'eh'. Must be provided together with light_intens to enable photoexcitation.

Returns:

None