Base Library (tec)

class tec.Electrode(input_params)

Thermionic electrode.

An Electrode object is instantiated by a dict with the keys, constraints, and units listed below. Additional keys will be ignored, and there are no default values for instantiation. Note that despite the units listed below, the Electrode stores and returns its quantities in SI units.

Parameters:
  • input_params (dict) – Initializing values for Electrode.
  • input_params[“temp”] (float) – Temperature > 0 [K]
  • input_params[“barrier”] (float) – Emission barrier >=0 [eV] Sometimes

referred to as work function. The barrier is the difference between the lowest energy for which an electron inside a material can escape and the Fermi energy. :param float input_params[“voltage”]: Voltage [V] Measured with respect to ground. :param float input_params[“position”]: Position [um] Position of the electrode with respect to the origin. :param float input_params[“richardson”]: Richardson Constant >=0 [A cm^{-2} K^{-2}] :param float input_params[“emissivity”]: Stefan-Boltzmann emissivity < 1 & > 0 :param float input_params[“nea”]: Negative electron affinity >=0 [eV] (Optional) Increases as the difference between the vacuum energy and conduction band minimum increases.

The user can set either temp or richardson equal to zero to “switch off” the electrode – the calc_saturation_current_density() method will return a value of zero in either case.

Example:

>>> input_params = {"temp":1000,
...                 "barrier":1,
...                 "voltage":0,
...                 "position":0,
...                 "richardson":10,
...                 "emissivity":0.5}
>>> El = Electrode(input_params)
>>> El
{'barrier': 1.6021764600000001e-19,
 'emissivity': 0.5,
 'position': 0.0,
 'richardson': 100000.0,
 'temp': 1000.0,
 'voltage': 0.0}
calc_barrier_ht()

Value of barrier height in J relative to ground.

calc_motive_bc()

Motive boundary condition in J relative to ground.

calc_saturation_current_density()

Saturation current in A m^{-2} calculated according to Richardson-Dushman.

If either temp or richardson are equal to 0, this method returns a value of 0.

calc_vacuum_energy()

Position of the vacuum energy relative to Fermi energy in J.

If the Electrode does not have NEA, the vacuum energy occurs at the top of the barrier and is therefore equal to the barrier. If the Electrode does have NEA, the vacuum level is the barrier reduced by the value of the NEA.

param_changed_and_reset()

Return True, reset to False if a parameter affecting motive has just been changed.

Parameters which affect motive are temp, barrier, voltage, position, richardson, and nea.

class tec.TECBase(input_params)

Base thermionic engine class.

This class provides the base API for subclasses which implement particular models of TEC electron transport. Even though it isn’t intended to be a model, this class implements a model of electron transport which completely ignores the negative space charge effect, similar to the model described on p. 51 of [HG73].

The TECBase class is instantiated by a dict with two keys, “Emitter” and “Collector”. Both keys have data that is also of type dict which are configured to instantiate an Electrode object. Additional keys will be ignored and there are no default values for instantiation.

Parameters:
  • input_params (dict) – Dict containing sub-dicts which can instantiate Electrode objects.
  • input_params[“Emitter”] (dict) – Initializes the emitter electrode.
  • input_params[“Collector”] (dict) – Initializes the collector electrode.

The attributes of the object are accessed like a dictionary. The object has three attributes, “Emitter” and “Collector” are both Electrode objects. “motive_data” is a dictionary containing (meta)data calculated during the motive calculation. There is no requirement on the structure or contents of the “motive_data” attribute because each particular implementation of a model may have its own specific requirements. Such requirements will be documented in teh subclass’s docstring. In the case of TECBase, “motive_data” contains the following data:

  • motive_array: A two-element array containing the electrostatic boundary conditions, i.e. the vacuum level of the emitter and collector, respectively.
  • position_array: A two-element array containing the values of position corresponding to the values in motive_array.
  • motive_interp: A scipy.interpolate.interp1d object that interpolates the two arrays described above used in the class’s convenience methods.
