Ë
    7^(hK™  ã                   óÊ   — d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ  edddgi¬«      Z G d„ d«      Zy)zJ
This module can be used to solve probelsm related to 2D parabolic arches
é    )Úsympify)ÚSymbolÚsymbols)ÚdiffÚsqrtÚcosÚsinÚatanÚradÚMin)ÚEq)Úsolve)Ú	Piecewise)Úplot)Úlimit)Údoctest_depends_on)Úimport_moduleÚnumpyÚfromlistÚarange)Úimport_kwargsc                   óö   — e Zd ZdZd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zdd
„Zd„ Zdd„Zdd„Zdd„Zd„ Zdd„Zdd„Zdd„Zd„ Z ed¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zy	)ÚArchaö  
    This class is used to solve problems related to a three hinged arch(determinate) structure.

    An arch is a curved vertical structure spanning an open space underneath it.

    Arches can be used to reduce the bending moments in long-span structures.


    Arches are used in structural engineering(over windows, door and even bridges)

    because they can support a very large mass placed on top of them.

    Example
    ========
    >>> from sympy.physics.continuum_mechanics.arch import Arch
    >>> a = Arch((0,0),(10,0),crown_x=5,crown_y=5)
    >>> a.get_shape_eqn
    5 - (x - 5)**2/5

    >>> from sympy.physics.continuum_mechanics.arch import Arch
    >>> a = Arch((0,0),(10,1),crown_x=6)
    >>> a.get_shape_eqn
    9/5 - (x - 6)**2/20
    c           	      óJ  — d | _         t        |d   «      t        |d   «      f| _        t        |d   «      t        |d   «      f| _        d | _        d | _        d|v rt        |d   «      | _        d|v rt        |d   «      | _        | j                  | _         i | _        i | _        | j                  | j                  dœ| _	        i | _
        dddœ| _        d | _        d | _        t        d«      dt        d	«      dt        d
«      dt        d«      di| _        t!        «       | _        t!        «       | _        i | _        i | _        i | _        i | _        t/        d«      | _        t/        d«      | _        t/        d«      | _        t/        d«      | _        d | _        d | _        d | _        y )Nr   é   Úcrown_xÚcrown_y)ÚconcentratedÚdistributedÚhinge)ÚleftÚrightÚR_A_xÚR_A_yÚR_B_xÚR_B_y©r   T)Ú
_shape_eqnr   Ú_left_supportÚ_right_supportÚ_crown_xÚ_crown_yÚget_shape_eqnÚ_conc_loadsÚ_distributed_loadsÚ_loadsÚ_loads_appliedÚ	_supportsÚ_memberÚ_member_forcer   Ú_reaction_forceÚsetÚ_points_disc_xÚ_points_disc_yÚ	_moment_xÚ	_moment_yÚ_load_xÚ_load_yr   Ú_moment_x_funcÚ_moment_y_funcÚ_load_x_funcÚ_load_y_funcÚ_bending_momentÚ_shear_forceÚ_axial_force)ÚselfÚleft_supportÚright_supportÚkwargss       úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/physics/continuum_mechanics/arch.pyÚ__init__zArch.__init__&   sŒ  € ØˆŒÜ& |°A¡Ó7¼ÀÈQÁÓ8PÐQˆÔÜ '¨°aÑ(8Ó 9¼'À-ÐPQÑBRÓ:SÐTˆÔØˆŒØˆŒØ˜ÑÜ# F¨9Ñ$5Ó6ˆDŒMØ˜ÑÜ# F¨9Ñ$5Ó6ˆDŒMØ×,Ñ,ˆŒØˆÔØ"$ˆÔØ'+×'7Ñ'7Àt×G^ÑG^Ñ_ˆŒØ ˆÔØ!(°'Ñ:ˆŒØˆŒØ!ˆÔÜ & w£°´6¸'³?À1ÄfÈWÃoÐVWÔY_Ð`gÓYhÐijÐkˆÔÜ!›eˆÔÜ!›eˆÔØˆŒØˆŒØˆŒØˆŒÜ'¨Ó1ˆÔÜ'¨Ó1ˆÔÜ% hÓ/ˆÔÜ% hÓ/ˆÔØ#ˆÔØ ˆÔØ ˆÕó    c                 óÄ  — | j                   r| j                   S t        d«      \  }}}t        dd¬«      }| j                  r¾| j                  r²| j                  }| j                  }|||z
  dz  z  |z   |z
  }|j                  || j                  d   || j                  d   i«      }t        ||«      }	|	d   ||z
  dz  z  |z   }|j                  || j                  d   i«      | j                  d   k7  rt        d«      ‚|S | j                  rÌ| j                  }|||z
  dz  z  |z   |z
  }|j                  || j                  d   || j                  d   i«      }|j                  || j                  d   || j                  d   i«      }
t        ||
f||f«      }	t        |	«      dk  s|	|   dk(  rt        d	«      ‚|	|   ||z
  dz  z  |	|   z   }|	|   | _        |S t        d
