Skip to content

Commit da73c2b

Browse files
committed
Adding CustomDoping & Deprecation messages for semiconductor
1 parent 0e56b35 commit da73c2b

File tree

16 files changed

+1287
-207
lines changed

16 files changed

+1287
-207
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313
- Task names are now optional when using `run(sim)` or `Job`. When running multiple jobs (via `run_async` or `Batch`), you can also provide simulations as a list without specifying task names. The previous dictionary-based format with explicit task names is still supported.
1414
- Added support for `tidy3d-extras`, an optional plugin that enables more accurate local mode solving via subpixel averaging.
1515
- Enabled lazy loading of data via `web.load(..., lazy=True)`. When used, this returns a lightweight proxy object holding a reference to the data. On first access to any field or method, the proxy transparently loads the full object (same as with the default lazy=False).
16+
- A new type of doping box has been introduced, `CustomDoping` which accepts a `SpatialDataArray` to define doping concentration. Unlike in the case where a `SpatialDataArray`, custom doping defined with `CustomDoping` have additive behavior, i.e., one can add other doping on top. This deprecates the `SpatialDataArray` as direct input for `N_a` and `N_d`.
17+
- Non-isothermal Charge simulations are now available. One can now run this type of simulations by using the `SteadyChargeDCAnalysis` as the `analysis_spec` of a `HeatChargeSimulation`. This type of simulations couple the heat equation with the drift-diffusion equations which allow to account for self heating behavior.
18+
- Because non-isothermal Charge simulations are now supported, new models for the effective density of states and bandgap energy have been introduced. These models are the following: `ConstantEffectiveDOS`, `IsotropicEffectiveDOS`, `MultiValleyEffectiveDOS`, `DualValleyEffectiveDOS`.
1619

1720
### Changed
1821
- `LayerRefinementSpec` defaults to assuming structures made of different materials are interior-disjoint for more efficient mesh generation.

schemas/EMESimulation.json

