#CAS
/* cbcpw - Analyze Conductor-Backed Coplanar Waveguide.
* Rev. 0.80 (Jan. 26, 2023) (c) 2022 Takayuki HOSODA
*/
CAS_EPSILON := 7.1054273576E-15;
/* complete elliptic integral of the first kind.
* The argument k is modulus.
*/
EllipticK(k):=
BEGIN
LOCAL a, b, m, c;
c := 2 * CAS_EPSILON * max(abs(a := 1), abs(b := sqrt(1 - (m := k * k))));
REPEAT
m := 0.5 * (a + b);
b := sqrt(a * b);
a := m;
UNTIL abs(a - b) < c;
return PI / (a + b);
END;
EllipticRatio(k):=
BEGIN
return EllipticK(k) / EllipticK(sqrt(1 - k * k));
END;
/* Conductor-backed coplanar waveguide */
cbcpw(er, h, w, g, t):=
BEGIN
LOCAL we, ge, k1, k2, r1, r2, ere, z;
LOCAL d := 0;
IF t > 0 THEN
d := t;
END;
we := w + d;
ge := g - d;
r1 := EllipticRatio(we / (we + 2 * ge));
r2 := EllipticRatio(tanh(PI * we / (4 * h)) / tanh(PI * (we + 2 * ge) / (4 * h)));
ere := (r1 + er * r2) / (r1 + r2);
z := 188.365156834 / (sqrt(ere) * (r1 + r2));
/*
PRINT("cbcpw - Conductor backed coplanar waveguide:");
PRINT("ϵ = " + er + ", h = " + h + ", w = " + w + ", g = " + g + " ,t = " + t);
PRINT("ϵe = " + ere);
PRINT("Z0 = " + z);
*/
return z, ere;
END;
#END
|