From 78ccc7cacc405c5e27cc6991858538b3440d4bfe Mon Sep 17 00:00:00 2001 From: momchil Date: Fri, 29 Apr 2022 10:35:52 -0700 Subject: [PATCH] changelog and schema --- CHANGELOG.md | 18 +++++++++++++++++- tidy3d/schema.json | 4 ++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0c04e9f0..fe1c3039d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +## [1.3.1] - 2022-4-29 + +### Added + +### Changed + + - The `copy()` method of Tidy3d components is deep by default. + - Maximum allowed number of distinct materials is now 65530. + +### Fixed + + - Monitor/source opacity values also applied to associated arrows. + - Auto meshing in the presence of symmetries ignores anything outside of the main symmetry quadrant. + - If an interface is completely covered by another structure, it is ignored by the mesher. + ## [1.3.0] - 2022-4-26 ### Added @@ -264,7 +279,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Job and Batch classes for better simulation handling (eventually to fully replace webapi functions). - A large number of small improvements and bug fixes. -[Unreleased]: https://github.com/flexcompute/tidy3d/compare/v1.3.0...develop +[Unreleased]: https://github.com/flexcompute/tidy3d/compare/v1.3.1...develop +[1.3.1]: https://github.com/flexcompute/tidy3d/compare/v1.3.0...1.3.1 [1.3.0]: https://github.com/flexcompute/tidy3d/compare/v1.2.2...v1.3.0 [1.2.2]: https://github.com/flexcompute/tidy3d/compare/v1.2.1...v1.2.2 [1.2.1]: https://github.com/flexcompute/tidy3d/compare/v1.2.0...v1.2.1 diff --git a/tidy3d/schema.json b/tidy3d/schema.json index 08cf87104..850268768 100644 --- a/tidy3d/schema.json +++ b/tidy3d/schema.json @@ -1,6 +1,6 @@ { "title": "Simulation", - "description": "Contains all information about Tidy3d simulation.\n\nParameters\n----------\ncenter : Tuple[float, float, float] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nsize : Tuple[NonNegativeFloat, NonNegativeFloat, NonNegativeFloat] = None\n [units = um]. Size in x, y, and z directions.\nrun_time : PositiveFloat = None\n [units = sec]. Total electromagnetic evolution time in seconds. Note: If simulation 'shutoff' is specified, simulation will terminate early when shutoff condition met. \ngrid_size : Union[GridSpec, Tuple[Union[pydantic.types.PositiveFloat, List[pydantic.types.PositiveFloat]], Union[pydantic.types.PositiveFloat, List[pydantic.types.PositiveFloat]], Union[pydantic.types.PositiveFloat, List[pydantic.types.PositiveFloat]]]] = None\n [units = um]. NOTE: 'grid_size' has been replaced by 'grid_spec'.\nmedium : Union[Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude] = Medium(name=None, frequency_range=None, type='Medium', permittivity=1.0, conductivity=0.0)\n Background medium of simulation, defaults to vacuum if not specified.\nsymmetry : Tuple[Literal[0, -1, 1], Literal[0, -1, 1], Literal[0, -1, 1]] = (0, 0, 0)\n Tuple of integers defining reflection symmetry across a plane bisecting the simulation domain normal to the x-, y-, and z-axis, respectvely. Each element can be ``0`` (no symmetry), ``1`` (even, i.e. 'PMC' symmetry) or ``-1`` (odd, i.e. 'PEC' symmetry). Note that the vectorial nature of the fields must be taken into account to correctly determine the symmetry value.\nstructures : List[Structure] = []\n List of structures present in simulation. Note: Structures defined later in this list override the simulation material properties in regions of spatial overlap.\nsources : List[Union[UniformCurrentSource, PointDipole, GaussianBeam, ModeSource, PlaneWave]] = []\n List of electric current sources injecting fields into the simulation.\nmonitors : List[Union[FieldMonitor, FieldTimeMonitor, PermittivityMonitor, FluxMonitor, FluxTimeMonitor, ModeMonitor, ModeFieldMonitor]] = []\n List of monitors in the simulation. Note: monitor names are used to access data after simulation is run.\ngrid_spec : GridSpec = GridSpec(grid_x=AutoGrid(type='AutoGrid',, min_steps_per_wvl=10.0,, max_scale=1.4,, mesher=GradedMesher(type='GradedMesher')), grid_y=AutoGrid(type='AutoGrid',, min_steps_per_wvl=10.0,, max_scale=1.4,, mesher=GradedMesher(type='GradedMesher')), grid_z=AutoGrid(type='AutoGrid',, min_steps_per_wvl=10.0,, max_scale=1.4,, mesher=GradedMesher(type='GradedMesher')), wavelength=None, override_structures=[], type='GridSpec')\n Specifications for the simulation grid along each of the three directions.\npml_layers : Tuple[Union[PML, StablePML, Absorber, NoneType], Union[PML, StablePML, Absorber, NoneType], Union[PML, StablePML, Absorber, NoneType]] = (None, None, None)\n Specifications for the absorbing layers on x, y, and z edges. If ``None``, no absorber will be added on that dimension and periodic boundary conditions will be used.\nshutoff : NonNegativeFloat = 1e-05\n Ratio of the instantaneous integrated E-field intensity to the maximum value at which the simulation will automatically terminate time stepping. Used to prevent extraneous run time of simulations with fully decayed fields. Set to ``0`` to disable this feature.\nsubpixel : bool = True\n If ``True``, uses subpixel averaging of the permittivity based on structure definition, resulting in much higher accuracy for a given grid size.\ncourant : ConstrainedFloatValue = 0.9\n Courant stability factor, controls time step to spatial step ratio. Lower values lead to more stable simulations for dispersive materials, but result in longer simulation times.\nversion : str = 1.3.0\n String specifying the front end version number.\n\nExample\n-------\n>>> from tidy3d import Sphere, Cylinder, PolySlab\n>>> from tidy3d import CurrentSource, GaussianPulse\n>>> from tidy3d import FieldMonitor, FluxMonitor\n>>> from tidy3d import GridSpec, AutoGrid\n>>> sim = Simulation(\n... size=(2.0, 2.0, 2.0),\n... grid_spec=GridSpec(\n... grid_x = AutoGrid(min_steps_per_wvl = 20),\n... grid_y = AutoGrid(min_steps_per_wvl = 20),\n... grid_z = AutoGrid(min_steps_per_wvl = 20)\n... ),\n... run_time=40e-11,\n... structures=[\n... Structure(\n... geometry=Box(size=(1, 1, 1), center=(-1, 0, 0)),\n... medium=Medium(permittivity=2.0),\n... ),\n... ],\n... sources=[\n... CurrentSource(\n... size=(0, 0, 0),\n... center=(0, 0.5, 0),\n... polarization=\"Hx\",\n... source_time=GaussianPulse(\n... freq0=2e14,\n... fwidth=4e13,\n... ),\n... )\n... ],\n... monitors=[\n... FieldMonitor(size=(0, 0, 0), center=(0, 0, 0), freqs=[1.5e14, 2e14], name='point'),\n... FluxMonitor(size=(1, 1, 0), center=(0, 0, 0), freqs=[2e14, 2.5e14], name='flux'),\n... ],\n... symmetry=(0, 0, 0),\n... pml_layers=(\n... PML(num_layers=20),\n... PML(num_layers=30),\n... None,\n... ),\n... shutoff=1e-6,\n... courant=0.8,\n... subpixel=False,\n... )", + "description": "Contains all information about Tidy3d simulation.\n\nParameters\n----------\ncenter : Tuple[float, float, float] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nsize : Tuple[NonNegativeFloat, NonNegativeFloat, NonNegativeFloat] = None\n [units = um]. Size in x, y, and z directions.\nrun_time : PositiveFloat = None\n [units = sec]. Total electromagnetic evolution time in seconds. Note: If simulation 'shutoff' is specified, simulation will terminate early when shutoff condition met. \ngrid_size : Union[GridSpec, Tuple[Union[pydantic.types.PositiveFloat, List[pydantic.types.PositiveFloat]], Union[pydantic.types.PositiveFloat, List[pydantic.types.PositiveFloat]], Union[pydantic.types.PositiveFloat, List[pydantic.types.PositiveFloat]]]] = None\n [units = um]. NOTE: 'grid_size' has been replaced by 'grid_spec'.\nmedium : Union[Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude] = Medium(name=None, frequency_range=None, type='Medium', permittivity=1.0, conductivity=0.0)\n Background medium of simulation, defaults to vacuum if not specified.\nsymmetry : Tuple[Literal[0, -1, 1], Literal[0, -1, 1], Literal[0, -1, 1]] = (0, 0, 0)\n Tuple of integers defining reflection symmetry across a plane bisecting the simulation domain normal to the x-, y-, and z-axis, respectvely. Each element can be ``0`` (no symmetry), ``1`` (even, i.e. 'PMC' symmetry) or ``-1`` (odd, i.e. 'PEC' symmetry). Note that the vectorial nature of the fields must be taken into account to correctly determine the symmetry value.\nstructures : List[Structure] = []\n List of structures present in simulation. Note: Structures defined later in this list override the simulation material properties in regions of spatial overlap.\nsources : List[Union[UniformCurrentSource, PointDipole, GaussianBeam, ModeSource, PlaneWave]] = []\n List of electric current sources injecting fields into the simulation.\nmonitors : List[Union[FieldMonitor, FieldTimeMonitor, PermittivityMonitor, FluxMonitor, FluxTimeMonitor, ModeMonitor, ModeFieldMonitor]] = []\n List of monitors in the simulation. Note: monitor names are used to access data after simulation is run.\ngrid_spec : GridSpec = GridSpec(grid_x=AutoGrid(type='AutoGrid',, min_steps_per_wvl=10.0,, max_scale=1.4,, mesher=GradedMesher(type='GradedMesher')), grid_y=AutoGrid(type='AutoGrid',, min_steps_per_wvl=10.0,, max_scale=1.4,, mesher=GradedMesher(type='GradedMesher')), grid_z=AutoGrid(type='AutoGrid',, min_steps_per_wvl=10.0,, max_scale=1.4,, mesher=GradedMesher(type='GradedMesher')), wavelength=None, override_structures=[], type='GridSpec')\n Specifications for the simulation grid along each of the three directions.\npml_layers : Tuple[Union[PML, StablePML, Absorber, NoneType], Union[PML, StablePML, Absorber, NoneType], Union[PML, StablePML, Absorber, NoneType]] = (None, None, None)\n Specifications for the absorbing layers on x, y, and z edges. If ``None``, no absorber will be added on that dimension and periodic boundary conditions will be used.\nshutoff : NonNegativeFloat = 1e-05\n Ratio of the instantaneous integrated E-field intensity to the maximum value at which the simulation will automatically terminate time stepping. Used to prevent extraneous run time of simulations with fully decayed fields. Set to ``0`` to disable this feature.\nsubpixel : bool = True\n If ``True``, uses subpixel averaging of the permittivity based on structure definition, resulting in much higher accuracy for a given grid size.\ncourant : ConstrainedFloatValue = 0.9\n Courant stability factor, controls time step to spatial step ratio. Lower values lead to more stable simulations for dispersive materials, but result in longer simulation times.\nversion : str = 1.3.1\n String specifying the front end version number.\n\nExample\n-------\n>>> from tidy3d import Sphere, Cylinder, PolySlab\n>>> from tidy3d import UniformCurrentSource, GaussianPulse\n>>> from tidy3d import FieldMonitor, FluxMonitor\n>>> from tidy3d import GridSpec, AutoGrid\n>>> sim = Simulation(\n... size=(2.0, 2.0, 2.0),\n... grid_spec=GridSpec(\n... grid_x = AutoGrid(min_steps_per_wvl = 20),\n... grid_y = AutoGrid(min_steps_per_wvl = 20),\n... grid_z = AutoGrid(min_steps_per_wvl = 20)\n... ),\n... run_time=40e-11,\n... structures=[\n... Structure(\n... geometry=Box(size=(1, 1, 1), center=(-1, 0, 0)),\n... medium=Medium(permittivity=2.0),\n... ),\n... ],\n... sources=[\n... UniformCurrentSource(\n... size=(0, 0, 0),\n... center=(0, 0.5, 0),\n... polarization=\"Hx\",\n... source_time=GaussianPulse(\n... freq0=2e14,\n... fwidth=4e13,\n... ),\n... )\n... ],\n... monitors=[\n... FieldMonitor(size=(0, 0, 0), center=(0, 0, 0), freqs=[1.5e14, 2e14], name='point'),\n... FluxMonitor(size=(1, 1, 0), center=(0, 0, 0), freqs=[2e14, 2.5e14], name='flux'),\n... ],\n... symmetry=(0, 0, 0),\n... pml_layers=(\n... PML(num_layers=20),\n... PML(num_layers=30),\n... None,\n... ),\n... shutoff=1e-6,\n... courant=0.8,\n... subpixel=False,\n... )", "type": "object", "properties": { "center": { @@ -381,7 +381,7 @@ "version": { "title": "Version", "description": "String specifying the front end version number.", - "default": "1.3.0", + "default": "1.3.1", "type": "string" } },