tidy3d.BoundarySpec#

class tidy3d.BoundarySpec#

Bases: tidy3d.components.base.Tidy3dBaseModel

Specifies boundary conditions on each side of the domain and along each dimension.

Parameters
  • x (Optional[Boundary] = None) – Boundary condition on the plus and minus sides along the x axis. If None, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.

  • y (Optional[Boundary] = None) – Boundary condition on the plus and minus sides along the y axis. If None, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.

  • z (Optional[Boundary] = None) – Boundary condition on the plus and minus sides along the z axis. If None, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.

Show JSON schema
{
   "title": "BoundarySpec",
   "description": "Specifies boundary conditions on each side of the domain and along each dimension.\n\nParameters\n----------\nx : Optional[Boundary] = None\n    Boundary condition on the plus and minus sides along the x axis. If `None`, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.\ny : Optional[Boundary] = None\n    Boundary condition on the plus and minus sides along the y axis. If `None`, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.\nz : Optional[Boundary] = None\n    Boundary condition on the plus and minus sides along the z axis. If `None`, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.",
   "type": "object",
   "properties": {
      "x": {
         "title": "Boundary condition along x.",
         "description": "Boundary condition on the plus and minus sides along the x axis. If `None`, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.",
         "allOf": [
            {
               "$ref": "#/definitions/Boundary"
            }
         ]
      },
      "y": {
         "title": "Boundary condition along y.",
         "description": "Boundary condition on the plus and minus sides along the y axis. If `None`, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.",
         "allOf": [
            {
               "$ref": "#/definitions/Boundary"
            }
         ]
      },
      "z": {
         "title": "Boundary condition along z.",
         "description": "Boundary condition on the plus and minus sides along the z axis. If `None`, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.",
         "allOf": [
            {
               "$ref": "#/definitions/Boundary"
            }
         ]
      },
      "type": {
         "title": "Type",
         "default": "BoundarySpec",
         "enum": [
            "BoundarySpec"
         ],
         "type": "string"
      }
   },
   "additionalProperties": false,
   "definitions": {
      "Periodic": {
         "title": "Periodic",
         "description": "Periodic boundary condition class.\n\nParameters\n----------\nname : Optional[str] = None\n    Optional unique name for boundary.",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "description": "Optional unique name for boundary.",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "default": "Periodic",
               "enum": [
                  "Periodic"
               ],
               "type": "string"
            }
         },
         "additionalProperties": false
      },
      "PECBoundary": {
         "title": "PECBoundary",
         "description": "Perfect electric conductor boundary condition class.\n\nParameters\n----------\nname : Optional[str] = None\n    Optional unique name for boundary.",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "description": "Optional unique name for boundary.",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "default": "PECBoundary",
               "enum": [
                  "PECBoundary"
               ],
               "type": "string"
            }
         },
         "additionalProperties": false
      },
      "PMCBoundary": {
         "title": "PMCBoundary",
         "description": "Perfect magnetic conductor boundary condition class.\n\nParameters\n----------\nname : Optional[str] = None\n    Optional unique name for boundary.",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "description": "Optional unique name for boundary.",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "default": "PMCBoundary",
               "enum": [
                  "PMCBoundary"
               ],
               "type": "string"
            }
         },
         "additionalProperties": false
      },
      "PMLParams": {
         "title": "PMLParams",
         "description": "Specifies full set of parameters needed for complex, frequency-shifted PML.\n\nParameters\n----------\nsigma_order : NonNegativeInt = 3\n    Order of the polynomial describing the absorber profile (~dist^sigma_order).\nsigma_min : NonNegativeFloat = 0.0\n    [units = 2*EPSILON_0/dt].  Minimum value of the absorber conductivity.\nsigma_max : NonNegativeFloat = 1.5\n    [units = 2*EPSILON_0/dt].  Maximum value of the absorber conductivity.\nkappa_order : NonNegativeInt = 3\n    Order of the polynomial describing the PML kappa profile (kappa~dist^kappa_order).\nkappa_min : NonNegativeFloat = 0.0\n    \nkappa_max : NonNegativeFloat = 1.5\n    \nalpha_order : NonNegativeInt = 3\n    Order of the polynomial describing the PML alpha profile (alpha~dist^alpha_order).\nalpha_min : NonNegativeFloat = 0.0\n    [units = 2*EPSILON_0/dt].  Minimum value of the PML alpha.\nalpha_max : NonNegativeFloat = 1.5\n    [units = 2*EPSILON_0/dt].  Maximum value of the PML alpha.\n\nExample\n-------\n>>> params = PMLParams(sigma_order=3, sigma_min=0.0, sigma_max=1.5, kappa_min=0.0)",
         "type": "object",
         "properties": {
            "sigma_order": {
               "title": "Sigma Order",
               "description": "Order of the polynomial describing the absorber profile (~dist^sigma_order).",
               "default": 3,
               "minimum": 0,
               "type": "integer"
            },
            "sigma_min": {
               "title": "Sigma Minimum",
               "description": "Minimum value of the absorber conductivity.",
               "default": 0.0,
               "units": "2*EPSILON_0/dt",
               "minimum": 0,
               "type": "number"
            },
            "sigma_max": {
               "title": "Sigma Maximum",
               "description": "Maximum value of the absorber conductivity.",
               "default": 1.5,
               "units": "2*EPSILON_0/dt",
               "minimum": 0,
               "type": "number"
            },
            "type": {
               "title": "Type",
               "default": "PMLParams",
               "enum": [
                  "PMLParams"
               ],
               "type": "string"
            },
            "kappa_order": {
               "title": "Kappa Order",
               "description": "Order of the polynomial describing the PML kappa profile (kappa~dist^kappa_order).",
               "default": 3,
               "minimum": 0,
               "type": "integer"
            },
            "kappa_min": {
               "title": "Kappa Minimum",
               "default": 0.0,
               "minimum": 0,
               "type": "number"
            },
            "kappa_max": {
               "title": "Kappa Maximum",
               "default": 1.5,
               "minimum": 0,
               "type": "number"
            },
            "alpha_order": {
               "title": "Alpha Order",
               "description": "Order of the polynomial describing the PML alpha profile (alpha~dist^alpha_order).",
               "default": 3,
               "minimum": 0,
               "type": "integer"
            },
            "alpha_min": {
               "title": "Alpha Minimum",
               "description": "Minimum value of the PML alpha.",
               "default": 0.0,
               "units": "2*EPSILON_0/dt",
               "minimum": 0,
               "type": "number"
            },
            "alpha_max": {
               "title": "Alpha Maximum",
               "description": "Maximum value of the PML alpha.",
               "default": 1.5,
               "units": "2*EPSILON_0/dt",
               "minimum": 0,
               "type": "number"
            }
         },
         "additionalProperties": false
      },
      "PML": {
         "title": "PML",
         "description": "Specifies a standard PML along a single dimension.\n\nParameters\n----------\nname : Optional[str] = None\n    Optional unique name for boundary.\nnum_layers : NonNegativeInt = 12\n    Number of layers of standard PML.\nparameters : PMLParams = PMLParams(sigma_order=3, sigma_min=0.0, sigma_max=1.5, type='PMLParams', kappa_order=3, kappa_min=1.0, kappa_max=3.0, alpha_order=1, alpha_min=0.0, alpha_max=0.0)\n    Parameters of the complex frequency-shifted absorption poles.\n\nExample\n-------\n>>> pml = PML(num_layers=10)",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "description": "Optional unique name for boundary.",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "default": "PML",
               "enum": [
                  "PML"
               ],
               "type": "string"
            },
            "num_layers": {
               "title": "Number of Layers",
               "description": "Number of layers of standard PML.",
               "default": 12,
               "minimum": 0,
               "type": "integer"
            },
            "parameters": {
               "title": "PML Parameters",
               "description": "Parameters of the complex frequency-shifted absorption poles.",
               "default": {
                  "sigma_order": 3,
                  "sigma_min": 0.0,
                  "sigma_max": 1.5,
                  "type": "PMLParams",
                  "kappa_order": 3,
                  "kappa_min": 1.0,
                  "kappa_max": 3.0,
                  "alpha_order": 1,
                  "alpha_min": 0.0,
                  "alpha_max": 0.0
               },
               "allOf": [
                  {
                     "$ref": "#/definitions/PMLParams"
                  }
               ]
            }
         },
         "additionalProperties": false
      },
      "StablePML": {
         "title": "StablePML",
         "description": "Specifies a 'stable' PML along a single dimension.\nThis PML deals handles possbly divergent simulations better, but at the expense of more layers.\n\nParameters\n----------\nname : Optional[str] = None\n    Optional unique name for boundary.\nnum_layers : NonNegativeInt = 40\n    Number of layers of 'stable' PML.\nparameters : PMLParams = PMLParams(sigma_order=3, sigma_min=0.0, sigma_max=1.0, type='PMLParams', kappa_order=3, kappa_min=1.0, kappa_max=5.0, alpha_order=1, alpha_min=0.0, alpha_max=0.9)\n    'Stable' parameters of the complex frequency-shifted absorption poles.\n\nExample\n-------\n>>> pml = StablePML(num_layers=40)",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "description": "Optional unique name for boundary.",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "default": "StablePML",
               "enum": [
                  "StablePML"
               ],
               "type": "string"
            },
            "num_layers": {
               "title": "Number of Layers",
               "description": "Number of layers of 'stable' PML.",
               "default": 40,
               "minimum": 0,
               "type": "integer"
            },
            "parameters": {
               "title": "Stable PML Parameters",
               "description": "'Stable' parameters of the complex frequency-shifted absorption poles.",
               "default": {
                  "sigma_order": 3,
                  "sigma_min": 0.0,
                  "sigma_max": 1.0,
                  "type": "PMLParams",
                  "kappa_order": 3,
                  "kappa_min": 1.0,
                  "kappa_max": 5.0,
                  "alpha_order": 1,
                  "alpha_min": 0.0,
                  "alpha_max": 0.9
               },
               "allOf": [
                  {
                     "$ref": "#/definitions/PMLParams"
                  }
               ]
            }
         },
         "additionalProperties": false
      },
      "AbsorberParams": {
         "title": "AbsorberParams",
         "description": "Specifies parameters common to Absorbers and PMLs.\n\nParameters\n----------\nsigma_order : NonNegativeInt = 3\n    Order of the polynomial describing the absorber profile (~dist^sigma_order).\nsigma_min : NonNegativeFloat = 0.0\n    [units = 2*EPSILON_0/dt].  Minimum value of the absorber conductivity.\nsigma_max : NonNegativeFloat = 1.5\n    [units = 2*EPSILON_0/dt].  Maximum value of the absorber conductivity.\n\nExample\n-------\n>>> params = AbsorberParams(sigma_order=3, sigma_min=0.0, sigma_max=1.5)",
         "type": "object",
         "properties": {
            "sigma_order": {
               "title": "Sigma Order",
               "description": "Order of the polynomial describing the absorber profile (~dist^sigma_order).",
               "default": 3,
               "minimum": 0,
               "type": "integer"
            },
            "sigma_min": {
               "title": "Sigma Minimum",
               "description": "Minimum value of the absorber conductivity.",
               "default": 0.0,
               "units": "2*EPSILON_0/dt",
               "minimum": 0,
               "type": "number"
            },
            "sigma_max": {
               "title": "Sigma Maximum",
               "description": "Maximum value of the absorber conductivity.",
               "default": 1.5,
               "units": "2*EPSILON_0/dt",
               "minimum": 0,
               "type": "number"
            },
            "type": {
               "title": "Type",
               "default": "AbsorberParams",
               "enum": [
                  "AbsorberParams"
               ],
               "type": "string"
            }
         },
         "additionalProperties": false
      },
      "Absorber": {
         "title": "Absorber",
         "description": "Specifies an adiabatic absorber along a single dimension.\nThis absorber is well-suited for dispersive materials\nintersecting with absorbing edges of the simulation at the expense of more layers.\n\nParameters\n----------\nname : Optional[str] = None\n    Optional unique name for boundary.\nnum_layers : NonNegativeInt = 40\n    Number of layers of absorber to add to + and - boundaries.\nparameters : AbsorberParams = AbsorberParams(sigma_order=3, sigma_min=0.0, sigma_max=6.4, type='AbsorberParams')\n    Adiabatic absorber parameters.\n\nExample\n-------\n>>> pml = Absorber(num_layers=40)",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "description": "Optional unique name for boundary.",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "default": "Absorber",
               "enum": [
                  "Absorber"
               ],
               "type": "string"
            },
            "num_layers": {
               "title": "Number of Layers",
               "description": "Number of layers of absorber to add to + and - boundaries.",
               "default": 40,
               "minimum": 0,
               "type": "integer"
            },
            "parameters": {
               "title": "Absorber Parameters",
               "description": "Adiabatic absorber parameters.",
               "default": {
                  "sigma_order": 3,
                  "sigma_min": 0.0,
                  "sigma_max": 6.4,
                  "type": "AbsorberParams"
               },
               "allOf": [
                  {
                     "$ref": "#/definitions/AbsorberParams"
                  }
               ]
            }
         },
         "additionalProperties": false
      },
      "BlochBoundary": {
         "title": "BlochBoundary",
         "description": "Specifies a Bloch boundary condition along a single dimension.\n\nParameters\n----------\nname : Optional[str] = None\n    Optional unique name for boundary.\nbloch_vec : float\n    Normalized component of the Bloch vector in units of 2 * pi / (size along dimension) in the background medium, along the dimension in which the boundary is specified.\n\nExample\n-------\n>>> bloch = BlochBoundary(bloch_vec=1)",
         "type": "object",
         "properties": {
            "name": {
               "title": "Name",
               "description": "Optional unique name for boundary.",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "default": "BlochBoundary",
               "enum": [
                  "BlochBoundary"
               ],
               "type": "string"
            },
            "bloch_vec": {
               "title": "Normalized Bloch vector component",
               "description": "Normalized component of the Bloch vector in units of 2 * pi / (size along dimension) in the background medium, along the dimension in which the boundary is specified.",
               "type": "number"
            }
         },
         "required": [
            "bloch_vec"
         ],
         "additionalProperties": false
      },
      "Boundary": {
         "title": "Boundary",
         "description": "Boundary conditions at the minus and plus extents along a dimension\n\nParameters\n----------\nplus : Union[Periodic, PECBoundary, PMCBoundary, PML, StablePML, Absorber, BlochBoundary] = Periodic(name=None, type='Periodic')\n    Boundary condition on the plus side along a dimension.\nminus : Union[Periodic, PECBoundary, PMCBoundary, PML, StablePML, Absorber, BlochBoundary] = Periodic(name=None, type='Periodic')\n    Boundary condition on the minus side along a dimension.\n\nExample\n-------\n>>> boundary = Boundary(plus = PML(), minus = PECBoundary())",
         "type": "object",
         "properties": {
            "plus": {
               "title": "Plus BC",
               "description": "Boundary condition on the plus side along a dimension.",
               "default": {
                  "name": null,
                  "type": "Periodic"
               },
               "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                     "Periodic": "#/definitions/Periodic",
                     "PECBoundary": "#/definitions/PECBoundary",
                     "PMCBoundary": "#/definitions/PMCBoundary",
                     "PML": "#/definitions/PML",
                     "StablePML": "#/definitions/StablePML",
                     "Absorber": "#/definitions/Absorber",
                     "BlochBoundary": "#/definitions/BlochBoundary"
                  }
               },
               "oneOf": [
                  {
                     "$ref": "#/definitions/Periodic"
                  },
                  {
                     "$ref": "#/definitions/PECBoundary"
                  },
                  {
                     "$ref": "#/definitions/PMCBoundary"
                  },
                  {
                     "$ref": "#/definitions/PML"
                  },
                  {
                     "$ref": "#/definitions/StablePML"
                  },
                  {
                     "$ref": "#/definitions/Absorber"
                  },
                  {
                     "$ref": "#/definitions/BlochBoundary"
                  }
               ]
            },
            "minus": {
               "title": "Minus BC",
               "description": "Boundary condition on the minus side along a dimension.",
               "default": {
                  "name": null,
                  "type": "Periodic"
               },
               "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                     "Periodic": "#/definitions/Periodic",
                     "PECBoundary": "#/definitions/PECBoundary",
                     "PMCBoundary": "#/definitions/PMCBoundary",
                     "PML": "#/definitions/PML",
                     "StablePML": "#/definitions/StablePML",
                     "Absorber": "#/definitions/Absorber",
                     "BlochBoundary": "#/definitions/BlochBoundary"
                  }
               },
               "oneOf": [
                  {
                     "$ref": "#/definitions/Periodic"
                  },
                  {
                     "$ref": "#/definitions/PECBoundary"
                  },
                  {
                     "$ref": "#/definitions/PMCBoundary"
                  },
                  {
                     "$ref": "#/definitions/PML"
                  },
                  {
                     "$ref": "#/definitions/StablePML"
                  },
                  {
                     "$ref": "#/definitions/Absorber"
                  },
                  {
                     "$ref": "#/definitions/BlochBoundary"
                  }
               ]
            },
            "type": {
               "title": "Type",
               "default": "Boundary",
               "enum": [
                  "Boundary"
               ],
               "type": "string"
            }
         },
         "additionalProperties": false
      }
   }
}

