model package
Define the electron emission models.
- class ChungEverhart(parameters_values=None)
Bases:
ModelChung and Everhart model, defined in [CE74].
Instantiate the object.
- Parameters:
parameters_values (
dict[str,Any] |None, default:None) – Contains name of parameters and associated value. If provided, will override the default values set ininitial_parameters.
-
emission_data_types:
list[Literal['Emission Yield','Emission Energy','Emission Angle']] = ['Emission Energy']
- find_optimal_parameters(data_matrix, **kwargs)
Fit model parameters on measurements.
- Return type:
- get_data(population, emission_data_type, energy, theta, *args, **kwargs)
Return desired data according to current model.
Will return a dataframe only if the SEs energy distribution is asked.
-
initial_parameters:
dict[str,dict[str,str|float|bool]] = {'W_f': {'description': 'Material work function.', 'lower_bound': 0.0, 'markdown': 'W_f', 'unit': 'eV', 'value': 8.0}, 'norm': {'description': 'Distribution re-normalization constant.', 'lower_bound': 0.0, 'markdown': 'k', 'unit': '1', 'value': 1.0}}
-
model_config:
ModelConfig= ModelConfig(emission_yield_files=(), emission_energy_files=('all',), emission_angle_files=())
- class Dionne(parameters_values=None, energy_loss_model='Power law')
Bases:
ModelDefine the Dionne model [Dio73, Dio75, LD57].
Instantiate the object.
- Parameters:
parameters_values (
dict[str,Any] |None, default:None) – Contains name of parameters and associated value. If provided, will override the default values set ininitial_parameters.energy_loss_model (
Literal['Power law','CSDA','Inguimbert'], default:'Power law') – Model for the energy loss of PEs in the material. Only"Power law"is implemented for now. Check documentation ofdionne.range_func()for more info.
-
emission_data_types:
list[Literal['Emission Yield','Emission Energy','Emission Angle']] = ['Emission Yield']
- evaluate(data_matrix)
Evaluate the quality of the model using Fil criterions.
- find_optimal_parameters(data_matrix, **kwargs)
Extract main SEEY curve parameters from measure.
- Return type:
- get_data(population, emission_data_type, energy, theta, *args, **kwargs)
Return desired data according to current model.
Will return a dataframe only if the TEEY is asked.
-
initial_parameters:
dict[str,dict[str,str|float|bool]] = {'diffusion_length': {'description': 'Typical length between two interactions of the SE with the material. Related to elastic and inelastic mean free paths.', 'lower_bound': 0.0, 'markdown': 'd', 'unit': 'nm', 'value': 2.0}, 'escape_probability': {'description': 'Probability for the SE to escape the material.', 'lower_bound': 0.0, 'markdown': 'S', 'unit': '1', 'upper_bound': 1.0, 'value': 0.5}, 'excitation_energy': {'description': 'Energy required to excite a secondary electron in the material.', 'is_locked': True, 'lower_bound': 0.0, 'markdown': '\\xi', 'unit': 'eV', 'value': 4.6}, 'power_law_exponent': {'description': 'Exponent in the power law energy loss model.', 'lower_bound': 1.0, 'markdown': 'n', 'unit': '1', 'value': 1.2}, 'power_law_scale': {'description': 'Scale factor in the power law energy loss model.', 'lower_bound': 0.0, 'markdown': 'A', 'unit': '1', 'value': 1.0}}
-
model_config:
ModelConfig= ModelConfig(emission_yield_files=('SE',), emission_energy_files=(), emission_angle_files=())
- class Maxwellian(parameters_values=None)
Bases:
ModelMaxwellian distribution.
Instantiate the object.
- Parameters:
parameters_values (
dict[str,Any] |None, default:None) – Contains name of parameters and associated value. If provided, will override the default values set ininitial_parameters.
-
emission_data_types:
list[Literal['Emission Yield','Emission Energy','Emission Angle']] = ['Emission Energy']
- find_optimal_parameters(data_matrix, **kwargs)
Fit model parameters on measurements.
- Return type:
- get_data(population, emission_data_type, energy, theta, *args, **kwargs)
Return desired data according to current model.
Will return a dataframe only if the SEs energy distribution is asked.
-
initial_parameters:
dict[str,dict[str,str|float|bool]] = {'norm': {'description': 'Distribution re-normalization constant.', 'lower_bound': 0.0, 'markdown': 'k', 'unit': '1', 'value': 1.0}, 'temperature': {'description': 'Temperature distribution.', 'lower_bound': 0.0, 'markdown': 'T', 'unit': 'eV', 'value': 7.5}}
-
model_config:
ModelConfig= ModelConfig(emission_yield_files=(), emission_energy_files=('SE',), emission_angle_files=())
- class Sombrin(parameters_values=None)
Bases:
ModelDefine the Sombrin model, defined in [Som93].
We use the implementation from [FBHP16].
Instantiate the object.
- Parameters:
parameters_values (
dict[str,Any] |None, default:None) – Contains name of parameters and associated value. If provided, will override the default values set ininitial_parameters.
-
emission_data_types:
list[Literal['Emission Yield','Emission Energy','Emission Angle']] = ['Emission Yield']
- evaluate(data_matrix)
Evaluate the quality of the model using Fil criterions.
- find_optimal_parameters(data_matrix, **kwargs)
Extract main TEEY curve parameters from measure.
- Return type:
- get_data(population, emission_data_type, energy, theta, *args, **kwargs)
Return desired data according to current model.
Will return a dataframe only if the TEEY is asked.
-
initial_parameters:
dict[str,dict[str,str|float|bool]] = {'E_c1': {'description': 'First crossover energy.', 'lower_bound': 0.0, 'markdown': 'E_{\\mathrm{c,\\,1}}', 'unit': 'eV', 'value': 0.0}, 'E_max': {'description': 'Energy at maximum TEEY.', 'lower_bound': 0.0, 'markdown': 'E_\\mathrm{max}', 'unit': 'eV', 'value': 1.0}, 'teey_max': {'description': 'Maximum TEEY, directly taken from the measurement.', 'lower_bound': 0.0, 'markdown': '\\sigma_\\mathrm{max}', 'unit': '1', 'value': 0.0}}
-
model_config:
ModelConfig= ModelConfig(emission_yield_files=('all',), emission_energy_files=(), emission_angle_files=())
- class Vaughan(implementation='original', parameters_values=None)
Bases:
ModelDefine the classic Vaughan model.
Instantiate the object.
Note
Parameter values set by
implementationhave priority over values given inparameters_values.- Parameters:
implementation (
Literal['original','CST','SPARK3D'], default:'original') – Modifies certain presets to match different interpretations of the model by callingset_implementation(). These parameter modifications have precedence over the ones set inparameters_values.parameters_values (
dict[str,Any] |None, default:None) – Contains name of parameters and associated value. If provided, will override the default values set ininitial_parameters.
-
emission_data_types:
list[Literal['Emission Yield','Emission Energy','Emission Angle']] = ['Emission Yield']
- evaluate(data_matrix)
Evaluate the quality of the model using Fil criterions.
- find_optimal_parameters(data_matrix, **kwargs)
Match with position of first crossover and maximum.
- Return type:
- get_data(population, emission_data_type, energy, theta, *args, **kwargs)
Return desired data according to current model.
Will return a dataframe only if the TEEY is asked.
Todo
This method could be so much simpler and efficient.
-
initial_parameters:
dict[str,dict[str,str|float|bool]] = {'E_0': {'description': 'Threshold energy. By default, locked to :math:`12.5\\mathrm{\\,eV}`. If unlocked, will be fitted to retrieve :math:`E_{\\mathrm{c,\\,1}}`.', 'is_locked': True, 'markdown': 'E_0', 'unit': 'eV', 'value': 12.5}, 'E_c1': {'description': 'First crossover energy. Must be provided instead of :math:`E_0` for SPARK3D Vaughan.', 'is_locked': False, 'markdown': 'E_{\\mathrm{c,\\,1}}', 'unit': 'eV', 'value': 25.0}, 'E_max': {'description': 'Energy at maximum TEEY.', 'lower_bound': 0.0, 'markdown': 'E_\\mathrm{max}', 'unit': 'eV', 'value': 100.0}, 'delta_E_transition': {'description': 'Energy over which we switch from :math:`\\sigma_\\mathrm{low}` to actual Vaughan TEEY. Useful for smoothing the transition. Currently not implemented.', 'is_locked': True, 'markdown': '\\Delta E_{tr}', 'unit': 'eV', 'value': 1.0}, 'k_s': {'description': 'Roughness factor (:math:`\\sigma_\\mathrm{max}`). Locked by default, but could be used for more precise fits.', 'is_locked': True, 'lower_bound': 0.0, 'markdown': 'k_s', 'unit': '1', 'upper_bound': 2.0, 'value': 1.0}, 'k_se': {'description': 'Roughness factor (:math:`E_\\mathrm{max}`). Locked by default, but could be used for more precise fits.', 'is_locked': True, 'lower_bound': 0.0, 'markdown': 'k_{se}', 'unit': '1', 'upper_bound': 2.0, 'value': 1.0}, 'teey_low': {'description': 'TEEY below :math:`E_0`.', 'is_locked': True, 'lower_bound': 0.0, 'markdown': '\\sigma_\\mathrm{low}', 'unit': '1', 'value': 0.5}, 'teey_max': {'description': 'Maximum TEEY, directly taken from the measurement.', 'lower_bound': 0.0, 'markdown': '\\sigma_\\mathrm{max}', 'unit': '1', 'value': 1.5}}
-
model_config:
ModelConfig= ModelConfig(emission_yield_files=('all',), emission_energy_files=(), emission_angle_files=())
- set_implementation(implementation)
Update some parameters to reproduce a specific implementation.
Vaughan CST:
\(\sigma_\mathrm{low}\) is set to 0.
Vaughan SPARK3D:
\(\sigma_\mathrm{low}\) is set to 0.
\(E_0\) is unlocked, so that it will be fitted to match \(E_{c,\,1}\).
Below \(10\) \(\mathrm{eV}\), TEEY is 0.
Note
If the implementation is changed after the creation of the object, some parameters will be reset to their default value defined in
initial_parameters, not to the values defined in theparameters_valuesargument of__init__method.- Return type:
Submodules
- chung_and_everhart module
- Model parameters
ChungEverhartParametersChungEverhartChungEverhart.emission_data_typesChungEverhart.populationsChungEverhart.considers_energyChungEverhart.is_3dChungEverhart.is_dielectrics_compatibleChungEverhart.model_configChungEverhart.initial_parametersChungEverhart.parametersChungEverhart.get_data()ChungEverhart.find_optimal_parameters()
_chung_everhart_norm()chung_everhart_func()_residue()
- dionne module
- maxwellian module
- model module
ModelModel.emission_data_typesModel.populationsModel.considers_energyModel.is_3dModel.is_dielectrics_compatibleModel.initial_parametersModel.model_configModel.implementationsModel.parametersModel._generate_parameter_docs()Model.teey()Model.seey()Model.se_energy_distribution()Model.get_data()Model.find_optimal_parameters()Model.plot()Model.set_parameter_value()Model.reset_parameter_value()Model.set_parameters_values()Model.reset_parameters_values()Model.evaluate()Model._evaluate_for_teey_models()Model._main_teey_parameters()Model._error_ec1()Model._error_teey()Model.display_parameters()
_dummy_df()
- parameter module
- sombrin module
- Model parameters
SombrinParametersSombrinSombrin.emission_data_typesSombrin.populationsSombrin.considers_energySombrin.is_3dSombrin.is_dielectrics_compatibleSombrin.model_configSombrin.initial_parametersSombrin.parametersSombrin._ESombrin.ESombrin.get_data()Sombrin.set_parameter_value()Sombrin.find_optimal_parameters()Sombrin.evaluate()
sombrin_func()_e_parameter()
- vaughan module
- Model parameters
VaughanParametersVaughanVaughan.emission_data_typesVaughan.populationsVaughan.considers_energyVaughan.is_3dVaughan.is_dielectrics_compatibleVaughan.model_configVaughan.initial_parametersVaughan.implementationsVaughan.parametersVaughan._funcVaughan.current_implementationVaughan.set_implementation()Vaughan.get_data()Vaughan.find_optimal_parameters()Vaughan.find_e_0()Vaughan._E_0_matching()Vaughan.evaluate()
vaughan_func()vaughan_spark3d()