«      ‚)z3returns the equation of the shape of arch developedzx y cÚaF)Úpositiveé   r   r   zQprovided coordinates of crown and supports are not consistent with parabolic archzYparabolic arch cannot be constructed with the provided coordinates, try providing crown_yz(please provide crown_x to construct arch)r(   r   r   r+   r,   Úsubsr)   r   r*   Ú
ValueErrorÚlenÚKeyError)rD   ÚxÚyÚcrL   Úx0Úy0Úparabola_eqnÚeq1ÚsolutionÚeq2s              rH   r-   zArch.get_shape_eqnH   s  € ð �?Š?Ø—?‘?Ð"ä˜Ó ‰ˆˆ!ˆAÜ�3 Ô&ˆØ�=Š=˜TŸ]š]Ø—-‘-ˆBØ—‘ˆBØ˜a ™d Q™Y™;¨Ñ+¨aÑ/ˆLØ×#Ñ# Q t×'9Ñ'9¸!Ñ'<¸aÀ×@RÑ@RÐSTÑ@UÐ$VÓWˆCÜ˜c AÓ'ˆHØ# A™;¨¨"©¨q¡yÑ0°2Ñ5ˆLØ× Ñ  ! D×$7Ñ$7¸Ñ$:Ð!;Ó<À×@SÑ@SÐTUÑ@VÒVÜ Ð!tÓuÐuð  Ðð �]Š]Ø—-‘-ˆBØ˜a ™d Q™Y™;¨™?¨QÑ.ˆLØ×#Ñ# Q t×'9Ñ'9¸!Ñ'<¸aÀ×@RÑ@RÐSTÑ@UÐ$VÓWˆCØ×#Ñ# Q t×':Ñ':¸1Ñ'=¸qÀ×ATÑATÐUVÑAWÐ$XÓYˆCÜ˜c #˜Y¨¨! uÓ-ˆHÜ�8‹}˜aÒ 8¨A¡;°!Ò#3Ü Ð!|Ó}Ð}Ø# A™;¨¨"©¨q¡yÑ0°(¸1±+Ñ=ˆLØ$ Q™KˆDŒMð
 Ðô ÐEÓFÐFrJ   c                 ó   — | j                   S )z\
        return the position of the applied load and angle (for concentrated loads)
        )r0   ©rD   s    rH   Ú	get_loadszArch.get_loadsj   s   € ð
 �{‰{ÐrJ   c                 ó   — | j                   S )z-
        Returns the type of support
        )r2   r]   s    rH   ÚsupportszArch.supportsq   s   € ð
 �~‰~ÐrJ   c                 ó   — | j                   S )z;
        Returns the position of the left support.
        )r)   r]   s    rH   rE   zArch.left_supportx   s   € ð
 ×!Ñ!Ð!rJ   c                 ó   — | j                   S )z<
        Returns the position of the right support.
        )r*   r]   s    rH   rF   zArch.right_support   s   € ð
 ×"Ñ"Ð"rJ   c                 ó   — | j                   S )z6
        return the reaction forces generated
        )r5   r]   s    rH   Úreaction_forcezArch.reaction_force†   s   € ð
 ×#Ñ#Ð#rJ   Nc           
      ó\  — t        d«      }t        d«      }t        d«      }	t        |«      }t        |«      }t        |«      }|| j                  v rt        d«      ‚|dv rt        d«      ‚|dk(  �r|�||k  rt	        d	«      ‚|||d
œ| j
                  |<   | j                  j                  |«       || j                  v re| j                  |xx   |t        ||«      |z
  z  |	|t        ||«      z   dz  z
  z  z  cc<   | j                  |xx   |t        ||«      |z
  z  z  cc<   nU| t        ||«      |z
  z  |	|t        ||«      z   dz  z
  z  | j                  |<   |t        ||«      |z
  z  | j                  |<   d| j                  |<   |dk(  �r|€t        d«      ‚| j                  j                  d|i«      }
||
|t        t        |«      «      z  |t!        t        |«      «      z  ||dœ| j"                  |<   | j$                  j                  |«       | j                  j                  |«       || j&                  v re| j&                  |xx   | j"                  |   d   || j"                  |   d   z
  z  z  cc<   | j(                  |xx   | j"                  |   d   z  cc<   nT| j"                  |   d   || j"                  |   d   z
  z  | j&                  |<   | j"                  |   d   | j(                  |<   || j                  v rU| j                  |xx   | j"                  |   d   |	|z
  z  z  cc<   | j                  |xx   | j"                  |   d   z  cc<   nE| j"                  |   d    |	|z
  z  | j                  |<   | j"                  |   d   | j                  |<   d| j                  |<   yy)aN  
        This method adds load to the Arch.

        Parameters
        ==========

            order : Integer
                Order of the applied load.

                    - For point/concentrated loads, order = -1
                    - For distributed load, order = 0

            label : String or Symbol
                The label of the load
                - should not use 'A' or 'B' as it is used for supports.

            start : Float

                    - For concentrated/point loads, start is the x coordinate
                    - For distributed loads, start is the starting position of distributed load

            mag : Sympifyable
                Magnitude of the applied load. Must be positive

            end : Float
                Required for distributed loads

                    - For concentrated/point load , end is None(may not be given)
                    - For distributed loads, end is the end position of distributed load

            angle: Sympifyable
                The angle in degrees, the load vector makes with the horizontal
                in the counter-clockwise direction.

        Examples
        ========
        For applying distributed load

        >>> from sympy.physics.continuum_mechanics.arch import Arch
        >>> a = Arch((0,0),(10,0),crown_x=5,crown_y=5)
        >>> a.apply_load(0,'C',start=3,end=5,mag=-10)

        For applying point/concentrated_loads

        >>> from sympy.physics.continuum_mechanics.arch import Arch
        >>> a = Arch((0,0),(10,0),crown_x=5,crown_y=5)
        >>> a.apply_load(-1,'C',start=2,mag=15,angle=45)

        rT   rS   rV   z(load with the given label already exists)ÚAÚBz1cannot use the given label, reserved for supportsr   Nzprovide end greater than start)ÚstartÚendÚf_yrN   r   éÿÿÿÿz!please provide direction of force)rS   rT   Úf_xrj   ÚmagÚanglerl   rj   r   )r   r   r1   rP   rR   r/   r8   Úaddr:   r   r<   Ú	TypeErrorr(   rO   r   r   r	   r.   r7   r9   r;   )rD   ÚorderÚlabelrh   rm   ri   rn   rT   rS   rV   Úheights              rH   Ú
apply_loadzArch.apply_load�   s¯  € ôd �3‹KˆÜ�3‹KˆÜ�D‹\ˆä�u‹~ˆÜ�c‹lˆÜ˜“ˆà�D×'Ñ'Ñ'ÜÐGÓHÐHà�IÑÜÐPÓQÐQà�A‹:Øˆ{˜c %šiÜÐ?Ó@Ð@à6;À3ÈsÑ-SˆD×#Ñ# EÑ*Ø×Ñ×#Ñ# EÔ*à˜Ÿ™Ñ&Ø—‘˜uÓ%¨¬c°!°C«j¸Ñ.>Ñ)?ÀÀUÌCÐPQÐRUËJÑEWÐYZÑDZÑAZÑ)[Ñ[Ó%Ø—‘˜UÓ# s¬C°°A«J°uÑ,<Ñ'=Ñ=Ô#à),¨¬c°!°C«j¸Ñ.>Ñ(?ÀÀUÌCÐPQÐRUËJÑEWÐYZÑDZÑAZÑ([�—‘˜uÑ%Ø&)¬3¨s°1«:°eÑ+;Ñ&<�—‘˜UÑ#à)6ˆD×Ñ Ñ&à�B‹;àˆ}ÜÐ CÓDÐDØ—_‘_×)Ñ)¨3¨u¨+Ó6ˆFà+0°fÀCÌÌCÐPUËJËÑDWÐ`cÔdgÔhkÐlqÓhrÓdsÑ`sÐ{~ð  INñ  'OˆD×Ñ˜UÑ#Ø×Ñ×#Ñ# EÔ*Ø×Ñ×#Ñ# EÔ*à˜Ÿ™Ñ&Ø—‘˜uÓ%¨×)9Ñ)9¸%Ñ)@ÀÑ)GÈÈ4×K[ÑK[Ð\aÑKbÐcfÑKgÑIgÑ)hÑhÓ%Ø—‘˜UÓ# t×'7Ñ'7¸Ñ'>¸uÑ'EÑEÔ#à(,×(8Ñ(8¸Ñ(?ÀÑ(FÈÈ$×JZÑJZÐ[`ÑJaÐbeÑJfÑHfÑ(g�—‘˜uÑ%Ø&*×&6Ñ&6°uÑ&=¸eÑ&D�—‘˜UÑ#à˜Ÿ™Ñ&Ø—‘˜uÓ%¨×)9Ñ)9¸%Ñ)@ÀÑ)GÈÈEÉÑ)RÑRÓ%Ø—‘˜UÓ# t×'7Ñ'7¸Ñ'>¸uÑ'EÑEÔ#à)-×)9Ñ)9¸%Ñ)@ÀÑ)GÐ(GÈÈEÉÑ(R�—‘˜uÑ%Ø&*×&6Ñ&6°uÑ&=¸eÑ&D�—‘˜UÑ#à)7ˆD×Ñ Ò&ð1 rJ   c           
      ó  — t        d«      }t        d«      }t        d«      }|| j                  v rý| j                  j                  |«       | j                  |   d   }| j                  |   d   }| j                  |   d   }| j                  j                  |«       | j                  |xx   |t        ||«      |z
  z  z  cc<   | j                  |xx   |t        ||«      |z
  z  ||t        ||«      z   dz  z
  z  z  cc<   | j                  j                  |«      }t        d|› d	|› �«       y|| j                  v �rH| j                  j                  |«       | j                  |   d   }| j                  j                  |«       | j                  j                  |«       | j                  |xx   | j                  |   d   ||z
  z  z  cc<   | j                  |xx   | j                  |   d
   || j                  |   d   z
  z  z  cc<   | j                  |xx   | j                  |   d
   z  cc<   | j                  |xx   | j                  |   d   z  cc<   | j                  j                  |«      }t        d|› d	|› �«       yt        d«      ‚)aå  
        This methods removes the load applied to the arch

        Parameters
        ==========

        label : String or Symbol
            The label of the applied load

        Examples
        ========

        >>> from sympy.physics.continuum_mechanics.arch import Arch
        >>> a = Arch((0,0),(10,0),crown_x=5,crown_y=5)
        >>> a.apply_load(0,'C',start=3,end=5,mag=-10)
        >>> a.remove_load('C')
        removed load C: {'start': 3, 'end': 5, 'f_y': -10}
        rT   rS   rV   rh   ri   rj   rN   zremoved load ú: rl   zlabel not foundN)r   r/   r1   Úpopr8   Úremover<   r   r:   Úprintr.   r7   r9   r;   rP   )	rD   rr   rT   rS   rV   rh   ri   rm   Úvals	            rH   Úremove_loadzArch.remove_loadø   so  € ô& �3‹KˆÜ�3‹KˆÜ�D‹\ˆà�D×+Ñ+Ñ+à×Ñ×#Ñ# EÔ*Ø×+Ñ+¨EÑ2°7Ñ;ˆEØ×)Ñ)¨%Ñ0°Ñ7ˆCØ×*Ñ*¨5Ñ1°%Ñ8ˆCØ×Ñ×&Ñ& uÔ-Ø�L‰L˜Ó 3¬¨A¨c«
