
    tKgN                        d dl Z 	 d dlmZ d dlZd dl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mZmZmZmZmZ d Zd	 Zd
 Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d  Z1d! Z2d" Z3d# Z4d$ Z5d% Z6d& Z7d' Z8d( Z9d) Z:d* Z;d+ Z<d, Z=d- Z>d. Z?d/ Z@d0 ZAd1 ZBd2 ZCd3 ZDd4 ZEd5 ZFd6 ZGd7 ZHy# e$ r	 d dlmZ Y w xY w)8    N)StringIO)assert_assert_array_equalassert_allcloseassert_equal)raises)
coo_matrix)erf)modify_meshestimate_fun_jacestimate_bc_jaccompute_jac_indicesconstruct_global_jac	solve_bvpc                 <    t        j                  |d   |d   f      S N   r   npvstackxys     b/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/integrate/tests/test_bvp.pyexp_funr      s    99adAaD\""    c                 x    t        j                  dd| j                  d   f      }d|d<   d|d<   d|d<   d|d<   |S )N   r   r   r   r   r   r   r   r   r   r   r   emptyshaper   r   df_dys      r   exp_fun_jacr(      sH    HHaAGGAJ'(EE$KE$KE$KE$KLr   c                 B    t        j                  | d   dz
  |d   f      S Nr   r   r   hstackyaybs     r   exp_bcr0   !   s"    99beaiA'((r   c                 H    t        j                  | d   dz
  dz
  |d   f      S )Nr   r   y              ?r+   r-   s     r   exp_bc_complexr2   %   s&    99beai"nbe,--r   c                 v    t        j                  ddgddgg      }t        j                  ddgddgg      }||fS r   r   arrayr.   r/   dbc_dyadbc_dybs       r   
exp_bc_jacr9   )   S    hh	
A	
A G hh	
A	
A G Gr   c                     t        j                  |        t        j                  | dz
        z
  dt        j                  d      z
  z  S )Nr   r   )r   expr   s    r   exp_solr?   5   s4    FFA2JA&1rvvbz>::r   c                 P    t        j                  |d   |d   dz   |d   z  f      S )Nr   r   r   r   r   r   ps      r   sl_funrC   9   s,    99adQqT1WHqtO,--r   c                     |j                   \  }}t        j                  |d|f      }d|d<   d|d<   |d   dz   |d<   d|d<   t        j                  |d|f      }d|d<   d|d   z  |d   z  |d<   ||fS )	Nr   r   r   r   r    r!   r"   r<   )r%   r   r$   r   r   rB   nmr'   df_dps          r   
sl_fun_jacrI   =   s    77DAqHHaAYEE$KE$KQ47(E$KE$KHHaAYEE$Kqt)ad"E$K%<r   c                 P    t        j                  | d   |d   | d   |d   z
  f      S r*   r+   r.   r/   rB   s      r   sl_bcrL   L   s,    99beRUBqEAaDL122r   c                     t        j                  d      }d|d<   d|d<   t        j                  d      }d|d<   t        j                  d      }d|d<   |||fS )	N)   r   r   r   )r   r   r!   )rN   r   )r   r   r   zeros)r.   r/   rB   r7   r8   dbc_dps         r   	sl_bc_jacrS   P   s]    hhvGGDMGDMhhvGGDMXXfFF4LGV##r   c                 8    t        j                  |d   | z        S )Nr   )r   sinr   rB   s     r   sl_solrW   ^   s    66!A$(r   c                 D    t        j                  |d   |d   dz   f      S )Nr   r      r   r   s     r   	emden_funrZ   b   s$    99adQqT1WH%&&r   c                     t        j                  dd| j                  d   f      }d|d<   d|d<   d|d   dz  z  |d<   d|d	<   |S )
Nr   r   r   r   r       r!   r"   r#   r&   s      r   emden_fun_jacr^   f   sT    HHaAGGAJ'(EE$KE$KqtQw,E$KE$KLr   c                 B    t        j                  | d   |d   dz
  g      S )Nr   r   LXz?r4   r-   s     r   emden_bcra   o   s#    88RUBqEJ./00r   c                 v    t        j                  ddgddgg      }t        j                  ddgddgg      }||fS r*   r4   r6   s       r   emden_bc_jacrc   s   r:   r   c                     d| dz  dz  z   dz  S )Nr   r   rN         ࿩ r>   s    r   	emden_solrg      s    1QJr   c                 ,    t        j                  |      S Nr   
