
    (phN                        S SK r  S SKJr  S SKrS SKJrJrJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJrJr  S SKrS rS	 rS
 rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S  r1S! r2S" r3S# r4S$ r5S% r6S& r7S' r8S( r9S) r:S* r;S+ r<S, r=S- r>S. r?S/ r@S0 rAS1 rBS2 rCS3 rDS4 rES5 rFS6 rG\R                  R                  S7 5       rJg! \ a	    S SKJr   Nf = f)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                 >    [         R                  " US   US   45      $ N   r   npvstackxys     Q/var/www/html/venv/lib/python3.13/site-packages/scipy/integrate/tests/test_bvp.pyexp_funr      s    99adAaD\""    c                 z    [         R                  " SSU R                  S   45      nSUS'   SUS'   SUS'   SUS'   U$ )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                 D    [         R                  " U S   S-
  US   45      $ Nr   r   r   hstackyaybs     r   exp_bcr0   #   s"    99beaiA'((r   c                 J    [         R                  " U S   S-
  S-
  US   45      $ )Nr   r   y              ?r+   r-   s     r   exp_bc_complexr2   '   s&    99beai"nbe,--r   c                 x    [         R                  " SS/SS//5      n[         R                  " SS/SS//5      nX#4$ r   r   arrayr.   r/   dbc_dyadbc_dybs       r   
exp_bc_jacr9   +   Q    hh	
A	
A G hh	
A	
A G r   c                     [         R                  " U * 5      [         R                  " U S-
  5      -
  S[         R                  " S5      -
  -  $ )Nr   r   )r   expr   s    r   exp_solr?   7   s4    FFA2JA&1rvvbz>::r   c                 R    [         R                  " US   US   S-  * US   -  45      $ )Nr   r   r   r   r   r   ps      r   sl_funrC   ;   s,    99adQqT1WHqtO,--r   c                     UR                   u  p4[        R                  " USU45      nSUS'   SUS'   US   S-  * US'   SUS'   [        R                  " USU45      nSUS'   SUS   -  US   -  US'   XV4$ )	Nr   r   r   r   r    r!   r"   r<   )r%   r   r$   r   r   rB   nmr'   df_dps          r   
sl_fun_jacrI   ?   s    77DA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                 R    [         R                  " U S   US   U S   US   -
  45      $ r*   r+   r.   r/   rB   s      r   sl_bcrL   N   s,    99beRUBqEAaDL122r   c                     [         R                  " S5      nSUS'   SUS'   [         R                  " S5      nSUS'   [         R                  " S5      nSUS'   X4U4$ )	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[    hhvGGDMGDMhhvGGDMXXfFF4LV##r   c                 :    [         R                  " US   U -  5      $ )Nr   )r   sinr   rB   s     r   sl_solrW   `   s    66!A$(r   c                 F    [         R                  " US   US   S-  * 45      $ )Nr   r      r   r   s     r   	emden_funrZ   d   s$    99adQqT1WH%&&r   c                     [         R                  " SSU R                  S   45      nSUS'   SUS'   SUS   S-  -  US'   SUS	'   U$ )
Nr   r   r   r   r       r!   r"   r#   r&   s      r   emden_fun_jacr^   h   sT    HHaAGGAJ'(EE$KE$KqtQw,E$KE$KLr   c                 D    [         R                  " U S   US   S-
  /5      $ )Nr   r   LXz?r4   r-   s     r   emden_bcra   q   s#    88RUBqEJ./00r   c                 x    [         R                  " SS/SS//5      n[         R                  " SS/SS//5      nX#4$ r*   r4   r6   s       r   emden_bc_jacrc   u   r:   r   c                     SU S-  S-  -   S-  $ )Nr   r   rN         ࿩ r>   s    r   	emden_solrg      s    1QJr   c                 .    [         R                  " U5      $ Nr   
zeros_liker   s     r   undefined_funrl      s    ==r   c                 D    [         R                  " U S   US   S-
  /5      $ r*   r4   r-   s     r   undefined_bcrn      s"    88RUBqEAI&''r   c                 N    [         R                  " U5      nUSS S2   US S S2'   U$ )Nr   r   rj   )r   r   fs      r   big_funrq      s,    
aAqt!tWAccFHr   c                 P    [         R                  " U S S S2   US S S2   S-
  45      $ )Nr   r   r+   r-   s     r   big_bcrs      s*    99b1gr#A#w{+,,r   c                 ^    [         R                  " SU-  U R                  45      nXS S S2'   U $ )Nr   )r   onessize)r   rF   r   s      r   big_solrw      s,    
Q AccFHr   c                     [         R                  " U5      nUSSS2   USSS2'   US   S-  * USSS2   -  USSS2'   US   S-  * USSS2   -  USSS2'   U$ )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                    UR                   u  p4[        R                  " X3U45      nSU[        SUS5      [        SUS5      4'   US   S-  * U[        SUS5      [        SUS5      4'   US   S-  * U[        SUS5      [        SUS5      4'   [        R                  " USU45      nSUS   -  U[        SUS5         -  U[        SUS5      S4'   SUS   -  U[        SUS5         -  U[        SUS5      S4'   XV4$ )Nr   r   r   r]   rN   r<   r%   r   rQ   rangerE   s          r   big_fun_with_parameters_jacr}      s   77DAHHaAYE,-E%1a.%1a.
()-.qT1WHE%1a.%1a.
()-.qT1WHE%1a.%1a.
()HHaAYE!AaDy1U1a^+<<E%1a.!
!AaDy1U1a^+<<E%1a.!
<r   c                 r    [         R                  " U S S S2   US S S2   U S   US   -
  U S   US   -
  45      $ )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                    U R                   S   n[        R                  " US-   U45      n[        R                  " US-   U45      nSU[        US-  5      [        SUS5      4'   SU[        US-  U5      [        SUS5      4'   [        R                  " US-   S45      nSXcS4'   SXCS4'   SXcS-   S4'   SXCS-   S4'   XEU4$ )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Fa4LGqDMFq5!8GE1HV##r   c                     [         R                  " [         R                  " US   U -  5      [         R                  " US   U -  5      45      $ r*   )r   r   rU   rV   s     r   big_sol_with_parametersr      s8    99bffQqTAX&qtax(89::r   c           	      D   Sn[         R                  " US   XS   -  U[         R                  S-  -  [         R                  " [         R                  U -  5      -  -   [         R                  U -  [         R                  " [         R                  U -  5      -  -   * U-  45      $ )NMbP?r   r   )r   r   picosrU   )r   r   epss      r   	shock_funr      s    
C99	!
d(S255!8^bffRUUQY&77
7
%%!)bffRUUQY'
'( 	)+.	/  r   c                 D    [         R                  " U S   S-   US   /5      $ )Nr   r   r4   r-   s     r   shock_bcr      s"    88RUQY1&''r   c                     Sn[         R                  " SU-  5      n[         R                  " [         R                  U -  5      [	        X-  5      [	        SU-  5      -  -   $ )Nr   r   r   )r   sqrtr   r   r
   )r   r   ks      r   	shock_solr      sH    
C
CA66"%%!)s15zCAJ666r   c                 `    [         R                  " US   [         R                  " U 5      /5      $ )Nr   )r   stackrk   r   s     r   nonlin_bc_funr      s#    88QqT2==+,--r   c                 `   U u  p#Uu  pESu  pgpn
SU-
  S-
  nU[         R                  " X-  5      [         R                  " U
* U-  5      -
  -  nXU-  -   nX-
  S-
  nU[         R                  " X-  5      [         R                  " U
* U-  5      -
  -  nXU-  -
  n[         R                  " UU/5      $ )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E 
T#B	qtrvvqbe},	-BD 
CB	qtrvvqbe},	-BeD88T4L!!r   c                     SSU -  -
  $ )Ng/g)?rf   r>   s    r   nonlin_bc_solr     s    )a-//r   c                     [         R                  " / SQ[        S9n [        U [         R                  " S/5      [         R                  " S/5      5      n[	        U[         R                  " / SQ5      5        [         R                  " / SQ[        S9n [        U [         R                  " S/[
        S9[         R                  " / SQ5      5      n[	        U/ S	Q5        g )
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                     [         R                  " SSS5      n [         R                  " SU R                  S   45      nSUS'   SUS'   [         R                  " / 5      n[        S XU5      u  p4[        X5      n[        X55        [        US L 5        [         R                  " S[         R                  S5      n [         R                  " SU R                  S   45      n[         R                  " U 5      US'   [         R                  " U 5      US'   [         R                  " S/5      n[        [        XU5      u  p4[        XU5      u  pV[        X55        [        XF5        [         R                  " SSS	5      n [         R                  " SU R                  S   45      nS
US'   SUS'   [         R                  " / 5      n[        S XU5      u  p4[        X5      n[        X55        [        US L 5        g )Nr   r   rY   r   r   g{Gz?c                     [        X5      $ ri   r   rA   s      r   <lambda>&test_compute_fun_jac.<locals>.<lambda>"  s    GAMr   r   
   r`   r   c                     [        X5      $ ri   )rZ   rA   s      r   r   r   6  s    IaOr   )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#$A1KLE1 HE$ETM
Aruua A
!QWWQZ!A66!9AaD66!9AaD
#A#FA!4LE#A!,HE$E$
Aq"A
!QWWQZ!AAaDAaD
A#$CQ1MLEQ"HE$ETMr   c                  6   [         R                  " SS/5      n [         R                  " SS/5      n[         R                  " / 5      n[        S XU5      u  p4n[        X5      u  pg[	        X65        [	        XG5        [        US L 5        [         R                  " SS/5      n [         R                  " SS/5      n[         R                  " S/5      n[        [        XU5      u  p4n[        XU5      u  pgn[	        X65        [	        XG5        [	        XX5        [         R                  " SS	/5      n [         R                  " S
S/5      n[         R                  " / 5      n[        S XU5      u  p4n[        X5      u  pg[	        X65        [	        XG5        [        US L 5        g )Ng      r   r   rN   c                     [        X5      $ ri   r0   rK   s      r   r   %test_compute_bc_jac.<locals>.<lambda>A  s    &.r   r   r   rO   d   ig      %@c                     [        X5      $ ri   )ra   rK   s      r   r   r   T  s	    (2*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   <  sQ   	4)	B	3(	B
A.("! 5Gf'/JG(G(FdN	3(	B	3)	B
#A.uba@Gf(1"!(<%JIG(G(F&	3*	B	5$-	 B
A.*BA 7Gf)"1JG(G(FdNr   c                  
   Sn SnSn[        XU5      u  p4[        [        R                  " U5      X4445      R	                  5       n[        R
                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
5      n[        XV5        g )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qQ'DABLLOaV,-557AXX&&&&&&&&&& F q!r   c                     Sn SnSn[        SSS5      u  p4[        R                  " SSS5      n[        R                  " U5      n[        R                  " [        R
                  " [        R                  U-  5      [        R                  [        R                  " [        R                  U-  5      -  45      n[        R                  " S/5      n[        XWU5      n	US S SU-  -   n
SUS S 2S S24   US S 2SS 24   -   -  US-  U	S S 2SS 24   U	S S 2S S24   -
  -  -
  n[        XWU5      u  p[        XU5      u  p[        US S 2S4   US S 2S4   U5      u  nnn[        XX#XFXXUUU5      nUR                  5       nS	 n[        R                  " X-  U-   X-  U-   45      n[        US-
  5       H-  nU" UU   US   5      UUU -  US-   U -  2UU -  US-   U -  24'   M/     XS-  -  S
-  USS S24   USSS 24   -
  -  US US-
  U -  S2S4'   XUSS S24   USSS 24   -   -  US-  S
-  USS S24   USSS 24   -
  -  -   -  USUS-
  U -  S2S4'   SUS'   SUS'   SUS'   SUS'   [!        UUSS9  [#        [        XWU5      u  p[#        [        XU5      u  p[%        [&        US S 2S4   US S 2S4   U5      u  nnn[        XX#XFXXUUU5      nUR                  5       n[!        UUSSS9  g )Nr   rY   r   r   g      @rO   r      c           
          [         R                  " U S-  US-  -  S-  S-
  SU -  U S-  * US-  -  S-  S-   SU -  /SU -  US-  -  U S-  US-  -  S-  S-
  SU -  US-  -  SU S-  US-  -  S-  -
  //5      $ )Nr      r   re   r   r4   )hrB   s     r   J_block(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   p  sG   	A	A	A&q!Q/LE
Aq!A

A
		266"%%!)$beebffRUUQY.?&?@AA
#AqQA"vaHa3B3i!AqrE(*+acQq!"uX!SbS&	5I.JJHaA&LE!+H!BL(1a4!ArE(A>GWfQ1Uu"'7F	LA			A XXquqy!%!),-F1q5\9@1qt9Lq1uq1uk!1q51q5A+#556  "#T!qCRCy1QU8/C!DF>QUaK>2"#Aa"fI!QR%,@'A'(!tAv1crc6Qq!"uX1E'F(G #HF1a!eq[?B F4LF4LF5MF6NAvE*#FA!4LE!1&(a!PL.ua1gqBxKGWfQ1Uu"'7F	LA			AAvDt4r   c            
      2   / SQn [         R                  " S5      n[        [        [        [
        [        X5        [         R                  " SSS5      n [         R                  " S5      n[        [        [        [
        [        X5        S nS n[         R                  " S	U R                  S   45      n[        [        [        X#XS/S
9  S n[        [        [        XCX5        [         R                  " SS//5      n[        [        [        [
        [        XUS9  g )N)r   r   r   )r   rN   r   r   rY   )r   r]   c                     [        X5      $ ri   r   rA   s      r   fun&test_parameter_validation.<locals>.fun  s    q}r   c                     [        X5      $ ri   r   rK   s      r   bc%test_parameter_validation.<locals>.bc  s    b~r   r   )rB   c                 .    [         R                  " S5      $ )NrN   rP   r   s     r   wrong_shape_fun2test_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&!?
Aq!A
A*i&!? 	!QWWQZ!A*i!1#> *iaC
1a&A*i&!!Dr   c                  
   [         R                  " SSS5      n [         R                  " SSS5      n[         R                  " SU R                  S   45      nS [        4 GH  nS [
        4 GH  n[        [        [        XUUS9n[        UR                  S5        [        UR                  5        [        UR                  R                  S5        UR                  U5      n[!        US   [#        U5      SS9  [        X5      nUR                  US5      U-
  nUS[         R$                  " U5      -   -  n	[         R&                  " U	S-  SS	9S
-  n
[        [         R(                  " U
S:  5      5        [        [         R(                  " UR*                  S:  5      5        [!        UR                  UR                  5      UR,                  SSS9  [!        UR                  UR                  S5      UR.                  SSS9  GM     GM     g )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GVQ7#)+C Q'CKK Q'wwvHHQKtDV.F"V+A1rvvf~-.Gvvgqjq136HBFF8d?+,BFF3,,t345CGGCEENCEEEJCGGCEE1-svvEN+ ) 'r   c                     [         R                  " S[         R                  S5      n [         R                  " S[         R                  S5      n[         R                  " SU R                  S   45      nS [
        4 GH  nS [        4 GH  n[        [        [        XS/UUS9n[        UR                  S5        [        UR                  5        [        UR                  R                  S:  5        [!        UR"                  S/S	S
9  UR%                  U5      n[!        US   ['        US/5      S	S	S9  [        XS/5      nUR%                  US5      U-
  nUS[         R(                  " U5      -   -  n	[         R*                  " U	S-  SS9S-  n
[        [         R,                  " U
S:  5      5        [        [         R,                  " UR.                  S:  5      5        [!        UR%                  UR                  5      UR0                  SSS9  [!        UR%                  UR                  S5      UR2                  SSS9  GM     GM     g )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FE1C5'#)+C Q'CKK CEEJJO$CEEA3T2wwvHHQK)<!%D2 Fqc2F"V+A1rvvf~-.Gvvgl3s:HBFF8d?+,BFF3,,t345CGGCEENCEEEJCGGCEE1-svvEN1 ( &r   c                  
   [         R                  " SSS5      n [         R                  " SSS5      n[         R                  " S5      nSUS'   SUS'   [         R                  " SS/SS	//5      nS [        4 GH  nS [
        4 GHy  n[        [        [        XX4US
9n[        UR                  S5        [        UR                  5        [        UR                  R                  S5        UR                  U5      n[!        US   [#        U5      SS9  [        X5      UR%                  U5      U-  -   nUR                  US5      U-
  n	U	S[         R&                  " U5      -   -  n
[         R(                  " U
S-  SS9S-  n[        [         R*                  " US:  5      5        [!        UR                  UR                  5      UR,                  SSS9  [!        UR                  UR                  S5      UR.                  SSS9  GM|     GM     g )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#)+C Q'CKK R(wwvHHQK6):Fv0155?V3KKF"V+A1rvvf~-.Gvvgl3s:HBFF8d?+,CGGCEENCEEEJCGGCEE1-svvEN' + )r   c                  v   [         R                  " SSS5      n [         R                  " SSS5      n[         R                  " SU R                  S   4[        S9nS [
        4 GH  nS [        4 GH  n[        [        [        XUUS9n[        UR                  S5        [        UR                  5        UR                  U5      n[        US   R                   [#        U5      SS	9  [        US   R$                  [#        U5      SS	9  [        X5      nUR                  US5      U-
  nUS[         R&                  " U5      -   -  n	[         R(                  " [         R                   " U	[         R*                  " U	5      -  5      SS
9S-  n
[        [         R,                  " U
S:  5      5        [        [         R,                  " UR.                  S:  5      5        [        UR                  UR0                  5      UR2                  SSS9  [        UR                  UR0                  S5      UR4                  SSS9  GM     GM     g )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^Q7#)+C Q'CKK wwvHHQK,,gfoDIHQK,,gfoDIV.F"V+A1rvvf~-.Gvvbggg0@&@A#$&),-HBFF8d?+,BFF3,,t345CGGCEENCEEEJCGGCEE1-svvEN+ ) 'r   c            	          [         R                  " SSS5      n [         R                  " SU R                  45      n[	        [
        [        XSSS9n[        UR                  S5        [        UR                  (       + 5        [         R                  " SSS5      n [         R                  " SU R                  45      n[	        [        [        X5      n[        UR                  S5        [        UR                  (       + 5        g )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
!QVVA
GVQtq
ACQO
Aq!A
!QVVA
M<
6CQOr   c                     Sn [         R                  " SSS5      n[         R                  " SU -  UR                  45      n[	        [
        [        X5      n[        UR                  S5        [        UR                  5        UR                  U5      n[        US   [        X5      5        [        X5      nUR                  US5      U-
  nUS[         R                  " U5      -   -  n[         R                  " [         R                   " U[         R"                  " U5      -  5      SS9S-  n[        [         R$                  " US:  5      5        [        [         R$                  " UR&                  S:  5      5        [        UR                  UR(                  5      UR*                  S	S	S
9  [        UR                  UR(                  S5      UR,                  S	S	S
9  g )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  sK   
A
Aq!A
!a%!A
GVQ
*CQCKKwwqzHHQK/Q!F1A1rvvf~%&Gvvbggg(889BcIHBFF8d?#$BFF3$$t+,-CGGCEENCEEEBCGGCEE1%svvEFr   c                     Sn [         R                  " S[         R                  S5      n[         R                  " S[         R                  S5      n[         R                  " SU -  UR                  45      nS [
        4 GH  nS [        4 GH  n[        [        [        UUSS/XES9n[        UR                  S5        [        UR                  5        [        UR                  SS/S	S
9  UR!                  U5      n[#        SU S5       H@  n[        Xx   [%        USS/5      S   S	S	S9  [        XxS-      [%        USS/5      S   S	S	S9  MB     [        X'SS/5      n	UR!                  US5      U	-
  n
U
S[         R&                  " U	5      -   -  n[         R(                  " US-  SS9S-  n[        [         R*                  " US:  5      5        [        [         R*                  " UR,                  S:  5      5        [        UR!                  UR.                  5      UR0                  SSS9  [        UR!                  UR.                  S5      UR2                  SSS9  GM     GM     g )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
Aruua A[[BEE3'F
Q A5678F35KQ#sWMC Q'CKK CEEAq65wwvHaA 7A G J%)6   2 7A G J%)6	 ' -V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                  n   [         R                  " SSS5      n [         R                  " SSS5      n[         R                  " SU R                  45      n[	        [
        [        X5      n[        UR                  S5        [        UR                  5        [        UR                  R                  S:  5        UR                  U5      n[        US   [        U5      SSS	9  [        X5      nUR                  US5      U-
  nUS[         R                  " U5      -   -  n[         R                   " US-  SS
9S-  n[        [         R"                  " US:  5      5        [        UR                  UR                  5      UR$                  SSS	9  [        UR                  UR                  S5      UR&                  SSS	9  g )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
!QVVA
Ix
.CQCKKCEEJJwwvHHQK6!2DIv(FV#A1rvvf~%&Gvvgl+s2HBFF8d?#$CGGCEENCEEEBCGGCEE1%svvEFr   c                  B   [         R                  " SSS5      n U n[         R                  " SU R                  /5      n[	        [
        [        X5      n[        UR                  S5        [        UR                  5        [        UR                  R                  S:  5        UR                  U5      n[        US   [        U5      SSS9  [        X5      nUR                  US5      U-
  nUS[         R                  " U5      -   -  n[         R                   " US-  SS	9S
-  n[        [         R"                  " US:  5      5        [        UR                  UR                  5      UR$                  SSS9  [        UR                  UR                  S5      UR&                  SSS9  g )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,    s2   
AsAAF
!QVVA
M<
6CQCKKCEEJJNwwvHHQKv!6TM6,FV#A1rvvf~%&Gvvgl+s2HBFF8d?#$CGGCEENCEEEBCGGCEE1%svvEFr   c            	      "   [         R                  " SSS5      n [         R                  " SU R                  S   45      nS H  n[        R
                  n[        5       [        l         [        [        [        XUS9n[        R
                  R                  5       nU[        l        [        UR                  5        US:X  a  [        U(       + U5        US:  a  [        SU;   U5        US:  d  M  [        SU;   U5        M     g ! U[        l        f = f)	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_verboser4    s     	Aq!A
!QWWQZ!AZZ
Z
	$GVQ7CC::&&(D#CJa<Hd#a<K4'.a<Nd*D1  $CJs   '2DD)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_unsafer4  rf   r   r   <module>r?     sf   
! ) ) * # 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 2e  s   C, ,C;:C;