tidy3d.Graphene
tidy3d.Graphene#
- class tidy3d.Graphene#
Bases:
tidy3d.material_library.parametric_materials.ParametricVariantItem2D
Parametric surface conductivity model for graphene.
- Parameters
mu_c (float = 0) – [units = eV]. Chemical potential in eV.
temp (float = 300) – [units = K]. Temperature in K.
gamma (float = 0.00041) – [units = eV]. Scattering rate in eV. Must be small compared to the optical frequency.
scaling (float = 1) – Scaling factor used to model multiple layers of graphene.
include_interband (bool = True) – Include interband terms, relevant at high frequency (IR). Otherwise, the intraband terms only give a simpler Drude-type model relevant only at low frequency (THz).
interband_fit_freq_nodes (Optional[List[Tuple[float, float]]] = None) – Frequency nodes for fitting interband term. Each pair of nodes in the list corresponds to a single Pade approximant of order (1, 2), which is optimized to minimize the error at these two frequencies. The default behavior is to fit a first approximant at one very low frequency and one very high frequency, and to fit a second approximant in the vicinity of the interband feature. This default behavior works for a wide range of frequencies; consider changing the nodes to obtain a better fit for a narrow-band simulation.
interband_fit_num_iters (NonNegativeInt = 100) – Number of iterations for optimizing each Pade approximant when fitting the interband term. Making this larger might give a better fit at the cost of decreased stability in the fitting algorithm.
Note
The model contains intraband and interband terms, as described in:
George W. Hanson, "Dyadic Green's Functions for an Anisotropic, Non-Local Model of Biased Graphene," IEEE Trans. Antennas Propag. 56, 3, 747-757 (2008).
Example
>>> graphene_medium = Graphene(mu_c = 0.2).medium
Show JSON schema
{ "title": "Graphene", "description": "Parametric surface conductivity model for graphene.\n\nParameters\n----------\nmu_c : float = 0\n [units = eV]. Chemical potential in eV.\ntemp : float = 300\n [units = K]. Temperature in K.\ngamma : float = 0.00041\n [units = eV]. Scattering rate in eV. Must be small compared to the optical frequency.\nscaling : float = 1\n Scaling factor used to model multiple layers of graphene.\ninclude_interband : bool = True\n Include interband terms, relevant at high frequency (IR). Otherwise, the intraband terms only give a simpler Drude-type model relevant only at low frequency (THz).\ninterband_fit_freq_nodes : Optional[List[Tuple[float, float]]] = None\n Frequency nodes for fitting interband term. Each pair of nodes in the list corresponds to a single Pade approximant of order (1, 2), which is optimized to minimize the error at these two frequencies. The default behavior is to fit a first approximant at one very low frequency and one very high frequency, and to fit a second approximant in the vicinity of the interband feature. This default behavior works for a wide range of frequencies; consider changing the nodes to obtain a better fit for a narrow-band simulation.\ninterband_fit_num_iters : NonNegativeInt = 100\n Number of iterations for optimizing each Pade approximant when fitting the interband term. Making this larger might give a better fit at the cost of decreased stability in the fitting algorithm.\n\nNote\n----\nThe model contains intraband and interband terms, as described in::\n\n George W. Hanson, \"Dyadic Green's Functions for an Anisotropic,\n Non-Local Model of Biased Graphene,\" IEEE Trans. Antennas Propag.\n 56, 3, 747-757 (2008).\n\nExample\n-------\n>>> graphene_medium = Graphene(mu_c = 0.2).medium", "type": "object", "properties": { "type": { "title": "Type", "default": "Graphene", "enum": [ "Graphene" ], "type": "string" }, "mu_c": { "title": "Chemical potential in eV", "description": "Chemical potential in eV.", "default": 0, "units": "eV", "type": "number" }, "temp": { "title": "Temperature in K", "description": "Temperature in K.", "default": 300, "units": "K", "type": "number" }, "gamma": { "title": "Scattering rate in eV", "description": "Scattering rate in eV. Must be small compared to the optical frequency.", "default": 0.00041, "units": "eV", "type": "number" }, "scaling": { "title": "Scaling factor", "description": "Scaling factor used to model multiple layers of graphene.", "default": 1, "type": "number" }, "include_interband": { "title": "Include interband terms", "description": "Include interband terms, relevant at high frequency (IR). Otherwise, the intraband terms only give a simpler Drude-type model relevant only at low frequency (THz).", "default": true, "type": "boolean" }, "interband_fit_freq_nodes": { "title": "Interband fitting frequency nodes", "description": "Frequency nodes for fitting interband term. Each pair of nodes in the list corresponds to a single Pade approximant of order (1, 2), which is optimized to minimize the error at these two frequencies. The default behavior is to fit a first approximant at one very low frequency and one very high frequency, and to fit a second approximant in the vicinity of the interband feature. This default behavior works for a wide range of frequencies; consider changing the nodes to obtain a better fit for a narrow-band simulation.", "type": "array", "items": { "type": "array", "minItems": 2, "maxItems": 2, "items": [ { "type": "number" }, { "type": "number" } ] } }, "interband_fit_num_iters": { "title": "Interband fitting number of iterations", "description": "Number of iterations for optimizing each Pade approximant when fitting the interband term. Making this larger might give a better fit at the cost of decreased stability in the fitting algorithm.", "default": 100, "minimum": 0, "type": "integer" } }, "additionalProperties": false }
- attribute gamma: float = 0.00041#
Scattering rate in eV. Must be small compared to the optical frequency.
- attribute include_interband: bool = True#
Include interband terms, relevant at high frequency (IR). Otherwise, the intraband terms only give a simpler Drude-type model relevant only at low frequency (THz).
- attribute interband_fit_freq_nodes: List[Tuple[float, float]] = None#
Frequency nodes for fitting interband term. Each pair of nodes in the list corresponds to a single Pade approximant of order (1, 2), which is optimized to minimize the error at these two frequencies. The default behavior is to fit a first approximant at one very low frequency and one very high frequency, and to fit a second approximant in the vicinity of the interband feature. This default behavior works for a wide range of frequencies; consider changing the nodes to obtain a better fit for a narrow-band simulation.
- Validated by
_calculate_freq_nodes
- attribute interband_fit_num_iters: pydantic.types.NonNegativeInt = 100#
Number of iterations for optimizing each Pade approximant when fitting the interband term. Making this larger might give a better fit at the cost of decreased stability in the fitting algorithm.
- Constraints
minimum = 0
- attribute mu_c: float = 0#
Chemical potential in eV.
- attribute scaling: float = 1#
Scaling factor used to model multiple layers of graphene.
- attribute temp: float = 300#
Temperature in K.
- classmethod add_type_field() None #
Automatically place “type” field with model name in the model field dictionary.
- 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=True
as 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, or .hdf5 file.
- Parameters
fname (str) – Full path to the .yaml or .json file to load the
Tidy3dBaseModel
from.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 = '') dict #
Loads a dictionary containing the model contents from a .hdf5 file.
- Parameters
fname (str) – Full path to the .hdf5 file to load the
Tidy3dBaseModel
from.group_path (str, optional) – Path to a group inside the file to selectively load a sub-element of the model only.
- Returns
Dictionary containing the model.
- Return type
dict
Example
>>> sim_dict = Simulation.dict_from_hdf5(fname='folder/sim.hdf5')
- 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
Tidy3dBaseModel
from.- 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
Tidy3dBaseModel
from.- 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
Tidy3dBaseModel
from .yaml, .json, or .hdf5 file.- Parameters
fname (str) – Full path to the .yaml or .json file to load the
Tidy3dBaseModel
from.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_obj
function 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 = '', **parse_obj_kwargs) tidy3d.components.base.Tidy3dBaseModel #
Loads
Tidy3dBaseModel
instance to .hdf5 file.- Parameters
fname (str) – Full path to the .hdf5 file to load the
Tidy3dBaseModel
from.group_path (str, optional) – Path to a group inside the file to selectively load a sub-element of the model only. Starting / is optional.
**parse_obj_kwargs – Keyword arguments passed to pydantic’s
parse_obj
method.
Example
>>> simulation.to_hdf5(fname='folder/sim.hdf5')
- classmethod from_json(fname: str, **parse_obj_kwargs) tidy3d.components.base.Tidy3dBaseModel #
Load a
Tidy3dBaseModel
from .json file.- Parameters
fname (str) – Full path to the .json file to load the
Tidy3dBaseModel
from.- Returns
Tidy3dBaseModel
– An instance of the component class calling load.**parse_obj_kwargs – Keyword arguments passed to pydantic’s
parse_obj
method.
Example
>>> simulation = Simulation.from_json(fname='folder/sim.json')
- classmethod from_orm(obj: Any) Model #
- classmethod from_yaml(fname: str, **parse_obj_kwargs) tidy3d.components.base.Tidy3dBaseModel #
Loads
Tidy3dBaseModel
from .yaml file.- Parameters
fname (str) – Full path to the .yaml file to load the
Tidy3dBaseModel
from.**parse_obj_kwargs – Keyword arguments passed to pydantic’s
parse_obj
method.
- 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.
- 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)
- interband_conductivity(freqs: List[float]) List[complex] #
Numerically integrate interband term.
- Parameters
freqs (List[float]) – The list of frequencies.
- Returns
The list of corresponding interband conductivities, in S.
- Return type
List[complex]
- 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) unicode #
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().
- numerical_conductivity(freqs: List[float]) List[complex] #
Numerically calculate the conductivity. If this differs from the conductivity of the
Medium2D
, it is due to error while fitting the interband term, and you may try values ofinterband_fit_freq_nodes
different from its default (calculated) value.- Parameters
freqs (List[float]) – The list of frequencies.
- Returns
The list of corresponding conductivities, in S.
- Return type
List[complex]
- classmethod parse_file(path: Union[str, pathlib.Path], *, content_type: unicode = None, encoding: unicode = 'utf8', proto: pydantic.parse.Protocol = None, allow_pickle: bool = False) Model #
- classmethod parse_obj(obj: Any) Model #
- classmethod parse_raw(b: Union[str, bytes], *, content_type: unicode = None, encoding: unicode = 'utf8', proto: pydantic.parse.Protocol = None, allow_pickle: bool = False) Model #
- classmethod schema(by_alias: bool = True, ref_template: unicode = '#/definitions/{model}') DictStrAny #
- classmethod schema_json(*, by_alias: bool = True, ref_template: unicode = '#/definitions/{model}', **dumps_kwargs: Any) unicode #
- to_file(fname: str) None #
Exports
Tidy3dBaseModel
instance to .yaml, .json, or .hdf5 file- Parameters
fname (str) – Full path to the .yaml or .json file to save the
Tidy3dBaseModel
to.
Example
>>> simulation.to_file(fname='folder/sim.json')
- to_hdf5(fname: str) None #
Exports
Tidy3dBaseModel
instance to .hdf5 file.- Parameters
fname (str) – Full path to the .hdf5 file to save the
Tidy3dBaseModel
to.
Example
>>> simulation.to_hdf5(fname='folder/sim.hdf5')
- to_json(fname: str) None #
Exports
Tidy3dBaseModel
instance to .json file- Parameters
fname (str) – Full path to the .json file to save the
Tidy3dBaseModel
to.
Example
>>> simulation.to_json(fname='folder/sim.json')
- to_yaml(fname: str) None #
Exports
Tidy3dBaseModel
instance to .yaml file.- Parameters
fname (str) – Full path to the .yaml file to save the
Tidy3dBaseModel
to.
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
**kwargs
indicating updated field values.
- classmethod validate(value: Any) Model #
- property interband_pole_residue: tidy3d.components.medium.PoleResidue#
A pole-residue model for the interband term of graphene. Note that this does not include the intraband term, which is added in separately.
- Returns
A pole-residue model for the interband term of graphene.
- Return type
- property intraband_drude: tidy3d.components.medium.Drude#
A Drude-type model for the intraband term of graphene.
- Returns
A Drude-type model for the intraband term of graphene.
- Return type
- property medium: tidy3d.components.medium.Medium2D#
Surface conductivity model for graphene.