
    ^MhN                        d dl Z 	 d dlmZ n# e$ r	 d dlmZ Y nw xY w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 dl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 ZGejH        jI        d7             ZJdS )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                 F    t          j        |d         |d         f          S N   r   npvstackxys     ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/integrate/tests/test_bvp.pyexp_funr      s    9adAaD\"""    c                 r    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(      sG    HaAGAJ'((EE$KE$KE$KE$KLr   c                 L    t          j        | d         dz
  |d         f          S Nr   r   r   hstackyaybs     r   exp_bcr0   #   s#    9beaiA'(((r   c                 R    t          j        | d         dz
  dz
  |d         f          S )Nr   r   y              ?r+   r-   s     r   exp_bc_complexr2   '   s'    9beai"nbe,---r   c                 r    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   +   Y    h	
A	
A  G h	
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?   7   s4    FA2JJA&1rvbzz>::r   c                 `    t          j        |d         |d         dz   |d         z  f          S )Nr   r   r   r   r   r   ps      r   sl_funrC   ;   s-    9a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    7DAqHaAYEE$KE$KQ47(E$KE$KHaAYEE$Kqt)ad"E$K%<r   c                 f    t          j        | d         |d         | d         |d         z
  f          S r*   r+   r.   r/   rB   s      r   sl_bcrL   N   s-    9beRUBqEAaDL12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   R   s`    hvGGDMGDMhvGGDMXfFF4LGV##r   c                 <    t          j        |d         | z            S )Nr   )r   sinr   rB   s     r   sl_solrW   `   s    6!A$(r   c                 N    t          j        |d         |d         dz   f          S )Nr   r      r   r   s     r   	emden_funrZ   d   s%    9a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^   h   sS    HaAGAJ'((EE$KE$KqtQw,E$KE$KLr   c                 L    t          j        | d         |d         dz
  g          S )Nr   r   LXz?r4   r-   s     r   emden_bcra   q   s$    8RUBqEJ./000r   c                 r    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   u   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                 L    t          j        | d         |d         dz
  g          S r*   r4   r-   s     r   undefined_bcrn      s#    8RUBqEAI&'''r   c                 P    t          j        |          }|dd d         |d d d<   |S )Nr   r   rj   )r   r   fs      r   big_funrq      s/    
aAqt!tWAcccFHr   c                 X    t          j        | d d d         |d d d         dz
  f          S )Nr   r   r+   r-   s     r   big_bcrs      s/    9b1gr##A#w{+,,,r   c                 R    t          j        d|z  | j        f          }| |d d d<   | S )Nr   )r   onessize)r   rF   r   s      r   big_solrw      s/    
