³ò
FçGc           @   sZ   d  d k  Z  e e  ƒ d  d k  Td  d k Z e e ƒ d  d k Td e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   *t   ConstraintSetKCLc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s#   t  i |  ƒ h  |  _ d |  _ d  S(   Ni    (   t   ConstraintSett   __init__t   kclst   newVarCounter(   t   self(    (    s	   genKcl.pyR      s    	c         C   sq  t  | ƒ d j p t  | ƒ d j p
 t d ‚ |  i | | ƒ | d } | d } t  | ƒ d j o | d } n3 d t |  i ƒ d | d | } |  i d 7_ | |  i j o# h  g  d	 <g  d
 <|  i | <n | |  i j o# h  g  d	 <g  d
 <|  i | <n |  i | d	 i d ƒ |  i | d
 i | ƒ |  i | d	 i d ƒ |  i | d
 i | ƒ d  S(   Ni   i   s%   KCL Class for 2 terminal elments onlyi    i   t   it   :s   ->t   signst   varsiÿÿÿÿ(   t   lent   AssertionErrort   addConstraintt   strR   R   t   append(   R   t   ft	   variablest   node1t   node2t   crnt(    (    s	   genKcl.pyt   addConstraint2T   s     0

###c         C   s"   |  i  t | d ƒ | d ƒ d  S(   NR	   R
   (   R   t   kcl(   R   t   signsAndVars(    (    s	   genKcl.pyt   genKcl6   s    c         C   sC   x< |  i  i ƒ  D]+ } | | j o |  i |  i  | ƒ q q Wd  S(   N(   R   t   keysR   (   R   t   refNodet   node(    (    s	   genKcl.pyt   genKcls9   s     c   	      C   s½   t  i |  ƒ } t  i |  ƒ } | i | ƒ t | i ƒ  ƒ } | i | | ƒ } d | GH| i t ƒ  | | d ƒ | i | ƒ t | i ƒ  ƒ } | i d | ƒ } d | GHd | | GHd  S(   Ns   vth = %6.3ft   iscs   isc = %6.3fs   rth = %6.3f(   t   copyt   deepcopyR   t   resolveConstraintst   getConstraintEvaluationFunctiont	   translateR   t   wire(	   R   t   npost   nnegt   cktCopy1t   cktCopy2t   solutiont   voct   newSolR   (    (    s	   genKcl.pyt   theveninEquivalent>   s    		c         C   s   |  i  GHd S(   Nt    (   R   (   R   (    (    s	   genKcl.pyt   __str__T   s    (   t   __name__t
   __module__R   R   R   R   R+   R-   (    (    (    s	   genKcl.pyR      s   		!			(   t   circuitConstraintst   reloadR    R   R   (    (    (    s	   genKcl.pys   <module>   s   



