/// <summary> /// Unsetup the simulation /// </summary> protected override void Unsetup() { // Remove nodeset OnLoad -= LoadNodeSets; // Unsetup all behaviors for (int i = 0; i < InitialConditionBehaviors.Count; i++) { InitialConditionBehaviors[i].Unsetup(); } for (int i = 0; i < LoadBehaviors.Count; i++) { LoadBehaviors[i].Unsetup(); } for (int i = 0; i < TemperatureBehaviors.Count; i++) { TemperatureBehaviors[i].Unsetup(); } // Clear the state RealState.Destroy(); RealState = null; _realStateLoadArgs = null; // Remove behavior and configuration references LoadBehaviors = null; InitialConditionBehaviors = null; TemperatureBehaviors = null; BaseConfiguration = null; // Clear nodes Nodes.Clear(); }
/// <summary> /// Setup the simulation /// </summary> /// <param name="circuit">Circuit</param> protected override void Setup(Circuit circuit) { if (circuit == null) { throw new ArgumentNullException(nameof(circuit)); } base.Setup(circuit); // Setup behaviors, configurations and states BaseConfiguration = ParameterSets.Get <BaseConfiguration>(); TemperatureBehaviors = SetupBehaviors <BaseTemperatureBehavior>(circuit.Objects); LoadBehaviors = SetupBehaviors <BaseLoadBehavior>(circuit.Objects); InitialConditionBehaviors = SetupBehaviors <BaseInitialConditionBehavior>(circuit.Objects); // Setup the load behaviors RealState = States.Get <RealState>(); _realStateLoadArgs = new LoadStateEventArgs(RealState); for (int i = 0; i < LoadBehaviors.Count; i++) { LoadBehaviors[i].GetEquationPointers(Nodes, RealState.Solver); } RealState.Initialize(Nodes); // Allow nodesets to help convergence OnLoad += LoadNodeSets; }
/// <summary> /// Destroys the simulation. /// </summary> protected override void Unsetup() { base.Unsetup(); // Remove nodeset AfterLoad -= LoadNodeSets; foreach (var aid in _nodesets) { aid.Unsetup(); } _nodesets.Clear(); // Unsetup all behaviors for (var i = 0; i < _initialConditionBehaviors.Count; i++) { _initialConditionBehaviors[i].Unsetup(this); } for (var i = 0; i < _loadBehaviors.Count; i++) { _loadBehaviors[i].Unsetup(this); } for (var i = 0; i < _temperatureBehaviors.Count; i++) { _temperatureBehaviors[i].Unsetup(this); } // Clear the state RealState.Unsetup(); RealState = null; _realStateLoadArgs = null; // Remove behavior and configuration references _loadBehaviors = null; _initialConditionBehaviors = null; _temperatureBehaviors = null; }