zeros_liker   s     r   undefined_funrl      s    ==r   c                 B    t        j                  | d   |d   dz
  g      S r*   r4   r-   s     r   undefined_bcrn      s"    88RUBqEAI&''r   c                 L    t        j                  |      }|dd d   |d d d<   |S )Nr   r   rj   )r   r   fs      r   big_funrq      s,    
aAqt!tWAccFHr   c                 N    t        j                  | d d d   |d d d   dz
  f      S )Nr   r   r+   r-   s     r   big_bcrs      s*    99b1gr#A#w{+,,r   c                 ^    t        j                  d|z  | j                  f      }| |d d d<   | S )Nr   )r   onessize)r   rF   r   s      r   big_solrw      s.    
Q AAccFHr   c                     t        j                  |      }|ddd   |ddd<   |d   dz   |ddd   z  |ddd<   |d   dz   |ddd   z  |ddd<   |S )a   Big version of sl_fun, with two parameters.

    The two differential equations represented by sl_fun are broadcast to the
    number of rows of y, rotating between the parameters p[0] and p[1].
    Here are the differential equations:

        dy[0]/dt = y[1]
        dy[1]/dt = -p[0]**2 * y[0]
        dy[2]/dt = y[3]
        dy[3]/dt = -p[1]**2 * y[2]
        dy[4]/dt = y[5]
        dy[5]/dt = -p[0]**2 * y[4]
        dy[6]/dt = y[7]
        dy[7]/dt = -p[1]**2 * y[6]
        .
        .
        .

    r   Nr   r   r]   rN   rj   )r   r   rB   rp   s       r   big_fun_with_parametersry      s|    ( 	aAqt!tWAccFtQwh3Q3AaddGtQwh14a4 AaddGHr   c                    |j                   \  }}t        j                  |||f      }d|t        d|d      t        d|d      f<   |d   dz   |t        d|d      t        d|d      f<   |d   dz   |t        d|d      t        d|d      f<   t        j                  |d|f      }d|d   z  |t        d|d         z  |t        d|d      df<   d|d   z  |t        d|d         z  |t        d|d      df<   ||fS )Nr   r   r   r]   rN   r<   r%   r   rQ   rangerE   s          r   big_fun_with_parameters_jacr}      s   77DAqHHaAYE,-E%1a.%1a.
()-.qT1WHE%1a.%1a.
()-.qT1WHE%1a.%1a.
()HHaAYE!AaDy1U1a^+<<E%1a.!
!AaDy1U1a^+<<E%1a.!
%<r   c                 p    t        j                  | d d d   |d d d   | d   |d   z
  | d   |d   z
  f      S )Nr   r   r   rN   r+   rK   s      r   big_bc_with_parametersr      sB    99b1gr#A#w1!beadlCDDr   c                    | j                   d   }t        j                  |dz   |f      }t        j                  |dz   |f      }d|t        |dz        t        d|d      f<   d|t        |dz  |      t        d|d      f<   t        j                  |dz   df      }d||df<   d||df<   d||dz   df<   d||dz   df<   |||fS )Nr   r   r   rO   rN   r{   )r.   r/   rB   rF   r7   r8   rR   s          r   big_bc_with_parameters_jacr      s    
AhhAqz"GhhAqz"G-.GE!q&M5Aq>)*01GE!q&!eAq!n,-XXq1uaj!FF1a4LGAqDMF1q5!8GAE1HGV##r   c                     t        j                  t        j                  |d   | z        t        j                  |d   | z        f      S r*   )r   r   rU   rV   s     r   big_sol_with_parametersr      s8    99bffQqTAX&qtax(89::r   c           	      @   d}t        j                  |d   | |d   z  |t         j                  dz  z  t        j                  t         j                  | z        z  z   t         j                  | z  t        j                  t         j                  | z        z  z    |z  f      S )NMbP?r   r   )r   r   picosrU   )r   r   epss      r   	shock_funr      s    
C99	!
ad(S255!8^bffRUUQY&77
7
%%!)bffRUUQY'
'( 	)+.	/  r   c                 B    t        j                  | d   dz   |d   g      S )Nr   r   r4   r-   s     r   shock_bcr      s"    88RUQY1&''r   c                     d}t        j                  d|z        }t        j                  t         j                  | z        t	        | |z        t	        d|z        z  z   S )Nr   r   r   )r   sqrtr   r   r
   )r   r   ks      r   	shock_solr      sJ    
