private void LoadManifest()
        {
            ProjectManifestData data = Application.OpenedProject.ProjectManifest;

            numericUpDownResolution.Value = (decimal)data.Resolution;
            numericUpDownTime.Value       = (decimal)data.SimulationTime;

            switch (data.SimulationRegion.Dimension)
            {
            case Dimension.Dim2: radioButtonDim2D.Checked = true; break;

            case Dimension.Dim3: radioButtonDim3D.Checked = true; break;
            }
            numericUpDownMinX.Value = (decimal)data.SimulationRegion.MinX;
            numericUpDownMaxX.Value = (decimal)data.SimulationRegion.MaxX;
            numericUpDownMinY.Value = (decimal)data.SimulationRegion.MinY;
            numericUpDownMaxY.Value = (decimal)data.SimulationRegion.MaxY;
            numericUpDownMinZ.Value = (decimal)data.SimulationRegion.MinZ;
            numericUpDownMaxZ.Value = (decimal)data.SimulationRegion.MaxZ;
            numericUpDownPml.Value  = (decimal)data.SimulationRegion.PmlThickness;

            // SourceData list
            foreach (SourceData src in data.Sources)
            {
                listBoxSrc.Items.Add(src);
            }
            if (listBoxSrc.Items.Count > 0)
            {
                listBoxSrc.Items[0].ToString();
            }

            // FluxAnalysisData list
            foreach (FluxAnalysisData flux in data.FluxAnalyses)
            {
                listBoxFlx.Items.Add(flux);
            }

            // VisualizationOutputData list
            foreach (VisualizationOutputData visualization in data.VisualizationOutputs)
            {
                listBoxVis.Items.Add(visualization);
            }
        }
        private void ApplyManifest()
        {
            ProjectManifestData data = Application.OpenedProject.ProjectManifest;

            data.Resolution         = (double)numericUpDownResolution.Value;
            data.SimulationTime     = (double)numericUpDownTime.Value;
            data.BackgroundMaterial = Application.OpenedProject.ProjectManifest.BackgroundMaterial;

            SimulationRegionData region = data.SimulationRegion;

            region.Dimension    = radioButtonDim2D.Checked ? Dimension.Dim2 : Dimension.Dim3;
            region.MinX         = (double)numericUpDownMinX.Value;
            region.MaxX         = (double)numericUpDownMaxX.Value;
            region.MinY         = (double)numericUpDownMinY.Value;
            region.MaxY         = (double)numericUpDownMaxY.Value;
            region.MinZ         = (double)numericUpDownMinZ.Value;
            region.MaxZ         = (double)numericUpDownMaxZ.Value;
            region.PmlThickness = (double)numericUpDownPml.Value;

            data.Sources.Clear();
            foreach (object obj in listBoxSrc.Items)
            {
                data.Sources.Add(new SourceData(obj as SourceData));
            }

            data.FluxAnalyses.Clear();
            foreach (object obj in listBoxFlx.Items)
            {
                data.FluxAnalyses.Add(new FluxAnalysisData(obj as FluxAnalysisData));
            }

            data.VisualizationOutputs.Clear();
            foreach (object obj in listBoxVis.Items)
            {
                data.VisualizationOutputs.Add(new VisualizationOutputData(obj as VisualizationOutputData));
            }

            Application.ValidateProject(true);
        }
