
    wg9              	           d dl Z d dlmZmZmZmZmZ d dlmZ ee ed       ed       G d de                                  Z	e
dk(  r e j                          yy)	    N)CUDATestCaseskip_if_cudadevrt_missingskip_on_cudasimskip_unless_cc_60skip_if_mvc_enabled)captured_stdoutzCG not supported with MVCz4cudasim doesn't support cuda import at non-top-levelc                   2     e Zd ZdZ fdZ fdZd Z xZS )TestLaplacez%
    Test simple vector addition
    c                 t    t               | _        | j                  j                          t        |           y N)r   _captured_stdout	__enter__supersetUpself	__class__s    o/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numba/cuda/tests/doc_examples/test_laplace.pyr   zTestLaplace.setUp   s)     / 1'')    c                 \    | j                   j                  d d d        t        |           y r   )r   __exit__r   tearDownr   s    r   r   zTestLaplace.tearDown   s&    &&tT48r   c                    d}dd l }ddlm d}|j                  |      }d|d<   j	                  |      }j                  |      }d}|rdd lm} |j                  d      \  }	}
|j                  |j                  t        |            |j                         d	d
d       |j                  dd       |j                  dd       |j                  dd       |
j!                  |
j#                         d       |
j%                  |
j'                         d       |j)                  dt        |             |j+                  dd       |j-                  d       j.                  fd       } |j1                  t        |            |||d       |j                         }|rj                  d      \  }	}
|j                  |j                  t        |            |d	d
d       |j                  d| d       |j                  dd       |j                  dd       |
j!                  |
j#                         d       |
j%                  |
j'                         d       |j+                  dt3        |             |j)                  dt        |             |j-                  d       |j4                  j7                  |j9                         d       y )NFr   )cudai  i'  i  )gQ%@g(\@)figsize   *black)lwmarkercolorzInitial State   )fontsizePositionTemperature   i'  zlaplace_initial.svgc                    j                  d      }|t        |       k\  ry j                  j                         }t	        |      D ]  }|dz  dk(  r| }|}n|}| }||   }	|dk(  r|	|||dz      d|	z  z
  z  z   }
nC|t        |      dz
  k(  r|	|||dz
     d|	z  z
  z  z   }
n|	|||dz
     d|	z  z
  ||dz      z   z  z   }
|
||<   |j                           y )N      r   )gridlencg	this_gridrangesync)buf_0buf_1	timestepskir*   stepdata	next_data	curr_temp	next_tempr   s              r   solve_heat_equationz8TestLaplace.test_ex_laplace.<locals>.solve_heat_equationN   s   		!A CJ 77$$&Di( 1H? D %I D %I !G	 6 )Aa!eI1N,O OI#d)a-' )Aa!eI1N,O OI !*AQUq9}5QUC- !I
  )	! 		;r   g      ?zT = zlaplace_final.svg)numpynumbar   zeros	to_devicedevice_array_likematplotlib.pyplotpyplotsubplotsplotaranger+   copy_to_hosttitlexlabelylabel
set_xticks
get_xticks
set_yticks
get_yticksxlimylimsavefigjitforallmaxtestingassert_allclosesum)r   rC   npsizer6   r0   r1   niterpltfigaxr:   resultsr   s                @r   test_ex_laplacezTestLaplace.test_ex_laplace   sw     	 xx~ S	t$ &&u- +ll+@lAGCHH		#e*%""$   IIoI3JJzBJ/JJ}rJ2MM"--/BM7MM"--/BM7HHQD	"HHQKK-. 
'	 
'	V 	.""3t9-5%	

 $$&ll+@lAGCHH		#g,'A	   IIUGnrI2JJzBJ/JJ}rJ2MM"--/BM7MM"--/BM7HHQG%HHQG%KK+, 	

""7;;=%8r   )__name__
__module____qualname____doc__r   r   r]   __classcell__)r   s   @r   r
   r
   	   s    

z9r   r
   __main__)unittestnumba.cuda.testingr   r   r   r   r   numba.tests.supportr   r
   r^   main r   r   <module>ri      su    5 5 0 01GHJ9, J9 I 2  J9Z zHMMO r   