>>> 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 = TECBase(input_dict)

[1] “Thermionic Energy Conversion, Vol. I.” Hatsopoulous and Gyftopoulous. p. 48.

barrier_artist(ax, el)

Helper method to properly draw barrier on the motive diagram using spines.

calc_back_current_density()

Back current density in A m^{-2}.

calc_carnot_efficiency()

Carnot efficiency in the range 0 to 1.

This method will return a negative value if the emitter temperature is less than the collector temperature.

calc_contact_potential()

Contact potential in V.

The contact potential is defined as the difference in barrier height between the emitter and collector. This value should not be confused with the quantity returned by calc_output_voltage() which is the voltage difference between the collector and emitter.

calc_electronic_efficiency()

Efficiency considering only electronic heat transport in range 0 to 1.

This method will return nan if the output power is less than zero. See [HG73] p. 73 for a description of how the electronic efficiency is calculated.

calc_forward_current_density()

Forward current density in A m^{-2}.

calc_interelectrode_spacing()

Distance between collector and emitter in m.

calc_load_resistance()

Load resistance in ohms.

calc_motive()

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

calc_output_current_density()

Net current density flowing across device in A m^{-2}.

calc_output_power_density(action=None, set_voltage=False)
Parameters:
  • action – Key indicating the method’s desired action.
  • action==None – Simply returns the current value of the method.
  • action==”max” – Returns the maximum value of the method relative to the output voltage.
  • action==”voltage” – Returns the voltage at which the maximum output occurs.
  • action==”full” – Returns all of the data that the minimization method returns.
  • set_voltage (bool) – If True, leave the voltage set such that the desired output is maximized. Parameter has no effect unless the action argument is “max”, “voltage”, or “full”.
calc_output_voltage()

Voltage difference between emitter and collector in V.

calc_radiation_efficiency()

Efficiency considering only blackbody heat transport in range 0 to 1.

This method will return nan if the output power is less than zero. See [HG73] p. 73 for a description of how the radiation efficiency is calculated.

calc_total_efficiency(action=None, set_voltage=False)
Parameters:
  • action – Key indicating the method’s desired action.
  • action==None – Simply returns the current value of the method.
  • action==”max” – Returns the maximum value of the method relative to the output voltage.
  • action==”voltage” – Returns the voltage at which the maximum output occurs.
  • action==”full” – Returns all of the data that the minimization method returns.
  • set_voltage (bool) – If True, leave the voltage set such that the desired output is maximized. Parameter has no effect unless the action argument is “max”, “voltage”, or “full”.
dimension_line(label, x, y_lo, y_hi, label_loc='mi', label_pos='left')

Helper method to plot vertical dimension line on the motive diagram.

Parameters:
  • label (string) – Dict containing sub-dicts which can instantiate
  • label – Label for dimension line.
  • x (float) – Horizontal placement of dimension line.
  • y_lo (float) – Lower extent of dimension line.
  • y_hi (float) – Upper extent of dimension line.
  • label_loc (str) – Vertical placement of the label. Can be “lo” “mi” or “hi”.
  • label_pos (str) – Which side of the dimension line the label is placed (“left” or “right”).
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(position)

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

Parameters:position – float or numpy array at which motive is to be evaluated. Returns NaN if position falls outside of the interelectrode space.
plot_motive(axl=None, show=False, fontsize=False, output_voltage=False)

Plot an annotated motive diagram relative to ground.

Parameters:
  • axlmatplotlib.Axes object on which to draw motive diagram. None results in a new figure with a subplot(111) as the location to draw the motive diagram.
  • show (bool) – If True, pyplot.show() the result.
  • fontsize (int) – Annotation font size.

Previous topic

tec - Utils for simulating vacuum thermionic energy conversion devices

Next topic

Models (tec.models)

This Page