コード例 #1
0
ファイル: Simulation.cs プロジェクト: slicol/SpiceSharp
        /// <summary>
        /// Run the simulation using a circuit
        /// </summary>
        /// <param name="circuit">Circuit</param>
        /// <param name="controller">Simulation flow controller</param>
        public virtual void Run(Circuit circuit, SimulationFlowController controller)
        {
            if (circuit == null)
            {
                throw new ArgumentNullException(nameof(circuit));
            }

            // Setup the simulation
            Setup(circuit);
            InitializeSimulationExport?.Invoke(this, EventArgs.Empty);

            // Check that at least something is simulated
            if (Nodes.Count < 1)
            {
                throw new CircuitException("{0}: No circuit nodes for simulation".FormatString(Name));
            }

            // Execute the simulation
            if (controller != null)
            {
                controller.Initialize(this);
                do
                {
                    Execute();
                } while (controller.ContinueExecution(this));

                controller.Finalize(this);
            }
            else
            {
                Execute();
            }

            // Finalize the simulation
            FinalizeSimulationExport?.Invoke(this, EventArgs.Empty);
            Unsetup();
        }
コード例 #2
0
 /// <summary>
 /// Finalize the simulation
 /// </summary>
 /// <param name="ckt"></param>
 public virtual void Finalize(Circuit ckt)
 {
     FinalizeSimulationExport?.Invoke(this, ckt);
 }