コード例 #1
0
        /// <summary>
        /// Creates and solves DC admittance matrix for saturated op-amps
        /// </summary>
        /// <param name="factory"></param>
        /// <returns></returns>
        private PhasorState GetOpAmpSaturationBias(AdmittanceMatrixFactory factory)
        {
            // Create an instantenous state based on node indices and active components indices in factory,
            // use the factory's op amp saturation source as source description
            var result = new PhasorState(factory.Nodes, factory.ActiveComponentsCount, factory.OpAmpSaturationSource);

            // Construct matrix for saturated op-amps and solve it
            factory.ConstructDCForSaturatedOpAmpsOnly().Solve(out var nodePotentials, out var activeComponentsCurrents);

            // Add the results from simulation to state
            result.AddValues(nodePotentials.ToArray(), activeComponentsCurrents.ToArray());

            return(result);
        }
コード例 #2
0
        /// <summary>
        /// Returns phasors constructed for source given by <paramref name="sourceDescription"/>
        /// </summary>
        /// <param name="factory"></param>
        /// <param name="sourceDescription"></param>
        private PhasorState GetPhasor(AdmittanceMatrixFactory factory, ISourceDescription sourceDescription)
        {
            var state = new PhasorState(factory.NodesCount, factory.ActiveComponentsCount, sourceDescription);

            // Create an admittance matrix corresponding to the given source
            factory.Construct(sourceDescription).
            // And solve it
            Solve(out var nodePotentials, out var activeComponentsCurrents);

            // Add the results to state
            state.AddValues(nodePotentials, activeComponentsCurrents);

            return(state);
        }