°5Ñ(8Ñ#9Ñ9ÓØ�N‰N˜5Ó! S¬#¨a°«*°UÑ*:Ñ%;¸RÀÌÈAÈcË
ÑASÐUVÑ@VÑ=VÑ%WÑWÓ!Ø×)Ñ)×-Ñ-¨eÓ4ˆCÜ�M % ¨¨3¨%Ð0Õ1à�d×&Ñ&Ò&à×Ñ×#Ñ# EÔ*Ø×$Ñ$ UÑ+¨CÑ0ˆEØ×Ñ×&Ñ& uÔ-Ø×Ñ×&Ñ& uÔ-Ø�N‰N˜5Ó! T×%5Ñ%5°eÑ%<¸UÑ%CÀRÈÁXÑ%NÑNÓ!Ø�N‰N˜5Ó! T×%5Ñ%5°eÑ%<¸UÑ%CÀQÀt×GWÑGWÐX]ÑG^Ð_bÑGcÑEcÑ%dÑdÓ!Ø�L‰L˜Ó 4×#3Ñ#3°EÑ#:¸5Ñ#AÑAÓØ�L‰L˜Ó 4×#3Ñ#3°EÑ#:¸5Ñ#AÑAÓØ×"Ñ"×&Ñ& uÓ-ˆCÜ�M % ¨¨3¨%Ð0Õ1ô Ð.Ó/Ð/rJ   c                 óx   — |�|d   |d   f| _         |�|d   |d   f| _        d| _        | j                  | _        y)a.  
        Change position of supports.
        If not provided , defaults to the old value.
        Parameters
        ==========

            left_support: tuple (x, y)
                x: float
                    x-coordinate value of the left_support

                y: float
                    y-coordinate value of the left_support

            right_support: tuple (x, y)
                x: float
                    x-coordinate value of the right_support

                y: float
                    y-coordinate value of the right_support
        Nr   r   )r)   r*   r(   r-   )rD   rE   rF   s      rH   Úchange_support_positionzArch.change_support_position+  sP   € ð* Ð#Ø".¨q¡/°,¸q±/Ð!BˆDÔàÐ$Ø#0°Ñ#3°MÀ!Ñ4DÐ"EˆDÔàˆŒØ×,Ñ,ˆ�rJ   c                 óP   — || _         || _        d| _        | j                  | _        y)a‹  
        Change the position of the crown/hinge of the arch

        Parameters
        ==========

            crown_x: Float
                The x coordinate of the position of the hinge
                - if not provided, defaults to old value

            crown_y: Float
                The y coordinate of the position of the hinge
                - if not provided defaults to None
        N)r+   r,   r(   r-   )rD   r   r   s      rH   Úchange_crown_positionzArch.change_crown_positionI  s&   € ð  ˆŒØˆŒØˆŒØ×,Ñ,ˆ�rJ   c                 óŽ   — ddg}|r||vrt        d«      ‚|| j                  d<   |r||vrt        d«      ‚|| j                  d<   yy)aâ  
        Add the type for support at each end.
        Can use roller or hinge support at each end.

        Parameters
        ==========

            left_support, right_support : string
                Type of support at respective end

                    - For roller support , left_support/right_support = "roller"
                    - For hinged support, left_support/right_support = "hinge"
                    - defaults to hinge if value not provided

        Examples
        ========

        For applying roller support at right end

        >>> from sympy.physics.continuum_mechanics.arch import Arch
        >>> a = Arch((0,0),(10,0),crown_x=5,crown_y=5)
        >>> a.change_support_type(right_support="roller")

        Úrollerr    z%supports must only be roller or hinger!   r"   N)rP   r2   )rD   rE   rF   Úsupport_typess       rH   Úchange_support_typezArch.change_support_type]  s]   € ð2 " 'Ð*ˆÙØ =Ñ0Ü Ð!HÓIÐIà%1ˆD�N‰N˜6Ñ"áØ MÑ1Ü Ð!HÓIÐIà&3ˆD�N‰N˜7Ò#ð	 rJ   c                 óú  — || j                   kD  s)|t        | j                  d   | j                  d   «      k  r?t	        dt        | j                  d   | j                  d   «      › d| j                   › �«      ‚t        d«      }t        | j                  |«      j                  || j                  dz   «      dz  }t        || j                   z
  |z  «      }| j                  |z   }| j                  |z
  }|||f| _        y)z›
        This method adds a member/rod at a particular height y.
        A rod is used for stability of the structure in case of a roller support.
        r   z&position of support must be between y=z and y=rS   rN   N)r,   Úminr)   r*   rP   r   r   r(   rO   r+   r   r3   )rD   rT   rS   rL   Úx_diffÚx1Úx2s          rH   Ú
add_memberzArch.add_memberƒ  s  € ð
 ˆT�]‰]Š?˜a¤ D×$6Ñ$6°qÑ$9¸D×<OÑ<OÐPQÑ<RÓ SÒSÜÐEÄcÈ$×J\ÑJ\Ð]^ÑJ_Ðbf×buÑbuÐvwÑbxÓFyÐEzð  {Bð  CG÷  CPñ  CPð  BQð  Ró  Sð  SÜ�3‹KˆÜ�—‘ Ó#×(Ñ(¨¨4¯=©=¸©?Ó;¸AÑ=ˆÜ�q˜4Ÿ=™=Ñ(¨!Ñ+Ó,ˆØ�]‰]˜VÑ#ˆØ�]‰]˜VÑ#ˆØ˜2˜a�yˆ�rJ   c                 ó°   — |€| j                   S t        d«      }d|v r|d   }t        | j                   |||¬«      S | j                   j                  ||«      S )zl
        return the shear at some x-coordinates
        if no x value provided, returns the formula
        rS   Údir©r‹   )rB   r   r   rO   ©rD   ÚposrG   rS   r‹   s        rH   Úshear_force_atzArch.shear_force_at‘  ó^   € ð
 ˆ;Ø×$Ñ$Ð$ä�s“ˆAØ˜‰Ø˜U‘m�Ü˜T×.Ñ.¨q°¸Ô=Ð=Ø×$Ñ$×)Ñ)¨!¨CÓ0Ð0rJ   c                 ó°   — |€| j                   S t        d«      }d|v r|d   }t        | j                   |||¬«      S | j                   j                  ||«      S )zu
        return the bending moment at some x-coordinates
        if no x value provided, returns the formula
        rV   r‹   rŒ   )rA   r   r   rO   )rD   rŽ   rG   rV   r‹   s        rH   Úbending_moment_atzArch.bending_moment_atŸ  s^   € ð
 ˆ;Ø×'Ñ'Ð'ä˜“ˆBØ˜‰Ø˜U‘m�Ü˜T×1Ñ1°"°S¸SÔAÐAØ×'Ñ'×,Ñ,¨R°Ó4Ð4rJ   c                 ó°   — |€| j                   S t        d«      }d|v r|d   }t        | j                   |||¬«      S | j                   j                  ||«      S )z‚
        return the axial/normal force generated at some x-coordinate
        if no x value provided, returns the formula
        rS   r‹   rŒ   )rC   r   r   rO   r�   s        rH   Úaxial_force_atzArch.axial_force_at®  r�   rJ   c                 ó²  — t        d«      }t        d«      }t        d«      }t        | j                  «      }t        | j                  «      }t	        d«      | _        t	        d«      | _        t	        d«      | _        t	        d«      | _        d}d}d}d}	|D ]i  }
