MCPcopy Index your code
hub / github.com/SLiCAP/SLiCAP_python / _doPyDCvar

Function _doPyDCvar

SLiCAP/SLiCAPexecute.py:1672–1737  ·  view source on GitHub ↗
(instr)

Source from the content-addressed store, hash-verified

1670 return instr
1671
1672def _doPyDCvar(instr):
1673 for name in instr.circuit.indepVars:
1674 if 'dcvar' in list(instr.circuit.elements[name].params.keys()):
1675 value = instr.circuit.elements[name].params['dcvar']
1676 if instr.substitute == True:
1677 value = fullSubs(value, instr.parDefs)
1678 if instr.numeric == True:
1679 value = float2rational(sp.N(value))
1680 instr.svarTerms[name] = value
1681 instr.gainType = 'gain'
1682 instr = _makeAllMatrices(instr, inductors=True)
1683 instr.M = instr.M.xreplace({ini.laplace: 0})
1684 den = _doPyDenom(instr).denom[0]
1685 den_sq = den**2
1686 if instr.source != [None, None] and instr.source != None:
1687 instr = _doPyNumer(instr)
1688 num = instr.numer[-1].xreplace({ini.laplace: 0})
1689 if num != None:
1690 sl_num_sq = num**2
1691 instr.gainType = 'vi'
1692 instr = _makeAllMatrices(instr, reduce=False)
1693 M_var = instr.M.xreplace({ini.laplace: 0})
1694 Iv_var = instr.Iv.xreplace({ini.laplace: 0})
1695 Dv_var = instr.Dv
1696 ovar = 0
1697 ivar = 0
1698 for src in instr.svarTerms.keys():
1699 if src not in instr.ovarTerms.keys():
1700 instr.ovarTerms[src] = []
1701 instr.ivarTerms[src] = []
1702 Iv = Iv_var
1703 for el in instr.svarTerms.keys():
1704 name = sp.Symbol(el)
1705 if el == src:
1706 Iv = Iv.xreplace({name: 1})
1707 else:
1708 Iv = Iv.xreplace({name: 0})
1709 # Modify source and source vector (reduce to single input)
1710 instr.Iv = Iv
1711 # Remove unused independent voltage sources
1712 #instr.M, instr.Iv, instr.Dv = _reduceCircuit(instr.M, instr.Iv, instr.Dv, [src], instr.detector, instr.references, inductors=True)
1713 instr = _doPyNumer(instr)
1714 num = instr.numer[-1]
1715 if num != None:
1716 num_sq = num**2
1717 gain_sq = num_sq/den_sq
1718 ovarTerm = instr.svarTerms[src]*gain_sq
1719 if ini.factor:
1720 ovarTerm = sp.factor(ovarTerm)
1721 instr.ovarTerms[src].append(ovarTerm)
1722 ovar += instr.ovarTerms[src][-1]
1723 if instr.source != [None, None] and instr.source != None:
1724 ivarTerm = instr.svarTerms[src]*num_sq/sl_num_sq
1725 if ini.factor:
1726 ivarTerm = sp.factor(ivarTerm)
1727 instr.ivarTerms[src].append(ivarTerm)
1728 ivar += instr.ivarTerms[src][-1]
1729 # Restore full matrices

Callers 1

_doDCvarFunction · 0.85

Calls 5

fullSubsFunction · 0.90
float2rationalFunction · 0.90
_makeAllMatricesFunction · 0.85
_doPyDenomFunction · 0.85
_doPyNumerFunction · 0.85

Tested by

no test coverage detected