Skip to content

Commit

Permalink
⚡ Charge Solver API & MultiPhysicsMedium
Browse files Browse the repository at this point in the history
Co-authored-by: Dario Quintero <dario@flexcompute.com>
  • Loading branch information
marc-flex and daquinteroflex committed Jan 24, 2025
1 parent 6b29b9f commit a7c3c62
Show file tree
Hide file tree
Showing 100 changed files with 9,897 additions and 4,347 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,19 @@ 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.
- `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.
- 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 a7c3c62

Please sign in to comment.