Q  AAcc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!tWAcccFtQwh33Q3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(   7DAqHaAYE,-E%1a..%1a..
()-.qT1WHE%1a..%1a..
()-.qT1WHE%1a..%1a..
()HaAYE!AaDy1U1a^^+<<E%1a..!
!AaDy1U1a^^+<<E%1a..!
%<r   c                     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      sG    9b1gr##A#w1!beadlCD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hAqz""GhAqz""G-.GE!q&MM5Aq>>)*01GE!q&!eAq!nn,-Xq1uaj!!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      s;    9bfQqTAX&&qtax(8(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9	!
ad(S25!8^bfRUQY&7&77
7
%!)bfRUQY''
'( 	)+.	/   r   c                 L    t          j        | d         dz   |d         g          S )Nr   r   r4   r-   s     r   shock_bcr      s#    8R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      sN    
C
CA6"%!)s1q5zzCAJJ666r   c                 ^    t          j        |d         t          j        |           g          S )Nr   )r   stackrk   r   s     r   nonlin_bc_funr      s%    8QqT2=++,---r   c                 ^   | \  }}|\  }}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rvqbe}},	-BD 
TCB	qtrvqbe}},	-BeD8T4L!!!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	           d S )
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28QC=="(A3--88Eubh'>'>'>??@@@
"""%000A28QCs333RXiii5H5HIIEuIIIJJJJ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            d S )Nr   r   rY   r   r   g{Gz?c                 "    t          | |          S ri   r   rA   s      r   <lambda>z&test_compute_fun_jac.<locals>.<lambda>"  s    GAqMM r   r   
   r`   r   c                 "    t          | |          S ri   )rZ   rA   s      r   r   z&test_compute_fun_jac.<locals>.<lambda>6  s    IaOO r   )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
!QWQZ!!AAaDAaD
A#$A$A1aKKLE51a  HE8$$$ETM
Arua  A
!QWQZ!!A6!99AaD6!99AaD
#A#FAq!44LE5#Aq!,,HhE8$$$E8$$$
Aq"A
!QWQZ!!AAaDAaD
A#$C$CQ1MMLE5Q""HE8$$$ETMr   c                     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            d S )Ng      r   r   rN   c                 "    t          | |          S ri   r0   rK   s      r   r   z%test_compute_bc_jac.<locals>.<lambda>A  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>T  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   <  s   	4)		B	3(		B
A.(("b! 5  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  7GWf)"b11J
GZ(((GZ(((FdNr   c                  ,   d} d}d}t          | ||          \  }}t          t          j        |          ||ff                                          }t          j        g dg dg dg dg dg dg dg dg dg dg
          }t          ||           d S )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   [  s    	A	A	Aq!Q''DAqBLOOaV,--5577AX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&  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          | ||||||||||||          }|                                }d	 }t          j        || z  |z   || z  |z   f          }t          |dz
            D ]5} |||         |d                   ||| z  |dz   | z  || z  |dz   | z  f<   6||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          | ||||||||||||          }|                                }t!          ||dd           d S )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    x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   p  s   	A	A	A&q!Q//LE5
Aq!A


A
	26"%!)$$bebfRUQY.?.?&?@AAA
#Aq!QA"vaHa3B3i!AAAqrrE(*+acQqqq!""uX!!!SbS&	5I.JJHaA&&LE5!+Hh!B!BL,(111a4!AAArE(A>>GWfQ1eUAul"L'7F	L 	LA			A   Xq1uqy!a%!),--F1q5\\ M M9@1qt9L9Lq1uq1uk!1q51q5A+#5566!"QT!qCRCy1QU8/C!DF>QUaK>2"#qAa"fI!QRR%,@'A'(!tAv1crc6Qq!""uX1E'F(G #HF1a!eq[?B F4LF4LF5MF6NAvE****#FAq!44LE5!1&(Ha!P!PL,.ua1gqBxKKGWfQ1eUAul"L'7F	L 	LA			AAvDt444444r   c            	      ~   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          | ||           d S )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    x{{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???     	!QWQZ!!A*ib!Q1#>>>>   *i"aCCC
1a&A*i&!Q!DDDDD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           |                    |          }t!          |d         t#          |          d           t          ||          }|                    |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        dd           t!          |                    |j        d          |j        dd           d S )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
!QWQZ!!A+& O OZ( 	O 	OFGVQ7#)+ + +C Q'''CK   Q'''wwvHHQKtDDDDVX..F""V+A1rvf~~-.Gvgqjq11136HBF8d?++,,,BF3,t344555CGGCENNCEEJJJJCGGCE1--svENNNNN+	OO O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	
           |                    |          }t!          |d         t'          |dg          d	d	           t          ||dg          }|                    |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        dd           t!          |                    |j        d          |j        dd           Ґd S )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(   
Arua  A[BE3''F
AGAJ  A*% O OY' 	O 	OFFE1aC5'#)+ + +C Q'''CK   CEJO$$$CEA3T2222wwvHHQK)<)<!%D2 2 2 2 FHqc22F""V+A1rvf~~-.Gvgl333s:HBF8d?++,,,BF3,t344555CGGCENNCEEJJJJCGGCE1--svENNNNN1	OO O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           |                    |          }t!          |d         t#          |          d           t          ||          |                    |          |z  z   }|                    |d          |z
  }	|	dt          j        |          z   z  }
t          j        |
dz  d          dz  }t          t          j        |dk                          t!          |                    |j                  |j        dd           t!          |                    |j        d          |j        dd           d S )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-( O O\* 	O 	OFIxAG#)+ + +C Q'''CK   R(((wwvHHQK6):):FFFFvx00155??V3KKF""V+A1rvf~~-.Gvgl333s:HBF8d?++,,,CGGCENNCEEJJJJCGGCE1--svENNNNN'	OO O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                   |                    |          }t          |d         j        t#          |          d	           t          |d         j        t#          |          d	           t          ||          }|                    |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        dd           t          |                    |j        d          |j        dd           d S )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
!QWQZ000A+& O OZ( 	O 	OFG^Q7#)+ + +C Q'''CK   wwvHHQK,gfooDIIIIHQK,gfooDIIIIVX..F""V+A1rvf~~-.Gvbgg0@0@&@AA#$& & &),-HBF8d?++,,,BF3,t344555CGGCENNCEEJJJJCGGCE1--svENNNNN+	OO O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
                    d S )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  ;  s    
Aq!A
!QVA
GVQtq
A
A
ACQO
Aq!A
!QVA
M<A
6
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
                   |                    |          }t          |d         t          ||                      t          ||          }|                    |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        d	d	
           t          |                    |j        d          |j        d	d	
           d S )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  I  s   
A
Aq!A
!a%!!A
GVQ
*
*CQCKwwqzzHHQKA///Q!!F1A1rvf~~%&Gvbgg(8(8899BBBcIHBF8d?##$$$BF3$t+,,---CGGCENNCEEBBBBCGGCE1%%svEFFFFF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	
           |                    |          }t#          d| d          D ]c}t          ||         t%          |ddg          d         d	d	           t          ||dz            t%          |ddg          d         d	d	           dt          ||ddg          }	|                    |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        dd           t          |                    |j        d          |j        dd           d S )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   a  s   
A
Arua  A[BE3''F
Q  A56 O O78 	O 	OF35KQ#sWVM M MC Q'''CK   CEAq65555wwvHaA 6 6 7A G G J%)6 6 6 6   2 7A G G J%)6 6 6 6 6 -VX1vFFF""V+A1rvf~~-.Gvgl333s:HBF8d?++,,,BF3,t344555CGGCENNCEEJJJJCGGCE1--svENNNNN7	OO Or   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                |                    |          }t          |d         t          |          dd	           t          ||          }|                    |d          |z
  }|dt          j        |          z   z  }t          j        |dz  d
          dz  }t          t          j        |dk                          t          |                    |j                  |j        dd	           t          |                    |j        d          |j        dd	           d S )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$    s   
B1A[Q$$F
!QVA
IxA
.
.CQCKCEJwwvHHQK6!2!2DIIIIvx((FV#A1rvf~~%&Gvgl+++s2HBF8d?##$$$CGGCENNCEEBBBBCGGCE1%%svEFFFFFFr   c                  p   t          j        ddd          } | }t          j        d| j        g          }t	          t
          t          | |          }t          |j        d           t          |j
                   t          |j        j        dk                |                    |          }t          |d         t          |          dd           t          ||          }|                    |d          |z
  }|dt          j        |          z   z  }t          j        |dz  d	          d
z  }t          t          j        |dk                          t          |                    |j                  |j        dd           t          |                    |j        d          |j        dd           d S )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&    sw   
AsAAF
!QVA
M<A
6
6CQCKCEJNwwvHHQKv!6!6TMMMM68,,FV#A1rvf~~%&Gvgl+++s2HBF8d?##$$$CGGCENNCEEBBBBCGGCE1%%svEFFFFFFr   c                  2   t          j        ddd          } t          j        d| j        d         f          }dD ]}t          j        }t                      t          _        	 t          t          t          | ||          }t          j        
                                }|t          _        n# |t          _        w xY wt          |j                   |dk    rt          | |           |dk    rt          d|v |           |dk    rt          d|v |           d S )	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
!QWQZ!!A 2 2Z
ZZ
	$GVQ7CCCC:&&((D#CJJCJ####a<<Hd###a<<K4'...a<<Nd*D1112 2s   !<B**B8)Kr)  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&  markthread_unsafer.  rf   r   r   <module>r9     sW   



!!!!!!!       ) ) ) ) ) ) ) ) ) ) ) ) * * * * * * # # # # # #      C C C C C C C C C C C C C C C C # # #  ) ) ). . .	 	 	; ; ;. . .  3 3 3$ $ $  ' ' '  1 1 1	 	 	    ( ( (  - - -    6  E E E
$ $ $$; ; ;
  ( ( (7 7 7. . .
" " "&0 0 0K K K  @  >" " "*25 25 25jE E E4O O O:O O OBO O O>O O O>  G G G0"O "O "OJG G G0G G G0 2 2 2 2 2s    