nanotools.iv module
two-probe transport calculator
- class nanotools.iv.IV(reference_calculator, voltages=None, root: str = None, sub_dirs: ~typing.List[str] = NOTHING, k_grid_4_current=None, temperature=300.0, currents=None, work_func=<Quantity(0.0, 'electron_volt')>, varying_elements: ~typing.List[str | ~nanotools.extpot.Region] = NOTHING)[source]
Bases:
Base
Calculator that automates the workflow of computing charge currents under a series of bias/gate voltages.
- reference_calculator
instance of TwoProbe
- temperature
- Type:
float
- currents
where results are stored
- Type:
pint.registry.Quantity
- k_grid_4_current
a denser k-point grid for current computation.
- work_func
work function. used in case of varying gate voltage.
- Type:
pint.registry.Quantity
- voltages
the varying voltage values
- Type:
pint.registry.Quantity
- varying_elements
list of Region objects or strings indicating what voltages are to be varied. The voltages associated with all the elements in the list are varied simultaneously. If a string is found in the list, the drain-source voltage is to be varied. eg. [extpot.gates[0], extpot.gates[2], “drain-source”]. In this case, Vds=Vg1=Vg2.
- Type:
List[str | nanotools.extpot.Region]
- calc_currents()[source]
Enters each of the spawned directories and carries out charge current calculation.
- scf()[source]
Enters each of the spawned directories and launch nanodcalplus for self-consistent calculation
- set_varying_elements(elements)[source]
sets the elements to which the varying voltage is to be applied :param elements: :type elements: List[Region/string]
- set_voltages(voltages, work_func=None)[source]
sets voltage values and optionally the work function for gates :param voltages: :type voltages: iterable[float] :param work_func: work function :type work_func: float/None
- solve(output='nano_iv_out')[source]
carries out self-consistent and charge current calculations at each given voltage.
Several directories will be spawned, holding input and output files for each corresponding voltage value. For example, if device/ is the current work directory and the voltages are [0.1,0.2,0.3], then the following directories will be spawned in parallel device0.1/ device0.2/ device0.3/
Find results in self.currents