||
k\  }|| j                  |
   z  }|| j                  |
   z  }t	        ||f| j                  df«      | _        t	        ||f| j
                  df«      | _        Œk |D ]i  }
||
k\  }|| j                  |
   z  }|	| j                  |
   z  }	t	        |	|f| j                  df«      | _        t	        ||f| j                  df«      | _        Œk | j                  j                  || j                  d   «      j                  || j                  d   «      | j
                  j                  || j                  d   «      j                  || j                  d   «      z   }| j                  j                  || j                   «      j                  || j                   «      | j
                  j                  || j                   «      j                  || j"                  «      z   }| j                  j                  || j                  d   «      j                  || j                   «      | j                  j                  || j                   «      j                  || j                   «      z
  | j
                  j                  || j                  d   «      j                  || j"                  «      z   | j
                  j                  || j                   «      j                  || j"                  «      z
  }| j                  j                  || j                  d   «      }| j                  j                  || j                  d   «      }| j$                  d   d	k(  s| j$                  d
   d	k(  r| j&                  st)        d«       yt+        d«      \  }}}}}| j$                  d   d	k(  �r¾| j$                  d
   d	k(  �r«| j&                  d   t-        | j                  d   | j                  d   «      k\  rð|dk7  rt/        d«      ‚t1        |d«      }t1        |d«      }t1        ||z   |z   d«      }t1        || j                  d   | j                  d   z
  z  || j                  d   | j                  d   z
  z  z
  |z   d«      }t1        ||| j                  d   | j                   z
  z  z   || j&                  d   | j"                  z
  z  z   d«      }t3        |||||f|||||f«      }�n«| j&                  d   | j                  d   k\  r£t1        |d«      }t1        |d«      }t1        ||z   |z   d«      }t1        || j                  d   | j                  d   z
  z  || j&                  d   | j                  d   z
  z  z
  |z   d«      }t1        ||z   d«      }t3        |||||f|||||f«      }�né| j&                  d   | j                  d   k\  �rÉt1        |d«      }t1        |d«      }t1        ||z   |z   d«      }t1        || j                  d   | j                  d   z
  z  || j&                  d   | j                  d   z
  z  z   |z   d«      }t1        ||z
  d«      }t3        |||||f|||||f«      }�n&| j$                  d   d	k(  �rK| j&                  d   t-        | j                  d   | j                  d   «      k\  rãt1        |d«      }t1        ||z   d«      }t1        ||z   |z   d«      }t1        || j                  d   | j                  d   z
  z  || j                  d   | j                  d   z
  z  z
  |z   d«      }t1        ||| j                  d   | j                   z
  z  z   || j&                  d   | j"                  z
  z  z
  d«      }t3        |||||f|||||f«      }�nú| j&                  d   | j                  d   k\  �r	t1        |d«      }t1        ||z   |z   d«      }t1        ||z   |z   d«      }t1        || j                  d   | j                  d   z
  z  || j                  d   | j                  d   z
  z  z
  || j&                  d   | j                  d   z
  z  z
  |z   d«      }t1        ||| j                  d   | j                   z
  z  z   || j&                  d   | j"                  z
  z  z
  d«      }t3        |||||f|||||f«      }�nÑ| j&                  d   | j                  d   k\  �r±t1        |d«      }t1        ||z
  |z   d«      }t1        ||z   |z   d«      }t1        ||| j                  d   | j                   z
  z  z   d«      }t1        ||| j                  d   | j                  d   z
  z  z   || j                  d   | j                  d   z
  z  z
  || j&                  d   | j                  d   z
  z  z   d«      }t3        |||||f|||||f«      }�nÈ| j$                  d
   d	k(  �rß| j&                  d   t-        | j                  d   | j                  d   «      k\  rÀt1        |d«      }t1        ||z   d«      }t1        ||z   |z   d«      }t1        ||| j                  d   | j                   z
  z  z   || j&                  d   | j"                  z
  z  z   d«      }t1        ||| j                  d   | j                  d   z
  z  z   d«      }t3        |||||f|||||f«      }�n¿| j&                  d   | j                  d   k\  rÆt1        |d«      }t1        ||z   |z   d«      }t1        ||z   |z   d«      }t1        ||| j                  d   | j                   z
  z  z   d«      }t1        ||| j&                  d   | j                  d   z
  z  z
  || j                  d   | j                  d   z
  z  z   d«      }t3        |||||f|||||f«      }�nÚ| j&                  d   | j                  d   k\  �rºt1        |d«      }t1        ||z
  |z   d«      }t1        ||z   |z   d«      }t1        ||| j                  d   | j                   z
  z  z   || j&                  d   | j"                  z
  z  z   d«      }t1        ||| j&                  d   | j                  d   z
  z  z   || j                  d   | j                  d   z
  z  z   «      }t3        |||||f|||||f«      }nÖt1        ||z   |z   d«      }t1        ||z   |z   d«      }t1        || j                  d   | j                  d   z
  z  || j                  d   | j                  d   z
  z  z
  |z   d«      }t1        ||| j                  d   | j                   z
  z  z   || j                  d   | j"                  z
  z  z
  d«      }t3        ||||f||||f«      }| j4                  D ]  }|   | j4                  |<   Œ | j
                  j                  ||«      | j                  j                  ||«      z   |   || j                  d   z
  z  z
  ||   | j6                  j                  ||i«      | j                  d   z
  z  z    | _        t;        t=        | j6                  |«      «      }| j                  ||   z   }| j                  ||   z   }|t?        |«      z  |tA        |«      z  z   } | tA        |«      z  |t?        |«      z  z   }!| | _!        |!| _"        y)a�  
        This method solves for the reaction forces generated at the supports,

        and bending moment and generated in the arch and tension produced in the member if used.

        Examples
        ========

        >>> from sympy.physics.continuum_mechanics.arch import Arch
        >>> a = Arch((0,0),(10,0),crown_x=5,crown_y=5)
        >>> a.apply_load(0,'C',start=3,end=5,mag=-10)
        >>> a.solve()
        >>> a.reaction_force
        {R_A_x: 8, R_A_y: 12, R_B_x: -8, R_B_y: 8}

        >>> from sympy import Symbol
        >>> t = Symbol('t')
        >>> from sympy.physics.continuum_mechanics.arch import Arch
        >>> a = Arch((0,0),(16,0),crown_x=8,crown_y=5)
        >>> a.apply_load(0,'C',start=3,end=5,mag=t)
        >>> a.solve()
        >>> a.reaction_force
        {R_A_x: -4*t/5, R_A_y: -3*t/2, R_B_x: 4*t/5, R_B_y: -t/2}

        >>> a.bending_moment_at(4)
        -5*t/2
        rT   rS   rV   r'   r   Tr   r!   r�   r"   z5member must be added if any of the supports is rollerNzR_A_x R_A_y R_B_x R_B_y TrN   zDnet force in x direction not possible under the specified conditions)#r   Úsortedr7   r8   r   r=   r>   r?   r@   r;   r9   r:   r<   rO   r*   r)   r+   r,   r2   r3   ry   r   ÚmaxrP   r   r   r5   r(   rA   r
   r   r   r	   rC   rB   )"rD   rT   rS   rV   Údiscontinuity_points_xÚdiscontinuity_points_yÚaccumulated_x_momentÚaccumulated_y_momentÚaccumulated_x_loadÚaccumulated_y_loadÚpointÚcondÚmoment_AÚmoment_hinge_leftÚmoment_hinge_rightÚnet_xÚnet_yr#   r$   r%   r&   ÚTrY   r[   Úeq3Úeq4Úeq5rZ   Úsymbrn   ÚfxÚfyÚaxial_forceÚshear_forces"                                     rH   r   z