Exemplo n.º 3
0
        public static void MakeTestProject()
        {
            Application app = Application.SingletonInstance;

            app.OpenedProject      = new WaveguideDesignerProjectData();
            app.OpenedProject.Name = "Test Project";
            ProjectManifestData manifest = new ProjectManifestData();

            manifest.SimulationRegion.Dimension = Dimension.Dim2;
            manifest.SimulationRegion.MinX      = 0;
            manifest.SimulationRegion.MaxX      = 15;
            manifest.SimulationRegion.MinY      = -4;
            manifest.SimulationRegion.MaxY      = 4;
            manifest.Resolution = 50;
            app.OpenedProject.ProjectManifest         = manifest;
            app.OpenedProject.GlobalRenderSetting     = new GlobalRenderSettingData();
            app.OpenedProject.GlobalStructureNumerics = new GlobalStructureNumericsData();
            app.OpenedProject.Layers.Add(new LayerData());
            app.OpenedProject.Layers[0].Name             = "Layer1";
            app.OpenedProject.Layers[0].Profile.Material = new MaterialData(MaterialData.MaterialType.Dielectric)
            {
                Name = "material1", Index = 2,
            };
            RectangleCoordinateFunctionalPathData s = new RectangleCoordinateFunctionalPathData();

            s.PointNum       = 100;
            s.XOffset        = "0";
            s.YOffset        = "1";
            s.CenterX        = "15*t";
            s.CenterY        = "3*sin(6*pi*t)*t";
            s.LeftWingWidth  = "0.2";
            s.RightWingWidth = "0.2";
            app.OpenedProject.Layers[0].GeometricObjects.Add(s);
            s                = new RectangleCoordinateFunctionalPathData();
            s.PointNum       = 50;
            s.XOffset        = "0";
            s.YOffset        = "1";
            s.CenterX        = "10*t";
            s.CenterY        = "-5*t";
            s.LeftWingWidth  = "0.2";
            s.RightWingWidth = "0.2*sin(10*t)";
            app.OpenedProject.Layers[0].GeometricObjects.Add(s);
            app.OpenedProject.Layers.Add(new LayerData());
            app.OpenedProject.Layers[1].Name             = "Layer2";
            app.OpenedProject.Layers[1].Profile.Material = new MaterialData(MaterialData.MaterialType.Dielectric)
            {
                Name = "material2", Index = 3,
            };;
            app.OpenedProject.Layers[1].Profile.RenderSetting.Border = Pens.LightGreen;
            app.OpenedProject.Layers[1].Profile.RenderSetting.Fill   = new HatchBrush(HatchStyle.DarkDownwardDiagonal, Color.LightGreen);
            s                = new RectangleCoordinateFunctionalPathData();
            s.PointNum       = 2;
            s.XOffset        = "0";
            s.YOffset        = "1";
            s.CenterX        = "10*t";
            s.CenterY        = "5*t";
            s.LeftWingWidth  = "0.2";
            s.RightWingWidth = "0.2";
            app.OpenedProject.Layers[1].GeometricObjects.Add(s);

            app.OpenedProject.Layers.Add(new LayerData());
            app.OpenedProject.Layers[2].Name             = "Layer3";
            app.OpenedProject.Layers[2].Profile.Material = new MaterialData(MaterialData.MaterialType.Dielectric)
            {
                Name = "material3", Index = 4,
            };;
            app.OpenedProject.Layers[2].Profile.RenderSetting.Border = Pens.Purple;
            app.OpenedProject.Layers[2].Profile.RenderSetting.Fill   = new HatchBrush(HatchStyle.DarkDownwardDiagonal, Color.Purple);
            PolarCoordinateFunctionalPathData p = new PolarCoordinateFunctionalPathData();

            p.PointNum       = 10;
            p.XOffset        = "10";
            p.YOffset        = "0";
            p.CenterRadius   = "5*t";
            p.CenterPhase    = "4*pi*t";
            p.LeftWingWidth  = "0.5*t";
            p.RightWingWidth = "0.25*(1+sin(16*pi*t))";
            app.OpenedProject.Layers[2].GeometricObjects.Add(p);

            app.OpenedProject.Layers.Add(new LayerData());
            app.OpenedProject.Layers[3].Name             = "Layer4";
            app.OpenedProject.Layers[3].Profile.Material = new MaterialData(MaterialData.MaterialType.Dielectric)
            {
                Name = "material1", Index = 2,
            };;
            app.OpenedProject.Layers[3].Profile.RenderSetting.Border = Pens.Aqua;
            app.OpenedProject.Layers[3].Profile.RenderSetting.Fill   = new HatchBrush(HatchStyle.Percent05, Color.Aqua);
            p                = new PolarCoordinateFunctionalPathData();
            p.PointNum       = 10;
            p.XOffset        = "5";
            p.YOffset        = "0";
            p.CenterRadius   = "1*t";
            p.CenterPhase    = "-4*pi*t";
            p.LeftWingWidth  = "0.5*t";
            p.RightWingWidth = "0.25*(1+sin(5*pi*t))";
            app.OpenedProject.Layers[3].GeometricObjects.Add(p);

            SourceData src = new SourceData();

            src.Name       = "TestSrc";
            src.Wavelength = 1.55;
            src.Center     = new Vector3(1, 0, 0);
            src.Size       = new Vector3(0, 0, 0);
            src.Type       = SourceData.SourceType.Continuous;
            manifest.Sources.Add(src);
        }