tidy3d.CustomChargePerturbation
tidy3d.CustomChargePerturbation#
- class tidy3d.CustomChargePerturbation(*, type: Literal['CustomChargePerturbation'] = 'CustomChargePerturbation', electron_range: Tuple[pydantic.v1.types.NonNegativeFloat, pydantic.v1.types.NonNegativeFloat] = None, hole_range: Tuple[pydantic.v1.types.NonNegativeFloat, pydantic.v1.types.NonNegativeFloat] = None, perturbation_values: tidy3d.components.data.data_array.ChargeDataArray, interp_method: Literal['nearest', 'linear'] = 'linear')#
Bases:
tidy3d.components.parameter_perturbation.ChargePerturbationSpecifies parameter’s perturbation due to free carrier effects as a custom function of electron and hole densities defined as a two-dimensional array of perturbation values at sample electron and hole density points. The linear interpolation is used to calculate perturbation values between sample points. For electron and hole density values outside of the provided sample region the perturbation value is extrapolated as a constant. The electron and hole density ranges,
electron_rangeandhole_range, in which the perturbation model is assumed to be accurate is calculated automatically as the minimal and maximal density values provided inperturbation_values. Wherever is applied, Tidy3D will check that the parameter’s value does not go out of its physical bounds withinelectron_rangexhole_rangedue to perturbations and raise a warning if this check fails. A warning is also issued if the perturbation model is evaluated outside ofelectron_rangexhole_range.- Parameters
electron_range (Optional[Tuple[NonNegativeFloat, NonNegativeFloat]] = None) – Range of electrons densities in which perturbation model is valid. For
CustomChargePerturbationthis field is computed automatically based on providedperturbation_valueshole_range (Optional[Tuple[NonNegativeFloat, NonNegativeFloat]] = None) – Range of holes densities in which perturbation model is valid. For
CustomChargePerturbationthis field is computed automatically based on providedperturbation_valuesperturbation_values (ChargeDataArray) – 2D array (vs electron and hole densities) of sampled perturbation values.
interp_method (Literal['nearest', 'linear'] = linear) – Interpolation method to obtain perturbation values between sample points.
Example
>>> from tidy3d import ChargeDataArray >>> perturbation_data = ChargeDataArray( ... [[0.001, 0.002, 0.004], [0.003, 0.002, 0.001]], ... coords=dict(n=[2e15, 2e19], p=[1e16, 1e17, 1e18]), ... ) >>> charge_perturb = CustomChargePerturbation( ... perturbation_values=perturbation_data, ... )
- __init__(**kwargs)#
Init method, includes post-init validators.
Methods
__init__(**kwargs)Init method, includes post-init validators.
Automatically place "type" field with model name in the model field dictionary.
compute_eh_ranges(values)Compute and set electron and hole density ranges based on provided
perturbation_values.construct([_fields_set])Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data.
copy(**kwargs)Copy a Tidy3dBaseModel.
dict(*[, include, exclude, by_alias, ...])Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
dict_from_file(fname[, group_path])Loads a dictionary containing the model from a .yaml, .json, .hdf5, or .hdf5.gz file.
dict_from_hdf5(fname[, group_path, ...])Loads a dictionary containing the model contents from a .hdf5 file.
dict_from_hdf5_gz(fname[, group_path, ...])Loads a dictionary containing the model contents from a .hdf5.gz file.
dict_from_json(fname)Load dictionary of the model from a .json file.
dict_from_yaml(fname)Load dictionary of the model from a .yaml file.
from_file(fname[, group_path])Loads a
Tidy3dBaseModelfrom .yaml, .json, .hdf5, or .hdf5.gz file.from_hdf5(fname[, group_path, custom_decoders])Loads
Tidy3dBaseModelinstance to .hdf5 file.from_hdf5_gz(fname[, group_path, ...])Loads
Tidy3dBaseModelinstance to .hdf5.gz file.from_json(fname, **parse_obj_kwargs)Load a
Tidy3dBaseModelfrom .json file.from_orm(obj)from_yaml(fname, **parse_obj_kwargs)Loads
Tidy3dBaseModelfrom .yaml file.Generates a docstring for a Tidy3D mode and saves it to the __doc__ of the class.
get_sub_model(group_path, model_dict)Get the sub model for a given group path.
Return a dictionary of this object's sub-models indexed by their hash values.
get_tuple_group_name(index)Get the group name of a tuple element.
get_tuple_index(key_name)Get the index into the tuple based on its group name.
help([methods])Prints message describing the fields and methods of a
Tidy3dBaseModel.json(*[, include, exclude, by_alias, ...])Generate a JSON representation of the model, include and exclude arguments as per dict().
parse_file(path, *[, content_type, ...])parse_obj(obj)parse_raw(b, *[, content_type, encoding, ...])plot(electron_density, hole_density[, val, ax])Plot perturbation using provided electron and hole density sample points.
sample(electron_density, hole_density)Sample perturbation at electron and hole density points.
schema([by_alias, ref_template])schema_json(*[, by_alias, ref_template])to_file(fname)Exports
Tidy3dBaseModelinstance to .yaml, .json, or .hdf5 fileto_hdf5(fname[, custom_encoders])Exports
Tidy3dBaseModelinstance to .hdf5 file.to_hdf5_gz(fname[, custom_encoders])Exports
Tidy3dBaseModelinstance to .hdf5.gz file.to_json(fname)Exports
Tidy3dBaseModelinstance to .json fileto_yaml(fname)Exports
Tidy3dBaseModelinstance to .yaml file.tuple_to_dict(tuple_values)How we generate a dictionary mapping new keys to tuple values for hdf5.
update_forward_refs(**localns)Try to update ForwardRefs on fields based on this Model, globalns and localns.
updated_copy(**kwargs)Make copy of a component instance with
**kwargsindicating updated field values.validate(value)Attributes
Whether perturbation is complex valued.
Range of possible parameter perturbation values.
perturbation_valueselectron_rangehole_rangeinterp_method- class Config#
Bases:
objectSets config for all
Tidy3dBaseModelobjects.- allow_population_by_field_namebool = True
Allow properties to stand in for fields(?).
- arbitrary_types_allowedbool = True
Allow types like numpy arrays.
- extrastr = ‘forbid’
Forbid extra kwargs not specified in model.
- json_encodersDict[type, Callable]
Defines how to encode type in json file.
- validate_allbool = True
Validate default values just to be safe.
- validate_assignmentbool
Re-validate after re-assignment of field in model.
- __eq__(other)#
Define == for two Tidy3DBaseModels.
- __ge__(other)#
define >= for getting unique indices based on hash.
- __gt__(other)#
define > for getting unique indices based on hash.
- __hash__() int#
Hash method.
- classmethod __init_subclass__() None#
Things that are done to each of the models.
- __iter__() TupleGenerator#
so dict(model) works
- __le__(other)#
define <= for getting unique indices based on hash.
- __lt__(other)#
define < for getting unique indices based on hash.
- __pretty__(fmt: Callable[[Any], Any], **kwargs: Any) Generator[Any, None, None]#
Used by devtools (https://python-devtools.helpmanual.io/) to provide a human readable representations of objects
- __repr_name__() str#
Name of the instance’s class, used in __repr__.
- __rich_repr__() RichReprResult#
Get fields for Rich library
- classmethod __try_update_forward_refs__(**localns: Any) None#
Same as update_forward_refs but will not raise exception when forward references are not defined.
- classmethod add_type_field() None#
Automatically place “type” field with model name in the model field dictionary.
- classmethod compute_eh_ranges(values)#
Compute and set electron and hole density ranges based on provided
perturbation_values.
- classmethod construct(_fields_set: Optional[SetStr] = None, **values: Any) Model#
Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as if Config.extra = ‘allow’ was set since it adds all passed values
- copy(**kwargs) tidy3d.components.base.Tidy3dBaseModel#
Copy a Tidy3dBaseModel. With
deep=Trueas default.
- dict(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False) DictStrAny#
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
- classmethod dict_from_file(fname: str, group_path: Optional[str] = None) dict#
Loads a dictionary containing the model from a .yaml, .json, .hdf5, or .hdf5.gz file.
- Parameters
fname (str) – Full path to the file to load the
Tidy3dBaseModelfrom.group_path (str, optional) – Path to a group inside the file to use as the base level.
- Returns
A dictionary containing the model.
- Return type
dict
Example
>>> simulation = Simulation.from_file(fname='folder/sim.json')
- classmethod dict_from_hdf5(fname: str, group_path: str = '', custom_decoders: Optional[List[Callable]] = None) dict#
Loads a dictionary containing the model contents from a .hdf5 file.
- Parameters
fname (str) – Full path to the .hdf5 file to load the
Tidy3dBaseModelfrom.group_path (str, optional) – Path to a group inside the file to selectively load a sub-element of the model only.
custom_decoders (List[Callable]) – List of functions accepting (fname: str, group_path: str, model_dict: dict, key: str, value: Any) that store the value in the model dict after a custom decoding.
- Returns
Dictionary containing the model.
- Return type
dict
Example
>>> sim_dict = Simulation.dict_from_hdf5(fname='folder/sim.hdf5')
- classmethod dict_from_hdf5_gz(fname: str, group_path: str = '', custom_decoders: Optional[List[Callable]] = None) dict#
Loads a dictionary containing the model contents from a .hdf5.gz file.
- Parameters
fname (str) – Full path to the .hdf5.gz file to load the
Tidy3dBaseModelfrom.group_path (str, optional) – Path to a group inside the file to selectively load a sub-element of the model only.
custom_decoders (List[Callable]) – List of functions accepting (fname: str, group_path: str, model_dict: dict, key: str, value: Any) that store the value in the model dict after a custom decoding.
- Returns
Dictionary containing the model.
- Return type
dict
Example
>>> sim_dict = Simulation.dict_from_hdf5(fname='folder/sim.hdf5.gz')
- classmethod dict_from_json(fname: str) dict#
Load dictionary of the model from a .json file.
- Parameters
fname (str) – Full path to the .json file to load the
Tidy3dBaseModelfrom.- Returns
A dictionary containing the model.
- Return type
dict
Example
>>> sim_dict = Simulation.dict_from_json(fname='folder/sim.json')
- classmethod dict_from_yaml(fname: str) dict#
Load dictionary of the model from a .yaml file.
- Parameters
fname (str) – Full path to the .yaml file to load the
Tidy3dBaseModelfrom.- Returns
A dictionary containing the model.
- Return type
dict
Example
>>> sim_dict = Simulation.dict_from_yaml(fname='folder/sim.yaml')
- classmethod from_file(fname: str, group_path: Optional[str] = None, **parse_obj_kwargs) tidy3d.components.base.Tidy3dBaseModel#
Loads a
Tidy3dBaseModelfrom .yaml, .json, .hdf5, or .hdf5.gz file.- Parameters
fname (str) – Full path to the file to load the
Tidy3dBaseModelfrom.group_path (str, optional) – Path to a group inside the file to use as the base level. Only for hdf5 files. Starting / is optional.
**parse_obj_kwargs – Keyword arguments passed to either pydantic’s
parse_objfunction when loading model.
- Returns
An instance of the component class calling
load.- Return type
Tidy3dBaseModel
Example
>>> simulation = Simulation.from_file(fname='folder/sim.json')
- classmethod from_hdf5(fname: str, group_path: str = '', custom_decoders: Optional[List[Callable]] = None, **parse_obj_kwargs) tidy3d.components.base.Tidy3dBaseModel#
Loads
Tidy3dBaseModelinstance to .hdf5 file.- Parameters
fname (str) – Full path to the .hdf5 file to load the
Tidy3dBaseModelfrom.group_path (str, optional) – Path to a group inside the file to selectively load a sub-element of the model only. Starting / is optional.
custom_decoders (List[Callable]) – List of functions accepting (fname: str, group_path: str, model_dict: dict, key: str, value: Any) that store the value in the model dict after a custom decoding.
**parse_obj_kwargs – Keyword arguments passed to pydantic’s
parse_objmethod.
Example
>>> simulation = Simulation.from_hdf5(fname='folder/sim.hdf5')
- classmethod from_hdf5_gz(fname: str, group_path: str = '', custom_decoders: Optional[List[Callable]] = None, **parse_obj_kwargs) tidy3d.components.base.Tidy3dBaseModel#
Loads
Tidy3dBaseModelinstance to .hdf5.gz file.- Parameters
fname (str) – Full path to the .hdf5.gz file to load the
Tidy3dBaseModelfrom.group_path (str, optional) – Path to a group inside the file to selectively load a sub-element of the model only. Starting / is optional.
custom_decoders (List[Callable]) – List of functions accepting (fname: str, group_path: str, model_dict: dict, key: str, value: Any) that store the value in the model dict after a custom decoding.
**parse_obj_kwargs – Keyword arguments passed to pydantic’s
parse_objmethod.
Example
>>> simulation = Simulation.from_hdf5_gz(fname='folder/sim.hdf5.gz')
- classmethod from_json(fname: str, **parse_obj_kwargs) tidy3d.components.base.Tidy3dBaseModel#
Load a
Tidy3dBaseModelfrom .json file.- Parameters
fname (str) – Full path to the .json file to load the
Tidy3dBaseModelfrom.- Returns
Tidy3dBaseModel– An instance of the component class calling load.**parse_obj_kwargs – Keyword arguments passed to pydantic’s
parse_objmethod.
Example
>>> simulation = Simulation.from_json(fname='folder/sim.json')
- classmethod from_yaml(fname: str, **parse_obj_kwargs) tidy3d.components.base.Tidy3dBaseModel#
Loads
Tidy3dBaseModelfrom .yaml file.- Parameters
fname (str) – Full path to the .yaml file to load the
Tidy3dBaseModelfrom.**parse_obj_kwargs – Keyword arguments passed to pydantic’s
parse_objmethod.
- Returns
An instance of the component class calling from_yaml.
- Return type
Tidy3dBaseModel
Example
>>> simulation = Simulation.from_yaml(fname='folder/sim.yaml')
- classmethod generate_docstring() str#
Generates a docstring for a Tidy3D mode and saves it to the __doc__ of the class.
- classmethod get_sub_model(group_path: str, model_dict: dict | list) dict#
Get the sub model for a given group path.
- get_submodels_by_hash() Dict[int, List[Union[str, Tuple[str, int]]]]#
Return a dictionary of this object’s sub-models indexed by their hash values.
- static get_tuple_group_name(index: int) str#
Get the group name of a tuple element.
- static get_tuple_index(key_name: str) int#
Get the index into the tuple based on its group name.
- help(methods: bool = False) None#
Prints message describing the fields and methods of a
Tidy3dBaseModel.- Parameters
methods (bool = False) – Whether to also print out information about object’s methods.
Example
>>> simulation.help(methods=True)
- property is_complex: bool#
Whether perturbation is complex valued.
- json(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Optional[Callable[[Any], Any]] = None, models_as_dict: bool = True, **dumps_kwargs: Any) str#
Generate a JSON representation of the model, include and exclude arguments as per dict().
encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().
- property perturbation_range: Union[Tuple[float, float], Tuple[complex, complex]]#
Range of possible parameter perturbation values.
- plot(electron_density: ArrayLike[float], hole_density: ArrayLike[float], val: FieldVal = 'real', ax: Ax = None) Ax#
Plot perturbation using provided electron and hole density sample points.
- Parameters
electron_density (Union[ArrayLike[float], SpatialDataArray]) – Array of electron density sample points.
hole_density (Union[ArrayLike[float], SpatialDataArray]) – Array of hole density sample points.
val (Literal['real', 'imag', 'abs', 'abs^2', 'phase'] = 'real') – Which part of the field to plot.
ax (matplotlib.axes._subplots.Axes = None) – Matplotlib axes to plot on, if not specified, one is created.
- Returns
The supplied or created matplotlib axes.
- Return type
matplotlib.axes._subplots.Axes
- sample(electron_density: Union[ArrayLike[float], SpatialDataArray], hole_density: Union[ArrayLike[float], SpatialDataArray]) Union[ArrayLike[float], ArrayLike[Complex], SpatialDataArray]#
Sample perturbation at electron and hole density points.
- Parameters
electron_density (Union[ArrayLike[float], SpatialDataArray]) – Electron density sample point(s).
hole_density (Union[ArrayLike[float], SpatialDataArray]) – Hole density sample point(s).
Note
Cannot provide a
SpatialDataArrayfor one argument and a regular array (list,tuple,numpy.nd_array) for the other. Additionally, if both arguments are regular arrays they must be one-dimensional arrays.- Returns
Sampled perturbation value(s).
- Return type
Union[ArrayLike[float], ArrayLike[Complex], SpatialDataArray]
- to_file(fname: str) None#
Exports
Tidy3dBaseModelinstance to .yaml, .json, or .hdf5 file- Parameters
fname (str) – Full path to the .yaml or .json file to save the
Tidy3dBaseModelto.
Example
>>> simulation.to_file(fname='folder/sim.json')
- to_hdf5(fname: str, custom_encoders: Optional[List[Callable]] = None) None#
Exports
Tidy3dBaseModelinstance to .hdf5 file.- Parameters
fname (str) – Full path to the .hdf5 file to save the
Tidy3dBaseModelto.custom_encoders (List[Callable]) – List of functions accepting (fname: str, group_path: str, value: Any) that take the
valuesupplied and write it to the hdf5fnameatgroup_path.
Example
>>> simulation.to_hdf5(fname='folder/sim.hdf5')
- to_hdf5_gz(fname: str, custom_encoders: Optional[List[Callable]] = None) None#
Exports
Tidy3dBaseModelinstance to .hdf5.gz file.- Parameters
fname (str) – Full path to the .hdf5.gz file to save the
Tidy3dBaseModelto.custom_encoders (List[Callable]) – List of functions accepting (fname: str, group_path: str, value: Any) that take the
valuesupplied and write it to the hdf5fnameatgroup_path.
Example
>>> simulation.to_hdf5_gz(fname='folder/sim.hdf5.gz')
- to_json(fname: str) None#
Exports
Tidy3dBaseModelinstance to .json file- Parameters
fname (str) – Full path to the .json file to save the
Tidy3dBaseModelto.
Example
>>> simulation.to_json(fname='folder/sim.json')
- to_yaml(fname: str) None#
Exports
Tidy3dBaseModelinstance to .yaml file.- Parameters
fname (str) – Full path to the .yaml file to save the
Tidy3dBaseModelto.
Example
>>> simulation.to_yaml(fname='folder/sim.yaml')
- classmethod tuple_to_dict(tuple_values: tuple) dict#
How we generate a dictionary mapping new keys to tuple values for hdf5.
- classmethod update_forward_refs(**localns: Any) None#
Try to update ForwardRefs on fields based on this Model, globalns and localns.
- updated_copy(**kwargs) tidy3d.components.base.Tidy3dBaseModel#
Make copy of a component instance with
**kwargsindicating updated field values.