Arch.solve¼  s  € ô6 �3‹KˆÜ�3‹KˆÜ�D‹\ˆä!'¨×(;Ñ(;Ó!<ÐÜ!'¨×(;Ñ(;Ó!<Ðä'¨Ó1ˆÔÜ'¨Ó1ˆÔä% hÓ/ˆÔÜ% hÓ/ˆÔà ÐØ ÐàÐØÐà+ò 	dˆEØ˜‘JˆDØ $§,¡,¨uÑ"5Ñ5ÐØ  D§N¡N°5Ñ$9Ñ9Ð Ü )Ð+=¸dÐ*CÀT×EVÑEVÐW[ÐD\Ó ]ˆDÔÜ"+Ð-AÀ$Ð,GÈ×I\ÑI\Ð]aÐHbÓ"cˆDÕð	dð ,ò 	dˆEØ˜‘JˆDØ  D§N¡N°5Ñ$9Ñ9Ð Ø $§,¡,¨uÑ"5Ñ5ÐÜ )Ð+=¸dÐ*CÀT×EVÑEVÐW[ÐD\Ó ]ˆDÔÜ"+Ð-AÀ$Ð,GÈ×I\ÑI\Ð]aÐHbÓ"cˆDÕð	dð ×&Ñ&×+Ñ+¨A¨d×.AÑ.AÀ!Ñ.DÓE×JÑJÈ2Èd×N`ÑN`ÐabÑNcÓdØ×&Ñ&×+Ñ+¨A¨d×.AÑ.AÀ!Ñ.DÓE×JÑJÈ1ÈT×M_ÑM_Ð`aÑMbÓcñdˆð !×/Ñ/×4Ñ4°Q°t·}±}ÓE×JÑJÈ2ÈdÏmÉmÓ\Ø ×/Ñ/×4Ñ4°Q°t·}±}ÓE×JÑJÈ1ÈTÏ]É]Ó[ñ\Ðð "×0Ñ0×5Ñ5°a¸×8KÑ8KÈAÑ8NÓO×TÑTÐUWÐX\×XeÑXeÓfØ!×0Ñ0×5Ñ5°a¸¿¹ÓF×KÑKÈBÈtÏ}É}Ó]ñ^à!×0Ñ0×5Ñ5°a¸×8KÑ8KÈAÑ8NÓO×TÑTÐUVÐW[×WdÑWdÓeñfð "×0Ñ0×5Ñ5°a¸¿¹ÓF×KÑKÈAÈdÏmÉmÓ\ñ]Ðð
 ×!Ñ!×&Ñ& q¨×)<Ñ)<¸QÑ)?Ó@ˆØ×!Ñ!×&Ñ& q¨×)<Ñ)<¸QÑ)?Ó@ˆà�N‰N˜6Ñ" HÒ,°·±¸wÑ0GÈÒ0QÐ[_×[gÒ[gÜÐIÔJØä(/Ð0KÓ(LÑ%ˆˆu�e˜U Aà�>‰>˜&Ñ! XÓ-°$·.±.ÀÑ2IÈXÓ2Uà�|‰|˜A‰¤ D×$6Ñ$6°qÑ$9¸$×:MÑ:MÈaÑ:PÓ QÒQà˜!’8Ü$Ð%kÓlÐlô ˜U A›,�CÜ˜U A›,�CÜ˜U U™]¨UÑ2°1Ó5�Cä˜U D×$7Ñ$7¸Ñ$:¸4×;MÑ;MÈaÑ;PÑ$PÑQØ" D×$7Ñ$7¸Ñ$:¸4×;MÑ;MÈaÑ;PÑ$PÑQñRØRZñ[Ø[\ó^�Cô Ð/°%¸×9LÑ9LÈQÑ9OÐPT×P]ÑP]Ñ9]Ñ2^Ñ^Ø §¡¨Q¡°·±Ñ =Ñ>ñ?Ø?@óB�Cä$ c¨#¨c°#°cÐ%:¸EÀ%ÈÈeÐTUÐ;VÓW’Hà—‘˜a‘ $×"4Ñ"4°QÑ"7Ò7Ü˜ “l�Ü˜ “l�Ü˜ ™¨Ñ.¨qÓ1�Ü˜ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMØ˜DŸL™L¨™O¨D×,>Ñ,>¸qÑ,AÑAÑBñCØCKñLØLMóO�ä˜˜5™ “m�Ü  # c¨#¨c°#Ð!6¸¸eÀEÈ%ÐPQÐ7RÓS’à—‘˜a‘ $×"5Ñ"5°aÑ"8Ó8Ü˜ “l�Ü˜ “l�Ü˜ ™¨Ñ.¨qÓ1�Ü˜ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMØ˜DŸL™L¨™O¨D×,>Ñ,>¸qÑ,AÑAÑBñCØCKñLØLMóO�ä˜˜5™ “m�Ü  # c¨#¨c°#Ð!6¸¸eÀEÈ%ÐPQÐ7RÓS’à�^‰^˜FÑ# xÓ/Ø�|‰|˜A‰¤ D×$6Ñ$6°qÑ$9¸4×;NÑ;NÈqÑ;QÓ RÒRÜ˜ “l�Ü˜˜u™ QÓ'�Ü˜ ™¨Ñ.¨qÓ1�Ü˜ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMØ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMñNØNVñWØWXóZ�äÐ*¨U°D×4FÑ4FÀqÑ4IÈ$Ï-É-Ñ4WÑ-XÑXØ˜DŸL™L¨™O¨D¯M©MÑ9Ñ:ñ;Ø;<ó>�ä  # c¨#¨c°#Ð!6¸¸eÀEÈ%ÐPQÐ7RÓS’à—‘˜a‘ $×"4Ñ"4°QÑ"7Ó7Ü˜ “l�Ü˜ ™ 5™¨Ó+�Ü˜ ™¨Ñ.¨qÓ1�Ü˜ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMØ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMñNà˜DŸL™L¨™O¨D×,>Ñ,>¸qÑ,AÑAÑBñCàCKñLàLMóO�ô Ð*¨U°D×4FÑ4FÀqÑ4IÈ$Ï-É-Ñ4WÑ-XÑXØ˜DŸL™L¨™O¨D¯M©MÑ9Ñ:ñ;Ø;<ó>�ä  # c¨#¨c°#Ð!6¸¸eÀEÈ%ÐPQÐ7RÓS’à—‘˜a‘ $×"5Ñ"5°aÑ"8Ó8Ü˜˜q“k�Ü˜ ™ 5™¨Ó+�Ü˜ ™¨Ñ.¨qÓ1�ÜÐ*¨5°$×2DÑ2DÀQÑ2GÈÏÉÑ2UÑ+VÑVÐWXÓY�Ü˜ %¨×)<Ñ)<¸QÑ)?À×@RÑ@RÐSTÑ@UÑ)UÑ"VÑVØ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMñNà˜DŸL™L¨™O¨D×,>Ñ,>¸qÑ,AÑAÑBñCàCDóF�ô ! # c¨#¨c°#Ð!6¸¸eÀEÈ%ÐPQÐ7RÓS’à�^‰^˜GÑ$¨Ó0Ø�|‰|˜A‰¤ D×$6Ñ$6°qÑ$9¸4×;NÑ;NÈqÑ;QÓ RÒRÜ˜˜q“k�Ü˜˜u™ QÓ'�Ü˜˜u™ UÑ*¨1Ó-�ÜÐ+¨E°4×3FÑ3FÀqÑ3IÈ$Ï-É-Ñ3WÑ,XÑXØ˜DŸL™L¨™O¨D¯M©MÑ9Ñ:ñ;Ø;<ó>�ä˜ %¨×)<Ñ)<¸QÑ)?À×@RÑ@RÐSTÑ@UÑ)UÑ"VÑVÐWXÓY�Ü  # c¨#¨c°#Ð!6¸¸eÀEÈ%ÐPQÐ7RÓS’à—‘˜a‘ $×"4Ñ"4°QÑ"7Ò7Ü˜˜q“k�Ü˜˜q™ ™ qÓ)�Ü˜˜u™ UÑ*¨1Ó-�ÜÐ+¨E°4×3FÑ3FÀqÑ3IÈ$Ï-É-Ñ3WÑ,XÑXÐYZÓ[�Ü˜ ! T§\¡\°!¡_°T×5GÑ5GÈÑ5JÑ%JÑ"KÑKØ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMñNØNOóQ�ä  # c¨#¨c°#Ð!6¸¸eÀEÈ%ÐPQÐ7RÓS’à—‘˜a‘ $×"5Ñ"5°aÑ"8Ó8Ü˜˜q“k�Ü˜˜q™ ™ qÓ)�Ü˜˜u™ UÑ*¨1Ó-�ÜÐ+¨E°4×3FÑ3FÀqÑ3IÈ$Ï-É-Ñ3WÑ,XÑXØ˜DŸL™L¨™O¨D¯M©MÑ9Ñ:ñ;Ø;<ó>�ä˜ ! T§\¡\°!¡_°T×5GÑ5GÈÑ5JÑ%JÑ"KÑKØ × 3Ñ 3°AÑ 6°t×7IÑ7IÈ!Ñ7LÑ LÑMñNó O�ä  # c¨#¨c°#Ð!6¸¸eÀEÈ%ÐPQÐ7RÓS‘ä�U˜U‘] UÑ*¨1Ó-ˆCÜ�U˜U‘] UÑ*¨1Ó-ˆCÜ�U˜D×/Ñ/°Ñ2°4×3EÑ3EÀaÑ3HÑHÑIØ˜D×/Ñ/°Ñ2°4×3EÑ3EÀaÑ3HÑHÑIñJØJRñSØSTóVˆCäÐ'¨%°×1DÑ1DÀQÑ1GÈÏÉÑ1UÑ*VÑVØ˜D×/Ñ/°Ñ2°4·=±=Ñ@ÑAñBØBCóEˆCä˜c # c¨#Ð.°°e¸EÀ%Ð/HÓIˆHà×(Ñ(ò 	8ˆDØ)1°$©ˆD× Ñ  Ò&ð	8ð #'×"5Ñ"5×":Ñ":¸1¸RÓ"@À4×CVÑCV×C[ÑC[Ð\]Ð^`ÓCaÑ"aØ"*¨5¡/°2°d×6HÑ6HÈÑ6KÑ3KÑ"Lñ#Mà"*¨5¡/°4·?±?×3GÑ3GÈÈ2ÈÓ3OÐPT×PbÑPbÐcdÑPeÑ3eÑ"fñ#gð  hˆÔô ”d˜4Ÿ?™?¨1Ó-Ó.ˆà×Ñ ¨¡Ñ/ˆØ×Ñ ¨¡Ñ/ˆàœ˜U›‘m b¬¨U«¡mÑ3ˆØ�cœ#˜e›*‘n r¬#¨e«*¡}Ñ4ˆà'ˆÔØ'ˆÕrJ   )r   )Úmodulesc                 ó<  — t        d«      }g }| j                  «       }g }| j                  «       }||z  }| j                  d   }| j                  d   }t        | j                  d   | j                  d   «      }| j                  }	t        |dz  |dz  z
  dz   |	dz  |dz  z
  dz   «      }
