53 #include "component.h"
57 bondwire::bondwire () :
circuit (2) {
63 #define TABLE(x) { #x, x }
65 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
92 void bondwire::getProperties (
void) {
109 for (i = 0 ; i <
ARRAY_SIZE (modeltable); i++) {
110 if (!strcasecmp (modeltable[i].name, Model))
111 model = modeltable[i].model;
141 static nr_double_t skindepth (
const nr_double_t f,
142 const nr_double_t rho,
const nr_double_t mur) {
157 nr_double_t bondwire::resistance (
const nr_double_t f)
const {
158 nr_double_t delta, rout, rin;
161 delta = skindepth (f, rho, mur);
169 return (rho *
M_1_PI * l) / (rout * rout - rin * rin);
196 static nr_double_t correctionfactor (
const nr_double_t f,
198 const nr_double_t rho,
199 const nr_double_t mur) {
203 if (f > 0.0 && rho > 0.0) {
204 delta = skindepth (f, rho, mur);
205 if (delta / d < 1
e-2)
208 return (mur / 4) *
tanh ((4 * delta) / d);
252 nr_double_t bondwire::Lfreespace (
const nr_double_t f)
const {
253 nr_double_t _2ld = (2.0 * l) / d;
254 nr_double_t d2l = d / (2.0 * l);
257 tmp =
log (_2ld +
sqrt (1 + _2ld * _2ld));
258 tmp += d2l -
sqrt (1 + d2l * d2l);
259 tmp += correctionfactor (f, d, rho, mur);
295 nr_double_t bondwire::Lmirror (
void)
const {
299 tmp =
log ((l +
sqrt (l * l + d * d / 4)) / (l +
sqrt (l * l + 4 * h * h)));
300 tmp +=
log (4 * h / d);
301 tmp +=
sqrt (1 + 4 * h * h / (l * l));
302 tmp -=
sqrt (1 + d * d / (4 * l * l));
329 Lw = L * 2 *
M_PI * f;
371 g = 1.0 / resistance (0);
411 nr_double_t y = 1 / R;
413 nr_double_t f =
kelvin (T) /
T0 * 4.0 * y;