Esempio n. 1
0
        /// <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();
        }
Esempio n. 2
0
        /// <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;
        }
Esempio n. 3
0
        /// <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;
        }