| j                  «       }| j                  «       }||z  }| j                  �´| j                  d   | j                  d   k\  r;|j                  | j                  d   d|
z  z   g| j                  d   ggdd	d
ddœ«       | j                  d   | j                  d   k\  r;|j                  | j                  d   d|
z  z
  g| j                  d   ggdd	d
ddœ«       |j                  | j                  g| j                  d|
z  z
  ggddd
ddœ«       |
|dz  |dz  z
  dz   k(  ret        | j                  d|
z  z
  | j                  || j                  d   | j                  d   f|d|||d|
z  z
  |dz  f|d|
z  z
  |dz  fdd¬«      }|S t        | j                  d|
z  z
  | j                  || j                  d   | j                  d   f|d|||d|
z  z
  |	dz  f|d|
z  z
  |	dz  fdd¬«      }|S )a7  
        This method returns a plot object containing the diagram of the specified arch along with the supports
        and forces applied to the structure.

        Examples
        ========

        >>> from sympy import Symbol
        >>> t = Symbol('t')
        >>> from sympy.physics.continuum_mechanics.arch import Arch
        >>> a = Arch((0,0),(40,0),crown_x=20,crown_y=12)
        >>> a.apply_load(-1,'C',8,150,angle=270)
        >>> a.apply_load(0,'D',start=20,end=40,mag=-4)
        >>> a.apply_load(-1,'E',10,t,angle=300)
        >>> p = a.draw()
        >>> p # doctest: +ELLIPSIS
        Plot object containing:
        [0]: cartesian line: 11.325 - 3*(x - 20)**2/100 for x over (0.0, 40.0)
        [1]: cartesian line: 12 - 3*(x - 20)**2/100 for x over (0.0, 40.0)
        ...
        >>> p.show()

        rS   r   r   çš™™™™™ñ?çš™™™™™é?rN   ç{®Gázt?Úoé   ÚwhiteÚnone©ÚargsÚmarkerÚ
markersizeÚcolorÚmarkerfacecoloré   ç¸…ëQ¸Ž?Fçš™™™™™©?Úbrown)ÚmarkersÚshowÚannotationsÚ
rectanglesÚxlimÚylimÚaxisÚ
line_color)r   Ú_draw_loadsÚ_draw_supportsr*   r)   r…   r,   r—   Ú_draw_rectanglesÚ_draw_fillerr3   Úappendr+   r   r(   )rD   rS   rÁ   rÃ   rÄ   r`   ÚxmaxÚxminÚyminÚymaxÚlimÚfillerÚ	sing_plots                rH   Údrawz	Arch.drawˆ  s  € ô2 �3‹KˆØˆØ×&Ñ&Ó(ˆØˆ
Ø×&Ñ&Ó(ˆØ�Ñˆà×"Ñ" 1Ñ%ˆØ×!Ñ! !Ñ$ˆÜ�4×%Ñ% aÑ(¨×)<Ñ)<¸QÑ)?Ó@ˆØ�}‰}ˆä�$�s‘(˜4 ™8Ñ# AÑ% t¨C¡x°°S±Ñ'8¸Ñ':Ó;ˆà×*Ñ*Ó,ˆ
à×"Ñ"Ó$ˆØ�FÑˆ
à�<‰<Ð#Ø�|‰|˜A‰ × 3Ñ 3°AÑ 6Ò6Ø—‘à!%§¡¨a¡°°s±Ñ!:Ð ;¸T¿\¹\È!¹_Ð<MÐNØ!$Ø&'Ø!(Ø*0ñôð �|‰|˜A‰ × 2Ñ 2°1Ñ 5Ò5Ø—‘à!%§¡¨a¡°°s±Ñ!:Ð ;¸T¿\¹\È!¹_Ð<MÐNØ!$Ø&'Ø!(Ø*0ñôð 	�‰Ø—]‘]�O T§]¡]°5¸±9Ñ%<Ð$=Ð>ØØØØ$ñ
ô 	ð ��S‘˜˜c™Ñ! !Ñ#Ò#ä˜TŸ_™_¨U°3©YÑ6Ø!Ÿ_™_Ø ×!3Ñ!3°AÑ!6¸×8KÑ8KÈAÑ8NÐOØ%,Ø"'Ø)4Ø*4Ø#'¨¨S©¡=°$°s±(Ð";Ø#'¨¨S©¡=°$°s±(Ð";Ø"'Ø(/ô
1ˆIð2 Ðô ˜TŸ_™_¨U°3©YÑ6Ø!Ÿ_™_Ø ×!3Ñ!3°AÑ!6¸×8KÑ8KÈAÑ8NÐOØ%,Ø"'Ø)4Ø*4Ø#'¨¨S©¡=°$°s±(Ð";Ø#'¨¨S©¡=°$°s±(Ð";Ø"'Ø(/ô
1ˆIð ÐrJ   c                 ó:  — g }| j                   d   }| j                  d   }t        | j                  d   | j                   d   «      }| j                  }t	        d|z  d|z  z
  «      t	        d|z  d|z  z
  «      kD  rd|z  d|z  z
  }nd|z  d|z  z
  }| j
                  d   dk(  r<|j                  | j                  d   g| j                  d   d|z  z
  ggdd	d
ddœ«       n;|j                  | j                  d   g| j                  d   d|z  z
  ggddd
ddœ«       | j
                  d   dk(  r<|j                  | j                   d   g| j                   d   d|z  z
  ggdd	d
ddœ«       n;|j                  | j                   d   g| j                   d   d|z  z
  ggddd
ddœ«       |j                  | j                   d   g| j                   d   d|z  z
  ggddd
ddœ«       |j                  | j                  d   g| j                  d   d|z  z
  ggddd
ddœ«       |S )Nr   r   r°   r±   r!   r�   g{®Gáz”?r³   é   Úblackr¶   r·   gyé&1¬|?é   é   r"   g;ßO�—n¢?Ú_)r*   r)   r…   r,   Úabsr2   rÍ   )rD   Úsupport_markersrÎ   rÏ   rÐ   rÑ   Úmax_diffs          rH   rÊ   zArch._draw_supportsó  sÈ  € Øˆà×"Ñ" 1Ñ%ˆØ×!Ñ! !Ñ$ˆÜ�4×%Ñ% aÑ(¨×)<Ñ)<¸QÑ)?Ó@ˆØ�}‰}ˆäˆs�4‰x˜˜D™Ñ Ó!¤# c¨$¡h¨s°4©xÑ&7Ó"8Ò8Ø˜4‘x  D¡Ñ(‰Hà˜4‘x  D¡Ñ(ˆHà�>‰>˜&Ñ! 8Ò+Ø×"Ñ"ð ×+Ñ+¨AÑ.Ð/Ø×+Ñ+¨AÑ.¨t°H©}Ñ<Ð=ðð !Ø!#Ø#Ø&,ñ	õð ×"Ñ"ð ×+Ñ+¨AÑ.Ð/Ø×+Ñ+¨AÑ.¨u°X©~Ñ=Ð>ðð Ø!#Ø#Ø&,ñ	ôð �>‰>˜'Ñ" HÒ,Ø×"Ñ"ð ×,Ñ,¨QÑ/Ð0Ø×,Ñ,¨QÑ/°°X±Ñ=Ð>ðð !Ø!#Ø#Ø&,ñ	õð ×"Ñ"ð ×,Ñ,¨QÑ/Ð0Ø×,Ñ,¨QÑ/°°h±Ñ>Ð?ðð Ø!#Ø#Ø&,ñ	ôð 	×Ñð ×(Ñ(¨Ñ+Ð,Ø×(Ñ(¨Ñ+¨E°(©NÑ:Ð;ðð ØØØ"(ñ	ô	
ð 	×Ñð ×'Ñ'¨Ñ*Ð+Ø×'Ñ'¨Ñ*¨5°©>Ñ9Ð:ðð ØØØ"(ñ	ô	
ð ÐrJ   c                 óø  — g }| j                   d   }| j                  d   }t        | j                  d   | j                   d   «      }| j                  }t	        d|z  d|z  z
  «      t	        d|z  d|z  z
  «      kD  rd|z  d|z  z
  }nd|z  d|z  z
  }| j
                  ��k| j
                  d   t        | j                  d   | j                   d   «      k\  rZ|j                  | j
                  d   | j
                  d   d|z  z
  f| j
                  d   | j
                  d   z
  d|z  ddd	œ«       nÛ| j
                  d   | j                  d   k\  rZ|j                  | j
                  d   | j
                  d   d|z  z
  f| j                   d   | j
                  d   z
  d|z  ddd	œ«       nb|j                  | j
                  d   | j
                  d   d|z  z
  ft	        | j                  d   | j
                  d   z
  «      d|z  d
dd	œ«       | j                  rc| j                  D ]T  }| j                  |   d   }| j                  |   d   }	|j                  || j                  |dz  z   f|	|z
  |dz  ddœ«       ŒV |S )Nr   r   r°   r±   rN   r²   g{®Gáz„?rÀ   )ÚxyÚwidthrs   rn   r»   é´   rh   ri   ç333333Ã?Úorange©rà   rá   rs   r»   )	r*   r)   r…   r,   rÜ   r3   r—   rÍ   r/   )
rD   ÚmemberrÎ   rÏ   rÐ   rÑ   rÞ   Úloadsrh   ri   s
             rH   rË   zArch._draw_rectanglesR  s�  € Øˆà×"Ñ" 1Ñ%ˆØ×!Ñ! !Ñ$ˆÜ�4×%Ñ% aÑ(¨×)<Ñ)<¸QÑ)?Ó@ˆØ�}‰}ˆäˆs�4‰x˜˜D™Ñ Ó!¤# c¨$¡h¨s°4©xÑ&7Ó"8Ò8Ø˜4‘x  D¡Ñ(‰Hà˜4‘x  D¡Ñ(ˆHà�<‰<Ñ#Ø�|‰|˜A‰¤ T×%7Ñ%7¸Ñ%:¸4×;NÑ;NÈqÑ;QÓ!RÒRØ—‘à"Ÿl™l¨1™o¨d¯l©l¸1©o¸eÀH¹nÑ.LÐMØ $§¡¨Q¡°·±¸Q±Ñ ?Ø"& x¡-Ø!"Ø 'ñõð —‘˜a‘ $×"4Ñ"4°QÑ"7Ò7Ø—‘à"Ÿl™l¨1™o¨d¯l©l¸1©o¸eÀH¹nÑ.LÐMØ $× 3Ñ 3°AÑ 6°t·|±|ÀA±Ñ FØ"& x¡-Ø!"Ø 'ñõð —‘à"Ÿl™l¨1™o¨d¯l©l¸1©o¸eÀH¹nÑ.LÐMÜ # D×$6Ñ$6°qÑ$9¸$¿,¹,Àq¹/Ñ$IÓ JØ"& x¡-Ø!$Ø 'ñôð ×"Ò"Ø×0Ñ0ò �à×/Ñ/°Ñ6°wÑ?�Ø×-Ñ-¨eÑ4°UÑ;�à—‘à# D§M¡M°(¸4±-Ñ$?Ð@Ø"% e¡)Ø"*¨4¡-Ø!)ñ	õðð ˆrJ   c                 óN  — g }| j                   d   }| j                  d   }t        | j                  d   | j                   d   «      }| j                  }t	        d|z  d|z  z
  «      t	        d|z  d|z  z
  «      kD  rd|z  d|z  z
  }nd|z  d|z  z
  }| j
                  D ]ö  }| j
                  |   d   }| j
                  |   d   }	| j
                  |   d   }
| j
                  |   d   }|j                  d	|t        t        |
«      «      |z  d
z  z   |	t        t        |
«      «      |z  d
z  z   f||	fddddddddœdœ«       |j                  |› d|› d�dd|t        t        |
«      «      |z  dz  z   |	t        t        |
«      «      |z  dz  z   fdœ«       Œø | j                  D �]}  }| j                  |   d   }| j                  |   d   }| j                  |   d   }t        j                  ||||z
  |dz  z  «      }t        j                  ||«      }|D ]ˆ  }|dk  rA|j                  d	|| j                  |dz  z   f|| j                  |dz  z   fddddddœdœ«       ŒI|j                  d	|| j                  |dz  z   f|| j                  |dz  z   fddddddœdœ«       ŒŠ |dk  r?|j                  |› dt	        |«      › d�dd||z   d z  | j                  |d!z  z   fdœ«       �ŒA|j                  |› dt	        |«      › d�dd||z   d z  | j                  |d"z  z   fdœ«       �Œ€ |S )#Nr   r   r°   r±   rS   rT   rn   rm   Ú g{®Gáz´?é
   Úboldg      ø?r½   Úblue)rá   Ú
headlengthÚ	headwidthÚ	facecolorÚ	edgecolor)Útextrà   ÚxytextÚfontsizeÚ
fontweightÚ
arrowpropsrv   z Ng¸…ëQ¸¾?)rñ   ró   rô   rà   rh   ri   rj   g      Ð?r¿   rã   rä   )rñ   rà   rò   rõ   gš™™™™™É?z N/mrN   gffffffÆ?g      À?)r*   r)   r…   r,   rÜ   r.   rÍ   r   r   r	   r/   r   r   )rD   Úload_annotationsrÎ   rÏ   rÐ   rÑ   rÞ   ÚloadrS   rT   rn   rm   rh   ri   Úx_pointsrž   s                   rH   rÉ   zArch._draw_loads“  sÊ  € ØÐà×"Ñ" 1Ñ%ˆØ×!Ñ! !Ñ$ˆÜ�4×%Ñ% aÑ(¨×)<Ñ)<¸QÑ)?Ó@ˆØ�}‰}ˆäˆs�4‰x˜˜D™Ñ Ó!¤# c¨$¡h¨s°4©xÑ&7Ó"8Ò8Ø˜4‘x  D¡Ñ(‰Hà˜4‘x  D¡Ñ(ˆHà×$Ñ$ò 	ˆDØ× Ñ  Ñ& sÑ+ˆAØ× Ñ  Ñ& sÑ+ˆAØ×$Ñ$ TÑ*¨7Ñ3ˆEØ×"Ñ" 4Ñ(¨Ñ/ˆCØ×#Ñ#ààœ#œc %›j›/¨(Ñ2°4Ñ7Ñ7Øœ#œc %›j›/¨(Ñ2°4Ñ7Ñ7ðð   ˜UØ!Ø"(Ø*-¸AÈ1ÐZ`ÐmsÑ!tñ
ôð ×#Ñ#à"˜V 2 c U¨"Ð-Ø!Ø"(ØœS¤ U£›_¨XÑ5°dÑ:Ñ:¸1¼SÄÀUÃ»_ÈXÑ=UÐVZÑ=ZÑ;ZÐ[ñ	õð%	ð6 ×+Ñ+ó *	ˆDØ×+Ñ+¨DÑ1°'Ñ:ˆEØ×)Ñ)¨$Ñ/°Ñ6ˆCØ×)Ñ)¨$Ñ/°Ñ6ˆCÜ—|‘| E¨#¨s°5©y¸8ÀD¹=Ñ.IÓJˆHÜ—|‘| H¨SÓ1ˆHØ!ò �Ø�q’5Ø$×+Ñ+à#%Ø"'¨¯©°h¸t±mÑ(CÐ!DØ',¨T¯]©]¸8ÀD¹=Ñ-HÐ&IØ25ÀAÐSTÐbjÐwñ  *Añ	õð %×+Ñ+à#%Ø"'¨¯©°h¸s±lÑ(BÐ!CØ',¨T¯]©]¸8ÀD¹=Ñ-HÐ&IØ25ÀAÐSTÐbjÐwñ  *Añ	õðð& �1ŠuØ ×'Ñ'à"&  r¬#¨c«(¨°4Ð8Ø#%Ø&,Ø$ S™y¨!™m¨D¯M©M¸(À5¹.Ñ,HÐIñ	öð !×'Ñ'à"&  r¬#¨c«(¨°4Ð8Ø#%Ø&,Ø$ S™y¨!™m¨D¯M©M¸(À5¹.Ñ,HÐIñ	öðG*	ðV  ÐrJ   c                 ó²  — t        d«      }g }| j                  d   }| j                  d   }t        | j                  d   | j                  d   «      }| j                  }t        d|z  d|z  z
  «      t        d|z  d|z  z
  «      kD  rd|z  d|z  z
  }nd|z  d|z  z
  }t        j                  | j                  d   | j                  d   | j                  d   | j                  d   z
  ||z  z  «      }|D ]`  }	|j                  |	| j                  j                  ||	«      |dz  z
  f| j                  d   | j                  d   z
  ||z  z  |dz  ddœ«       Œb |S )	NrS   r   r   r°   r±   r¾   rÀ   rå   )r   r*   r)   r…   r,   rÜ   r   r   rÍ   r(   rO   )
rD   rS   rÓ   rÎ   rÏ   rÐ   rÑ   rÞ   rø   rž   s
             rH   rÌ   zArch._draw_fillerè  s�  € Ü�3‹KˆØˆØ×"Ñ" 1Ñ%ˆØ×!Ñ! !Ñ$ˆÜ�4×%Ñ% aÑ(¨×)<Ñ)<¸QÑ)?Ó@ˆØ�}‰}ˆäˆs�4‰x˜˜D™Ñ Ó!¤# c¨$¡h¨s°4©xÑ&7Ó"8Ò8Ø˜4‘x  D¡Ñ(‰Hà˜4‘x  D¡Ñ(ˆHä—<‘< × 2Ñ 2°1Ñ 5°d×6IÑ6IÈ!Ñ6LÈd×NaÑNaÐbcÑNdÐei×ewÑewÐxyÑezÑNzð  ~Fð  GOñ  ~Oñ  NPó  Qˆàò 	ˆEØ�M‰Mà# D§O¡O×$8Ñ$8¸¸5Ó$AÀ(È5Á.Ñ$PÐQØ"&×"5Ñ"5°aÑ"8¸×9KÑ9KÈAÑ9NÑ"NÐQYÐZbÑQbÑ!cØ"*¨5¡.Ø!(ñ	õð	ð ˆrJ   )NN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rI   Úpropertyr-   r^   r`   rE   rF   rd   rt   r{   r}   r   rƒ   r‰   r�   r’   r”   r   r   rÕ   rÊ   rË   rÉ   rÌ   © rJ   rH   r   r      só   „ ñò(!ðD ñó ððB ñó ðð ñó ðð ñ"ó ð"ð ñ#ó ð#ð ñ$ó ð$óh8òV10óf-ó<-ó($4òL!ó1ó5ó1òJ(ñX  
Ô+ñgó ,ðgòT]ò~?òBS ójrJ   r   N)rý   Úsympy.core.sympifyr   Úsympy.core.symbolr   r   Úsympyr   r   r   r	   r
   r   r   Úsympy.core.relationalr   Úsympy.solvers.solversr   Úsympy.functionsr   Úsympy.plottingr   r   Úsympy.utilities.decoratorr   Úsympy.external.importtoolsr   r   r   rÿ   rJ   rH   ú<module>r	     sO   ðñõ 'ß ,ß 7× 7Ñ 7Ý $Ý 'Ý %Ý Ý Ý 8Ý 4á�g¨j¸(¸Ð-DÔE€÷pò prJ   