+
    i!                         ^ RI Ht ^ RIHt ^ RIHt ^ RIHtHt ^ RI	H
t
 ^ RIHt . ROtR tR tR	 tR
 tR tR tR tR# )    )diff)S)	integrate)Vectorexpress)_check_frame)_check_vectorc                   \        V 4       V ^ 8X  d   \        ^ 4      # \        WRR7      p V P                  VP                  4      pV P                  VP
                  4      pV P                  VP                  4      p\        ^ 4      pV\        WA^,          4      \        W1^,          4      ,
          VP                  ,          ,          pV\        W!^,          4      \        WA^ ,          4      ,
          VP
                  ,          ,          pV\        W1^ ,          4      \        W!^,          4      ,
          VP                  ,          ,          pV# )a   
Returns the curl of a vector field computed wrt the coordinate
symbols of the given frame.

Parameters
==========

vect : Vector
    The vector operand

frame : ReferenceFrame
    The reference frame to calculate the curl in

Examples
========

>>> from sympy.physics.vector import ReferenceFrame
>>> from sympy.physics.vector import curl
>>> R = ReferenceFrame('R')
>>> v1 = R[1]*R[2]*R.x + R[0]*R[2]*R.y + R[0]*R[1]*R.z
>>> curl(v1, R)
0
>>> v2 = R[0]*R[1]*R[2]*R.x
>>> curl(v2, R)
R_x*R_y*R.y - R_x*R_z*R.z

T	variables)r	   r   r   dotxyzr   )vectframevectxvectyvectzoutvecs   &&    a/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/physics/vector/fieldfunctions.pycurlr      s    : $qyay4$/DHHUWWEHHUWWEHHUWWEAYF
tE8$tE8'<<GGF
tE8$tE8'<<GGF
tE8$tE8'<<GGFM    c                   \        V 4       V ^ 8X  d   \        P                  # \        WRR7      p V P	                  VP
                  4      pV P	                  VP                  4      pV P	                  VP                  4      p\        P                  pV\        W!^ ,          4      ,          pV\        W1^,          4      ,          pV\        WA^,          4      ,          pV# )a  
Returns the divergence of a vector field computed wrt the coordinate
symbols of the given frame.

Parameters
==========

vect : Vector
    The vector operand

frame : ReferenceFrame
    The reference frame to calculate the divergence in

Examples
========

>>> from sympy.physics.vector import ReferenceFrame
>>> from sympy.physics.vector import divergence
>>> R = ReferenceFrame('R')
>>> v1 = R[0]*R[1]*R[2] * (R.x+R.y+R.z)
>>> divergence(v1, R)
R_x*R_y + R_x*R_z + R_y*R_z
>>> v2 = 2*R[1]*R[2]*R.y
>>> divergence(v2, R)
2*R_z

Tr   )	r	   r   Zeror   r   r   r   r   r   )r   r   r   r   r   outs   &&    r   
divergencer   :   s    : $qyvv4$/DHHUWWEHHUWWEHHUWWE
&&C4Qx  C4Qx  C4Qx  CJr   c                    \        V4       \        ^ 4      p\        WRR7      p \        V4       F%  w  r4V\	        WV,          4      V,          ,          pK'  	  V# )a5  
Returns the vector gradient of a scalar field computed wrt the
coordinate symbols of the given frame.

Parameters
==========

scalar : sympifiable
    The scalar field to take the gradient of

frame : ReferenceFrame
    The frame to calculate the gradient in

Examples
========

>>> from sympy.physics.vector import ReferenceFrame
>>> from sympy.physics.vector import gradient
>>> R = ReferenceFrame('R')
>>> s1 = R[0]*R[1]*R[2]
>>> gradient(s1, R)
R_y*R_z*R.x + R_x*R_z*R.y + R_x*R_y*R.z
>>> s2 = 5*R[0]**2*R[2]
>>> gradient(s2, R)
10*R_x*R_z*R.x + 5*R_x**2*R.z

Tr   )r   r   r   	enumerater   )scalarr   r   ir   s   &&   r   gradientr"   e   sO    : AYFVd3F% $vQx(1,, !Mr   c                    V \        ^ 4      8X  d   R# \        V P                  4       4      ^ ,          p\        W4      P	                  4       \        ^ 4      8H  # )a  
Checks if a field is conservative.

Parameters
==========

field : Vector
    The field to check for conservative property

Examples
========

>>> from sympy.physics.vector import ReferenceFrame
>>> from sympy.physics.vector import is_conservative
>>> R = ReferenceFrame('R')
>>> is_conservative(R[1]*R[2]*R.x + R[0]*R[2]*R.y + R[0]*R[1]*R.z)
True
>>> is_conservative(R[2] * R.y)
False

