void mutual::calcSP (nr_double_t frequency) { #if 0 setMatrixS (ytos (calcMatrixY (frequency))); #else nr_double_t l1 = getPropertyDouble ("L1"); nr_double_t l2 = getPropertyDouble ("L2"); nr_double_t k = getPropertyDouble ("k"); nr_double_t o = 2 * M_PI * frequency; nr_double_t a = k * k - 1; nr_complex_t d = rect (o * o * l1 * l2 * a / 2 / z0 + 2 * z0, o * (l1 + l2)); nr_complex_t r; r = rect (2 * z0, o * l2) / d; setS (NODE_1, NODE_4, r); setS (NODE_4, NODE_1, r); r = 1.0 - r; setS (NODE_1, NODE_1, r); setS (NODE_4, NODE_4, r); r = rect (2 * z0, o * l1) / d; setS (NODE_2, NODE_3, r); setS (NODE_3, NODE_2, r); r = 1.0 - r; setS (NODE_2, NODE_2, r); setS (NODE_3, NODE_3, r); r = rect (0, o * k * sqrt (l1 * l2)) / d; setS (NODE_1, NODE_2, r); setS (NODE_2, NODE_1, r); setS (NODE_3, NODE_4, r); setS (NODE_4, NODE_3, r); r = -r; setS (NODE_1, NODE_3, r); setS (NODE_3, NODE_1, r); setS (NODE_2, NODE_4, r); setS (NODE_4, NODE_2, r); #endif }
/*! Compute S parameters. *! Reuse computed Y matrix. */ void bondwire::calcSP (const nr_double_t frequency) { setMatrixS (ytos (calcMatrixY (frequency))); }
void msmbend::calcSP (nr_double_t frequency) { setMatrixS (ztos (calcMatrixZ (frequency))); }
void mutual2::calcSP (nr_double_t frequency) { setMatrixS (ytos (calcMatrixY (frequency))); }
void cpwgap::calcSP (nr_double_t frequency) { setMatrixS (ytos (calcMatrixY (frequency))); }
void mscross::calcSP (nr_double_t frequency) { setMatrixS (ytos (calcMatrixY (frequency))); }