Ë
    7^(hª  ã                   óŠ   — 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y)é    )ÚFloat)ÚS)Ú	factorial)Úexp)Úsqrt)Úassoc_laguerre)ÚYnmé   c                 óT  — 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   |«      j                  «       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/skyplay_api_hub/venv/lib/python3.12/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�A�a‘C‰j˜1‰_œy¨›~Ñ-°°1±´Y¸qÀ1¹uÓ5EÑ1EÑFÓG€Að ˆr�1‰u‰9”~ c¨1¨Q©3°©7°BÓ7×>Ñ>Ó@Ñ@Ä3ÈÀsÈ1ÁuÃ:ÑMÐMó    c           
      óT  — t        t        | ||||||g«      \  } }}}}}}| j                  r| dk  rt        d«      ‚|j                  r| |kD  st        d«      ‚|j                  rt	        |«      |k  st        d«      ‚t        | |||«      t        ||||«      j                  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Ñ€A€qˆ!ˆQ��U˜Aà‡|‚|˜˜AšÜÐ7Ó8Ð8Ø‡|‚|˜Q šUÜÐ7Ó8Ð8Ø‡|‚|œS ›V qš[ÜÐ:Ó;Ð;ä��1�a˜ÓœC  1 e¨SÓ1×8Ñ8¸dÐ8Ó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'   £   sG   € ô@ ˆQ‹4”�1“€q€AØ‡|‚|˜˜QšÜÐ7Ó8Ð8Øˆq‰Dˆ5�!�A�q‘D‘&‰>Ðr   Tz137.035999037c                 óF  — t        t        | |||g«      \  } }}}|dk\  st        d«      ‚| |kD  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ÜÐ7Ó8Ð8Ø�ŠEÜÐ7Ó8Ð8Ø	ˆQŠ�7˜eÑ#ÜÐ4Ó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      sE   ðÝ $Ý "Ý >Ý 6Ý 9Ý >Ý ;óRNójADóH#ðL " Q©%°Ó*@ô @Br   