universal-physics-tensor 11.0.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -34
- package/data/applied-cases.json +1892 -0
- package/data/applied-cases.schema.json +194 -0
- package/data/atlas/atlas.json +21 -21
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +5 -5
- package/data/atlas/oscillators.json +7 -7
- package/data/atlas/waves.json +11 -11
- package/data/bridge-catalog.json +20 -4
- package/data/units.json +6 -25
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +6 -20
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +13 -4
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +15 -4
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-reviewed.js +2 -2
- package/dist/atlas/physjs-reviewed.js.map +1 -1
- package/dist/cases/catalog-checks.d.ts +10 -0
- package/dist/cases/catalog-checks.d.ts.map +1 -0
- package/dist/cases/catalog-checks.js +241 -0
- package/dist/cases/catalog-checks.js.map +1 -0
- package/dist/cases/catalog.d.ts +83 -0
- package/dist/cases/catalog.d.ts.map +1 -0
- package/dist/cases/catalog.js +118 -0
- package/dist/cases/catalog.js.map +1 -0
- package/dist/cases/engine.d.ts +13 -0
- package/dist/cases/engine.d.ts.map +1 -0
- package/dist/cases/engine.js +179 -0
- package/dist/cases/engine.js.map +1 -0
- package/dist/cases/index.d.ts.map +1 -1
- package/dist/cases/index.js +5 -7
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/methods.d.ts +215 -0
- package/dist/cases/methods.d.ts.map +1 -0
- package/dist/cases/methods.js +743 -0
- package/dist/cases/methods.js.map +1 -0
- package/dist/cases/types.d.ts +12 -0
- package/dist/cases/types.d.ts.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/command.d.ts +3 -0
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_discovery-opts.d.ts +1 -0
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +1 -0
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/discover.d.ts.map +1 -1
- package/dist/cli/commands/discover.js +116 -71
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/evaluate.js +2 -2
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +22 -2
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +6 -1
- package/dist/cli/commands/ground.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +9 -6
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/determination.d.ts +1 -0
- package/dist/cli/determination.d.ts.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/flag-help.d.ts +1 -0
- package/dist/cli/flag-help.d.ts.map +1 -1
- package/dist/cli/flag-help.js +1 -0
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.d.ts +2 -0
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +1 -0
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts +1 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +1 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output.d.ts +8 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +8 -0
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/statuses.d.ts.map +1 -1
- package/dist/cli/statuses.js +12 -2
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/version.d.ts +1 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +1 -0
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +2 -0
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +2 -0
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +2 -2
- package/dist/composition/canonical-graph.js +2 -2
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/consequence.d.ts +15 -5
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +6 -4
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/discovery.d.ts +78 -14
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +73 -23
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/expr-eval.d.ts +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +4 -4
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +10 -14
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +49 -52
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/grounding.d.ts.map +1 -1
- package/dist/composition/grounding.js +19 -7
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +4 -6
- package/dist/composition/mathts-quiet.d.ts.map +1 -1
- package/dist/composition/mathts-quiet.js +4 -14
- package/dist/composition/mathts-quiet.js.map +1 -1
- package/dist/composition/own-equation-magnitude.d.ts +95 -0
- package/dist/composition/own-equation-magnitude.d.ts.map +1 -0
- package/dist/composition/own-equation-magnitude.js +270 -0
- package/dist/composition/own-equation-magnitude.js.map +1 -0
- package/dist/composition/probe/backend-protocol.d.ts +3 -0
- package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.d.ts +1 -0
- package/dist/composition/probe/candidate-store.d.ts.map +1 -1
- package/dist/composition/probe/candidate-store.js +1 -0
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.d.ts +4 -2
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +3 -3
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.d.ts +1 -0
- package/dist/composition/probe/dataset.d.ts.map +1 -1
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.d.ts +2 -0
- package/dist/composition/probe/experiment-design.d.ts.map +1 -1
- package/dist/composition/probe/experiment-design.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +2 -0
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +1 -0
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/generator.d.ts +3 -0
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +5 -6
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/limits.d.ts +1 -0
- package/dist/composition/probe/limits.d.ts.map +1 -1
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +64 -21
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/power-law.d.ts.map +1 -1
- package/dist/composition/probe/power-law.js +3 -7
- package/dist/composition/probe/power-law.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +1 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/residual.d.ts +1 -0
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js +1 -0
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.d.ts +1 -0
- package/dist/composition/probe/run-manifest.d.ts.map +1 -1
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scalar-search.d.ts +50 -0
- package/dist/composition/probe/scalar-search.d.ts.map +1 -0
- package/dist/composition/probe/scalar-search.js +169 -0
- package/dist/composition/probe/scalar-search.js.map +1 -0
- package/dist/composition/probe/scoring.d.ts +1 -0
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/study.d.ts +2 -2
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +6 -10
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/t-tail.d.ts +3 -4
- package/dist/composition/probe/t-tail.d.ts.map +1 -1
- package/dist/composition/probe/t-tail.js +7 -10
- package/dist/composition/probe/t-tail.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +11 -2
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +7 -5
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/rational-exponent.d.ts +2 -2
- package/dist/composition/rational-exponent.d.ts.map +1 -1
- package/dist/composition/rational-exponent.js +4 -4
- package/dist/composition/rational-exponent.js.map +1 -1
- package/dist/composition/representative-values.d.ts.map +1 -1
- package/dist/composition/representative-values.js +6 -0
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +15 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +10 -3
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/user-equation.d.ts +1 -0
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +1 -0
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/constants.d.ts +12 -11
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +24 -21
- package/dist/core/constants.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts +27 -23
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +75 -173
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/dimensional/ast-types.d.ts +15 -0
- package/dist/dimensional/ast-types.d.ts.map +1 -1
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/curvature-composite.d.ts +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +41 -11
- package/dist/dimensional/exact-scale.d.ts.map +1 -1
- package/dist/dimensional/exact-scale.js +115 -123
- package/dist/dimensional/exact-scale.js.map +1 -1
- package/dist/dimensional/mathts-unit-delegation.d.ts +29 -0
- package/dist/dimensional/mathts-unit-delegation.d.ts.map +1 -0
- package/dist/dimensional/mathts-unit-delegation.js +187 -0
- package/dist/dimensional/mathts-unit-delegation.js.map +1 -0
- package/dist/dimensional/mathts-unit-wrapper.d.ts +33 -0
- package/dist/dimensional/mathts-unit-wrapper.d.ts.map +1 -0
- package/dist/dimensional/mathts-unit-wrapper.js +190 -0
- package/dist/dimensional/mathts-unit-wrapper.js.map +1 -0
- package/dist/dimensional/scalar-lowering.d.ts +21 -0
- package/dist/dimensional/scalar-lowering.d.ts.map +1 -0
- package/dist/dimensional/scalar-lowering.js +45 -0
- package/dist/dimensional/scalar-lowering.js.map +1 -0
- package/dist/dimensional/unit-data.d.ts +5 -1
- package/dist/dimensional/unit-data.d.ts.map +1 -1
- package/dist/dimensional/unit-data.js +28 -4
- package/dist/dimensional/unit-data.js.map +1 -1
- package/dist/dimensional/units.d.ts +2 -0
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +59 -3
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator.d.ts +2 -0
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.d.ts +3 -1
- package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js +11 -15
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +2 -6
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/quadrature.js +3 -3
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/statistics.js +1 -1
- package/dist/numerical/statistics.js.map +1 -1
- package/dist/numerical/strides.d.ts +3 -2
- package/dist/numerical/strides.d.ts.map +1 -1
- package/dist/numerical/strides.js +3 -10
- package/dist/numerical/strides.js.map +1 -1
- package/package.json +9 -12
- package/dist/cases/brownian-sphere.d.ts +0 -68
- package/dist/cases/brownian-sphere.d.ts.map +0 -1
- package/dist/cases/brownian-sphere.js +0 -355
- package/dist/cases/brownian-sphere.js.map +0 -1
- package/dist/cases/damped-resonator.d.ts +0 -23
- package/dist/cases/damped-resonator.d.ts.map +0 -1
- package/dist/cases/damped-resonator.js +0 -221
- package/dist/cases/damped-resonator.js.map +0 -1
- package/dist/cases/kepler-rv.d.ts +0 -13
- package/dist/cases/kepler-rv.d.ts.map +0 -1
- package/dist/cases/kepler-rv.js +0 -173
- package/dist/cases/kepler-rv.js.map +0 -1
- package/dist/cases/lumped-cooling.d.ts +0 -51
- package/dist/cases/lumped-cooling.d.ts.map +0 -1
- package/dist/cases/lumped-cooling.js +0 -259
- package/dist/cases/lumped-cooling.js.map +0 -1
- package/dist/cases/resistor-noise.d.ts +0 -14
- package/dist/cases/resistor-noise.d.ts.map +0 -1
- package/dist/cases/resistor-noise.js +0 -215
- package/dist/cases/resistor-noise.js.map +0 -1
- package/dist/cases/skin-depth.d.ts +0 -17
- package/dist/cases/skin-depth.d.ts.map +0 -1
- package/dist/cases/skin-depth.js +0 -170
- package/dist/cases/skin-depth.js.map +0 -1
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type AppliedCase } from './types.js';
|
|
2
|
-
/** ωε/σ ceiling: the displacement current then moves the penetration depth by ≈ ωε/(2σ) ≤ 0.5%. @internal */
|
|
3
|
-
export declare const MAX_DISPLACEMENT_RATIO = 0.01;
|
|
4
|
-
/** l/δ ceiling for a local (classical) conductivity. @internal */
|
|
5
|
-
export declare const MAX_MFP_RATIO = 0.1;
|
|
6
|
-
/** ωτ ceiling: the Drude σ(ω) = σ0/(1 − iωτ) is then within 0.5% of σ0 in modulus. @internal */
|
|
7
|
-
export declare const MAX_OMEGA_TAU = 0.1;
|
|
8
|
-
/** d/δ floor: the field reaching the back face is then ≤ e^{−5} ≈ 0.7% of the surface field. @internal */
|
|
9
|
-
export declare const MIN_THICKNESS_RATIO = 5;
|
|
10
|
-
/**
|
|
11
|
-
* δ_Maxwell/δ for the plane wave k² = ω²με + iωμσ, as a function of r = ωε/σ:
|
|
12
|
-
* 1/Im k = δ √(√(1 + r²) + r), written without the cancellation of |z| − Re z.
|
|
13
|
-
* @internal
|
|
14
|
-
*/
|
|
15
|
-
export declare function maxwellDepthFactor(r: number): number;
|
|
16
|
-
export declare const SKIN_DEPTH_CASE: AppliedCase;
|
|
17
|
-
//# sourceMappingURL=skin-depth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skin-depth.d.ts","sourceRoot":"","sources":["../../src/cases/skin-depth.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAoD,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAIhG,6GAA6G;AAC7G,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,kEAAkE;AAClE,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,gGAAgG;AAChG,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,0GAA0G;AAC1G,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,eAAO,MAAM,eAAe,EAAE,WAwI7B,CAAC"}
|
package/dist/cases/skin-depth.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Applied case: the skin depth of a planar conductor driven at one frequency —
|
|
3
|
-
* how far an AC field (and its current) penetrates, and the surface
|
|
4
|
-
* resistance that sets the conductor's AC loss.
|
|
5
|
-
*
|
|
6
|
-
* In one dimension the Maxwell equations with a local Ohm law in a conductor
|
|
7
|
-
* are the telegraph equation of `model-telegraph`, with relaxation time ε/σ
|
|
8
|
-
* and diffusivity 1/(μσ). Dropping the displacement current is
|
|
9
|
-
* `ab-telegraph-diffusion`, which leaves magnetic diffusion and the classical
|
|
10
|
-
* δ = √(2ρ/(ωμ)) (Jackson, Classical Electrodynamics, 3rd ed., §5.18 and
|
|
11
|
-
* §8.1). This case evaluates δ, checks the three premises the classical
|
|
12
|
-
* result needs — a good conductor, a local conductivity (the mean free path
|
|
13
|
-
* well inside δ; otherwise the anomalous skin effect, Pippard 1947), a DC
|
|
14
|
-
* conductivity (ωτ ≪ 1, Drude) — and the half-space boundary condition, and
|
|
15
|
-
* compares δ with the penetration depth of the full plane-wave solution.
|
|
16
|
-
*
|
|
17
|
-
* @module cases/skin-depth
|
|
18
|
-
*/
|
|
19
|
-
import { EPS0_SI, MU0_SI } from '../core/constants.js';
|
|
20
|
-
import { check, requirePositive, signedRelativeDifference } from './types.js';
|
|
21
|
-
const ID = 'case-skin-depth';
|
|
22
|
-
/** ωε/σ ceiling: the displacement current then moves the penetration depth by ≈ ωε/(2σ) ≤ 0.5%. @internal */
|
|
23
|
-
export const MAX_DISPLACEMENT_RATIO = 0.01;
|
|
24
|
-
/** l/δ ceiling for a local (classical) conductivity. @internal */
|
|
25
|
-
export const MAX_MFP_RATIO = 0.1;
|
|
26
|
-
/** ωτ ceiling: the Drude σ(ω) = σ0/(1 − iωτ) is then within 0.5% of σ0 in modulus. @internal */
|
|
27
|
-
export const MAX_OMEGA_TAU = 0.1;
|
|
28
|
-
/** d/δ floor: the field reaching the back face is then ≤ e^{−5} ≈ 0.7% of the surface field. @internal */
|
|
29
|
-
export const MIN_THICKNESS_RATIO = 5;
|
|
30
|
-
/**
|
|
31
|
-
* δ_Maxwell/δ for the plane wave k² = ω²με + iωμσ, as a function of r = ωε/σ:
|
|
32
|
-
* 1/Im k = δ √(√(1 + r²) + r), written without the cancellation of |z| − Re z.
|
|
33
|
-
* @internal
|
|
34
|
-
*/
|
|
35
|
-
export function maxwellDepthFactor(r) {
|
|
36
|
-
return Math.sqrt(Math.hypot(1, r) + r);
|
|
37
|
-
}
|
|
38
|
-
export const SKIN_DEPTH_CASE = {
|
|
39
|
-
id: ID,
|
|
40
|
-
title: 'Skin depth of a planar conductor (good-conductor, local and DC-conductivity regimes)',
|
|
41
|
-
parameters: [
|
|
42
|
-
{ key: 'rho_ohm_m', quantity: 'resistivity', symbol: 'ρ', unit: 'ohm*m', meaning: 'DC resistivity 1/σ at the conductor\'s temperature (copper at 20 °C ≈ 1.68e-8), > 0' },
|
|
43
|
-
{ key: 'f_Hz', quantity: 'frequency', symbol: 'f', unit: 'Hz', meaning: 'drive frequency ω/2π, > 0' },
|
|
44
|
-
{ key: 'mu_r', quantity: 'relative permeability', symbol: 'μ_r', unit: '', meaning: 'μ/μ0 of the conductor, taken constant and linear (1 for copper), > 0' },
|
|
45
|
-
{ key: 'eps_r', quantity: 'relative permittivity', symbol: 'ε_r', unit: '', meaning: 'ε/ε0 of the bound charges, beside the conduction current (1 for a metal, ≈ 11.7 for silicon), > 0' },
|
|
46
|
-
{ key: 'l_mfp_m', quantity: 'carrier mean free path', symbol: 'l', unit: 'm', meaning: 'the conduction carriers\' mean free path at the conductor\'s temperature (copper at 293 K ≈ 39 nm), > 0' },
|
|
47
|
-
{ key: 'v_carrier_m_per_s', quantity: 'carrier speed', symbol: 'v', unit: 'm/s', meaning: 'speed setting τ = l/v: the Fermi velocity in a metal (copper 1.57e6), the thermal velocity in a non-degenerate semiconductor, > 0' },
|
|
48
|
-
{ key: 'thickness_m', quantity: 'conductor thickness', symbol: 'd', unit: 'm', meaning: 'thickness of the planar conductor, driven from one face, > 0' },
|
|
49
|
-
],
|
|
50
|
-
governing: {
|
|
51
|
-
parent: [
|
|
52
|
-
'∇×E = −∂B/∂t, ∇×H = σE + ∂D/∂t, B = μH, D = εE (Maxwell with a local Ohm law J = σE)',
|
|
53
|
-
'one dimension, H = H_y(x, t): (ε/σ) ∂²H/∂t² + ∂H/∂t = (1/(μσ)) ∂²H/∂x² (the telegraph equation of model-telegraph)',
|
|
54
|
-
'driven at ω on a half-space: H ∝ e^{i(kx − ωt)}, k² = ω²με + iωμσ, penetration depth 1/Im k',
|
|
55
|
-
],
|
|
56
|
-
scalar: [
|
|
57
|
-
'∂H/∂t = (1/(μσ)) ∂²H/∂x² (displacement current dropped: magnetic diffusion; ab-telegraph-diffusion)',
|
|
58
|
-
'H(x, t) = H0 e^{−x/δ} cos(ωt − x/δ), δ = √(2ρ/(ωμ)), μ = μ_r μ0',
|
|
59
|
-
'surface resistance R_s = ρ/δ (per square: the DC resistance of a sheet of thickness δ)',
|
|
60
|
-
],
|
|
61
|
-
distinction: 'The parent is a vector field obeying a wave equation with loss, whose conductivity is a local, frequency-independent ' +
|
|
62
|
-
'constant; the scalar keeps one decay length for one field component in a half-space. Dropped: the displacement ' +
|
|
63
|
-
'current (the wave part, O(ωε/σ)), any non-local or frequency-dependent conductivity, the back face of a finite ' +
|
|
64
|
-
'conductor, and the conductor\'s curvature and edges.',
|
|
65
|
-
},
|
|
66
|
-
observable: 'delta_m',
|
|
67
|
-
outputs: [
|
|
68
|
-
{ key: 'omega_per_s', symbol: 'ω', unit: 's^-1', meaning: 'angular frequency 2πf' },
|
|
69
|
-
{ key: 'delta_m', symbol: 'δ', unit: 'm', meaning: 'classical skin depth √(2ρ/(ωμ)): the field and current fall by 1/e per δ' },
|
|
70
|
-
{ key: 'R_s_ohm', symbol: 'R_s', unit: 'ohm', meaning: 'surface resistance ρ/δ, per square (the real part of the surface impedance)' },
|
|
71
|
-
{ key: 'delta_maxwell_m', symbol: 'δ_M', unit: 'm', meaning: '1/Im k with the displacement current kept: the parent plane-wave penetration depth' },
|
|
72
|
-
{ key: 'maxwell_deviation', symbol: 'δ/δ_M − 1', unit: '', meaning: signedRelativeDifference('classical δ', 'parent penetration depth') },
|
|
73
|
-
{ key: 'displacement_ratio', symbol: 'ωε/σ', unit: '', meaning: 'displacement current over conduction current' },
|
|
74
|
-
{ key: 'mfp_ratio', symbol: 'l/δ', unit: '', meaning: 'mean free path over skin depth' },
|
|
75
|
-
{ key: 'omega_tau', symbol: 'ωτ', unit: '', meaning: 'ω l/v: the drive period against the carrier relaxation time' },
|
|
76
|
-
{ key: 'thickness_ratio', symbol: 'd/δ', unit: '', meaning: 'conductor thickness in skin depths' },
|
|
77
|
-
{ key: 'back_field_ratio', symbol: 'e^{−d/δ}', unit: '', meaning: 'field amplitude at the back face over the surface amplitude (half-space profile)' },
|
|
78
|
-
],
|
|
79
|
-
conditions: [
|
|
80
|
-
'a planar, homogeneous, isotropic conductor filling 0 ≤ x ≤ d, driven at x = 0 by a tangential field H_y(0, t) = H0 cos ωt',
|
|
81
|
-
'periodic steady state: the start-up transient has decayed (it does so over a few periods near the surface)',
|
|
82
|
-
'half-space profile: the field vanishes deep in the conductor (checked through d/δ); the medium outside x = 0 enters only through H0',
|
|
83
|
-
],
|
|
84
|
-
comparison: {
|
|
85
|
-
reference: 'the parent plane wave in a local ohmic medium, displacement current kept: 1/Im k, k² = ω²με + iωμσ',
|
|
86
|
-
valueKey: 'delta_m',
|
|
87
|
-
referenceKey: 'delta_maxwell_m',
|
|
88
|
-
deviationKey: 'maxwell_deviation',
|
|
89
|
-
method: 'closed form 1/Im k = δ √(√(1 + r²) + r), r = ωε/σ',
|
|
90
|
-
},
|
|
91
|
-
notIncluded: [
|
|
92
|
-
'the temperature dependence of ρ (a conductor heated by its own AC loss has a larger δ)',
|
|
93
|
-
'surface roughness, which raises the AC loss once the rms roughness approaches δ (Hammerstad–Bekkadal)',
|
|
94
|
-
'curvature: for a round wire of radius a the Bessel-function solution replaces the planar profile, with corrections of order δ/a',
|
|
95
|
-
'ferromagnetic hysteresis and saturation: μ_r is taken constant and linear',
|
|
96
|
-
'the anomalous-regime surface impedance itself (Reuter–Sondheimer), which this case refuses rather than evaluates',
|
|
97
|
-
],
|
|
98
|
-
measurement: [
|
|
99
|
-
'surface resistance: the unloaded Q of a cavity walled with the conductor is Q = G/R_s, G the cavity\'s geometry factor; ' +
|
|
100
|
-
'compare the R_s inferred from Q with R_s_ohm',
|
|
101
|
-
'AC resistance: per square of the driven face it is R_s = ρ/δ against ρ/d at DC, so R_ac/R_dc = d/δ for d ≫ δ',
|
|
102
|
-
'eddy-current probing: the phase lag x/δ of the field at depth x, or the transmission e^{−d/δ} through a foil when d/δ is not large (a thin foil is where this case refuses)',
|
|
103
|
-
],
|
|
104
|
-
links: [
|
|
105
|
-
{ id: 'model-telegraph', role: 'τ u_tt + u_t = D u_xx: the 1-D Maxwell equations in an ohmic conductor, with τ = ε/σ and D = 1/(μσ)' },
|
|
106
|
-
{ id: 'ab-telegraph-diffusion', role: 'dropping τ u_tt (here the displacement current) to reach diffusion; its small parameter τDq² is of order ωε/σ at q ~ 1/δ' },
|
|
107
|
-
{ id: 'model-fick', role: 'the diffusion equation u_t = D u_xx that the magnetic field obeys once the displacement current is dropped' },
|
|
108
|
-
{ id: 'CE-drude-resistivity', role: 'ρ = m/(nq²τ): the DC resistivity whose τ the DC-conductivity check compares with the drive period' },
|
|
109
|
-
],
|
|
110
|
-
examples: {
|
|
111
|
-
valid: {
|
|
112
|
-
args: ['rho_ohm_m=1.68e-8', 'f_Hz=1MHz', 'mu_r=1', 'eps_r=1', 'l_mfp_m=39nm', 'v_carrier_m_per_s=1.57e6', 'thickness_m=1mm'],
|
|
113
|
-
note: 'a 1 mm copper plate at room temperature driven at 1 MHz: δ ≈ 65 µm',
|
|
114
|
-
fails: [],
|
|
115
|
-
},
|
|
116
|
-
failures: [
|
|
117
|
-
{
|
|
118
|
-
args: ['rho_ohm_m=1.68e-11', 'f_Hz=100MHz', 'mu_r=1', 'eps_r=1', 'l_mfp_m=39um', 'v_carrier_m_per_s=1.57e6', 'thickness_m=1mm'],
|
|
119
|
-
note: 'high-purity copper at 4 K (residual-resistance ratio ≈ 1000) at 100 MHz: l ≈ 39 µm is ~190 δ — the anomalous skin effect',
|
|
120
|
-
fails: ['local'],
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
args: ['rho_ohm_m=1.68e-8', 'f_Hz=100kHz', 'mu_r=1', 'eps_r=1', 'l_mfp_m=39nm', 'v_carrier_m_per_s=1.57e6', 'thickness_m=35um'],
|
|
124
|
-
note: 'a 35 µm copper foil at 100 kHz: δ ≈ 206 µm, so the foil is a sixth of a skin depth and the half-space profile does not apply',
|
|
125
|
-
fails: ['thick'],
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
args: ['rho_ohm_m=0.1', 'f_Hz=10GHz', 'mu_r=1', 'eps_r=11.7', 'l_mfp_m=28nm', 'v_carrier_m_per_s=2.3e5', 'thickness_m=10mm'],
|
|
129
|
-
note: 'lightly doped silicon (10 Ω·cm) at 10 GHz: ωε/σ ≈ 0.65, a lossy dielectric rather than a good conductor',
|
|
130
|
-
fails: ['good-conductor'],
|
|
131
|
-
},
|
|
132
|
-
],
|
|
133
|
-
},
|
|
134
|
-
/** Evaluate the classical skin depth and conductor-regime checks for the supplied inputs. */
|
|
135
|
-
run(i) {
|
|
136
|
-
requirePositive(ID, i, ['rho_ohm_m', 'f_Hz', 'mu_r', 'eps_r', 'l_mfp_m', 'v_carrier_m_per_s', 'thickness_m']);
|
|
137
|
-
const { rho_ohm_m: rho, f_Hz: f, mu_r: muR, eps_r: epsR, l_mfp_m: l, v_carrier_m_per_s: v, thickness_m: d } = i;
|
|
138
|
-
const omega = 2 * Math.PI * f;
|
|
139
|
-
const mu = muR * MU0_SI;
|
|
140
|
-
const delta = Math.sqrt((2 * rho) / (omega * mu));
|
|
141
|
-
const r = omega * epsR * EPS0_SI * rho;
|
|
142
|
-
const deltaMaxwell = delta * maxwellDepthFactor(r);
|
|
143
|
-
const omegaTau = (omega * l) / v;
|
|
144
|
-
return {
|
|
145
|
-
outputs: {
|
|
146
|
-
omega_per_s: omega,
|
|
147
|
-
delta_m: delta,
|
|
148
|
-
R_s_ohm: rho / delta,
|
|
149
|
-
delta_maxwell_m: deltaMaxwell,
|
|
150
|
-
maxwell_deviation: delta / deltaMaxwell - 1,
|
|
151
|
-
displacement_ratio: r,
|
|
152
|
-
mfp_ratio: l / delta,
|
|
153
|
-
omega_tau: omegaTau,
|
|
154
|
-
thickness_ratio: d / delta,
|
|
155
|
-
back_field_ratio: Math.exp(-d / delta),
|
|
156
|
-
},
|
|
157
|
-
checks: [
|
|
158
|
-
check('good-conductor', 'good conductor: conduction current ≫ displacement current', 'ωε/σ', r, '<=', MAX_DISPLACEMENT_RATIO, 'chosen threshold for ≪ 1: the parent penetration depth then differs from δ by ≈ ωε/(2σ) ≤ 0.5%'),
|
|
159
|
-
check('local', 'local conductivity: the carriers\' mean free path well inside the skin depth, l ≪ δ', 'l/δ', l / delta, '<=', MAX_MFP_RATIO, 'chosen threshold for ≪ 1; beyond it the current at a point depends on the field over a path l and the anomalous skin effect sets in (Pippard 1947; Reuter & Sondheimer 1948)'),
|
|
160
|
-
check('dc-conductivity', 'DC conductivity: the drive is slow beside the carrier relaxation, ωτ ≪ 1', 'ω l/v', omegaTau, '<=', MAX_OMEGA_TAU, 'chosen threshold for ≪ 1: the Drude σ(ω) = σ0/(1 − iωτ) is then within 0.5% of σ0 in modulus'),
|
|
161
|
-
check('thick', 'the conductor is a half-space for the field: d ≫ δ', 'd/δ', d / delta, '>=', MIN_THICKNESS_RATIO, 'chosen threshold: the half-space field at the back face is then ≤ e^{−5} ≈ 0.7% of the surface field'),
|
|
162
|
-
],
|
|
163
|
-
unchecked: [
|
|
164
|
-
'ρ, μ_r and ε_r are the values at the conductor\'s temperature and at f; τ = l/v assumes one carrier species with one speed',
|
|
165
|
-
'the conductor is planar on the scale of δ (a wire of radius a needs a ≫ δ, not checked here)',
|
|
166
|
-
],
|
|
167
|
-
};
|
|
168
|
-
},
|
|
169
|
-
};
|
|
170
|
-
//# sourceMappingURL=skin-depth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skin-depth.js","sourceRoot":"","sources":["../../src/cases/skin-depth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAoB,MAAM,YAAY,CAAC;AAEhG,MAAM,EAAE,GAAG,iBAAiB,CAAC;AAE7B,6GAA6G;AAC7G,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,kEAAkE;AAClE,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,gGAAgG;AAChG,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,0GAA0G;AAC1G,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAgB;IAC1C,EAAE,EAAE,EAAE;IACN,KAAK,EAAE,sFAAsF;IAC7F,UAAU,EAAE;QACV,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qFAAqF,EAAE;QACzK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE;QACrG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,sEAAsE,EAAE;QAC5J,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,mGAAmG,EAAE;QAC1L,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,yGAAyG,EAAE;QAClM,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,mIAAmI,EAAE;QAC/N,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,8DAA8D,EAAE;KACzJ;IACD,SAAS,EAAE;QACT,MAAM,EAAE;YACN,2FAA2F;YAC3F,uHAAuH;YACvH,+FAA+F;SAChG;QACD,MAAM,EAAE;YACN,uGAAuG;YACvG,mEAAmE;YACnE,0FAA0F;SAC3F;QACD,WAAW,EACT,uHAAuH;YACvH,iHAAiH;YACjH,iHAAiH;YACjH,sDAAsD;KACzD;IACD,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE;QACP,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE;QACnF,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,0EAA0E,EAAE;QAC/H,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,6EAA6E,EAAE;QACtI,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,oFAAoF,EAAE;QACnJ,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,wBAAwB,CAAC,aAAa,EAAE,0BAA0B,CAAC,EAAE;QACzI,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,8CAA8C,EAAE;QAChH,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,gCAAgC,EAAE;QACxF,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,6DAA6D,EAAE;QACpH,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,oCAAoC,EAAE;QAClG,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,kFAAkF,EAAE;KACvJ;IACD,UAAU,EAAE;QACV,2HAA2H;QAC3H,4GAA4G;QAC5G,qIAAqI;KACtI;IACD,UAAU,EAAE;QACV,SAAS,EAAE,oGAAoG;QAC/G,QAAQ,EAAE,SAAS;QACnB,YAAY,EAAE,iBAAiB;QAC/B,YAAY,EAAE,mBAAmB;QACjC,MAAM,EAAE,mDAAmD;KAC5D;IACD,WAAW,EAAE;QACX,wFAAwF;QACxF,uGAAuG;QACvG,iIAAiI;QACjI,2EAA2E;QAC3E,kHAAkH;KACnH;IACD,WAAW,EAAE;QACX,0HAA0H;YACxH,8CAA8C;QAChD,8GAA8G;QAC9G,6KAA6K;KAC9K;IACD,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,qGAAqG,EAAE;QACtI,EAAE,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,0HAA0H,EAAE;QAClK,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,4GAA4G,EAAE;QACxI,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,mGAAmG,EAAE;KAC1I;IACD,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,0BAA0B,EAAE,iBAAiB,CAAC;YAC5H,IAAI,EAAE,oEAAoE;YAC1E,KAAK,EAAE,EAAE;SACV;QACD,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,CAAC,oBAAoB,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,0BAA0B,EAAE,iBAAiB,CAAC;gBAC/H,IAAI,EAAE,0HAA0H;gBAChI,KAAK,EAAE,CAAC,OAAO,CAAC;aACjB;YACD;gBACE,IAAI,EAAE,CAAC,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,0BAA0B,EAAE,kBAAkB,CAAC;gBAC/H,IAAI,EAAE,8HAA8H;gBACpI,KAAK,EAAE,CAAC,OAAO,CAAC;aACjB;YACD;gBACE,IAAI,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,kBAAkB,CAAC;gBAC5H,IAAI,EAAE,yGAAyG;gBAC/G,KAAK,EAAE,CAAC,gBAAgB,CAAC;aAC1B;SACF;KACF;IACD,6FAA6F;IAC7F,GAAG,CAAC,CAAC;QACH,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;QAC9G,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAA2B,CAAC;QAC1I,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC;QACvC,MAAM,YAAY,GAAG,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO;YACL,OAAO,EAAE;gBACP,WAAW,EAAE,KAAK;gBAClB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,GAAG,GAAG,KAAK;gBACpB,eAAe,EAAE,YAAY;gBAC7B,iBAAiB,EAAE,KAAK,GAAG,YAAY,GAAG,CAAC;gBAC3C,kBAAkB,EAAE,CAAC;gBACrB,SAAS,EAAE,CAAC,GAAG,KAAK;gBACpB,SAAS,EAAE,QAAQ;gBACnB,eAAe,EAAE,CAAC,GAAG,KAAK;gBAC1B,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;aACvC;YACD,MAAM,EAAE;gBACN,KAAK,CAAC,gBAAgB,EAAE,2DAA2D,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAC1H,gGAAgG,CAAC;gBACnG,KAAK,CAAC,OAAO,EAAE,qFAAqF,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,aAAa,EACzI,8KAA8K,CAAC;gBACjL,KAAK,CAAC,iBAAiB,EAAE,0EAA0E,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EACzI,8FAA8F,CAAC;gBACjG,KAAK,CAAC,OAAO,EAAE,oDAAoD,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAC9G,sGAAsG,CAAC;aAC1G;YACD,SAAS,EAAE;gBACT,4HAA4H;gBAC5H,8FAA8F;aAC/F;SACF,CAAC;IACJ,CAAC;CACF,CAAC","sourcesContent":["/**\n * Applied case: the skin depth of a planar conductor driven at one frequency —\n * how far an AC field (and its current) penetrates, and the surface\n * resistance that sets the conductor's AC loss.\n *\n * In one dimension the Maxwell equations with a local Ohm law in a conductor\n * are the telegraph equation of `model-telegraph`, with relaxation time ε/σ\n * and diffusivity 1/(μσ). Dropping the displacement current is\n * `ab-telegraph-diffusion`, which leaves magnetic diffusion and the classical\n * δ = √(2ρ/(ωμ)) (Jackson, Classical Electrodynamics, 3rd ed., §5.18 and\n * §8.1). This case evaluates δ, checks the three premises the classical\n * result needs — a good conductor, a local conductivity (the mean free path\n * well inside δ; otherwise the anomalous skin effect, Pippard 1947), a DC\n * conductivity (ωτ ≪ 1, Drude) — and the half-space boundary condition, and\n * compares δ with the penetration depth of the full plane-wave solution.\n *\n * @module cases/skin-depth\n */\nimport { EPS0_SI, MU0_SI } from '../core/constants.js';\nimport { check, requirePositive, signedRelativeDifference, type AppliedCase } from './types.js';\n\nconst ID = 'case-skin-depth';\n\n/** ωε/σ ceiling: the displacement current then moves the penetration depth by ≈ ωε/(2σ) ≤ 0.5%. @internal */\nexport const MAX_DISPLACEMENT_RATIO = 0.01;\n\n/** l/δ ceiling for a local (classical) conductivity. @internal */\nexport const MAX_MFP_RATIO = 0.1;\n\n/** ωτ ceiling: the Drude σ(ω) = σ0/(1 − iωτ) is then within 0.5% of σ0 in modulus. @internal */\nexport const MAX_OMEGA_TAU = 0.1;\n\n/** d/δ floor: the field reaching the back face is then ≤ e^{−5} ≈ 0.7% of the surface field. @internal */\nexport const MIN_THICKNESS_RATIO = 5;\n\n/**\n * δ_Maxwell/δ for the plane wave k² = ω²με + iωμσ, as a function of r = ωε/σ:\n * 1/Im k = δ √(√(1 + r²) + r), written without the cancellation of |z| − Re z.\n * @internal\n */\nexport function maxwellDepthFactor(r: number): number {\n return Math.sqrt(Math.hypot(1, r) + r);\n}\n\nexport const SKIN_DEPTH_CASE: AppliedCase = {\n id: ID,\n title: 'Skin depth of a planar conductor (good-conductor, local and DC-conductivity regimes)',\n parameters: [\n { key: 'rho_ohm_m', quantity: 'resistivity', symbol: 'ρ', unit: 'ohm*m', meaning: 'DC resistivity 1/σ at the conductor\\'s temperature (copper at 20 °C ≈ 1.68e-8), > 0' },\n { key: 'f_Hz', quantity: 'frequency', symbol: 'f', unit: 'Hz', meaning: 'drive frequency ω/2π, > 0' },\n { key: 'mu_r', quantity: 'relative permeability', symbol: 'μ_r', unit: '', meaning: 'μ/μ0 of the conductor, taken constant and linear (1 for copper), > 0' },\n { key: 'eps_r', quantity: 'relative permittivity', symbol: 'ε_r', unit: '', meaning: 'ε/ε0 of the bound charges, beside the conduction current (1 for a metal, ≈ 11.7 for silicon), > 0' },\n { key: 'l_mfp_m', quantity: 'carrier mean free path', symbol: 'l', unit: 'm', meaning: 'the conduction carriers\\' mean free path at the conductor\\'s temperature (copper at 293 K ≈ 39 nm), > 0' },\n { key: 'v_carrier_m_per_s', quantity: 'carrier speed', symbol: 'v', unit: 'm/s', meaning: 'speed setting τ = l/v: the Fermi velocity in a metal (copper 1.57e6), the thermal velocity in a non-degenerate semiconductor, > 0' },\n { key: 'thickness_m', quantity: 'conductor thickness', symbol: 'd', unit: 'm', meaning: 'thickness of the planar conductor, driven from one face, > 0' },\n ],\n governing: {\n parent: [\n '∇×E = −∂B/∂t, ∇×H = σE + ∂D/∂t, B = μH, D = εE (Maxwell with a local Ohm law J = σE)',\n 'one dimension, H = H_y(x, t): (ε/σ) ∂²H/∂t² + ∂H/∂t = (1/(μσ)) ∂²H/∂x² (the telegraph equation of model-telegraph)',\n 'driven at ω on a half-space: H ∝ e^{i(kx − ωt)}, k² = ω²με + iωμσ, penetration depth 1/Im k',\n ],\n scalar: [\n '∂H/∂t = (1/(μσ)) ∂²H/∂x² (displacement current dropped: magnetic diffusion; ab-telegraph-diffusion)',\n 'H(x, t) = H0 e^{−x/δ} cos(ωt − x/δ), δ = √(2ρ/(ωμ)), μ = μ_r μ0',\n 'surface resistance R_s = ρ/δ (per square: the DC resistance of a sheet of thickness δ)',\n ],\n distinction:\n 'The parent is a vector field obeying a wave equation with loss, whose conductivity is a local, frequency-independent ' +\n 'constant; the scalar keeps one decay length for one field component in a half-space. Dropped: the displacement ' +\n 'current (the wave part, O(ωε/σ)), any non-local or frequency-dependent conductivity, the back face of a finite ' +\n 'conductor, and the conductor\\'s curvature and edges.',\n },\n observable: 'delta_m',\n outputs: [\n { key: 'omega_per_s', symbol: 'ω', unit: 's^-1', meaning: 'angular frequency 2πf' },\n { key: 'delta_m', symbol: 'δ', unit: 'm', meaning: 'classical skin depth √(2ρ/(ωμ)): the field and current fall by 1/e per δ' },\n { key: 'R_s_ohm', symbol: 'R_s', unit: 'ohm', meaning: 'surface resistance ρ/δ, per square (the real part of the surface impedance)' },\n { key: 'delta_maxwell_m', symbol: 'δ_M', unit: 'm', meaning: '1/Im k with the displacement current kept: the parent plane-wave penetration depth' },\n { key: 'maxwell_deviation', symbol: 'δ/δ_M − 1', unit: '', meaning: signedRelativeDifference('classical δ', 'parent penetration depth') },\n { key: 'displacement_ratio', symbol: 'ωε/σ', unit: '', meaning: 'displacement current over conduction current' },\n { key: 'mfp_ratio', symbol: 'l/δ', unit: '', meaning: 'mean free path over skin depth' },\n { key: 'omega_tau', symbol: 'ωτ', unit: '', meaning: 'ω l/v: the drive period against the carrier relaxation time' },\n { key: 'thickness_ratio', symbol: 'd/δ', unit: '', meaning: 'conductor thickness in skin depths' },\n { key: 'back_field_ratio', symbol: 'e^{−d/δ}', unit: '', meaning: 'field amplitude at the back face over the surface amplitude (half-space profile)' },\n ],\n conditions: [\n 'a planar, homogeneous, isotropic conductor filling 0 ≤ x ≤ d, driven at x = 0 by a tangential field H_y(0, t) = H0 cos ωt',\n 'periodic steady state: the start-up transient has decayed (it does so over a few periods near the surface)',\n 'half-space profile: the field vanishes deep in the conductor (checked through d/δ); the medium outside x = 0 enters only through H0',\n ],\n comparison: {\n reference: 'the parent plane wave in a local ohmic medium, displacement current kept: 1/Im k, k² = ω²με + iωμσ',\n valueKey: 'delta_m',\n referenceKey: 'delta_maxwell_m',\n deviationKey: 'maxwell_deviation',\n method: 'closed form 1/Im k = δ √(√(1 + r²) + r), r = ωε/σ',\n },\n notIncluded: [\n 'the temperature dependence of ρ (a conductor heated by its own AC loss has a larger δ)',\n 'surface roughness, which raises the AC loss once the rms roughness approaches δ (Hammerstad–Bekkadal)',\n 'curvature: for a round wire of radius a the Bessel-function solution replaces the planar profile, with corrections of order δ/a',\n 'ferromagnetic hysteresis and saturation: μ_r is taken constant and linear',\n 'the anomalous-regime surface impedance itself (Reuter–Sondheimer), which this case refuses rather than evaluates',\n ],\n measurement: [\n 'surface resistance: the unloaded Q of a cavity walled with the conductor is Q = G/R_s, G the cavity\\'s geometry factor; ' +\n 'compare the R_s inferred from Q with R_s_ohm',\n 'AC resistance: per square of the driven face it is R_s = ρ/δ against ρ/d at DC, so R_ac/R_dc = d/δ for d ≫ δ',\n 'eddy-current probing: the phase lag x/δ of the field at depth x, or the transmission e^{−d/δ} through a foil when d/δ is not large (a thin foil is where this case refuses)',\n ],\n links: [\n { id: 'model-telegraph', role: 'τ u_tt + u_t = D u_xx: the 1-D Maxwell equations in an ohmic conductor, with τ = ε/σ and D = 1/(μσ)' },\n { id: 'ab-telegraph-diffusion', role: 'dropping τ u_tt (here the displacement current) to reach diffusion; its small parameter τDq² is of order ωε/σ at q ~ 1/δ' },\n { id: 'model-fick', role: 'the diffusion equation u_t = D u_xx that the magnetic field obeys once the displacement current is dropped' },\n { id: 'CE-drude-resistivity', role: 'ρ = m/(nq²τ): the DC resistivity whose τ the DC-conductivity check compares with the drive period' },\n ],\n examples: {\n valid: {\n args: ['rho_ohm_m=1.68e-8', 'f_Hz=1MHz', 'mu_r=1', 'eps_r=1', 'l_mfp_m=39nm', 'v_carrier_m_per_s=1.57e6', 'thickness_m=1mm'],\n note: 'a 1 mm copper plate at room temperature driven at 1 MHz: δ ≈ 65 µm',\n fails: [],\n },\n failures: [\n {\n args: ['rho_ohm_m=1.68e-11', 'f_Hz=100MHz', 'mu_r=1', 'eps_r=1', 'l_mfp_m=39um', 'v_carrier_m_per_s=1.57e6', 'thickness_m=1mm'],\n note: 'high-purity copper at 4 K (residual-resistance ratio ≈ 1000) at 100 MHz: l ≈ 39 µm is ~190 δ — the anomalous skin effect',\n fails: ['local'],\n },\n {\n args: ['rho_ohm_m=1.68e-8', 'f_Hz=100kHz', 'mu_r=1', 'eps_r=1', 'l_mfp_m=39nm', 'v_carrier_m_per_s=1.57e6', 'thickness_m=35um'],\n note: 'a 35 µm copper foil at 100 kHz: δ ≈ 206 µm, so the foil is a sixth of a skin depth and the half-space profile does not apply',\n fails: ['thick'],\n },\n {\n args: ['rho_ohm_m=0.1', 'f_Hz=10GHz', 'mu_r=1', 'eps_r=11.7', 'l_mfp_m=28nm', 'v_carrier_m_per_s=2.3e5', 'thickness_m=10mm'],\n note: 'lightly doped silicon (10 Ω·cm) at 10 GHz: ωε/σ ≈ 0.65, a lossy dielectric rather than a good conductor',\n fails: ['good-conductor'],\n },\n ],\n },\n /** Evaluate the classical skin depth and conductor-regime checks for the supplied inputs. */\n run(i) {\n requirePositive(ID, i, ['rho_ohm_m', 'f_Hz', 'mu_r', 'eps_r', 'l_mfp_m', 'v_carrier_m_per_s', 'thickness_m']);\n const { rho_ohm_m: rho, f_Hz: f, mu_r: muR, eps_r: epsR, l_mfp_m: l, v_carrier_m_per_s: v, thickness_m: d } = i as Record<string, number>;\n const omega = 2 * Math.PI * f;\n const mu = muR * MU0_SI;\n const delta = Math.sqrt((2 * rho) / (omega * mu));\n const r = omega * epsR * EPS0_SI * rho;\n const deltaMaxwell = delta * maxwellDepthFactor(r);\n const omegaTau = (omega * l) / v;\n return {\n outputs: {\n omega_per_s: omega,\n delta_m: delta,\n R_s_ohm: rho / delta,\n delta_maxwell_m: deltaMaxwell,\n maxwell_deviation: delta / deltaMaxwell - 1,\n displacement_ratio: r,\n mfp_ratio: l / delta,\n omega_tau: omegaTau,\n thickness_ratio: d / delta,\n back_field_ratio: Math.exp(-d / delta),\n },\n checks: [\n check('good-conductor', 'good conductor: conduction current ≫ displacement current', 'ωε/σ', r, '<=', MAX_DISPLACEMENT_RATIO,\n 'chosen threshold for ≪ 1: the parent penetration depth then differs from δ by ≈ ωε/(2σ) ≤ 0.5%'),\n check('local', 'local conductivity: the carriers\\' mean free path well inside the skin depth, l ≪ δ', 'l/δ', l / delta, '<=', MAX_MFP_RATIO,\n 'chosen threshold for ≪ 1; beyond it the current at a point depends on the field over a path l and the anomalous skin effect sets in (Pippard 1947; Reuter & Sondheimer 1948)'),\n check('dc-conductivity', 'DC conductivity: the drive is slow beside the carrier relaxation, ωτ ≪ 1', 'ω l/v', omegaTau, '<=', MAX_OMEGA_TAU,\n 'chosen threshold for ≪ 1: the Drude σ(ω) = σ0/(1 − iωτ) is then within 0.5% of σ0 in modulus'),\n check('thick', 'the conductor is a half-space for the field: d ≫ δ', 'd/δ', d / delta, '>=', MIN_THICKNESS_RATIO,\n 'chosen threshold: the half-space field at the back face is then ≤ e^{−5} ≈ 0.7% of the surface field'),\n ],\n unchecked: [\n 'ρ, μ_r and ε_r are the values at the conductor\\'s temperature and at f; τ = l/v assumes one carrier species with one speed',\n 'the conductor is planar on the scale of δ (a wire of radius a needs a ≫ δ, not checked here)',\n ],\n };\n },\n};\n"]}
|