37 msopen::msopen () : circuit (1) {
43 nr_double_t
h, nr_double_t
t, nr_double_t er,
44 char * SModel,
char * DModel,
47 nr_double_t ZlEff, ErEff, WEff, ZlEffFreq, ErEffFreq;
50 ZlEffFreq, ErEffFreq);
55 if (!strcmp (Model,
"Kirschning")) {
56 nr_double_t Q6 =
qucs::pow (ErEffFreq, 0.81);
58 nr_double_t Q1 = 0.434907 *
59 (Q6 + 0.26) / (Q6 - 0.189) * (Q7 + 0.236) / (Q7 + 0.87);
60 nr_double_t Q2 =
qucs::pow (W, 0.371) / (2.358 * er + 1.0) + 1.0;
62 0.5274 /
qucs::pow (ErEffFreq, 0.9236) + 1.0;
63 nr_double_t Q4 = 0.0377 * (6.0 - 5.0 *
qucs::exp (0.036 * (1.0 - er))) *
65 nr_double_t Q5 = 1.0 - 0.218 *
qucs::exp (-7.5 * W);
66 dl = Q1 * Q3 * Q5 / Q4;
69 else if (!strcmp (Model,
"Hammerstad")) {
70 dl = 0.102 * (W + 0.106) / (W + 0.264) *
71 (1.166 + (er + 1) / er * (0.9 +
qucs::log (W + 2.475)));
90 nr_double_t er = subst->getPropertyDouble (
"er");
91 nr_double_t
h = subst->getPropertyDouble (
"h");
92 nr_double_t
t = subst->getPropertyDouble (
"t");
96 nr_double_t o = 2 *
M_PI * frequency;
99 if (!strcmp (Model,
"Alexopoulos")) {
100 nr_double_t ZlEff, ErEff, WEff, ZlEffFreq, ErEffFreq;
103 ZlEffFreq, ErEffFreq);
105 if (fabs (er - 9.9) > 0.2) {
107 "for er = 9.9 (er = %g)\n", er);
110 nr_double_t
c1,
c2, l2, r2;
111 c1 = (1.125 *
qucs::tanh (1.358 * W / h) - 0.315) *
112 h / 2.54e-5 / 25 / ZlEffFreq * 1e-12;
113 c2 = (6.832 *
qucs::tanh (0.0109 * W / h) + 0.919) *
114 h / 2.54e-5 / 25 / ZlEffFreq * 1e-12;
115 l2 = (0.008285 *
qucs::tanh (0.5665 * W / h) + 0.0103) *
116 h / 2.54e-5 / 25 * ZlEffFreq * 1e-9;
117 r2 = (1.024 *
qucs::tanh (2.025 * W / h)) * ZlEffFreq;
121 nr_double_t
c =
calcCend (frequency, W, h, t, er, SModel, DModel, Model);
std::complex< nr_double_t > nr_complex_t
nr_double_t getPropertyDouble(const char *)
nr_complex_t pow(const nr_complex_t z, const nr_double_t d)
Compute power function with real exponent.
substrate * getSubstrate(void)
nr_complex_t atan(const nr_complex_t z)
Compute complex arc tangent.
nr_complex_t sqrt(const nr_complex_t z)
Compute principal value of square root.
nr_complex_t tanh(const nr_complex_t z)
Compute complex hyperbolic tangent.
nr_complex_t ztor(const nr_complex_t z, nr_complex_t zref)
Converts impedance to reflexion coefficient.
static nr_double_t calcCend(nr_double_t, nr_double_t, nr_double_t, nr_double_t, nr_double_t, char *, char *, const char *)
#define M_PI
Archimedes' constant ( )
void setY(int, int, nr_complex_t)
void allocMatrixMNA(void)
#define C0
speed of light in vacuum ( )
static void analyseQuasiStatic(nr_double_t, nr_double_t, nr_double_t, nr_double_t, char *, nr_double_t &, nr_double_t &, nr_double_t &)
nr_complex_t exp(const nr_complex_t z)
Compute complex exponential.
void setS(int, int, nr_complex_t)
nr_complex_t calcY(nr_double_t)
static void analyseDispersion(nr_double_t, nr_double_t, nr_double_t, nr_double_t, nr_double_t, nr_double_t, char *, nr_double_t &, nr_double_t &)
#define PROP_RNG_STR3(s1, s2, s3)
char * getPropertyString(const char *)
void logprint(int level, const char *format,...)
nr_complex_t log(const nr_complex_t z)
Compute principal value of natural logarithm of z.