C
CA66"%%!)s1q5zCAJ666r   c                 \    t        j                  |d   t        j                  |       g      S )Nr   )r   stackrk   r   s     r   nonlin_bc_funr      s#    88QqT2==+,--r   c                 h   | \  }}|\  }}d\  }}}}	}
d|z
  dz
  }|t        j                  |
|z        t        j                  |
 |z        z
  z  }|||z  z   }|	|z
  dz
  }|t        j                  |
|z        t        j                  |
 |z        z
  z  }|||z  z
  }t        j                  ||g      S )N)g=
ףp=?{Gz?-C6?      ?g33333sC@              ?)r   r=   r5   )r.   r/   phiAphipAphiCphipCkappaioAioCVrp   hAiAres0hCiCres1s                    r   nonlin_bc_bcr      s    KD%KD%9E3Q 
T#B	qtrvvqbe},	-BD 
TCB	qtrvvqbe},	-BeD88T4L!!r   c                     dd| z  z
  S )Ng/g)?rf   r>   s    r   nonlin_bc_solr     s    )a-//r   c                     t        j                  g dt              } t        | t        j                  dg      t        j                  dg            }t	        |t        j                  g d             t        j                  g dt              } t        | t        j                  dgt
              t        j                  g d            }t	        |g d	       y )