Lines changed: 162 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,6 +1851,11 @@
18511851
{
18521852
"type": "autograd.tracer.Box"
18531853
}
1854+
],
1855+
"default": [
1856+
Infinity,
1857+
Infinity,
1858+
Infinity
18541859
]
18551860
},
18561861
"type": {
@@ -1861,9 +1866,6 @@
18611866
"type": "string"
18621867
}
18631868
},
1864-
"required": [
1865-
"size"
1866-
],
18671869
"type": "object"
18681870
},
18691871
"ConstantEffectiveDOS": {
@@ -2491,6 +2493,138 @@
24912493
],
24922494
"type": "object"
24932495
},
2496+
"CustomDoping": {
2497+
"additionalProperties": false,
2498+
"properties": {
2499+
"attrs": {
2500+
"default": {},
2501+
"type": "object"
2502+
},
2503+
"center": {
2504+
"anyOf": [
2505+
{
2506+
"items": [
2507+
{
2508+
"anyOf": [
2509+
{
2510+
"type": "autograd.tracer.Box"
2511+
},
2512+
{
2513+
"type": "number"
2514+
}
2515+
]
2516+
},
2517+
{
2518+
"anyOf": [
2519+
{
2520+
"type": "autograd.tracer.Box"
2521+
},
2522+
{
2523+
"type": "number"
2524+
}
2525+
]
2526+
},
2527+
{
2528+
"anyOf": [
2529+
{
2530+
"type": "autograd.tracer.Box"
2531+
},
2532+
{
2533+
"type": "number"
2534+
}
2535+
]
2536+
}
2537+
],
2538+
"maxItems": 3,
2539+
"minItems": 3,
2540+
"type": "array"
2541+
},
2542+
{
2543+
"type": "autograd.tracer.Box"
2544+
}
2545+
],
2546+
"default": [
2547+
0.0,
2548+
0.0,
2549+
0.0
2550+
]
2551+
},
2552+
"concentration": {
2553+
"properties": {
2554+
"_dims": {
2555+
"type": "Tuple[str, ...]"
2556+
}
2557+
},
2558+
"required": [
2559+
"_dims"
2560+
],
2561+
"type": "xr.DataArray"
2562+
},
2563+
"size": {
2564+
"anyOf": [
2565+
{
2566+
"items": [
2567+
{
2568+
"anyOf": [
2569+
{
2570+
"minimum": 0,
2571+
"type": "number"
2572+
},
2573+
{
2574+
"type": "autograd.tracer.Box"
2575+
}
2576+
]
2577+
},
2578+
{
2579+
"anyOf": [
2580+
{
2581+
"minimum": 0,
2582+
"type": "number"
2583+
},
2584+
{
2585+
"type": "autograd.tracer.Box"
2586+
}
2587+
]
2588+
},
2589+
{
2590+
"anyOf": [
2591+
{
2592+
"minimum": 0,
2593+
"type": "number"
2594+
},
2595+
{
2596+
"type": "autograd.tracer.Box"
2597+
}
2598+
]
2599+
}
2600+
],
2601+
"maxItems": 3,
2602+
"minItems": 3,
2603+
"type": "array"
2604+
},
2605+
{
2606+
"type": "autograd.tracer.Box"
2607+
}
2608+
],
2609+
"default": [
2610+
Infinity,
2611+
Infinity,
2612+
Infinity
2613+
]
2614+
},
2615+
"type": {
2616+
"default": "CustomDoping",
2617+
"enum": [
2618+
"CustomDoping"
2619+
],
2620+
"type": "string"
2621+
}
2622+
},
2623+
"required": [
2624+
"concentration"
2625+
],
2626+
"type": "object"
2627+
},
24942628
"CustomDrude": {
24952629
"additionalProperties": false,
24962630
"properties": {
@@ -5176,6 +5310,11 @@
51765310
{
51775311
"type": "autograd.tracer.Box"
51785312
}
5313+
],
5314+
"default": [
5315+
Infinity,
5316+
Infinity,
5317+
Infinity
51795318
]
51805319
},
51815320
"source": {
@@ -5197,7 +5336,6 @@
51975336
"required": [
51985337
"concentration",
51995338
"ref_con",
5200-
"size",
52015339
"width"
52025340
],
52035341
"type": "object"
@@ -9548,6 +9686,10 @@
95489686
},
95499687
{
95509688
"$ref": "#/definitions/VarshniEnergyBandGap"
9689+
},
9690+
{
9691+
"exclusiveMinimum": 0,
9692+
"type": "number"
95519693
}
95529694
]
95539695
},
@@ -9559,6 +9701,9 @@
95599701
{
95609702
"$ref": "#/definitions/ConstantDoping"
95619703
},
9704+
{
9705+
"$ref": "#/definitions/CustomDoping"
9706+
},
95629707
{
95639708
"$ref": "#/definitions/GaussianDoping"
95649709
}
@@ -9582,7 +9727,7 @@
95829727
"type": "xr.DataArray"
95839728
}
95849729
],
9585-
"default": 0
9730+
"default": []
95869731
},
95879732
"N_c": {
95889733
"anyOf": [
@@ -9597,6 +9742,10 @@
95979742
},
95989743
{
95999744
"$ref": "#/definitions/MultiValleyEffectiveDOS"
9745+
},
9746+
{
9747+
"exclusiveMinimum": 0,
9748+
"type": "number"
96009749
}
96019750
]
96029751
},
@@ -9608,6 +9757,9 @@
96089757
{
96099758
"$ref": "#/definitions/ConstantDoping"
96109759
},
9760+
{
9761+
"$ref": "#/definitions/CustomDoping"
9762+
},
96119763
{
96129764
"$ref": "#/definitions/GaussianDoping"
96139765
}
@@ -9631,7 +9783,7 @@
96319783
"type": "xr.DataArray"
96329784
}
96339785
],
9634-
"default": 0
9786+
"default": []
96359787
},
96369788
"N_v": {
96379789
"anyOf": [
@@ -9646,6 +9798,10 @@
96469798
},
96479799
{
96489800
"$ref": "#/definitions/MultiValleyEffectiveDOS"
9801+
},
9802+
{
9803+
"exclusiveMinimum": 0,
9804+
"type": "number"
96499805
}
96509806
]
96519807
},

0 commit comments

Comments
 (0)