Ejemplo n.º 1
0
        static void ExportAntenna_Small_15x6mm()
        {
            double thickness       = 0.01;
            double airBox          = 5.0;
            double innerResolution = 0.5;
            double outerResolution = 5.0;

            var antenna = new CSXCAD.Antenna.Small_15x6mm_2400MHz(thickness);

            const double pcbThickness = 1.5;
            var          lumpedPort   = new LumpedPort(90, 1, 50, new Vector3D(0.0, 0.0, -pcbThickness), new Vector3D(0.0, 0.0, 0), ENormDir.Z, true);

            antenna.Add(lumpedPort);

            double margin      = 2.0;
            double groundWidth = 5.0;
            var    p1          = new Vector3D(antenna.BoundingBox.P1.x - margin, -groundWidth - margin, -pcbThickness);
            var    p2          = new Vector3D(antenna.BoundingBox.P2.x + margin, antenna.BoundingBox.P2.y + margin, 0);

            double epsRel    = 4.88;
            var    substrate = new Dielectric("pcb", epsRel, 1e-3 * 2 * Math.PI * 2.45e9 * epsRel * Material.Eps0);

            substrate.EdgeColor = new Material.Color(10, 255, 10, 128);
            substrate.FillColor = new Material.Color(10, 255, 10, 128);
            var pcb = new CSXCAD.Box(null, substrate, 60, p1, p2);

            antenna.Add(pcb);

            var bottomGround = new Metal("bottom-ground");

            bottomGround.EdgeColor = new Material.Color(235, 148, 7, 255);
            bottomGround.FillColor = bottomGround.EdgeColor;
            var bottomGroundPlane = new CSXCAD.Box(null, bottomGround, 100,
                                                   new Vector3D(antenna.BoundingBox.P1.x - antenna.D1, antenna.D4 / 2, -pcbThickness),
                                                   new Vector3D(antenna.BoundingBox.P2.x + antenna.D3, -groundWidth, -pcbThickness - 0.01));

            antenna.Add(bottomGroundPlane);

            var topGround = new Metal("top-ground");

            topGround.EdgeColor = new Material.Color(235, 148, 7, 255);
            topGround.FillColor = topGround.EdgeColor;
            var topGroundPlane = new CSXCAD.Box(null, topGround, 100,
                                                new Vector3D(antenna.BoundingBox.P1.x - antenna.D1, -antenna.D4 / 2, 0),
                                                new Vector3D(antenna.BoundingBox.P2.x + antenna.D3, -groundWidth, 0.01));

            antenna.Add(topGroundPlane);

            var viaMetal = new Metal("via");

            viaMetal.EdgeColor = new Material.Color(235, 148, 7, 255);
            viaMetal.FillColor = viaMetal.EdgeColor;
            var via = new Cylinder(null, viaMetal, 100,
                                   new Vector3D(-(antenna.W1 / 2 + antenna.D5 + antenna.W2 / 2), 0, -pcbThickness),
                                   new Vector3D(-(antenna.W1 / 2 + antenna.D5 + antenna.W2 / 2), 0, 0),
                                   0.25);

            antenna.Add(via);

            Simulation fdtd = new Simulation();

            fdtd.Excitation = new GaussExcitation(2450e6, 500e6);

            RectilinearGrid grid = new RectilinearGrid();;

            grid.Add(new Vector3D(0, 0, 0));
            grid.Add(pcb.P1);
            grid.Add(pcb.P2);

            /*
             * foreach (var v in antenna.antennaPoly)
             * {
             *  grid.Add(new Vector3D(v.x, v.y, 0));
             * }
             */

            grid.SmoothMesh(innerResolution);
            grid.AddAirbox(airBox);
            grid.SmoothMesh(outerResolution);
            var nf2ff = new NF2FFBox("nf2ff",
                                     new Vector3D(grid.XLines.First(), grid.YLines.First(), grid.ZLines.First()),
                                     new Vector3D(grid.XLines.Last(), grid.YLines.Last(), grid.ZLines.Last()));

            antenna.Add(nf2ff);
            grid.AddPML(8);

            XDocument doc = new XDocument(
                new XDeclaration("1.0", "utf-8", "yes"),
                new XComment("Test XML file for CyPhy generated openEMS simulations"),
                new XElement("openEMS",
                             fdtd.ToXElement(),
                             new XElement("ContinuousStructure",
                                          new XAttribute("CoordSystem", 0),
                                          antenna.ToXElement(),
                                          grid.ToXElement()
                                          )
                             )
                );

            doc.Save("Small_15x6mm.xml");
        }