N)r   r   rN   	   dtyper   r   )r   r   r   rN   rY      r   )r   rN      r   )r   r   rN   )r   r\   r   g      r   r   r   rN   r]   rY   r   )r   r5   floatr   r   int)r   x_news     r   test_modify_meshr     s    
U+A288QC="((A3-8Eubhh'>?@
"%0A288QCs3RXXi5HIEuIJr   c                     t        j                  ddd      } t        j                  d| j                  d   f      }d|d<   d|d<   t        j                  g       }t        d | ||      \  }}t        | |      }t        ||       t        |d u        t        j                  dt         j                  d      } t        j                  d| j                  d   f      }t        j                  |       |d<   t        j                  |       |d<   t        j                  dg      }t        t        | ||      \  }}t        | ||      \  }}t        ||       t        ||       t        j                  ddd	      } t        j                  d| j                  d   f      }d
|d<   d|d<   t        j                  g       }t        d | ||      \  }}t        | |      }t        ||       t        |d u        y )Nr   r   rY   r   r   g{Gz?c                     t        | |      S ri   r   rA   s      r   <lambda>z&test_compute_fun_jac.<locals>.<lambda>   s
    GAqMr   r   
   r`   r   c                     t        | |      S ri   )rZ   rA   s      r   r   z&test_compute_fun_jac.<locals>.<lambda>4  s
    IaOr   )r   linspacer$   r%   r5   r   r(   r   r   r   rU   r   rC   rI   r^   )r   r   rB   r'   rH   df_dy_andf_dp_ans          r   test_compute_fun_jacr     s   
Aq!A
!QWWQZ!AAaDAaD
A#$A1aKLE51a HE8$ETM
Aruua A
!QWWQZ!A66!9AaD66!9AaD
#A#FAq!4LE5#Aq!,HhE8$E8$
Aq"A
!QWWQZ!AAaDAaD
A#$CQ1MLE5Q"HE8$ETMr   c                  J   t        j                  ddg      } t        j                  ddg      }t        j                  g       }t        d | ||      \  }}}t        | |      \  }}t	        ||       t	        ||       t        |d u        t        j                  ddg      } t        j                  ddg      }t        j                  dg      }t        t        | ||      \  }}}t        | ||      \  }}}t	        ||       t	        ||       t	        ||       t        j                  dd	g      } t        j                  d
dg      }t        j                  g       }t        d | ||      \  }}}t        | |      \  }}t	        ||       t	        ||       t        |d u        y )Ng      r   r   rN   c                     t        | |      S ri   r0   rK   s      r   r   z%test_compute_bc_jac.<locals>.<lambda>?  s
    &R.r   r   r   rO   d   ig      %@c                     t        | |      S ri   )ra   rK   s      r   r   z%test_compute_bc_jac.<locals>.<lambda>R  s    (2r*r   )	r   r5   r   r9   r   r   rL   rS   rc   )	r.   r/   rB   r7   r8   rR   
dbc_dya_an
dbc_dyb_an	dbc_dp_ans	            r   test_compute_bc_jacr   :  sw   	4)	B	3(	B
A.("b! 5GWf'B/J
GZ(GZ(FdN	3(	B	3)	B
#A.ub"a@GWf(1"b!(<%J
IGZ(GZ(FI&	3*	B	5$-	 B
A.*BA 7GWf)"b1J
GZ(GZ(FdNr   c                     d} d}d}t        | ||      \  }}t        t        j                  |      ||ff      j	                         }t        j
                  g dg dg dg dg dg dg dg dg dg dg
      }t        ||       y )Nr   r]   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r	   r   	ones_liketoarrayr5   r   )rF   rG   r   ijss_trues          r   test_compute_jac_indicesr   Y  s    	A	A	Aq!Q'DAqBLLOaV,-557AXX&&&&&&&&&& F q&!r   c                     d} d}d}t        ddd      \  }}t        j                  ddd      }t        j                  |      }t        j                  t        j
                  t        j                  |z        t        j                  t        j                  t        j                  |z        z  f      }t        j                  dg      }t        |||      }	|d d d|z  z   }
d|d d d df   |d d dd f   z   z  |dz  |	d d dd f   |	d d d df   z
  z  z
  }t        |||      \  }}t        |
||      \  }}t        |d d df   |d d df   |      \  }}}t        | ||||||||||||      }|j                         }d	 }t        j                  || z  |z   || z  |z   f      }t        |dz
        D ],  } |||   |d         ||| z  |dz   | z  || z  |dz   | z  f<   . ||dz  z  d
z  |dd df   |ddd f   z
  z  |d |dz
  | z  ddf<   |||dd df   |ddd f   z   z  |dz  d
z  |dd df   |ddd f   z
  z  z   z  |d|dz
  | z  ddf<   d|d<   d|d<   d|d<   d|d<   t!        ||d       t#        t        |||      \  }}t#        t        |
||      \  }}t%        t&        |d d df   |d d df   |      \  }}}t        | ||||||||||||      }|j                         }t!        ||dd       y )Nr   rY   r   r   g      @rO   r      c           
          t        j                  | dz  |dz  z  dz  dz
  d| z  | dz   |dz  z  dz  dz   d| z  gd| z  |dz  z  | dz  |dz  z  dz  dz
  d| z  |dz  z  d| dz  |dz  z  dz  z
  gg      S )Nr      r   re   r   r4   )hrB   s     r   J_blockz(test_compute_global_jac.<locals>.J_block  s    xxT!Q$Yr\AtAv1uQTz"}q'8$q&AU1a4ZAad2)3q5A:q1a419R<7GH
  	r   r   )r   r   )r   r   )r   r   )r   r   绽|=rtolg:0yU>r   atol)r   r   r   diffr   rU   r   r   r5   rC   rI   rS   r   r   rQ   r|   r   r   r   rL   )rF   rG   r   i_jacj_jacr   r   r   rB   rp   x_middley_middler'   rH   df_dy_middledf_dp_middler7   r8   rR   Jr   J_truer   s                          r   test_compute_global_jacr   n  sw   	A	A	A&q!Q/LE5
Aq!A

A
		266"%%!)$beebffRUUQY.?&?@AA
#Aq!QA"vaHa3B3i!AqrE(*+acQq!"uX!SbS&	5I.JJHaA&LE5!+Hh!BL,(1a4!ArE(A>GWfQ1eUAul"L'7F	LA			A XXq1uqy!a%!),-F1q5\9@1qt9Lq1uq1uk!1q51q5A+#556  "#QT!qCRCy1QU8/C!DF>QUaK>2"#qAa"fI!QR%,@'A'(!tAv1crc6Qq!"uX1E'F(G #HF1a!eq[?B F4LF4LF5MF6NAvE*#FAq!4LE5!1&(Ha!PL,.ua1gqBxKGWfQ1eUAul"L'7F	LA			AAvDt4r   c            	      B   g d} t        j                  d      }t        t        t        t
        t        | |       t        j                  ddd      } t        j                  d      }t        t        t        t
        t        | |       d }d }t        j                  d	| j                  d   f      }t        t        t        ||| |dg
       d }t        t        t        ||| |       t        j                  ddgg      }t        t        t        t
        t        | ||       y )N)r   r   r   )r   rN   r   r   rY   )r   r]   c                     t        | |      S ri   r   rA   s      r   funz&test_parameter_validation.<locals>.fun  s    q!}r   c                     t        | |      S ri   r   rK   s      r   bcz%test_parameter_validation.<locals>.bc  s    b"~r   r   )rB   c                 ,    t        j                  d      S )NrN   rP   r   s     r   wrong_shape_funz2test_parameter_validation.<locals>.wrong_shape_fun  s    xx{r   )S)
r   rQ   assert_raises
ValueErrorr   r   r0   r   r%   r5   )r   r   r   r   r   r   s         r   test_parameter_validationr     s    A
A*i&!Q?
Aq!A
A*i&!Q? 	!QWWQZ!A*ib!Q1#> *i"aC
1a&A*i&!Q!Dr   c            
         t        j                  ddd      } t        j                  ddd      }t        j                  d| j                  d   f      }d t        fD ]  }d t
        fD ]  }t        t        t        | |||      }t        |j                  d       t        |j                         t        |j                  j                  d       |j                  |      }t!        |d   t#        |      d       t        ||      }|j                  |d      |z
  }|dt        j$                  |      z   z  }	t        j&                  |	dz  d	      d
z  }
t        t        j(                  |
dk               t        t        j(                  |j*                  dk               t!        |j                  |j                        |j,                  dd       t!        |j                  |j                  d      |j.                  dd         y )Nr   r   rY   r   r   fun_jacbc_jach㈵>r   axisr   r   r   r   )r   r   rQ   r%   r(   r9   r   r   r0   r   statusr   successr   rv   solr   r?   abssumallrms_residualsr   ypr   x_testr   r   r   r   sol_testf_testrrel_resnorm_ress              r   test_no_paramsr	    s   
Aq!A[[As#F
!QWWQZ!A+&Z(FGVQ7#)+C Q'CKK Q'wwvHHQKtDVX.F"V+A1rvvf~-.Gvvgqjq136HBFF8d?+,BFF3,,t345CGGCEENCEEEJCGGCEE1-svvEN+ ) 'r   c                     t        j                  dt         j                  d      } t        j                  dt         j                  d      }t        j                  d| j                  d   f      }d t
        fD ]  }d t        fD ]  }t        t        t        | |dg||      }t        |j                  d       t        |j                         t        |j                  j                  dk         t!        |j"                  dgd	
       |j%                  |      }t!        |d   t'        |dg      d	d	       t        ||dg      }|j%                  |d      |z
  }|dt        j(                  |      z   z  }	t        j*                  |	dz  d      dz  }
t        t        j,                  |
dk               t        t        j,                  |j.                  dk               t!        |j%                  |j                        |j0                  dd       t!        |j%                  |j                  d      |j2                  dd         y )Nr   rY   r   r   r   rB   r   r   r   r   r   r   r   r   r   r   )r   r   r   ru   r%   rI   rS   r   rC   rL   r   r   r   r   r   rv   r   rB   r   rW   r   r   r   r   r   r  r  s              r   test_with_paramsr    s   
Aruua A[[BEE3'F
AGGAJ A*%Y'FFE1aC5'#)+C Q'CKK CEEJJO$CEEA3T2wwvHHQK)<!%D2 FHqc2F"V+A1rvvf~-.Gvvgl3s:HBFF8d?+,BFF3,,t345CGGCEENCEEEJCGGCEE1-svvEN1 ( &r   c                     t        j                  ddd      } t        j                  ddd      }t        j                  d      }d|d<   d|d<   t        j                  ddgdd	gg      }d t        fD ]  }d t
        fD ]  }t        t        t        | ||||
      }t        |j                  d       t        |j                         t        |j                  j                  d       |j                  |      }t!        |d   t#        |      d       t        ||      |j%                  |      |z  z   }|j                  |d      |z
  }	|	dt        j&                  |      z   z  }
t        j(                  |
dz  d      dz  }t        t        j*                  |dk               t!        |j                  |j                        |j,                  dd       t!        |j                  |j                  d      |j.                  dd         y )Nr   r   r   g?r   )r   r   r`   r   r<   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r$   r5   r^   rc   r   rZ   ra   r   r   r   r   r   rv   r   r   rg   dotr   r   r   r   r  )r   r  r   r   r   r   r   r  r  r  r  r  s               r   test_singular_termr    s   
Aq"A[[q#&F
AAaDAaD
1a&1b'"#A-(\*FIxAG#)+C Q'CKK R(wwvHHQK6):Fvx0155?V3KKF"V+A1rvvf~-.Gvvgl3s:HBFF8d?+,CGGCEENCEEEJCGGCEE1-svvEN' + )r   c            
         t        j                  ddd      } t        j                  ddd      }t        j                  d| j                  d   ft              }d t
        fD ]  }d t        fD ]  }t        t        t        | |||      }t        |j                  d       t        |j                         |j                  |      }t        |d   j                   t#        |      d	       t        |d   j$                  t#        |      d	       t        ||      }|j                  |d      |z
  }|dt        j&                  |      z   z  }	t        j(                  t        j                   |	t        j*                  |	      z        d
      dz  }
