tidy3d.GaussianPulse#

class tidy3d.GaussianPulse#

Bases: tidy3d.components.source.Pulse

Source time dependence that describes a Gaussian pulse.

Parameters
  • amplitude (NonNegativeFloat = 1.0) – Real-valued maximum amplitude of the time dependence.

  • phase (float = 0.0) – [units = rad]. Phase shift of the time dependence.

  • freq0 (PositiveFloat) – [units = Hz]. Central frequency of the pulse.

  • fwidth (PositiveFloat) – [units = Hz]. Standard deviation of the frequency content of the pulse.

  • offset (ConstrainedFloatValue = 5.0) – Time delay of the maximum value of the pulse in units of 1 / (2pi * fwidth).

Example

>>> pulse = GaussianPulse(freq0=200e12, fwidth=20e12)

Show JSON schema
{
   "title": "GaussianPulse",
   "description": "Source time dependence that describes a Gaussian pulse.\n\nParameters\n----------\namplitude : NonNegativeFloat = 1.0\n    Real-valued maximum amplitude of the time dependence.\nphase : float = 0.0\n    [units = rad].  Phase shift of the time dependence.\nfreq0 : PositiveFloat\n    [units = Hz].  Central frequency of the pulse.\nfwidth : PositiveFloat\n    [units = Hz].  Standard deviation of the frequency content of the pulse.\noffset : ConstrainedFloatValue = 5.0\n    Time delay of the maximum value of the pulse in units of 1 / (``2pi * fwidth``).\n\nExample\n-------\n>>> pulse = GaussianPulse(freq0=200e12, fwidth=20e12)",
   "type": "object",
   "properties": {
      "amplitude": {
         "title": "Amplitude",
         "description": "Real-valued maximum amplitude of the time dependence.",
         "default": 1.0,
         "minimum": 0,
         "type": "number"
      },
      "phase": {
         "title": "Phase",
         "description": "Phase shift of the time dependence.",
         "default": 0.0,
         "units": "rad",
         "type": "number"
      },
      "type": {
         "title": "Type",
         "default": "GaussianPulse",
         "enum": [
            "GaussianPulse"
         ],
         "type": "string"
      },
      "freq0": {
         "title": "Central Frequency",
         "description": "Central frequency of the pulse.",
         "units": "Hz",
         "exclusiveMinimum": 0,
         "type": "number"
      },
      "fwidth": {
         "title": "Fwidth",
         "description": "Standard deviation of the frequency content of the pulse.",
         "units": "Hz",
         "exclusiveMinimum": 0,
         "type": "number"
      },
      "offset": {
         "title": "Offset",
         "description": "Time delay of the maximum value of the pulse in units of 1 / (``2pi * fwidth``).",
         "default": 5.0,
         "minimum": 2.5,
         "type": "number"
      }
   },
   "required": [
      "freq0",
      "fwidth"
   ],
   "additionalProperties": false
}

attribute amplitude: pydantic.types.NonNegativeFloat = 1.0#

Real-valued maximum amplitude of the time dependence.

Constraints
  • minimum = 0

attribute freq0: pydantic.types.PositiveFloat [Required]#

Central frequency of the pulse.

Constraints
  • exclusiveMinimum = 0

attribute fwidth: pydantic.types.PositiveFloat [Required]#

Standard deviation of the frequency content of the pulse.

Constraints
  • exclusiveMinimum = 0

attribute offset: float = 5.0#

Time delay of the maximum value of the pulse in units of 1 / (2pi * fwidth).

Constraints
  • minimum = 2.5

attribute phase: float = 0.0#

Phase shift of the time dependence.

classmethod add_type_field() None#

Automatically place “type” field with model name in the model field dictionary.

amp_time(time: float) complex#

Complex-valued source amplitude as a function of time.

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') 
frequency_range(num_fwidth: float = 4.0) Tuple[float, float]#

Frequency range within 5 standard deviations of the central frequency.

Parameters

num_fwidth (float = 4.) – Frequency range defined as plus/minus num_fwidth * self.fwdith.

Returns

Minimum and maximum frequencies of the GaussianPulse or ContinuousWave power.

Return type

Tuple[float, float]

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) 
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().

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#
plot(times: tidy3d.components.types.Array, ax: matplotlib.axes._axes.Axes = None) matplotlib.axes._axes.Axes#

Plot the complex-valued amplitude of the source time-dependence.

Parameters
  • times (np.ndarray) – Array of times (seconds) to plot source at. To see source time amplitude for a specific Simulation, pass simulation.tmesh.

  • 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

plot_spectrum(times: tidy3d.components.types.Array, num_freqs: int = 101, ax: matplotlib.axes._axes.Axes = None, complex_fields: bool = False) matplotlib.axes._axes.Axes#

Plot the complex-valued amplitude of the source time-dependence.

Parameters
  • times (np.ndarray) – Array of evenly-spaced times (seconds) to evaluate source time-dependence at. The spectrum is computed from this value and the source time frequency content. To see source spectrum for a specific Simulation, pass simulation.tmesh.

  • num_freqs (int = 101) – Number of frequencies to plot within the SourceTime.frequency_range.

  • ax (matplotlib.axes._subplots.Axes = None) – Matplotlib axes to plot on, if not specified, one is created.

  • complex_fields (bool) – Whether time domain fields are complex, e.g., for Bloch boundaries

Returns

The supplied or created matplotlib axes.

Return type

matplotlib.axes._subplots.Axes

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#
spectrum(times: tidy3d.components.types.Array, freqs: tidy3d.components.types.Array, dt: float, complex_fields: bool = False) complex#

Complex-valued source spectrum as a function of frequency

Parameters
  • times (np.ndarray) – Times to use to evaluate spectrum Fourier transform. (Typically the simulation time mesh).

  • freqs (np.ndarray) – Frequencies in Hz to evaluate spectrum at.

  • dt (float or np.ndarray) – Time step to weight FT integral with. If array, use to weigh each of the time intervals in times.

  • complex_fields (bool) – Whether time domain fields are complex, e.g., for Bloch boundaries

Returns

Complex-valued array (of len(freqs)) containing spectrum at those frequencies.

Return type

np.ndarray

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#