Models (tec.models)

class tec.models.Langmuir(input_params)

Considers space charge, ignores NEA and back emission.

This class explicitly ignores the fact that either electrode may have NEA and determines the vacuum level of an electrode at the barrier. The model is based on [10.1103/PhysRev.21.419].

Langmuir objects have the same attributes as tec.TECBase; “motive_data” is structured specifically for this model and contains the following data. For brevity, “dimensionless” prefix omitted from “position” and “motive” variable names.

  • saturation_pt: Dictionary with keys “output_voltage” [V] and “output_current_density” [A m^-2] at the saturation point.
  • critical_pt: Dictionary with keys “output_voltage” [V] and “output_current_density” [A m^-2] at the critical point.
  • dps: Langmuir’s dimensionless Poisson’s equation solution object.
>>> from tec_langmuir import TEC_Langmuir
>>> em_dict = {"temp":1000,
...            "barrier":1,
...            "voltage":0,
...            "position":0,
...            "richardson":10,
...            "emissivity":0.5}
>>> co_dict = {"temp":300,
...            "barrier":0.8,
...            "voltage":0,
...            "position":10,
...            "richardson":10,
...            "emissivity":0.5}
>>> input_dict = {"Emitter":em_dict, "Collector":co_dict}
>>> example_tec = TEC_Langmuir(input_dict)
>>> isinstance(example_tec["motive_data"]["saturation_pt"]["output_voltage"],float)
True
>>> isinstance(example_tec["motive_data"]["saturation_pt"]["output_current_density"],float)
True
>>> isinstance(example_tec["motive_data"]["critical_pt"]["output_voltage"],float)
True
>>> isinstance(example_tec["motive_data"]["critical_pt"]["output_current_density"],float)
True
>>> type(example_tec["motive_data"]["dps"])
<class 'tec.dimensionlesslangmuirpoissonsoln.DimensionlessLangmuirPoissonSoln'>
calc_back_current_density()

Always 0 since back emission is ignored.

calc_critical_pt()

Determine critical point condition.

Return type:Dictionary with keys “output_voltage” [V] and “output_current_density” [A m^-2] at the critical point.
calc_motive()

Calculates the motive (meta)data and populates the ‘motive_data’ attribute.

calc_saturation_pt()

Determine saturation point condition.

Return type:Dictionary with keys “output_voltage” [V] and “output_current_density” [A m^-2] at the saturation point.
critical_point_target_function(output_current_density)

Target function for critical point rootfinder.

get_max_motive_ht(with_position=False)

Value of the maximum motive relative to ground in J.

Parameters:with_position (bool) – True returns the position at max motive instead.
get_motive(pos)

Value of motive relative to ground for given value(s) of position in J.

Position must be of numerical type or numpy array. Returns NaN if position falls outside of the interelectrode space.

output_voltage_target_function(output_current_density)

Target function for the output voltage rootfinder.

class tec.models.NEAC(input_params)

Considers space charge and collector NEA, assumes emitter PEA, ignores back emission.

This class explicitly ignres the possibility that the emitter has PEA but considers the possibility the collector features NEA. The model is based on [10.1063/1.4826202].

NEAC objects have the same attributes as tec.TECBase; “motive_data” is structured specifically for this model and contains the following data. For brevity, “dimensionless” prefix omitted from “position” and “motive” variable names.

  • saturation_pt: Dictionary with keys “output_voltage” [V] and “output_current_density” [A m^-2] at the saturation point.
  • virt_critical_pt: Dictionary with keys “output_voltage” [V] and “output_current_density” [A m^-2] at the critical point.
  • dps: Langmuir’s dimensionless Poisson’s equation solution object.
  • spclmbs_max_dist: Space charge limited mode boundary surface (spclmbs) maximum distance [m]. The distance below which the TEC experiences no space charge limited mode.
>>> from tec_neac import TEC_NEAC
>>> em_dict = {"temp":1000,
...            "barrier":1,
...            "voltage":0,
...            "position":0,
...            "richardson":10,
...            "emissivity":0.5}
>>> co_dict = {"temp":300,
...            "barrier":0.8,
...            "voltage":0,
...            "position":10,
...            "richardson":10,
...            "emissivity":0.5,
...            "nea":0.2,}
>>> input_dict = {"Emitter":em_dict, "Collector":co_dict}
>>> example_tec = TEC_NEAC(input_dict)
>>> isinstance(example_tec["motive_data"]["saturation_pt"]["output_voltage"],float)
True
>>> isinstance(example_tec["motive_data"]["saturation_pt"]["output_current_density"],float)
True
>>> isinstance(example_tec["motive_data"]["virt_critical_pt"]["output_voltage"],float)
True
>>> isinstance(example_tec["motive_data"]["virt_critical_pt"]["output_current_density"],float)
True
>>> isinstance(example_tec["motive_data"]["spclmbs_max_dist"],float)
True
>>> type(example_tec["motive_data"]["dps"])
<class 'tec.dimensionlesslangmuirpoissonsoln.DimensionlessLangmuirPoissonSoln'>
calc_motive()

Calculates the motive (meta)data and populates the ‘motive_data’ attribute.

calc_saturation_pt()

Determine saturation point condition.

Return type:Dictionary with keys “output_voltage” [V] and “output_current_density” [A m^-2] at the saturation point.
calc_spclmbs_max_dist()

Space charge limited mode boundary surface (spclmbs) maximum interelectrode distance.

Returns:The distance below which the no space charge limited mode is experienced [m].
Return type:float
calc_virt_critical_pt()

Determine virtual critical point condition.

Return type:Dictionary with keys “output_voltage” [V] and “output_current_density” [A m^-2] at the virtual critical point.
output_voltage_target_function(output_current_density)

Target function for the output voltage rootfinder.

virt_critical_point_target_function(output_current_density)

Target function for virtual critical point rootfinder.

Previous topic

Base Library (tec)

This Page