t        t        j,                  |
dk               t        t        j,                  |j.                  dk               t        |j                  |j0                        |j2                  dd       t        |j                  |j0                  d      |j4                  dd         y )Nr   r   rY   r   r   r   r   r   r   r   r   r   r   r   )r   r   rQ   r%   complexr(   r9   r   r   r2   r   r   r   r   r   r   realr?   imagr   r   conjr   r   r   r   r  r  s              r   test_complexr    s    	Aq!A[[As#F
!QWWQZ0A+&Z(FG^Q7#)+C Q'CKK wwvHHQK,,gfoDIHQK,,gfoDIVX.F"V+A1rvvf~-.Gvvbggg0@&@A#$&),-HBFF8d?+,BFF3,,t345CGGCEENCEEEJCGGCEE1-svvEN+ ) 'r   c                     t        j                  ddd      } t        j                  d| j                  f      }t	        t
        t        | |dd      }t        |j                  d       t        |j                          t        j                  ddd      } t        j                  d| j                  f      }t	        t        t        | |      }t        |j                  d       t        |j                          y )Nr   r   r   r   rY   )tol	max_nodes)r   r   rQ   rv   r   r   r0   r   r   r   r   rl   rn   )r   r   ress      r   test_failuresr  9  s    
Aq!A
!QVVA
GVQtq
ACQO
Aq!A
!QVVA
M<A
6CQOr   c                     d} t        j                  ddd      }t        j                  d| z  |j                  f      }t	        t
        t        ||      }t        |j                  d       t        |j                         |j                  |      }t        |d   t        ||              t        ||      }|j                  |d      |z
  }|dt        j                  |      z   z  }t        j                  t        j                   |t        j"                  |      z        d      dz  }t        t        j$                  |dk               t        t        j$                  |j&                  dk               t        |j                  |j(                        |j*                  d	d	
       t        |j                  |j(                  d      |j,                  d	d	
       y )N   r   r   rY   r   r   r   r   r   r   )r   r   rQ   rv   r   rq   rs   r   r   r   r   r   r   rw   r   r   r  r  r   r   r   r   r  )	rF   r   r   r   r  r  r  r  r  s	            r   test_big_problemr  G  sQ   
