§
    OŠtjª  ã                   ó’   — 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 dd	„Zdd
„Zdd„Zdd ed¦  «        fd„ZdS )é    )ÚFloat)ÚS)Ú	factorial)Úexp)Úsqrt)Úassoc_laguerre)ÚYnmé   c                 ó–  — t          t          | |||g¦  «        \  } }}}| |z
  dz
  }d|z  }d|z  | |z  z  }t          t          d¦  «        | |z  z  dz  t          |¦  «        z  d| z  t          | |z   ¦  «        z  z  ¦  «        }|||z  z  t	          |d|z  dz   |¦  «                             ¦   «         z  t          | dz  ¦  «        z  S )aç  
    Returns the Hydrogen radial wavefunction R_{nl}.

    Parameters
    ==========

    n : integer
        Principal Quantum Number which is
        an integer with possible values as 1, 2, 3, 4,...
    l : integer
        ``l`` is the Angular Momentum Quantum Number with
        values ranging from 0 to ``n-1``.
    r :
        Radial coordinate.
    Z :
        Atomic number (1 for Hydrogen, 2 for Helium, ...)

    Everything is in Hartree atomic units.

    Examples
    ========

    >>> from sympy.physics.hydrogen import R_nl
    >>> from sympy.abc import r, Z
    >>> R_nl(1, 0, r, Z)
    2*sqrt(Z**3)*exp(-Z*r)
    >>> R_nl(2, 0, r, Z)
    sqrt(2)*(-Z*r + 2)*sqrt(Z**3)*exp(-Z*r/2)/4
    >>> R_nl(2, 1, r, Z)
    sqrt(6)*Z*r*sqrt(Z**3)*exp(-Z*r/2)/12

    For Hydrogen atom, you can just use the default value of Z=1:

    >>> R_nl(1, 0, r)
    2*exp(-r)
    >>> R_nl(2, 0, r)
    sqrt(2)*(2 - r)*exp(-r/2)/4
    >>> R_nl(3, 0, r)
    2*sqrt(3)*(2*r**2/9 - 2*r + 3)*exp(-r/3)/27

    For Silver atom, you would use Z=47:

    >>> R_nl(1, 0, r, Z=47)
    94*sqrt(47)*exp(-47*r)
    >>> R_nl(2, 0, r, Z=47)
    47*sqrt(94)*(2 - 47*r)*exp(-47*r/2)/4
    >>> R_nl(3, 0, r, Z=47)
    94*sqrt(141)*(4418*r**2/9 - 94*r + 3)*exp(-47*r/3)/27

    The normalization of the radial wavefunction is:

    >>> from sympy import integrate, oo
    >>> integrate(R_nl(1, 0, r)**2 * r**2, (r, 0, oo))
    1
    >>> integrate(R_nl(2, 0, r)**2 * r**2, (r, 0, oo))
    1
    >>> integrate(R_nl(2, 1, r)**2 * r**2, (r, 0, oo))
    1

    It holds for any atomic number:

    >>> integrate(R_nl(1, 0, r, Z=2)**2 * r**2, (r, 0, oo))
    1
    >>> integrate(R_nl(2, 0, r, Z=3)**2 * r**2, (r, 0, oo))
    1
    >>> integrate(R_nl(2, 1, r, Z=4)**2 * r**2, (r, 0, oo))
    1

    r
   é   é   )Úmapr   r   r   r   Úexpandr   )ÚnÚlÚrÚZÚn_rÚaÚr0ÚCs           úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/hydrogen.pyÚR_nlr   
   sÕ   € õN •Q˜˜A˜q !˜Ñ%Ô%�J€A€qˆ!ˆQà
