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(); }
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); }); } }
public DCAnalysis() : base() { Solver = new DCSolver(); }