Ejemplo n.º 2
0
        static void ExportAntenna_InvertedF()
        {
            double thickness       = 0.01;
            double airBox          = 5.0;
            double innerResolution = 0.5;
            double outerResolution = 5.0;

            var antenna = new CSXCAD.Antenna.InvertedF_2400MHz(thickness);

            const double pcbThickness = 1.5;
            var          lumpedPort   = new LumpedPort(90, 1, 50, new Vector3D(0.0, 0.0, -pcbThickness), new Vector3D(0.0, 0.0, 0), ENormDir.Z, true);

            antenna.Add(lumpedPort);

            double margin      = 2.0;
            double groundWidth = 5.0;
            var    p1          = new Vector3D(antenna.BoundingBox.P1.x - margin, -groundWidth - margin, -pcbThickness);
            var    p2          = new Vector3D(antenna.BoundingBox.P2.x + margin, antenna.BoundingBox.P2.y + margin, 0);

            var substrate = new Dielectric("pcb", 3.38, 1e-3 * 2 * Math.PI * 2.45e9 * 3.38 * Material.Eps0);

            substrate.EdgeColor = new Material.Color(10, 255, 10, 128);
            substrate.FillColor = new Material.Color(10, 255, 10, 128);
            var pcb = new CSXCAD.Box(null, substrate, 60, p1, p2);
            //antenna.Add(pcb);

            var topGround = new Metal("bottom-ground");

            topGround.EdgeColor = new Material.Color(235, 148, 7, 255);
            topGround.FillColor = topGround.EdgeColor;
            var topGroundPlane = new CSXCAD.Box(null, topGround, 100,
                                                new Vector3D(antenna.BoundingBox.P1.x, 0, -pcbThickness),
                                                new Vector3D(antenna.BoundingBox.P2.x, -groundWidth, -pcbThickness));

            antenna.Add(topGroundPlane);

            var bottomGround = new Metal("top-ground");

            bottomGround.EdgeColor = new Material.Color(235, 148, 7, 255);
            bottomGround.FillColor = bottomGround.EdgeColor;
            var topGroundPlaneLeft = new CSXCAD.Box(null, bottomGround, 100,
                                                    new Vector3D(antenna.BoundingBox.P1.x, 0, 0),
                                                    new Vector3D(-0.46 / 2 - 0.45, -groundWidth, 0));
            var topGroundPlaneRight = new CSXCAD.Box(null, bottomGround, 100,
                                                     new Vector3D(0.46 / 2 + 0.45, 0, 0),
                                                     new Vector3D(antenna.BoundingBox.P2.x, -groundWidth, 0));

            antenna.Add(topGroundPlaneLeft);
            antenna.Add(topGroundPlaneRight);

            Simulation fdtd = new Simulation();

            fdtd.Excitation = new GaussExcitation(2450e6, 500e6);

            RectilinearGrid grid = new RectilinearGrid();;

            grid.Add(new Vector3D(0, 0, 0));

            grid.SmoothMesh(innerResolution);
            grid.AddAirbox(airBox);
            grid.SmoothMesh(outerResolution);
            var nf2ff = new NF2FFBox("nf2ff",
                                     new Vector3D(grid.XLines.First(), grid.YLines.First(), grid.ZLines.First()),
                                     new Vector3D(grid.XLines.Last(), grid.YLines.Last(), grid.ZLines.Last()));

            antenna.Add(nf2ff);
            grid.AddPML(8);

            XDocument doc = new XDocument(
                new XDeclaration("1.0", "utf-8", "yes"),
                new XComment("Test XML file for CyPhy generated openEMS simulations"),
                new XElement("openEMS",
                             fdtd.ToXElement(),
                             new XElement("ContinuousStructure",
                                          new XAttribute("CoordSystem", 0),
                                          antenna.ToXElement(),
                                          grid.ToXElement()
                                          )
                             )
                );

            doc.Save("InvertedF.xml");
        }