ˆa‰%�!‰)€Cà	ˆ!‰€AØ	
ˆQ‰�!�a‘%‰€Bå�a�‰dŒd�A�a‘C‰j˜1‰_�y¨™~œ~Ñ-°°1±µY¸qÀ1¹uÑ5EÔ5EÑ1EÑFÑGÔG€Að ˆr�1‰u‰9•~ c¨1¨Q©3°©7°BÑ7Ô7×>Ò>Ñ@Ô@Ñ@Å3ÈÀsÈ1ÁuÁ:Ä:ÑMÐMó    c           
      ó~  — t          t          | ||||||g¦  «        \  } }}}}}}| j        r| dk     rt          d¦  «        ‚|j        r| |k    st          d¦  «        ‚|j        r"t	          |¦  «        |k    st          d¦  «        ‚t          | |||¦  «        t          ||||¦  «                             d¬¦  «        z  S )aL  
    Returns the Hydrogen wave function psi_{nlm}. It's the product of
    the radial wavefunction R_{nl} and the spherical harmonic Y_{l}^{m}.

    Parameters
    ==========

    n : integer
        Principal Quantum Number which is
        an integer with possible values as 1, 2, 3, 4,...
    l : integer
        ``l`` is the Angular Momentum Quantum Number with
        values ranging from 0 to ``n-1``.
    m : integer
        ``m`` is the Magnetic Quantum Number with values
        ranging from ``-l`` to ``l``.
    r :
        radial coordinate
    phi :
        azimuthal angle
    theta :
        polar angle
    Z :
        atomic number (1 for Hydrogen, 2 for Helium, ...)

    Everything is in Hartree atomic units.

    Examples
    ========

    >>> from sympy.physics.hydrogen import Psi_nlm
    >>> from sympy import Symbol
    >>> r=Symbol("r", positive=True)
    >>> phi=Symbol("phi", real=True)
    >>> theta=Symbol("theta", real=True)
    >>> Z=Symbol("Z", positive=True, integer=True, nonzero=True)
    >>> Psi_nlm(1,0,0,r,phi,theta,Z)
    Z**(3/2)*exp(-Z*r)/sqrt(pi)
    >>> Psi_nlm(2,1,1,r,phi,theta,Z)
    -Z**(5/2)*r*exp(I*phi)*exp(-Z*r/2)*sin(theta)/(8*sqrt(pi))

    Integrating the absolute square of a hydrogen wavefunction psi_{nlm}
    over the whole space leads 1.

    The normalization of the hydrogen wavefunctions Psi_nlm is:

    >>> from sympy import integrate, conjugate, pi, oo, sin
    >>> wf=Psi_nlm(2,1,1,r,phi,theta,Z)
    >>> abs_sqrd=wf*conjugate(wf)
    >>> jacobi=r**2*sin(theta)
    >>> integrate(abs_sqrd*jacobi, (r,0,oo), (phi,0,2*pi), (theta,0,pi))
    1
    r
   ú'n' must be positive integerú'n' must be greater than 'l'z|'m'| must be less or equal 'l'T)Úfunc)r   r   Ú
