Skip to content

Commit

Permalink
⚡ CHARGE API & MultiPhysicsMedium
Browse files Browse the repository at this point in the history
  • Loading branch information
marc-flex committed Jan 24, 2025
1 parent 6b29b9f commit 9a371e7
Show file tree
Hide file tree
Showing 99 changed files with 9,898 additions and 4,346 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Support for quasi-uniform grid specifications via `QuasiUniformGrid` that subclasses from `GridSpec1d`. The grids are almost uniform, but can adjust locally to the edge of structure bounding boxes, and snapping points.
- New field `min_steps_per_sim_size` in `AutoGrid` that sets minimal number of grid steps per longest edge length of simulation domain.
- New field `shadow` in `MeshOverrideStructure` that sets grid size in overlapping region according to structure list or minimal grid size.
- Added :zap: CHARGE Solver API, basic `SPICE` & `MultiPhysicsMedium` functionality.
- Added :zap: Charge Solver API, basic `SPICE` & `MultiPhysicsMedium` functionality.
- `MultiphysicsMedium` allows for the modularization definition of physical properties. So in addition to the usual optical properties, one can now add heat properties or electric properties. The advantage is that it is now possible to define a medium with some frequency-dependent permittivity in the optical regime and some constant permittivity in valid for electrostatic simulations.
- `MultiPhysicsMedium` allows for the modularization definition of physical properties. So in addition to the usual optical properties, one can now add heat properties or charge properties. The advantage is that it is now possible to define a medium with some frequency-dependent permittivity in the optical regime and some constant permittivity in valid for electrostatic simulations.
- Added :zap: Charge Solver API. It is now possible to solve the Drift-Diffusion (DD) equations for semiconductors. These simulations can be set up with the new class `HeatChargeSimulation` (which supersedes `HeatSimulation`) in a way similar to that of Heat simulations. The solver has currently limited capabilities (which will be expanded in future releases): steady only, isothermal, Boltzmann statistics (non-degenerate semiconductors only).
- `SemiconductorMedium` has been added. This is used in combination with `MultiPhysicsMedium` to define the mediums used in the Charge solver. It allows to specify mobility, bandgap narrowing, and generation/recombination models as well as doping. Doping can be defined as constant or through "doping boxes" or, more generally, via `SpatialDataArray` objects for full flexibility.
- Mobility models for `SemiconductorMedium`: `ConstantMobilityModel`, `CaugheyThomasMobility`
- Bandgap narrowing models for `SemiconductorMedium`: `SlotboomBandGapNarrowing`
- Generation-recombination models for `SemiconductorMedium`: `ShockleyReedHallRecombination`, `RadiativeRecombination`, `AugerRecombination`

### Changed
- `ModeMonitor` and `ModeSolverMonitor` now use the default `td.ModeSpec()` with `num_modes=1` when `mode_spec` is not provided.
- Update sidewall angle validator to clarify angle should be specified in radians.
- Reduced the complex tolerance in the mode solver below which permittivity is considered lossless, in order to correctly compute very low-loss modes.
-`HeatChargeSimulation` supersedes `HeatSimulation`. Though both of the can be used for Heat simulation interchangeably, the latter has been deprecated and will disappear in the future.
- `FluidSpec` and `SolidSpec` are now deprecated in favor of `FluidMedium` and `SolidMedium`. Both can still be used interchangeably.

### Fixed
- NumPy 2.1 compatibility issue where `numpy.float64` values passed to xarray interpolation would raise TypeError.
Expand Down
39 changes: 39 additions & 0 deletions docs/api/charge/boundary_conditions.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
.. currentmodule:: tidy3d

Boundary Conditions
-----------------------------

Specifications
^^^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.HeatBoundarySpec
tidy3d.HeatChargeBoundarySpec


Types
^^^^^^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.VoltageBC
tidy3d.CurrentBC
tidy3d.InsulatingBC

Placement
^^^^^^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.StructureStructureInterface
tidy3d.StructureBoundary
tidy3d.MediumMediumInterface
tidy3d.StructureSimulationBoundary
tidy3d.SimulationBoundary
File renamed without changes.
16 changes: 14 additions & 2 deletions docs/api/charge/index.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
CHARGE |:zap:|
Charge |:zap:|
==============

.. toctree::
:hidden:

simulation
mediums
boundary_conditions
source
discretization
monitor
output_data


.. include:: /api/charge/mediums.rst
.. include:: /api/charge/simulation.rst
.. include:: /api/charge/mediums.rst
.. include:: /api/charge/boundary_conditions.rst
.. include:: /api/charge/source.rst
.. include:: /api/charge/discretization.rst
.. include:: /api/charge/monitor.rst
.. include:: /api/charge/output_data.rst
58 changes: 56 additions & 2 deletions docs/api/charge/mediums.rst
Original file line number Diff line number Diff line change
@@ -1,11 +1,65 @@
.. currentmodule:: tidy3d

