tidy3d.BoundarySpec
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 (Boundary = Boundary(plus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), minus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), type='Boundary')) – 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 (Boundary = Boundary(plus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), minus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), type='Boundary')) – 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 (Boundary = Boundary(plus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), minus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), type='Boundary')) – 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 : Boundary = Boundary(plus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), minus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), type='Boundary')\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 : Boundary = Boundary(plus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), minus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), type='Boundary')\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 : Boundary = Boundary(plus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), minus=PML(name=None,, type='PML',, num_layers=12,, parameters=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)), type='Boundary')\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.", "default": { "plus": { "name": null, "type": "PML", "num_layers": 12, "parameters": { "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 } }, "minus": { "name": null, "type": "PML", "num_layers": 12, "parameters": { "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 } }, "type": "Boundary" }, "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.", "default": { "plus": { "name": null, "type": "PML", "num_layers": 12, "parameters": { "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 } }, "minus": { "name": null, "type": "PML", "num_layers": 12, "parameters": { "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 } }, "type": "Boundary" }, "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.", "default": { "plus": { "name": null, "type": "PML", "num_layers": 12, "parameters": { "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 } }, "minus": { "name": null, "type": "PML", "num_layers": 12, "parameters": { "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 } }, "type": "Boundary" }, "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] = PML(name=None, type='PML', num_layers=12, parameters=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 Boundary condition on the plus side along a dimension.\nminus : Union[Periodic, PECBoundary, PMCBoundary, PML, StablePML, Absorber, BlochBoundary] = PML(name=None, type='PML', num_layers=12, parameters=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 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": "PML", "num_layers": 12, "parameters": { "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 } }, "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": "PML", "num_layers": 12, "parameters": { "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 } }, "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 = Boundary(plus=PML(name=None, type='PML', num_layers=12, parameters=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)), minus=PML(name=None, type='PML', num_layers=12, parameters=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)), type='Boundary')#
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.
- attribute y: tidy3d.components.boundary.Boundary = Boundary(plus=PML(name=None, type='PML', num_layers=12, parameters=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)), minus=PML(name=None, type='PML', num_layers=12, parameters=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)), type='Boundary')#
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.
- attribute z: tidy3d.components.boundary.Boundary = Boundary(plus=PML(name=None, type='PML', num_layers=12, parameters=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)), minus=PML(name=None, type='PML', num_layers=12, parameters=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)), type='Boundary')#
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.
- 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.