is_integerÚ
ValueErrorÚabsr   r	   r   )r   r   Úmr   ÚphiÚthetar   s          r   ÚPsi_nlmr%   _   sÓ   € õp !$¥A¨¨1¨a°°C¸ÀÐ'BÑ CÔ CÑ€A€qˆ!ˆQ��U˜Aà„|ð 9˜˜Aš˜ÝÐ7Ñ8Ô8Ð8Ø„|ð 9˜Q šU˜UÝÐ7Ñ8Ô8Ð8Ø„|ð <�S ™VœV qš[˜[ÝÐ:Ñ;Ô;Ð;å��1�a˜ÑÔ�C  1 e¨SÑ1Ô1×8Ò8¸dÐ8ÑCÔCÑCÐCr   c                 ó”   — t          | ¦  «        t          |¦  «        }} | j        r| dk     rt          d¦  «        ‚|dz   d| dz  z  z  S )aJ  
    Returns the energy of the state (n, l) in Hartree atomic units.

    The energy does not depend on "l".

    Parameters
    ==========

    n : integer
        Principal Quantum Number which is
        an integer with possible values as 1, 2, 3, 4,...
    Z :
        Atomic number (1 for Hydrogen, 2 for Helium, ...)

    Examples
    ========

    >>> from sympy.physics.hydrogen import E_nl
    >>> from sympy.abc import n, Z
    >>> E_nl(n, Z)
    -Z**2/(2*n**2)
    >>> E_nl(1)
    -1/2
    >>> E_nl(2)
    -1/8
    >>> E_nl(3)
    -1/18
    >>> E_nl(3, 47)
    -2209/18

    r
   r   r   )r   r   r    )r   r   s     r   ÚE_nlr'   £   sS   € õ@ ˆQ‰4Œ4•�1‘”€q€AØ„|ð 9˜˜Qš˜ÝÐ7Ñ8Ô8Ð8Øˆq‰Dˆ5�!�A�q‘D‘&‰>Ðr   Tz137.035999037c                 ó~  — t          t          | |||g¦  «        \  } }}}|dk    st          d¦  «        ‚| |k    st          d¦  «        ‚|dk    r|du rt          d¦  «        ‚|r| dz
  }n| }t          |dz  |dz  |dz  z  z
  ¦  «        }|dz  t          d|dz  | |z   |z   dz  z  |dz  z  z   ¦  «        z  |dz  z
  S )aÿ  
    Returns the relativistic energy of the state (n, l, spin) in Hartree atomic
    units.

    The energy is calculated from the Dirac equation. The rest mass energy is
    *not* included.

    Parameters
    ==========

    n : integer
        Principal Quantum Number which is
        an integer with possible values as 1, 2, 3, 4,...
    l : integer
        ``l`` is the Angular Momentum Quantum Number with
        values ranging from 0 to ``n-1``.
    spin_up :
        True if the electron spin is up (default), otherwise down
    Z :
        Atomic number (1 for Hydrogen, 2 for Helium, ...)
    c :
        Speed of light in atomic units. Default value is 137.035999037,
        taken from https://arxiv.org/abs/1012.3627

    Examples
    ========

    >>> from sympy.physics.hydrogen import E_nl_dirac
    >>> E_nl_dirac(1, 0)
    -0.500006656595360

    >>> E_nl_dirac(2, 0)
    -0.125002080189006
    >>> E_nl_dirac(2, 1)
    -0.125000416028342
    >>> E_nl_dirac(2, 1, False)
    -0.125002080189006

    >>> E_nl_dirac(3, 0)
    -0.0555562951740285
    >>> E_nl_dirac(3, 1)
    -0.0555558020932949
    >>> E_nl_dirac(3, 1, False)
    -0.0555562951740285
    >>> E_nl_dirac(3, 2)
    -0.0555556377366884
    >>> E_nl_dirac(3, 2, False)
    -0.0555558020932949

    r   z'l' must be positive or zeror   FzSpin must be up for l==0.r
   r   )r   r   r    r   )r   r   Úspin_upr   ÚcÚskappaÚbetas          r   Ú
E_nl_diracr-   É   sù   € õf •Q˜˜A˜q !˜Ñ%Ô%�J€A€qˆ!ˆQØ�ŠFˆFÝÐ7Ñ8Ô8Ð8Ø�ŠEˆEÝÐ7Ñ8Ô8Ð8Ø	ˆQŠˆ�7˜eÐ#Ð#ÝÐ4Ñ5Ô5Ð5àð Ø��a‘ˆˆà�ˆÝ�˜‘	˜A˜q™D  A¡™IÑ%Ñ&Ô&€DØˆa‰4•�Q˜˜A™˜q 6™z¨DÑ0°1Ñ4Ñ4°Q¸±TÑ9Ñ9Ñ:Ô:Ñ:¸QÀ¹TÑAÐAr   N)r
   )Úsympy.core.numbersr   Úsympy.core.singletonr   Ú(sympy.functions.combinatorial.factorialsr   Ú&sympy.functions.elementary.exponentialr   Ú(sympy.functions.elementary.miscellaneousr   Ú#sympy.functions.special.polynomialsr   Ú+sympy.functions.special.spherical_harmonicsr	   r   r%   r'   r-   © r   r   ú<module>r6      s  ðØ $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø >Ð >Ð >Ð >Ð >Ð >Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø >Ð >Ð >Ð >Ð >Ð >Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ðRNð RNð RNð RNðjADð ADð ADð ADðH#ð #ð #ð #ðL " Q¨%¨%°Ñ*@Ô*@ð @Bð @Bð @Bð @Bð @Bð @Br   