30 #include "component.h"
35 msopen::msopen () :
circuit (1) {
41 nr_double_t h, nr_double_t
t, nr_double_t er,
42 char * SModel,
char * DModel,
45 nr_double_t ZlEff, ErEff, WEff, ZlEffFreq, ErEffFreq;
48 ZlEffFreq, ErEffFreq);
53 if (!strcmp (Model,
"Kirschning")) {
54 nr_double_t Q6 =
pow (ErEffFreq, 0.81);
55 nr_double_t Q7 =
pow (W, 0.8544);
56 nr_double_t Q1 = 0.434907 *
57 (Q6 + 0.26) / (Q6 - 0.189) * (Q7 + 0.236) / (Q7 + 0.87);
58 nr_double_t Q2 =
pow (W, 0.371) / (2.358 * er + 1.0) + 1.0;
59 nr_double_t Q3 =
atan (0.084 *
pow (W, 1.9413 / Q2)) *
60 0.5274 /
pow (ErEffFreq, 0.9236) + 1.0;
61 nr_double_t Q4 = 0.0377 * (6.0 - 5.0 *
exp (0.036 * (1.0 - er))) *
62 atan (0.067 *
pow (W, 1.456)) + 1.0;
63 nr_double_t Q5 = 1.0 - 0.218 *
exp (-7.5 * W);
64 dl = Q1 * Q3 * Q5 / Q4;
67 else if (!strcmp (Model,
"Hammerstad")) {
68 dl = 0.102 * (W + 0.106) / (W + 0.264) *
69 (1.166 + (er + 1) / er * (0.9 +
log (W + 2.475)));
71 return dl * h *
sqrt (ErEffFreq) /
C0 / ZlEffFreq;
94 nr_double_t o = 2 *
M_PI * frequency;
97 if (!strcmp (Model,
"Alexopoulos")) {
98 nr_double_t ZlEff, ErEff, WEff, ZlEffFreq, ErEffFreq;
101 ZlEffFreq, ErEffFreq);
103 if (fabs (er - 9.9) > 0.2) {
105 "for er = 9.9 (er = %g)\n", er);
108 nr_double_t c1, c2, l2, r2;
109 c1 = (1.125 *
tanh (1.358 * W / h) - 0.315) *
110 h / 2.54e-5 / 25 / ZlEffFreq * 1
e-12;
111 c2 = (6.832 *
tanh (0.0109 * W / h) + 0.919) *
112 h / 2.54e-5 / 25 / ZlEffFreq * 1e-12;
113 l2 = (0.008285 *
tanh (0.5665 * W / h) + 0.0103) *
114 h / 2.54e-5 / 25 * ZlEffFreq * 1e-9;
115 r2 = (1.024 *
tanh (2.025 * W / h)) * ZlEffFreq;
116 y =
rect (0, c1 * o) + 1.0 /
rect (r2, l2 * o - 1 / c2 / o);
119 nr_double_t
c =
calcCend (frequency, W, h, t, er, SModel, DModel, Model);