T)r   listseparater   simplifyfieldr   s   & r   is_conservativer)      sF    2 q	!"1%E&&(F1I55r   c                    V \        ^ 4      8X  d   R# \        V P                  4       4      ^ ,          p\        W4      P	                  4       \
        P                  J # )az  
Checks if a field is solenoidal.

Parameters
==========

field : Vector
    The field to check for solenoidal property

Examples
========

>>> from sympy.physics.vector import ReferenceFrame
>>> from sympy.physics.vector import is_solenoidal
>>> R = ReferenceFrame('R')
>>> is_solenoidal(R[1]*R[2]*R.x + R[0]*R[2]*R.y + R[0]*R[1]*R.z)
True
>>> is_solenoidal(R[1] * R.y)
False

T)r   r$   r%   r   r&   r   r   r'   s   & r   is_solenoidalr+      sF    2 q	!"1%Ee#,,.!&&88r   c                   \        V 4      '       g   \        R4      hV \        ^ 4      8X  d   \        P                  # \        V4       \        WRR7      p \        V4      p\        V P                  V^ ,          4      V^ ,          4      p\        VR,          4       FV  w  rE\        W1V^,           ,          4      pV P                  V4      V,
          pV\        WaV^,           ,          4      ,          pKX  	  V# )av  
Returns the scalar potential function of a field in a given frame
(without the added integration constant).

Parameters
==========

field : Vector
    The vector field whose scalar potential function is to be
    calculated

frame : ReferenceFrame
    The frame to do the calculation in

Examples
========

>>> from sympy.physics.vector import ReferenceFrame
>>> from sympy.physics.vector import scalar_potential, gradient
>>> R = ReferenceFrame('R')
>>> scalar_potential(R.z, R) == R[2]
True
>>> scalar_field = 2*R[0]**2*R[1]*R[2]
>>> grad_field = gradient(scalar_field, R)
>>> scalar_potential(grad_field, R)
2*R_x**2*R_y*R_z

zField is not conservativeTr   :   NN)r)   
ValueErrorr   r   r   r   r   r$   r   r   r   r   )r(   r   
dimensionstemp_functionr!   dimpartial_diffs   &&     r   scalar_potentialr3      s    > 5!!455q	vv ED1EeJeii
16aAMJrN+MQ<8yy~4<q1u>> , r   c                   \        V4       \        V \        4      '       d   \        W4      pMT p\	        VP                  V4      VRR7      p\	        VP                  V4      VRR7      p/ p/ p	\        V4       F9  w  rVP                  V4      WV
,          &   VP                  V4      WV
,          &   K;  	  VP                  V	4      VP                  V4      ,
          # )a  
Returns the scalar potential difference between two points in a
certain frame, wrt a given field.

If a scalar field is provided, its values at the two points are
considered. If a conservative vector field is provided, the values
of its scalar potential function at the two points are used.

Returns (potential at position 2) - (potential at position 1)

Parameters
==========

field : Vector/sympyfiable
    The field to calculate wrt

frame : ReferenceFrame
    The frame to do the calculations in

point1 : Point
    The initial Point in given frame

position2 : Point
    The second Point in the given frame

origin : Point
    The Point to use as reference point for position vector
    calculation

Examples
========

>>> from sympy.physics.vector import ReferenceFrame, Point
>>> from sympy.physics.vector import scalar_potential_difference
>>> R = ReferenceFrame('R')
>>> O = Point('O')
>>> P = O.locatenew('P', R[0]*R.x + R[1]*R.y + R[2]*R.z)
>>> vectfield = 4*R[0]*R[1]*R.x + 2*R[0]**2*R.y
>>> scalar_potential_difference(vectfield, R, O, P, O)
2*R_x**2*R_y
>>> Q = O.locatenew('O', 3*R.x + R.y + 2*R.z)
>>> scalar_potential_difference(vectfield, R, P, Q, O)
-2*R_x**2*R_y + 18

Tr   )	r   
isinstancer   r3   r   pos_fromr   r   subs)r(   r   point1point2origin	scalar_fn	position1	position2
subs_dict1
subs_dict2r!   r   s   &&&&&       r   scalar_potential_differencer@      s    ^ %  $U2	 	/$GI/$GIJJ%  uuY/
8 uuY/
8 ! >>*%	z(BBBr   N)r   r   r"   r)   r+   r3   r@   )sympy.core.functionr   sympy.core.singletonr   sympy.integrals.integralsr   sympy.physics.vectorr   r   sympy.physics.vector.framer   sympy.physics.vector.vectorr	   __all__r   r   r"   r)   r+   r3   r@    r   r   <module>rI      sF    $ " / 0 3 5*
)X(V"J6>9>/d?Cr   