attribute x: tidy3d.components.boundary.Boundary = None#

Boundary condition on the plus and minus sides along the x axis. If None, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.

Validated by
  • _deprecation_2_0_missing_defaults

attribute y: tidy3d.components.boundary.Boundary = None#

Boundary condition on the plus and minus sides along the y axis. If None, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.

Validated by
  • _deprecation_2_0_missing_defaults

attribute z: tidy3d.components.boundary.Boundary = None#

Boundary condition on the plus and minus sides along the z axis. If None, periodic boundaries are applied. Default will change to PML in 2.0 so explicitly setting the boundaries is recommended.

Validated by
  • _deprecation_2_0_missing_defaults

classmethod add_type_field() None#

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

classmethod all_sides(boundary: tidy3d.components.boundary.BoundaryEdge)#

Set a given boundary condition on all six sides of the domain

Parameters

boundary (BoundaryEdge) – Boundary condition to apply on all six sides of the domain.

Example

>>> boundaries = BoundarySpec.all_sides(boundary=PML())
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) 
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#
classmethod pec(x: bool = False, y: bool = False, z: bool = False)#

PEC along specified directions

Parameters
  • x (bool = False) – Toggle whether to set a PEC condition on both plus and minus sides along the x axis.

  • y (bool = False) – Toggle whether to set a PEC condition on both plus and minus sides along the y axis.

  • z (bool = False) – Toggle whether to set a PEC condition on both plus and minus sides along the z axis.

