29 #include "component.h"
35 using namespace device;
38 lineA = lineB = line2 = NULL;
57 void mstee::initLines (
void) {
81 calcPropagation (frequency);
102 sqrt (Ta2 / Tb2) +
sqrt (Tb2 / Ta2)));
104 sqrt (Ta2 / Tb2) +
sqrt (Tb2 / Ta2)));
107 void mstee::calcPropagation (nr_double_t f) {
119 nr_double_t Zla, Zlb, Zl2, Era, Erb, Er2;
122 nr_double_t ZlEff, ErEff, WEff;
134 nr_double_t Da, Db,
D2, fpa, fpb, lda, ldb, da, db, d2, r, q;
137 Da =
Z0 / Zla * h /
sqrt (Era);
138 Db =
Z0 / Zlb * h /
sqrt (Erb);
139 D2 =
Z0 / Zl2 * h /
sqrt (Er2);
142 fpa = 0.4e6 * Zla / h;
143 fpb = 0.4e6 * Zlb / h;
146 lda =
C0 /
sqrt (Era) / f;
147 ldb =
C0 /
sqrt (Erb) / f;
150 da = 0.055 * D2 * Zla / Zl2 * (1 - 2 * Zla / Zl2 *
sqr (f / fpa));
151 db = 0.055 * D2 * Zlb / Zl2 * (1 - 2 * Zlb / Zl2 *
sqr (f / fpb));
158 r =
sqrt (Zla * Zlb) / Zl2;
159 q =
sqr (f) / fpa / fpb;
160 d2 =
sqrt (Da * Db) * (0.5 - r * (0.05 + 0.7 *
exp (-1.6 * r) +
161 0.25 * r * q - 0.17 *
log (r)));
162 L2 = 0.5 *
MAX (Wa, Wb) - d2;
165 Ta2 = 1 -
M_PI *
sqr (f / fpa) *
166 (
sqr (Zla / Zl2) / 12 +
sqr (0.5 - d2 / Da));
167 Tb2 = 1 -
M_PI *
sqr (f / fpb) *
168 (
sqr (Zlb / Zl2) / 12 +
sqr (0.5 - d2 / Db));
169 Ta2 =
MAX (Ta2, NR_TINY);
170 Tb2 =
MAX (Tb2, NR_TINY);
173 Bt = 5.5 *
sqrt (Da * Db / lda / ldb) * (er + 2) / er /
174 Zl2 /
sqrt (Ta2 * Tb2) *
sqrt (da * db) / D2 *
175 (1 + 0.9 *
log (r) + 4.5 * r * q - 4.4 *
exp (-1.3 * r) -
176 20 *
sqr (Zl2 /
Z0));
190 const char *
c,
const char *
n,
int internal) {
256 calcPropagation (frequency);
261 lineA->
calcAC (frequency);
262 lineB->
calcAC (frequency);
263 line2->
calcAC (frequency);