Example #1
0
        static void Main(string[] args)
        {
            int i = 2;

            switch (i)
            {
            case 0:
                cir.ReadCircuit("circuits/RLcharge.net");
                cir2 = (Circuit)cir.Clone();
                DCSolver.Optimize(cir2);
                DCAnalysis ac0    = (DCAnalysis)cir2.Setup[0];
                DCSolver   solver = (DCSolver)ac0.Solver;
                //solver.Solve(cir2, );
                cir2.Solve();
                solver.ExportToCSV("e:/Test.csv");

                break;

            case 1:
                cir.ReadCircuit("circuits/testidc.net");
                cir2 = (Circuit)cir.Clone();
                DCSolver.Optimize(cir2);
                DCAnalysis ac3     = (DCAnalysis)cir2.Setup[0];
                DCSolver   solver3 = (DCSolver)ac3.Solver;
                //solver.Solve(cir2, );
                cir2.Solve();
                solver3.ExportToCSV("e:/Test.csv");

                break;


            case 2:
                cir.ReadCircuit("circuits/derivador.net");
                //cir.ReadCircuit("RCL.net");
                cir2 = (Circuit)cir.Clone();
                cir2.Setup.RemoveAt(0);
                ACAnalysis ac = new ACAnalysis();
                cir2.Setup.Add(ac);
                ACSweepSolver.Optimize(cir2);
                cir2.Solve();

                ACSweepSolver sol = (ACSweepSolver)ac.Solver;
                sol.ExportToCSV("ACSweep.csv");
                break;

            case 3:
                //cir.ReadCircuit("derivador.net");
                cir.ReadCircuit("circuits/RLC.net");
                cir2 = (Circuit)cir.Clone();
                cir2.Setup.RemoveAt(0);
                ComplexPlainAnalysis ac1 = new ComplexPlainAnalysis();
                cir2.Setup.Add(ac1);
                ACSweepSolver.Optimize(cir2);
                cir2.Solve();
                sol1 = (ComplexPlainSolver)ac1.Solver;
                sol1.SelectedNode = sol1.CurrentCircuit.Nodes["out"];
                // sol1.
                sol1.ExportToCSV("e:/plain.csv");
                Bitmap bmp = FileUtils.DrawImage(func, ac1.Points, ac1.Points);
                bmp.Save("e:/plain.bmp");
                break;


            case 4:
                cir.ReadCircuit("circuits/RCL.net");
                //cir.ReadCircuit("RCcharge.net");
                cir2 = (Circuit)cir.Clone();
                cir2.Setup.RemoveAt(0);
                TransientAnalysis ac5 = new TransientAnalysis();
                ac5.Step = "10n";
                cir2.Setup.Add(ac5);
                TransientSolver sol5 = (TransientSolver)ac5.Solver;
                TransientSolver.Optimize(cir2);
                cir2.Solve();
                sol5.ExportToCSV("e:/time.csv");
                break;

            case 5:
                cir.ReadCircuit("circuits/vsingain.net");
                //cir.ReadCircuit("RCcharge.net");
                cir2 = (Circuit)cir.Clone();
                cir2.Setup.RemoveAt(0);
                TransientAnalysis ac6 = new TransientAnalysis();
                ac6.Step = "100n";
                cir2.Setup.Add(ac6);
                TransientSolver sol6 = (TransientSolver)ac6.Solver;
                TransientSolver.Optimize(cir2);
                cir2.Solve();
                sol6.ExportToCSV("e:/time.csv");
                break;

            default:
                break;
            }



            Console.ReadKey();
        }
Example #2
0
        static void Main()
        {
            const float BlockSize = 0.02f;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            var form = new Form();

            form.ClientSize = new Size(800, 600);

            var func          = MakeFunction(1 / BlockSize);
            var meshGenerator = new DCSolver(func, (int)(4 / BlockSize));
            var rawMesh       = meshGenerator.Solve();

            rawMesh = new MeshSimplifier(rawMesh, ClusterSizeHelper.GetSampleAverage(rawMesh, 3)).Run();
            var m = NormalMesh.MakeNormal(rawMesh);

            using (var device = LightDevice.Create(form))
            {
                var target = new RenderTargetList(device.GetDefaultTarget(Color.AliceBlue.WithAlpha(1)), device.CreateDepthStencilTarget());
                target.Apply();

                Pipeline pipeline = device.CompilePipeline(InputTopology.Triangle,
                                                           ShaderSource.FromResource("Viewer.Shader.fx", ShaderType.Vertex | ShaderType.Pixel));
                pipeline.Apply();

                var vertexConstant = pipeline.CreateConstantBuffer <Matrix4x4>();
                pipeline.SetConstant(ShaderType.Vertex, 0, vertexConstant);

                var input = pipeline.CreateVertexDataProcessor <Vertex>();
                var vb    = input.CreateImmutableBuffer(m.Vertices.Select(vv => new Vertex {
                    Position = new Vector4(m.Positions[vv.Position] * BlockSize, 1),
                    Normal   = new Vector4(vv.Normal, 0),
                }).ToArray());

                var ib = pipeline.CreateImmutableIndexBuffer(m.Triangles.SelectMany(tt => new[] { tt.Va, tt.Vb, tt.Vc }).ToArray());

                var camera = new Camera(new Vector3(10, 0, 0));
                camera.SetForm(form);
                var proj = device.CreatePerspectiveFieldOfView((float)Math.PI / 4).Transpose();

                vertexConstant.Value = proj * camera.GetViewMatrix();
                var pt = new Vector4(0, 0, 0, 0);
                var r  = Vector4.Transform(pt, vertexConstant.Value);

                form.Show();
                device.RunMultithreadLoop(delegate()
                {
                    target.ClearAll();

                    camera.Step();
                    var view             = camera.GetViewMatrix();
                    vertexConstant.Value = proj * view;
                    vertexConstant.Update();

                    ib.DrawAll(vb);
                    device.Present(true);
                });
            }
        }
Example #3
0
 public DCAnalysis()
     : base()
 {
     Solver = new DCSolver();
 }