/// <summary> /// Execute behaviour /// </summary> void ITimeBehavior.Load() { // Initialize _flux.ThrowIfNotBound(this).Current = BaseParameters.Inductance * State.Solution[BranchEq]; // Allow alterations of the flux if (UpdateFlux != null) { var args = new UpdateFluxEventArgs(BaseParameters.Inductance, State.Solution[BranchEq], _flux, State); UpdateFlux.Invoke(this, args); } // Finally load the Y-matrix _flux.Integrate(); BranchPtr.Value += _flux.RhsCurrent(); BranchBranchPtr.Value -= _flux.Jacobian(BaseParameters.Inductance); }
/// <summary> /// Execute behaviour /// </summary> /// <param name="simulation">Time-based simulation</param> public override void Transient(TimeSimulation simulation) { if (simulation == null) { throw new ArgumentNullException(nameof(simulation)); } var state = simulation.RealState; // Initialize _flux.Current = _bp.Inductance * state.Solution[_branchEq]; // Allow alterations of the flux if (UpdateFlux != null) { UpdateFluxEventArgs args = new UpdateFluxEventArgs(_bp.Inductance, state.Solution[_branchEq], _flux, state); UpdateFlux.Invoke(this, args); } // Finally load the Y-matrix _flux.Integrate(); BranchPtr.Value += _flux.RhsCurrent(); BranchBranchPtr.Value -= _flux.Jacobian(_bp.Inductance); }