A
Aq!A
!a%!A
GVQ
*CQCKKwwqzHHQKA/Q!F1A1rvvf~%&Gvvbggg(889BcIHBFF8d?#$BFF3$$t+,-CGGCEENCEEEBCGGCEE1%svvEFr   c                     d} t        j                  dt         j                  d      }t        j                  dt         j                  d      }t        j                  d| z  |j                  f      }d t
        fD ]  }d t        fD ]  }t        t        t        ||ddg||      }t        |j                  d       t        |j                         t        |j                  ddgd	
       |j!                  |      }t#        d| d      D ]G  }t        ||   t%        |ddg      d   d	d	       t        ||dz      t%        |ddg      d   d	d	       I t        ||ddg      }	|j!                  |d      |	z
  }
|
dt        j&                  |	      z   z  }t        j(                  |dz  d      dz  }t        t        j*                  |dk               t        t        j*                  |j,                  dk               t        |j!                  |j.                        |j0                  dd       t        |j!                  |j.                  d      |j2                  dd         y )Nr  r   rY   r   r   r   r  r   r   r   r]   r   r   r   r   )r   r   r   ru   rv   r}   r   r   ry   r   r   r   r   r   r   rB   r   r|   r   r   r   r   r   r   r   r  )rF   r   r  r   r   r   r   r  isolr  r  r  r  s                r    test_big_problem_with_parametersr   _  s   
A
Aruua A[[BEE3'F
Q A5678F35KQ#sWVMC Q'CKK CEEAq65wwvHaA 7A G J%)6   2 7A G J%)6	 ' -VX1vFF"V+A1rvvf~-.Gvvgl3s:HBFF8d?+,BFF3,,t345CGGCEENCEEEJCGGCEE1-svvEN7 9 7r   c                  ~   t        j                  ddd      } t        j                  ddd      }t        j                  d| j                  f      }t	        t
        t        | |      }t        |j                  d       t        |j                         t        |j                  j                  dk         |j                  |      }t        |d   t        |      dd	       t        ||      }|j                  |d      |z
  }|dt        j                  |      z   z  }t        j                   |dz  d
      dz  }t        t        j"                  |dk               t        |j                  |j                        |j$                  dd	       t        |j                  |j                  d      |j&                  dd	       y )NrO   r   rY   r   r   r   n   r   r   r   r   r   r   )r   r   rQ   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  	r   r  r   r   r  r  r  r  r  s	            r   test_shock_layerr$    sD   