Example

>>> boundaries = BoundarySpec.pec(x=True, z=True)
classmethod pmc(x: bool = False, y: bool = False, z: bool = False)#

PMC along specified directions

Parameters
  • x (bool = False) – Toggle whether to set a PMC condition on both plus and minus sides along the x axis.

  • y (bool = False) – Toggle whether to set a PMC condition on both plus and minus sides along the y axis.

  • z (bool = False) – Toggle whether to set a PMC condition on both plus and minus sides along the z axis.

Example

>>> boundaries = BoundarySpec.pmc(x=True, z=True)
classmethod pml(x: bool = False, y: bool = False, z: bool = False)#

PML along specified directions

Parameters
  • x (bool = False) – Toggle whether to set a default PML on both plus and minus sides along the x axis.

  • y (bool = False) – Toggle whether to set a default PML on both plus and minus sides along the y axis.

  • z (bool = False) – Toggle whether to set a default PML on both plus and minus sides along the z axis.

Example

>>> boundaries = BoundarySpec.pml(y=True)
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 flipped_bloch_vecs: tidy3d.components.boundary.BoundarySpec#

Return a copy of the instance where all Bloch vectors are multiplied by -1.

property to_list: List[Tuple[Union[tidy3d.components.boundary.Periodic, tidy3d.components.boundary.PECBoundary, tidy3d.components.boundary.PMCBoundary, tidy3d.components.boundary.PML, tidy3d.components.boundary.StablePML, tidy3d.components.boundary.Absorber, tidy3d.components.boundary.BlochBoundary], Union[tidy3d.components.boundary.Periodic, tidy3d.components.boundary.PECBoundary, tidy3d.components.boundary.PMCBoundary, tidy3d.components.boundary.PML, tidy3d.components.boundary.StablePML, tidy3d.components.boundary.Absorber, tidy3d.components.boundary.BlochBoundary]]]#

Returns edge-wise boundary conditions along each dimension for internal use.