Ejemplo n.º 1
0
        private void SaveExportsToFile(SpiceSharpModel model)
        {
            Dictionary <Export, List <string> > results = new Dictionary <Export, List <string> >();

            foreach (var export in model.Exports)
            {
                results[export] = new List <string>();
                export.Simulation.ExportSimulationData += (sender, e) => {
                    try
                    {
                        if (export.Simulation is DC)
                        {
                            //TODO: Add

                            //results[export].Add( $"{e.};{export.Extract()}");
                        }

                        if (export.Simulation is OP)
                        {
                            results[export].Add($"{export.Extract()}");
                        }

                        if (export.Simulation is Transient)
                        {
                            results[export].Add($"{e.Time};{export.Extract()}");
                        }

                        if (export.Simulation is AC)
                        {
                            results[export].Add($"{e.Frequency};{export.Extract()}");
                        }
                    }
                    catch
                    {
                    }
                };
            }

            foreach (var export in results.Keys)
            {
                export.Simulation.AfterExecute += (sender, args) =>
                {
                    var exportTime = Environment.TickCount;
                    var outputPath = Path.Combine(Directory.GetCurrentDirectory(),
                                                  $"{Path.GetFileName(NetlistPath)}.{export.Simulation.Name}_{export.Name}_{exportTime}.RES");

                    if (results[export].Any())
                    {
                        File.WriteAllLines(outputPath, results[export]);
                    }
                };
            }
        }
Ejemplo n.º 2
0
        private void RunSimulation(SpiceSharpModel model, Simulation simulation, int index)
        {
            var simulationStats = new SimulationStatistics()
            {
                SimulationNo   = index,
                SimulationName = simulation.Name
            };

            simulation.Run(model.Circuit);

            simulationStats.BehaviorCreationTime = simulation.Statistics.BehaviorCreationTime.ElapsedMilliseconds;
            simulationStats.ExecutionTime        = simulation.Statistics.ExecutionTime.ElapsedMilliseconds;
            simulationStats.FinishTime           = simulation.Statistics.FinishTime.ElapsedMilliseconds;
            simulationStats.SetupTime            = simulation.Statistics.SetupTime.ElapsedMilliseconds;
            simulationStats.ValidationTime       = simulation.Statistics.ValidationTime.ElapsedMilliseconds;

            Dispatcher.Invoke(() =>
            {
                Stats.Add(simulationStats);
            });
        }