B1A[[Q$F
!QVVA
IxA
.CQCKKCEEJJwwvHHQK6!2DIvx(FV#A1rvvf~%&Gvvgl+s2HBFF8d?#$CGGCEENCEEEBCGGCEE1%svvEFr   c                  T   t        j                  ddd      } | }t        j                  d| j                  g      }t	        t
        t        | |      }t        |j                  d       t        |j                         t        |j                  j                  dk         |j                  |      }t        |d   t        |      dd       t        ||      }|j                  |d      |z
  }|dt        j                  |      z   z  }t        j                   |dz  d	      d
z  }t        t        j"                  |dk               t        |j                  |j                        |j$                  dd       t        |j                  |j                  d      |j&                  dd       y )Nr   g?rY   r   r   r   r   r   r   r   r   r   )r   r   rQ   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r#  s	            r   test_nonlin_bcr&    s6   
AsAAF
!QVVA
M<A
6CQCKKCEEJJNwwvHHQKv!6TM68,FV#A1rvvf~%&Gvvgl+s2HBFF8d?#$CGGCEENCEEEBCGGCEE1%svvEFr   c                     t        j                  ddd      } t        j                  d| j                  d   f      }dD ]  }t        j
                  }t               t        _        	 t        t        t        | ||      }t        j
                  j                         }|t        _        t        |j                         |dk(  rt        | |       |dk\  rt        d|v |       |dk\  st        d|v |        y # |t        _        w xY w)	Nr   r   rY   r   )r   r   r   )verbosez	Solved inzMax residual)r   r   rQ   r%   sysstdoutr   r   r   r0   getvaluer   r   )r   r   r(  
old_stdoutr   texts         r   test_verboser.    s    
Aq!A
!QWWQZ!AZZ
Z
	$GVQ7CC::&&(D#CJa<Hd#a<K4'.a<Nd*D1  $CJs   %6C77D)Ir)  r   ImportErrorionumpyr   numpy.testingr   r   r   r   pytestr   r   scipy.sparser	   scipy.specialr
   scipy.integrate._bvpr   r   r   r   r   r   r   r(   r0   r2   r9   r?   rC   rI   rL   rS   rW   rZ   r^   ra   rc   rg   rl   rn   rq   rs   rw   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r  r  r   r$  r&  r.  rf   r   r   <module>r7     sH   
! ) ) * # C C
#).	;.3$'1	(-6E
$$;
(7.
"&0K@>"*25jE4O:OBO>O>G0"OJG0G02_  s   C CC