0
$\begingroup$

I am having problems determining a scaling factor for a conformal mapping function.

The plan is to map the upper half plane into a rectangle (Schwarz Christoffel Transformation) to determine the values for lumped elements in an equivalent circuit diagram of a coplanar waveguide structure.

The first step would be to map my structure from the original domain into a rectangle in the w-domain. I am doing this by performing a series of conformal mapping steps but here I am already struggling to write code that creates a rectangle in the desired orientation. This is what I have got so far. This first section is meant to define the geometry of the original structure:

pieces = 500; GP1 = 500*10^(-6); GP2 = GP1; RF1 = 240*10^(-6); GAP1 = 50*10^(-6); GAP2 = GAP1; l = 500*10^(-6); h = 50*10^(-6); t = 5*10^(-6); \[Sigma] = 5.8*10^(7)(*[S/m]*); Rs = 0.015; \[Epsilon]r = 10; f = Range[50000000, 100000000, 1000000]; (*[Hz]*) \[Omega] = f*2*Pi(*[Hz]*); \[Epsilon]0 = 8.854187817*10^(-12)(*[As/Vm]*); \[Mu]0 = 1.25663706212*10^-6(*N/A^2*); c = 299792458(*[m/s]*); 

After this, I am dividing all the lengths into smaller pieces such that I can get ListPlots that look like the structures. Note: Due to symmetry only one half of the structure is taken into consideration.

 zCor = {0, RF1/2, RF1/2 + GAP1, RF1/2 + GAP1 + GP1, RF1/2 + GAP1 + GP1 - h*I, 0 - h*I}; \[Delta]RF = (RF1/2)/(pieces - 1); zCorRFpieces = Range[0, RF1/2, \[Delta]RF]; \[Delta]GP = GP1/(pieces - 1); zCorGPpieces = Range[RF1/2 + GAP1, RF1/2 + GAP1 + GP1, \[Delta]GP]; zCorUpper = {{zCorRFpieces, zCorRFpieces + t*I}, {zCorGPpieces, zCorGPpieces + t*I}}; PLOT0 = ListPlot[{Re[#], Im[#]} & /@ Flatten[zCorUpper], PlotStyle -> Blue, PlotMarkers -> {Automatic, Small}]; Show[PLOT0, PlotRange -> All, AxesOrigin -> {0, 0}, AxesLabel -> {"Re", "Im"}, PlotLabel -> "Z-DOMAIN"] 

half of the structure in Z-Domain

After this, I perform three conformal mapping steps:

SI1[z_] = z - (First[zCorUpper[[1, 1]]] + Last[zCorUpper[[2, 1]]])/2; PLOT1 = ListPlot[{Re[#], Im[#]} & /@ Flatten[SI1[zCorUpper]], PlotStyle -> Orange, PlotMarkers -> {Automatic, Small}]; Show[PLOT1, PlotRange -> All, AxesOrigin -> {0, 0}, AxesLabel -> {"Re", "Im"}, PlotLabel -> "SI1-DOMAIN"] 

SI1-Plane

\[Lambda]1 = SI1[zCorUpper[[2, 1, pieces]]] \[Alpha]Sol = Solve[0 == \[Lambda]1^2 (SI1[zCorUpper[[1, 1, pieces]]] + SI1[zCorUpper[[2, 1, 1]]])*a^2 + 2 (SI1[zCorUpper[[1, 1, pieces]]]* SI1[zCorUpper[[2, 1, 1]]] + \[Lambda]1^2)*a + SI1[zCorUpper[[1, 1, pieces]]] + SI1[zCorUpper[[2, 1, 1]]], a]; \[Alpha] = a /. \[Alpha]Sol[[1, 1]] k0 = (SI1[ zCorUpper[[2, 1, 1]]] + \[Alpha]*\[Lambda]1^2)/(\[Lambda]1 (1 + \[Alpha]* SI1[zCorUpper[[2, 1, 1]]])); SI2[z_] := ( SI1[z] + \[Alpha]*\[Lambda]1^2)/(\[Lambda]1 (1 + \[Alpha]* SI1[z]) k0); PLOT2 = ListPlot[{Re[#], Im[#]} & /@ Flatten[SI2[zCorUpper]], PlotStyle -> Cyan, PlotMarkers -> {Automatic, Small}]; Show[PLOT2, PlotRange -> All, AxesOrigin -> {0, 0}, AxesLabel -> {"Re", "Im"}, PlotLabel -> "SI2-DOMAIN"] 

SI2-plane

SI3 = Conjugate[ I*Simplify[ Integrate[ 1/((\[Zeta] - 1)^(1/2) (\[Zeta] - 1/k0)^(1/2) (\[Zeta] + 1)^(1/ 2) (\[Zeta] + 1/k0)^(1/2)), {\[Zeta], 0, z}, Assumptions -> {Im[z] > 0}]]] map = SI3 /. {z -> Flatten[SI2[zCorRFpieces]]}; map2 = SI3 /. {z -> Flatten[SI2[zCorGPpieces]]}; PLOT5 = ListPlot[{Re[#], Im[#]} & /@ map, PlotStyle -> Orange, PlotMarkers -> {Automatic, Small}]; PLOT6 = ListPlot[{Re[#], Im[#]} & /@ map2, PlotStyle -> Cyan, PlotMarkers -> {Automatic, Small}]; Show[PLOT6, PLOT5, PlotRange -> All, AxesOrigin -> {0, 0}, AxesLabel -> {"Re", "Im"}, PlotLabel -> "SI3-DOMAIN"] 

SI3-plane

I think could add some clever factors to the SI3[z_] function to map everything inside a rectangle in which the lower side is lying on the Real axis but I do not see how.

Also, I will need to determine a Scaling factor M that relates a differential length in the z-Plane to one in the w-plane such that M=Abs[dw/dz]. I tried this here but without any promising results results

W[z_] = SI3[SI2[SI1[z]]]; M[z_] = Abs[D[W[z], z]]; M[SI3[Flatten[zCorUpper]]] 

This scaling factor will later become a function in an integral integrating along the real axis from 0 to the endpoint of the rectangle.

Simplify[ Integrate[1/( I*w*bI*\[Mu]0 + Re[surfaceImpedanceGP[w]]*MSI[u] + Re[surfaceImpedanceRF[w]]*MSI[u + I*b]), {u, 0, a}] 

a corresponds to the endpoint of the rectangle side on the Real axis and b is the Imaginary part of the other side of the rectangle.

$\endgroup$

1 Answer 1

1
$\begingroup$

Not sure if it helps, but Ivanov and Trubetskov's Handbook did have a mapping for a rectangle. This code plots it with a strip in the center: (but you perhaps want an empty waveguide)

(* Ivanovs stripline, in box, OK [example 1.65, p237] *) (* *) (* Note: where Ivanov uses F[z,m], Mathematica uses: *) (* EllipticF[ArcSin[z],m] *) (* *) Clear["Global`*"] w = EllipticF[ ArcSin[s], p] s = Sqrt[m] JacobiSN[z,m] (* Re(z)=-2EllipticK[m]...2EllipticK[m], Im(z)=0...EllipticK[1-m] ???, but for inductance: bounds of w ?? *) p=.8925; m = 0.5 tt = -EllipticE[m]*EllipticK[1-m]/EllipticK[m] - Im[ EllipticE[ArcSin[1/Sqrt[m]], m] ] (* ??? *) f[u_] = w /. z->u g[x_,y_] := {Re[f[x + I y]], Im[f[x + I y]]} / EllipticK[p] ParametricPlot[{ g[z, 0.2], g[z, 0.5], g[z, 1], g[z, 1.3], g[z, 1.6], g[z, 1.75], g[z, EllipticK[1-m]-.0000001], }, {z,-2EllipticK[m],2EllipticK[m]}, PlotRange->{{-1,1},{-.7,.7}}, AspectRatio->Automatic] 

It took me some puzzling to map the notation of the book to Mathematica functions. (I did the same for a lot of other examples in the book. The advantage is that the integrals of the Schwarz-Christoffel Transformation are then already replaced by their analytical results in terms of special functions.) Here's the plot of equipotential curves it gives:

Equipotential lines.

$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.