Charge Perturbation Specification
Charge Mediums
-------------------------------

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.ChargeConductorMedium
tidy3d.ChargeInsulatorMedium
tidy3d.SemiconductorMedium

Mobility
^^^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.CaugheyThomasMobility


Generation Recombination
^^^^^^^^^^^^^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.AugerRecombination
tidy3d.RadiativeRecombination
tidy3d.ShockleyReedHallRecombination


Doping
^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.ConstantDoping
tidy3d.GaussianDoping


Bandgap
^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.SlotboomBandGapNarrowing


Charge Carrier Properties
------------------------------------

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.LinearChargePerturbation
tidy3d.CustomChargePerturbation
tidy3d.CustomChargePerturbation
13 changes: 13 additions & 0 deletions docs/api/charge/monitor.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.. currentmodule:: tidy3d

Monitors
----------

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.SteadyVoltageMonitor
tidy3d.SteadyPotentialMonitor
tidy3d.SteadyFreeCarrierMonitor
tidy3d.SteadyCapacitanceMonitor
50 changes: 50 additions & 0 deletions docs/api/charge/output_data.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
.. currentmodule:: tidy3d

Output Data
-------------


Simulation Data
^^^^^^^^^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.HeatChargeSimulationData


Monitor Data
^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.SteadyVoltageData
tidy3d.SteadyPotentialData
tidy3d.SteadyFreeCarrierData
tidy3d.SteadyCapacitanceData


Unstructured Data Classes
^^^^^^^^^^^^^^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.TriangularGridDataset
tidy3d.TetrahedralGridDataset


Individual Datasets
^^^^^^^^^^^^^^^^^^^

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.PointDataArray
tidy3d.CellDataArray
tidy3d.IndexedDataArray
File renamed without changes.
10 changes: 10 additions & 0 deletions docs/api/charge/source.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. currentmodule:: tidy3d

Thermal Sources
-----------------

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.HeatFromElectricSource
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.. currentmodule:: tidy3d

Thermal/Charge Boundary Conditions
Boundary Conditions
-----------------------------

Specifications
Expand All @@ -24,9 +24,6 @@ Types
tidy3d.TemperatureBC
tidy3d.ConvectionBC
tidy3d.HeatFluxBC
tidy3d.VoltageBC
tidy3d.CurrentBC,
tidy3d.InsulatingBC


Placement
Expand Down
11 changes: 11 additions & 0 deletions docs/api/heat/discretization.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
.. currentmodule:: tidy3d

Grid Specification
--------------------

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.UniformUnstructuredGrid
tidy3d.DistanceUnstructuredGrid
22 changes: 22 additions & 0 deletions docs/api/heat/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Heat |:fire:|
=============

.. toctree::
:hidden:

simulation
mediums
boundary_conditions
source
discretization
monitor
output_data


.. include:: /api/heat/simulation.rst
.. include:: /api/heat/mediums.rst
.. include:: /api/heat/boundary_conditions.rst
.. include:: /api/heat/source.rst
.. include:: /api/heat/discretization.rst
.. include:: /api/heat/monitor.rst
.. include:: /api/heat/output_data.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.. currentmodule:: tidy3d

Material Thermal/Charge Specification
Material Thermal
-------------------------------

.. autosummary::
Expand All @@ -9,8 +9,6 @@ Material Thermal/Charge Specification

tidy3d.FluidSpec
tidy3d.SolidSpec
tidy3d.ConductorSpec
tidy3d.InsulatorSpec


Thermal Perturbation Specification
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,4 @@ Monitors
:toctree: ../_autosummary/
:template: module.rst

tidy3d.TemperatureMonitor
tidy3d.VoltageMonitor
tidy3d.TemperatureMonitor
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Output Data
-------------


Heat/Charge Simulation Data
Simulation Data
^^^^^^^^^^^^^^^^^^^^

.. autosummary::
Expand All @@ -23,7 +23,6 @@ Monitor Data
:template: module.rst

tidy3d.TemperatureData
tidy3d.VoltageData


Unstructured Data Classes
Expand Down
11 changes: 11 additions & 0 deletions docs/api/heat/simulation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
.. currentmodule:: tidy3d

Simulation
-----------

.. autosummary::
:toctree: ../_autosummary/
:template: module.rst

tidy3d.HeatSimulation
tidy3d.HeatChargeSimulation
File renamed without changes.
22 changes: 0 additions & 22 deletions docs/api/heat_charge/index.rst

This file was deleted.

3 changes: 2 additions & 1 deletion docs/api/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ API |:computer:|
charge/index
eme/index
plugins/index
spice
constants
abstract_base
abstract_models
Expand All @@ -53,4 +54,4 @@ API |:computer:|
.. include:: /api/plugins/index.rst
.. include:: /api/constants.rst
.. include:: /api/abstract_base.rst
.. include:: /api/abstract_models.rst
.. include:: /api/abstract_models.rst
Loading

0 comments on commit 9a371e7

Please sign in to comment.