From cf430a6cc0fcadb2bc49d6f2091916df99423c7d Mon Sep 17 00:00:00 2001 From: Ian Hawke Date: Wed, 27 Feb 2019 11:50:16 +0000 Subject: [PATCH 1/3] Updated WENO convergence plots --- higher-order/weno-converge-sine-rk4.pdf | Bin 0 -> 27316 bytes higher-order/weno-converge-sine.pdf | Bin 0 -> 29858 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 higher-order/weno-converge-sine-rk4.pdf create mode 100644 higher-order/weno-converge-sine.pdf diff --git a/higher-order/weno-converge-sine-rk4.pdf b/higher-order/weno-converge-sine-rk4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2811cef2af75af96d6137aeff3ff392649b74091 GIT binary patch literal 27316 zcmd`82RN1C|2U45y)rTq>e$IT!*LvYOIB7^vPEV_R!NePjLgVLwuV(!C1sSIJu(`E zkP=an-~AjZQ zP|@|U@UVf2tT$42arS_r)}N1CczD>jIm6Ja}*E>*gbMbVAL1-%I!h{uV&e>bp=%|39!JD3&g|oY>g`17DmCpv|>-E7v z!WuT#_7?Ik-k@J-FcB0Ih7=Qn#yAc&@z|i4j*YvEr<)ZZAw;7;B!sBCiGC0`8}KUI zI|35Hgq0lu4Ha#yT&w}f)oq+ld)UDc(9GyS4c$H5Y%H9}y;H^wo1NK|XolMj7CMg( zo%34sd&cp>f{gI+Gdc=$TILnHSh44FWKRiX>gQYwMp4z68?Z|>6f2rNDWC2a&s?FyEc?f zz@*jITy_GHUI|C{yj2ATPTRF15K? z;n#KCdOPu#dCrHHl_^`uUi+2Nke8S0el{@i^CBz%7wyn@Dds6AD_3qO_WEU8HqIIG zOhq?0GbdcsC8)6CKO7WDHj^I^bwp8vHFA6=FrQoZbDM(umsPhPVT{IM;nU-aPkDu$ z8HFQwGw(({vp6QJsdwR7rS1e0spFrg8zf0!^X3JUtF|h2Y4jp#g@$C{Y`Tr#s~=f5 zFYy={ey_!1{b zIb^O&jl1tH#!rb!u9+m?|Bn8CDFs6E^hY0qmY`Na5ni*RvwIrGTi*R(in%6~!C_(9 zGR;%}Omdz>EX-I=+h=@jf#T6G92FFCCFR81(Vz040%QyogB7KJe0Y_G zeMfsev11Z1$M>s?xOMqZutM)KM`FdW)eO~^HoO4h+Ar#5c)|Vn<|$!3-^nK}3B38W zbK<&);B|Xz4#vt)1_+7D!U)5SOz{+E@c4_@BwUW%3TLA+KliHO0Je_!sOAxy$}2Ae z*hK?Qgq9U{XQ|HM(OWwetLQ3G`pCis*&iuf_VAIVJJDb;9WCTVdX8paAUPFs4F7CQ z43#+gXd($$&84H&NfKjwi}(6PxtBFuh>@r>YD^lg{>9}LO7gx#A(HP4xCZFw0$%xbJRgQ}9N zl7!K&RJldq#e#vNtmQox3DoEH4pbibR3XiAyYbjT~ek8qOz%uD9tSF z>srt%JvdD4+c8Aov%t_@z^<#RLwxEq><8od7x}lO@0=NKvezE%6<2fcFrxZWIRBMg zO&MF8>2+uP(c;qtTdJQZzQh%;bMFfW{0LXwJ!_ZqMr_Yfi6@@1yyL}1K>n#WCtt$< z&3CdFJTuAX1zhu<1!fJi$|iP2-9IJs=&`SxKaY@^pqh+S{N-GE(+Po|^MjY@+7%5pXzE%W3{TOW(O;&*bLlxM3gs5vgJOF}izL3bm>n~#36<$dA7542%g z2B#uw+df+vt!QfnWQcUf9ujLNW_3T=zkJEn;e}w`AT?`B+_|O~4_UnB@infDn6;9i z${w;d^?o~>^4hcZe11U3>bJM`-@f4sQ=inPcOqgtkl9ascJi0SC^bH|Tx5{PilW@L zW}HmylFWIZl^-9SFM9gNGwYx2%^ip?TIB<21{l78NeVqUut@{%GZuZKvPm8SJ!sG<9&y z!jU+oq4U2mD)OW;Yq|1vqllnY9_I^R8w^y!wXx32g-$$p@?pWTg%Ntmi((u{FaN5y z%~sM?7v;AQ8HHO$2Yzn~Q)>wrQ#^g&qc<~T;#a~$#1e0?1jQ)B{d?NVj0{!8)$t}8 z<7a;=sMTOo+2nFFlx=cc z;vvsB%%P ztpz?A*@RSoXkFs|PPXx@E=H-g%>KOLkC%=3QXVsDU(!=DWS@Ow)OIHLnLDTM8#f;5 z<`&*A%NKhJ!o=DlQ*7a+h=^%BESqgIi4=Pu38(XnNV7hr{S%Xdz9r*dx=P<)R^1%$ z<-2K|Z?bSrDy+F}I$v;>A~W(`4y^O7Rmc*|tS+TqiMO-WA2nVSBSM%<^qCV8_i^AY z`gvXZHA1a{uBi)g!F|$pRn=a?lP_C?)W;c{j@HM_A(5;E81`8Rbl)k zTl>a^k4bbf$K9nA4N=_UL0M)$n&GuK`d^mKm7n;;G{VBl{4ZF@%}V5dn@6#2(-`rL z0S`e)G?y<=#(s36)J3av%~N&e3WC~9DdY0J!{WT^NbjQhlm{$>p8la^mxC%&$Qe73 z`==|GJKe)w+8?nS#(fC-p8j@r6)#1FxoQW}5J-cdYR0 zWV_rPNzzBAxYQQ0mF~TcY{btAt-hcO|QlX^0GT6uzWylN8O0ZiC6`oD6iZiJqNG z%p{TT@eR~*)m~D(Q1(d>@*5XDbH1I z{c=r8 zoriPplc65|p?%&IlQ~U)n%98Gq1|Uvb;@k9DU-VXEZ-zk@oWp%l3A{9Ounw)={ft= z+=>?~)X~l-ushHSG8%V7E3vJcfmFmJh_@9W-nR1Zm9Erl`{m?#Xo6UZkk=xB<<5P4 z>bAZ9LA}*eoP5dMDn+3}NF|?7_YU9e_0((PI@vVzJ@&b4_Z!x#r#*vbtLi#TmVR}G zu_f&QAY{7k20#>CWXohq#Yn`|!YLK}QUjS@UR#bG`)bV_zw~QX8rgUvKs5~Su&`%R zNsc7Uo`-C$bWNIL}kDWEy;9K?_)Pp6q7c? zhwtoKw?n3my*n>?nEj+5T$zz>Ot(Wevh?J=`BU=W_Ld(gc`kQGb)uA4vftBJOURk2 zm4@27Qg2yPduH|(s(R)anG{{wTf`z=3YdQb}1W%fo_YN_PjrWgW4mHqFIbI&D370-JvKEh+O0T2^&EG!1x8!>sJDut6luNwC zB$=`jMH6M|VFp)jd3vUoMPwY{W7Ap_6+x?VjP2u28R)DqS^kygxB8PHM^86>2XaA9 zk=>9>RCEiqP@)fx!;ix;2CvW}BKmM7@;F=sseKeNh7=JYLAh6&2V%_=!tkRlNV%RJ zaH}vkcCQhKl^nl^J!y}pAx68n10=gvh(xx^E2ZO)A`}pm(^5oCq~@yveraAu<6l3O zI;QM;h22;t#+dF#XpI_Wah%IL6=gXoil)0On?WdB$S2`^2XQ{0zp@>QyO3}^My&#HeZC~1%AyOjOVv9#;@ z40}Y7nkqL>qQCBuwFi7AMW1bA;z-hR-E<{{9)w6*^=ujp064Q zQm}$a1D|qd)z4EK@+4`G^QBH8rFrwep47bXsg$i_>~^;PO3LcU^@Mqjhp#hwrVO~X zlOlR@qbnrWuBCtZMG$$*2UU#S-xGhBYe#0AL+ReO^d^%g(VR!b{H}{C4^z)$l=btljL2HKn|k}bH0TBHGqj>!&Yr-Oh?l|~ zy}9?jYrs<^9AJuWHP5_O93Nfpb})}ThRE2wZ;C}bJdi)Gm(1gKZ(UW(n>!QV&S4aU z=ilU2d0(KMRx5fwne8WV{=WR7mIZYQFICPbpL6!n+ENqgB&A-D7nicUP%gWcZo|L4 z(%AlWm4e~$$s;?^Z?~!+cIzIf5g|uc0|U(Pm_zHh;;S_e-_A9&JKcMq)M)MrV^j)U zK%Y^Af2u$-I2`A@5tmq_4?jsU_~~}jFQlq^YH*idIl<+UFJ~`zs;+!H>x*}1)t7jf zx|5Z|a0du?s|lh|Vq5rCNk`4C9!~mtg8n2he@?&u`dHIoYPCGxReV@-fs&LADP?ms zXGk=`I%te_KHI=Lv?n@UIa0BXW|S|Z=Kg%;xNzBF|TkpRrC|Ai9 z4Od3IjB+j#mFOJYjZnU3s(uGlyc8Iw2 zgIj5(y7S`GPbL&;ec~p?P9(Bq3GO52#CUbJWP^BhLxUrXe1{L|S6x+oesBIHuf*}P zR|OuAF#*gZ`?2P=G57ZN*}34=N>eY~R<8fXa4Sy$_N#5c_Sp!c@n{k62VzaBv*PvF zT~);z_Q+nn_l~~m3tRs?VW#_`$)CwQ#cebmKTjKc_d-6FbWZ2&p3fXC&ZcZi4;{58 z$R5ZXi9uOr9jxmhyWSnsMoXVay!h(CN<|oRVMN`BwCZ7*=h*b=6(+`t%Wrm=n%(N5 z=&d?BN))9BL_)D194V>|7ZurKx$g?Sg3v9}(D-Jeea-l#vITAxx0>9|!L1W-ij1me zhp~67*NJZB3KX&&h@&DAe7ayp9`X;i#N>RzCuOVi!z$&4n2u7`HQ|?120Y+S2@Exn z7mY$?8ryPAEzskm8vDI?W})_ zwb*iPB5Q&mRFI8l2M~9w>>xz9!U#+Tx>^_|Fd5`kKC2L)PxGicHuv-%yGCh1Zm}$} z7cXJ{L!x~hM8ZyLRTR=DWNi)JlcLUOx-mk}fD>8o?c#JURMy+adwj7Ib?2wJw~x(s zuWwu?^DP>2hLPFZV{SR0+P6n{!-t*fyf-y3AR$oJ{|O*U=QVe5;XR?fW+ z7a6`46g{|`Js$MB%@lQu@KZkP>?%>dyLiwJnC@0jK_a&4)5jmtDgbwh6cNQ(+xb~c zdvkX4FDI^)EO}9Ry0~QZ#<&pirkJ~YT5Qs4mLZQr#+|K2xsNCb#};ufy(0f|A?ySF z(r`~gse(wN9oC-$b)ZCc?|&a(Xl@sLtSJ?#SoP%lRfn@V;^d01%4g=U zdRWw#yi~~QAw)|NI6TC=KjQlxW2fT595Ayl?7c`ftHN4u#fxczkgGZiJCJ9$%9GgE z4PWURaE`!96(M`bpT{=+aD3@S7TB>NSFI|)3UNB5?ubQj2w@tfK(Ou?;-pM-bcM1` zMCwdtk+YfSr4PQkcNUjOj%b}bcUG#knRzF;cCD76w+eEl=t^kX6y5dZ$mohlKNi2} z@LJ1f`hM(z3!Y#|A-8V9AzqH0p+36>xX<2n4ek>H{XAu{2i#Z~<&Gh4cxxi=WR_+9>b}TV{$oN@I!O`FHcYh8_9*B zY+fbzH^-Zv|B`l4y?bTNLsg%MsKBvVa?Gt(k=tJ&`n9&hyFO*xThBii-f6iqcl7m3 z@lc1CN+%l=o}X3}7(>)a)&Y{{ccNRDM^Fyz!LL`nS8Ql`G#=RgW4mJwMSkS zn@@8T_<8GQ)#h{czYkxNu6Jh&WUS`2s}cS_afj2pI!kF#%J%gG6Y2zem3aDu%d_@v z&0}iQ0tPSMe}@f>Fi6OsF$lN~_iFGFibOiuC^}f2zMR!i|LsG6R5qdMWP?qX*q-l6 zN1hWLOKx$z4g2+Siai%elXHLS7;m{YgV)E#lckl9Q&o{BOG;N;>D#8CCoOv2K;CJU z@JZO0t*Nxk>{muemHPhUfJ4$1<#OyZe(v+4=X~AfpClVmH|8Hb%FtCsu9^9gUadc2 zIr(aGXLs}G(ZnU@i);9(cjxhUn3Ub>K-)zLN>mq!68IjvoSb0t56THRQ6jw|#99Pe zE(vf_L?^HcDNtC!oh%)*%xx`+t&Ly^SXC#U+cMqt9bnnDwu9KZ4A4N^0n6a^Q(f0f zZ8x4?Nb@K;^XcimAYT3=L0NerVWUnp|8DNr*|lQ^hnBdD<)x!$lUsD^ml#Xw+XV|% z+G)!L$qBXhNi8FJ892JzyC=oHEfS>(3TZU?7`;hi@rVoGnt8`*UapZ~L5|SIUOzy? z^(Qd$PqD^>n)gHT4}y|z$P;}q4CwJFt@^>LZuq_^=*tlc#-7U>Y3TeQ z+XsPcZn(yLZhMH(y^`n<8(* zzZ|Rp6Bj&tyg`d5fq!KFrT&Arb4mN3c|FS*ZSrJc#L_Sv?cA@Yk!Sk&;1iN_thRf; zW}yWxGfxx9Sdn9V&w8sj49t2mqY3@`9JFkYBl(%mHr5g8diK9es@2N5MlpM`o$6&J zZLiJ#tef!-*Mc}T*maI(eB{YT$wd=p-qFsCV6FF`YUWI}(C0iuxpGqNb)WmbwgVy( zjCUll*(wGp&5iXG{3NT7TWgf`4&0HXp>uuuT46P1W(+gZSy@`YuzbqBgFAk0Rc zc>9?#RaGFTt7rbt4o=fbKBYvfw!pV%3(Srpl%?`G-;cb|sx)(Dq`R;KJiFDaKrY9Y z*vz%x?nSLY3R5c7Sj9+R#>ck3QZ^1@@Cir^y-f z==WT*PCN0$bIrl&m4pTDn!Mr5I8vYd#x}kwHED5m>N26H#T*p(Jh^9@l3{85a~Vk` z#U1_c%v}%goC;vXm`~bA96)=#4a^aWm%mic{Wim}X%sGw@HwI*PsmP1{r2CW(O8O|}xV|gx_39C!>$auP zOu)adDRXTvo;k-Uqkx(FidePI$n12N$1j$sW$|<${7V|d=BbmnaJRwb6@jFkGZrU2 zbwREUNaC@xaD!5c++kp$;}VRNoI(B!lrbbJNiM8tZ)r ziNJ)dT%4RNV8V7ju68!gFtD11eQn%aV8SlWAp6F{%LN8(B4JyQ$^-t}p95v?_TJ>e z?l$K@ZBYyu8YYT`2`j-s$VFHUh5_w0VZvH45E~NKfr)_%1~4r6Zvn%CYF01=903ys zz1YHpPlFdUxv)J*?t#OEoxzac2|xr!0(gLEqVPGGuon!806jZ-I(pc~F|3?)GX9EpGliin~BVXz`F1QPg)K&lc{MbXCH%FW)@ z!^I5-M!*pbD%P;@aI?o{HwnQ3tdJfA|MLWzs$2XX35f=9X<9e|Wd2SCxv;LMr3Wrq z3`!Y8ZRAg_Pnm(ewTB(R4cc6Fpk=lZPTjm&$hliVX;fI?{{jhTu19U`PuqEb24Ix+ zPXv)DQCybPX?HM}0QueFyB$=JUIwz+?5*USPdnPc;2^Wh!W#!541p2>v#0A}<8%TV zcRlxQ8_9$X{{XfLj}56|0uzP9|Nn83|4;it0savI^Cuz-hlv4)izrHz9E*kn28F|r zfLBq#PXt|P04MZ0R38OQO57cVf$IOai+tmA6sQYbP#+r?8ifF?4G}<01YDpatQZV~ z0qWSir0NtVSagzoS5WoNkN)C;Q25oRe z*#Hi@<2Vf(Nd$UxH8=;0uT+HeEP=fOul#!tu&)o`Cpa^98|$dk1|$ys>dXn2UnFRTOxg zaXbL=!L|zvc4!=5fXz>I)3w198+V8(VBX1bcj$T3g`4a3&!IYhE{HFnS%vPVe>S~t zvw|TZDGBPW%QFy9#=Y5q5z6X~NY$4ar8_({FJIqy_HP z9tN<(J^c|x06koRGhi3!i5!S8un*wMAlV6~2KVd+R?hm9JK&+;PdMo*@_SSuP+?%h z#r5%9F8>}D62Cx3|@1o4PGkJn4kj}OiKH|jkhYhH_v>VjVcuAd-@_X z(X))ImZe#`-A=ST&4-1^=W~--oLH~bpxgAL_tF+}EOWz_nqO6GQDkE1QmqoNMg6Mi zW3$F@U&I*GW+KBV4~S`;HWWP~SW=)N;Kp)SGp5-u{YpCT$~4&%{d%Gtj{GCuF+(4* z(@!``#xnZsnU?ZH@2>jxhSxh$5gL69@40pyMwejj$ZftrFky4xE&cJ1=9i>gw@wWn z#yn+dK((^*sDI>JbSL_*$arQiPyfAW(rY%Wmg5nrKJM+K3B(2Yk!7>4PYnx`qCDc+ z?2y?PsjlU5Km7!2JKSBdgtQFMmMGwN4fdc2BDHn0(A5`r@FKQ8A@xH7eqXkL%5)Hm z6u)U{A@y+Hx8hnkn^d`hluPzE2c>46RZE2IOn{J|d8F)FBhtu&8Bc_YBL?p*e{^2> zHKMMf!Jhh}D(#hL%e(un({9E6cf)DtE2@Kqs4mEwCQqkLeZu!F4CRl~_}WfeRupkH zNLe>fv6ITqb)t0AEBxhr(}IuxFM@+Eg%21gwv< z{HROw1q%jAs?2LH1Wo1!<0NZks5Ut(e#IM1ADM5u4J{-GDbH%2e ztI>FNhK4HYaJOZ{q5wyJ1ybSqac5p5p?x7)mPH}NVdtg3wwl+j5KG-5w=~edc7DZt zSXvCjsW0{5TbAt9sbeE{)q!#7{Wj>VI#}?2>)cR!LTie|fYRs-Vm>~>lGi@Gy?Heh z?T3GtBl3CNW1A^Tx*q0-b=p03VNbj@bWZ6~Fb_O2w7M@&b^L>$z#F}icdjI+@9viy zhwl4MG>N~+E$k6Cl`m|{+x|SC7^5U8wx+`SCTrEAX0Fxm=}{vsW?uRap63-KT0Z_P zA2zG&@?XPOqezt9VIrZmzpGI8HY*$*_je_~qTQ1*>LdA9zkRj*D_xJkka=OJ|COlGhu+{R4=aG1}e2IBRTDNZ+G0$2{=`#$=tU5xtu>`Uu1?A0OJzbWw;&rck zln{o7c)}{ZJ~A{kuxU~=84vP|p19y|dD-MfS^kAz{%P3e@6x651O@&65jBmMINy3@{t!T`XDjacaBzhT+{~ zQyxa5BP=8A&3ffSh6~*Vx(KpgtoH~rNA3sJ#Y>(|)OfOx%=DOy<-I}A{R5U2MMQL8 zXJSy46X5b6H~uj|AIn4&Qo{tbAMQW zOdjfn@9(prCaN*&{hEQjaOVE-++~hE(roO9B)Dfj%2b351=>2OJkNHaP}VOb3)Sz= zuY2)4@8saEo5Q0s4;G9XME!pZ>xHWEH$6Eg-#zV=$?LC@>T_>WB*L~sPt}W|_BMm} z$A_X5Csp`o?mzufefnU{yDzSUzRF3aE)<&FWKuM~?rwc7Fb(E?+Kax17t=;Bif0n2 z?ZD8R-O7JWSp_F2d&ma-YsR8+vXNZ)kCg`|hxFCsfz1!i@>|j}{?h&Ft196cNGYWBj&laach}nBXW3QThM! zBLAPZ2g)$eCPhHr4;lnG#gJm;Xy7hEi2`L64SWL-j@$krF&JPNVg49Y8z#dJ_dn(Y z^w~x`%+01F6%2A=_i9*r|9fFdu3f?nsaXlMY52+%)8zzP)s zaR$g%LIWQr^ce=Q9~ziJA^<|DPZXdwq+&qk5=50v^Y%ZU!%cl`^!I<%7i18j0iA!- z6ZnKMfTj@LF&IF1Ku1x)ACQsrXC#1~DA3{203(QBL?G(G0mXo}FM00tils9aEe zTzfd623CX|`Wy}B4r+s=3iJ*%ZZu@jL*^-wJ3g&&E53qB+B4Cn}H^u)z5y9lYKSy~j(ASUi*_TU4@E>Iay$M#o!W!eKoEgS@L)lzl zpMFv2{R0jPSJ{p;&xS4C{q~LE1ByT^R@%i(eQET2eJ@ArSI*MMt5aHgKf@Nz+t(+h zU9EUm@N=4N`4=AA5h?etGz6}x-5~_nX$wM1v8s_)a==iNCSodzqr|4>8b5R!z4%&q zIljnkdG$E)|uw&OJy^Tq*wS5Xq_2>!8h| zrDxpYbhgPd+eUJJf*YLgndsPah`D6XRD#1{Tl3+uYC~tk8L|qU5ubbKwd?Qgp_WlC zq7iPr6Dr&Al~K#qVLq!!>x@%|N5S~>lAQ6AQFqT!8+ShBs8T4YEW*aSheqK`k1RWf zk#u(+&JKtjWm>U6JKT1-gF9=+LFHbn=2xdII|Lt@=K+QCQ2P9(;+ZSga*8{Z_OEdt z;LUWH$MYF<-+MyROSk$UmeAk;d-@4RZA$9BggGKZoni%D4YT5;E%d!htg}7gk*7uq z4fqlj6BFMNow}tx62zw`dNwX+8m3mG-U>d{Ek*M--s~>E+e%o&b}olJ zdswFLZPhKdZzrkF-Zf8;ild?h32pD>=fB0Ar60I_?#(q${FI8-d#aa-gMAysvpZ=b zLp5)E?W>_0nW!0hik$Yd!_P=J7*grNSN^Dy{0i~y*?d#R(46~$YQLng4kL;x*NcAN zeO7-Fu<+IIkO~KO+}*Ja66{i&*MZ>iXS5(Oa>b8ane_T4+q8ur$ClO@!>VbB$r|-- zLX?sTPUNzb%*@`A7aomIlr5oFn{yj@a=QhiI3yg8mrhnSXD|O+&`Y?aIl{Q-wEXxf zPuWR(J(OFYtbET+!9#6U^X!wj#N9@f&v)CY?bQwCcUVlj^?E>#warvf(ov16gOfg*V32$kVDvLBEm?PI zt&sEj{YLidjx9W&8A|FRp6c<=kQt7@_rBOz+$(?e<&H<-=^%}ewM z?_m*`=~_8;XK8VT1eymIWSxPFELHT%PX`Gr%7hjM$~Sn;{kWU({8>Uq=f?0!&H3tuB| z!r3L6ioBz$IXxrxx+hN-G_{!*7sT}SaQY~jmkFLAtB)~?5zEqy<%?4=bt_FiHS_$4 zt?2MW_cg<%x1nlRTASUlU0=LD^{@8x?QvK3d=YoHD^>h?QB*8t!4&t$DN^REWn5UQ z^J2LZWgK}2bx{c&T}R6noEwh#hNi-Gj;q8J_487Ho1`Z!i06LWZ_9F@_tTYQQul*H zj*!GJ=(6;V@J(?xRtTNid#tl%{-vjtWzQX1w^dE^JmOoCMK=WBworUG8$R~xyX5RD z?S=I8iyw@K`F7y5-TFWfKtJBHuA?OmfZgu0S9&04|GT$8Bxm~?pR5^MblQgf3g93e zdF1izGWAUb4*64=UoHeS^WuBV{{u=N;Ahn&wfbs|<1(xfI zf)P*m!9MPD;e!dhMo({YRlXh`0vUlxc`|l8pt?B>_}`AVA%U}dGpgw0621*^%0YMX zNORQ$>-34aK0bhI(Q9sVDZKhe2%3hd_K1QAVZXK&6`HW6Mw&8C@;e9;=_sn&l%nEi zWw(CBVFC%}Y~md?>X43?lo=cM#@*r)SeE394L&)eVY6nX_e4>MKWgF>=JM;~TuTYp z=Jy%$Xa~C2uZTQxoM)vqn^bbCy?yRSn4~wRN3dzSB*%xZU%57OHE7a;8i4vUWFYYgFdrTHI1MkX*XY%a-asM-^{X+cA z#i%(mH?0%xJCF+UfN$uJ|BY0LZ9Z1V+`C`PXiYAV5&AXfYglM#p_MFynnXh`Ji7Yv@_Sl&V=P6IzjB0HNuKeN6V)(i8u4rLX%_+1w zTW^ZUjLpxt6@vKQl1fci9opi!p7GO?_0{O#n?t%{2R_6wFd8?^%NqNZ2uRem&r#m>wi!!0Ej97@)BadVM{A+bKlc-DIB2#CNMT*3HOkqfiP?xW~e#Lnb zo5GQE@OhF%4R7azOAR-Yd3ybo7OGP@tQr^&RC7skWebQ4v&EiFr+RwvG>>b?4n&5$ zEW6Lb`t98%0I&Ar^ znQ!)&MSt@VdT01!+VHgPL%edk1*W)iVzs3~cE-$1i;VmC$k&u-$w}jf->L?^XeNDM zf@T#|Kw_kC_f8`(pH8bI5lZ$ZO7p$oN%nx>?A4u??;{sV-%`i>+&5z|xyVi!M^>2p z@MB+co+5tc;+}a5%k%M1ZTe>|mr`dAon(BRT_IUnNO}={?hg5ywNGS`UV%4Mx_;$O)aqI*Q^{Y z%!!>BsfGhn2wW;H4}P3WUb)ppuf^tV8X-V!wa;DOv-;=}XYDH=gYOB6JLE)%+!mLo zLPXngClH=8_TlOppE-)@zT;kNtJ*1-xj^6RZ!c;h_2k)7lU?+HlabY(^L%8?(MJ`< ztaTLz6UlfIr#zN(-rv%?qhCd-{Dk~P-6QF8`U8?~+*!7jDv`$IhYQseN#YXWCDkLY zD%Y*81sZBnuH<*Ju#J@19Xq1cSkhWNUn3F9IRE|d$iU*_O77g^car&Y`WgR{47d+= z$E-;B)+|enXt_uQb|@SEIa6NHK2p~-nU4ie*3PAP4CWIyaS}?@Eh&>wJI}ac2zmYc z`>7s8p1z)5lbQdKpjMscge!5w@h54KvlRy}SSDZQgj?yWTMXYdS~z?_^E#?}vR%G> ztU|N}ME14!8c1#-Zs^+BR9)p ze>^$4GJiddAJbKvKQKAO=jTIM!fsO6YSHCTkW-G7FScW(|0*&{{ z?k(4)tA~{DOBI~?S=Mf9HTPx7%GPSU=rgTfzj&>~&maA79jVIqi-w%OX?944hxbFz z!_Vm6ak0(@B6E#^52ddeqP?)Hu0Hf+IqB)VX?}{XIuv)Mf;8*!o+^G|&KSdlRnNdK z&5h5QN~={q8eD0(Icr3=B6$-8Q%+23`qg=qPaZ8)tCXVD65Go+f1ad{@S*nV?2iuz z@=x7WE-;}EWw0+0oMPvA@$SUyzI%^5hYw6gQ}sH0j2JyopFdB(kEW+Y(Xsrr0q;mp zLb(3ra-`gnLIuXuZc`-bMJ91rPhp<{*s}S@k;6$yp}3%fVQ$eN%w+S zX4Ytw?OCaT?#OGGc@LsnSx4~DSCkJLaePgMYnsZM&k?Bv=DiL@rpmXSxn3YPX53Xp z?ZQZ@d}o3pb|9%;ZYYmHlxyC$B>BB>T5Rd(%g4^}sn(baI@Bk0>zONRCGjz&jCW_< z5W86vX`9q0(Bl=Fdg!&Tv&)&+wXn!?`Sde+^*+J8fb#dz{lc1ORS`9QLVTb-Yk zR^?z)=yGL`{?fSsr$J`@0O`bUFpK9?s^OoyULR=U;1E9U$jHKK+Df6`xZlGzhlr>u zc4GOq&4i&$$ji8RfqPP%Uzqe*_@3V8Eq&2}sVS_PUs6xtC#y?t>gldJ#(I=DzS!bP z=pv6Z$u+yi*C|d!KP6QS(!;D>a{Es0iT21i>U8YJ=2PvZN{MPG$Xh#aiu@eZ=2DaC zXI)Y9Ahd}It1>`w#d;s(%E#*y)l?^@j<4cClI%mwb#Y5(JtB@>lyH)1_aS)1L;Zyb zPrSreM%%09ar6^|-rj{IhFCV`+^kxBSDyriguVI>a<}%IQrghOKRJ_KM*hX4_0o;L z{=&!J)zKL0JNAxN=Xpz>yRwVP2j4U5m z*^N$2@SG9N==>7T?0f zdbY&3wx?+V#Z?&hEo_c9w&1(raF1@dTtMI`#${#-d)T?zK)IBEvonEjNZ97Ar-kG1 zq)U+h2y$G2{~rW~K%ylaBvm?Y);u1 zfP=OFJ9vge3c}%kKX`@$A(M?z7!*DM0UdH&7zKndpz`10ru9J2M%kt|JA}+|b$^%t z37>6*&Tyd-(2ocdTmlyqLc@hN01sn8UjMf#0lMP)_#JWqtK@GS21=g$jVSr=JMMks8EOp0fHv-soq$6EltXoJ z@1Q^E8Am8k4iO8gj|Sx^5PL)chdxBGjWP%r=ricT^}P{_+@Kl`i*;!K*8(^Y2S8Na zm~~Nr1Qaa8!G=WQsE(s5K>QE95Mm&xhC>t(0BQ?ee+UH-g>Z!GZ^D&)g9sb_L7!nk zU=5^?gGd_~U}HA^4D@>{x4r+b5o;S9e+lw`F^PYpXPa%<^{pEh90PGP3lOQrZG^wY z04`Vn%5A~at(W7n_`%}A?aMgPA-W!E0|EksIH64x$Otg6xF=kaKkn(TECOL)T;ok5 z3B*8gmB3e${vLi^Hi2mHdO65s1dAAY{=2(@Y5XfJ|C_%9jox}FMJi6snN5OHal(sX zP!{jYonBv7>#_2+DT(@Xd-lVIv+4>gr_x?K6pBwLz80UjTk5b{7G-u*Ywg0&$nC{b zl`WqNPMIAtc9Idde?c!vovzB^AmwEv*<5g1Ue1d{ma`1X zV@-uxT+Cv(SqzKc`4AtBXNkQKo0>m9QYTeh82#AjzIoHoo-Y5klygY4vu8Zb@N`uz z$T-~(Pu}fub3Q|nL8u^gOWhk5z%nFNe~p>UOyWriYwGgo$@osnYS)WF8Xn^Lht<08 zo~)jdrA^IzPU+5*xrgbF{R7tpV#}gyZweLgV;)@R66cLk_(JNWBz%iWrPZjP=v4Tv zm*1royn;^WnaO=5nKH8AEE&^p@#eRVA#Xf0YNW|d5I=&-MBQMY;=0)@wT6G&xHQya zU;a_c3zy2;RIB_e^O!#7dpauC(R;d`P*rw0`5{R$e!n~oX(Bv4aMe4?ov#~zPJJMZ zCDSmU*7N3NjRB02=7-PvQR?ZJ>n~DDUN;$;yvT3vli3zve)mw3up?W9v|arE+!sHS z3Lox!fIN9AJKalL`kdf5m_nbF4CCBt-#Z;uBP%%bkE4|x<6^x+1%oWHn)ZFth5INM zTf*=`eADi`X z^mVnpz@x0Vge79iv-X2`PpJ0j`>r{C7vhM5Q+|CXMNE~9_k{6K;Nhu*3rPmO@F^yp z;z_=2(IQo!L7$l+53|_W;8BrT_mE23+~Jvmqn^u=DIG~d#`lx`e&!^|2wr*oT0RmE ze>TEPJEZKSO0zsdb1>gw$ds|1Hv%^N>KD~{GsD3dp;)PSy56wv&lhP~1BjXLe#|l# zJU3I|*tnNjiZew>=l<>by&bl~d}G7cd#SG0NL_A99Gfl{eWcQO;6c@Vgq2&Wo5}2G z&C=p3LHbL}w>uDMw~iVFNFdovAgL$`IuJ@z@B=P)bC$1It#f5fBTr3flJpK=U7)m8 zRI(gn z_fq}xv<@#`&hwQtz32A4$h5@ow&@Ww75NH@{=IQ0nYyc5eq5cFnmITsBS0rCx&tzs zo$8x4a(ADtDmh4e!R=~)Qpf&HIRnQez|kgfP5~xtY2jvV2~=rF;dZij_H_S0%{>G8 zH-cEOS0fN0n;qny?2vl~PGjI8f{xz&&vMTo9CxKXW7adyH|@=v!!CccXMp(T+%xd{ zC-)3WQ~D3NXa5P+4efb-CjO)Pj0CcOx9T&_+w)s_#^Ln;4(0iGV%dg<1Eph;|INvQ z^qIeJkp2l>e@k#r>q-xLy%?9H1VpqL&>_J^4$0gN6$|4RN1f~HdH&P90D5L zaf&!j?*!@-bcfQ|Hu~K_aHBuyjzji0;<(TMs)zq;D&e~Q0bvJ0gqxzj_jT=g1L6&6 zH{QV=#{?Us+Ccfw9cr*%d22_%JNU~>8!i6u)PGS_|JNw>Utoe1>HjfYe-vokUcccR z&;q1`HrhX%I!-|Vuj~6d*qXPhty>Zwz&ib{DJz4e_FH{chRoyjE|tNeTJQbu-nwOL zMXY}dzZ|H(k-PlocLap3EWmd#fQG_y$c<`1-uzB+{-@d|)q0cA`#UZK=x?O|7H-zT zHNZag+e**?h;5e%xX(7IwsFE1B?OYFp?@0}?e~1ZQQ{hecjhOZsd7iutUWU9-$Zrlwgs z=GztBS*3n$|A(HE!!K@W3--2oisiMxa<%dZFQ(7w?w$0`yg4O05-ang$cSB8hIMaY zkRPK0&q+Q6amXlz@ax(&+O$*MHHU6T_*)q(tp2M|;K=g-c`9u7Wh=ONf&?U()!?a=;VwhY^Jpz|T2&*t<9@LO+~wSWz4a2j3};L}CyK6gczA z4@dCA;k-E4{?ZZwM9gj0YSEwiHHKd=bthlXt$SPuwbEWYbyqw5#L@09XZ@m23{bGeOnm{9G~4@h6G-- zZDrsTIhcnnZNZm$KzrZTGBlJzv9$~c56FSAr5+p$onGEvh7tn~fGzb9;BPzq;K+aL zfv;Qx3GrLo!jWRo5z8(8!I4tB6mHb0z4D#P`F(S|z73lBJT7YB3pv>)UW!QiC9u5u<|5FdBmjA#k z27PhEw*JJh|IRNKaNxFjAQAi@Jiw82$VIgUJ_HH@`Lwo{ffM1|VF8DYAXQ;&Jp>jU zci2`2zA|=uJtX-4!0q*ra7b6(+7@Ws|IidTB7lCqwH^TFpS6z=flifgs|U`KZ0B7B zTI`>>1eWZ-V*sc5KQzF=|Dins1APU;wsA4g>GJJmSYSJED+6a%w(nO6G3ey@_IhHF z0}=ZB!)pjEbSPtM84`$%?PGv%{Q!p0_Ihw&TWl)>YkE5$AQ58!>_bT84r3t2z|pL2 z{ek7SXPIecQUebb}(`>vorDdiTU^Tz(gDhW~Np~ zx9#15ap99exuEPYZV;H4kDUj?!^aDS&!!CT?DCU#s%Fmiu1+QZG2zq#kpE6hIDLPi zBpk4xkV{(G0K@`uNZJ6@6gM-mHwB0XnUO7)d)lJ*oE=py zLDReZ_jxGdS04nnE=X`Z=i_>tCG!!hOJXKWB$4=KCC<#Fxd|(SqOy@Fy)E|oAgM$` zbjN5Ur-5Xu*gc=tlNpn-u^mZn_oJ^l5q%dSmC$UtyrwU4~ zk*}6l*v^oZVB>^*o|%^>92{$#U9;17s6$2Da7NuSvJ2>8%QRItERQ}t`Jkb7^e5Pf4`3=v}mw{)EP! zcr_npVsgx7Ra~@B?7CLfM7CJd!m>Z81-&9Z>Y}QMBvjZx^ON+xsllEfpS>dgidOBb z3@5PZjeE4AtJ?uvn3jD&sYE zYh5jm{|c@32oLYM-nJ-26d^}@ZHehIv~F>LkAs;YAJ20$>GXXr6aVNVkc#RSo6b?T zk~l$)P}y_5f`jQ$XpH2xVSlJA5oJ4zj8sslA6P}_wZSclcQ=YDj9=uLQp6D3(85B; z`O9*G4C3-s8-xYx%yD?nt<~%XN$XNgF_LzR@P|gSHKS)s&J!KX!da+?U*X#p@N_$> zcdrGT_hgk_+11VdK+Td=rV}i!hFv7-bTvV&ca5-BBVUa9Gm z0tJ@BdLyb$v*%vRVLCkL6M8*MR7$UR!@dU5bUF~+W^%L|6Y*wH=9u2VCOQuk^T2mRo2;ADV{s^pn_F>&Cw+m-ylO-$X*F-&uEUUKf&E z^r-yvJp6w0b9d$9^kCx5xE7KEJ6?++31t=WF5d5h-(hDrP$DkKGlExlXQ;0@Sf0XM@0!Hj{&yZ zGApLeJ#AXz_3e@+vL08>J6W)MKSX!V%uYThWJm8?FA{m)9prXPf{NyzuNxCN+TgK& zdxTFmOy=(Bf;6#IdrG1jK~M;jZuM#wLDJW%JGG>1{=}e-C<(DdJn8g+YV=B(L^UfV zsh1-?I?k424kiX4!!8GHSA6lj$1L>h>Q@s{)%!N@A_FD|o*bC_7@*U~bXjH8FRh;} zI#s!G?I=Vr#@ZF>zrl%!wW=02xcscnD=SjK(s;ce{MZpkf4{_NC;y)JiBDjSXnDt- z^wXE`$n4Mc9dWam9wQaKS@M%4L&f*cK?=1Z6 zOgE}u^yLL!mWD-R*5=)H{jJEkQXdoQ%||w|LJ!ILQ_^|HYs7T@cu#c8|d2oVE73VC{3=+UKUV&!S@sK4S|;V+%k5_z(O6 zmB3rzQDtnw5%KnMQR`_@Yim&}Pyqe|e?XU0b*gV4@1#$@s!jcdM;;kr3)cgG=pjEe zLWF(-S7g9kypW%2BG*N=8!!a?n`#49x#fh$g|Y5~r4NEE*=Jfn%4E0RNtVZ%8zEz2 zE(=Zuw{Y3(++do^&Z8g+{%jMNt|>wq%Mv#r|J~y z?uQG8^bV{SvTb7LM1FV%8eT97IszHArL{{i4)^;)7RzI~QS;G0({jbHO)Ws*v<-%% zDou^7`osrL2w65XxpAy?_4~^&lJrQo$0c+;;ZlE1&`)=8Cj7Qa=s^mny41g^2>w-( z{jcgE59eg9 z4`^m{-jlDB3E&xWbxq6WZ6tH*m^~}qEm(PRV`M=PPrSH&@!)dl=V>Y4LM9fuwQu5X z+>_s8YEQ4fyOC_hNB0Lre>FM&8=}0h-|$rEe~H@+!a;qT!7Om;{kf1zQTYQ33Yyy{ z!mEn>Emw$VKa^jybgR?Z$y0gavzAO4tL!W&t_7jz_s=!>(#zTUWU{MfyY|i&={yA` z*&o1y+dUUi$NB!juMsW8NL;9B+l99=sipU;?3ISkU1c@`xbO@lo<1&N;%AfxyO+18 zRZ~p6`UYb@_ODCBA{hc-TdzAFb`G;2d`YbpzvO?Cxv+VLlqN;i@CV4?2GvC%15A-$ zjRa^!1wk_>28!1+L)2bmqQmaIH>b6j$CkOIlwF^eS~4nK$`zK;_m^`O_HL_07jeFI zG52w_{B-5c71FzwvSpzwgQDB$$!nx3e*g(??_C5WFxNk*r3|}*!iBMM7J4E=_t=(m zdx}Z_+q*#IJS{Grr8mA*M4g{w(F`uV3#|<&rZ5lP)+!1Zy<$UEz@Ap@9;nwcgk2Gm zPLkHk!y7V6Y$`2oWvXkpLKw;;k^gC1!C8)X@i13r#8!vwi6@!UeN+OmZbQs_4I~O$ z)q=$5Y8m{YM?RfbZo14ajKtkI5Nx#&3X*GVKP;FE5pUq=iXKUk!&Km&8Y=6$Iv~K4 z8$AFLRn_yeHjCa|P0B$b43O199LM??s5i#q;}u zNkrWuM4`qJ^HO|D`|v@t2TxpR;{%G`TQcOV;q=1UH~9~HT1`xPI;^WJ7~ha=sq*9I z7lxOG=3D4z^%{ZI?DhKf42#OU>=Y}$T=RaqyRqb7rjc>&O_Dq&E@#56`k;d^Drt${ zbT6^}*5V_2-f&6{ABo5-q~-@a`WnUIaZgk^c`3p=F+s|jSdH7_35zba-@&6S{=6?J zBj@t@jl#40f)D?IE!;rA2)1A_?{DlW5iJ*qLX8icTW_SYzByz>R<6xHxW&#tWK&Mh zGy$ncA@bVkl8?80WmEgzv8_O`JENYd5o8uZj5r*d|&T!(h~{e&3#ev*5}PxziPp# z$zVO`u_Ci-aL|*3*Y3!?LRzueM|Wh9uNGUV=4G*Mb(UY(d5RZpcL(+dTETBGEE^IBOz4De*o~;+nxV*HbXeMe_Kq! z*jur!oB->l`;m5qAIE*#Gi6LT`nD+q?!NO-CIpFz!!^0`nE=R&0rPxlVZr#;qT6If ze_!(paSozh=E0{o+h!$BDw87`D*4-sS~=5o_Y2a(0u|y?mRaP;YOym~UxX|t`n2Kk zau=YxM##Ovog1^%#_D%)J-^i`HRT2sAWcW zLikB-NF=gKuVnY`?ZYdztkRUWwtkJRy8_U>w%Jj@R(3uRh zHWeDEx@4?b`~c^cJuAl)Ygc?9Hdr!WA%oAo%Qqrr-y>n!{S4V=&-vCL2!C;P>38W5 zRgtj+2>)uGc<&L?2lm&UqDq_RWmLnMhK81MY5fEg6a?-eErX(;I&{awQ;t)+^>5*S1}wf|YX%P>h~rFnyV)F{=8@k^lp zV5BsZLR-;5?yX!gK9kavZ$7qcb;;V`W)*w&rnM5^)Mg=Lf)Xf0xAIa_gr+=+3E95* zB76J3Xi-%_hW~E1_m#?%0%}72?6gOWm(g=XZj~?BWQJ%4WVyO#)?x{;dS;E<(ax#=D*1Wxu~+l!}A-PLU^i`Ih8qiHQz$HxivV!U}a8j zu!=O-ConfRI>fo&&<|#q7=j#aghAIr?o?-}F$~XGy)xXS6J}lu%1Sx}Q0oZC>JUB&ZkEHTh`0YBB`GS1{hBo3 z1Eg(`G(dE~KUXB}fDAv`J#bpmZsoqiz^hhBIP4N>yN<)Nk>o?Y$xmtMjQ9h#@jKzS z8)Vdp9n~`(<#&oI2O}mP<-M?}8j0DUj_{Y0p=U_)Rbx4?X4Yj{nU)|bm;Ur9PJw%Y zRah+6xGyVS<%sh|u{#%bEwd`#jl&5N0*W2>6*ntB6HLxuof0v%~1irP$9!p zu<+iQ1FP;00mBY=&Gm>`4Blomq+61Cvg|;+kTD~Q&9(1XmZ)TN^o03N%xAP)J;*4H zXY;WUgI@1h!}Vr1;m_l{8&9K6@-|BbTbzc{51jYQZZe4BrV+B1dnn_9N3A zakpyZaay7=OL}}9!Z!n(oV)HF9#iwg)l2*0mO0|rMISzdrA;pv=Hy z@UpLtitpCU!H#Xip-Am^bcAz4HYCoC8nf2|byF0LDG+SyFX0 zDU;CjuyRN(D&pt%AD{;wr zQk`>ftwT;ODt~io{)V{_Wa1B-`=V+t?Ds=iAwra}83Z8nibhFU{O!4m=kU2f@#vMt zX2nY(Boco6(0g*6TXkS!Yh~sq@kz}ZoO;;PTiHF|z%ugbfg@hED32?593KzMoE|!Q zA{C!`UY^4nrlisO1B4gVH6akb-{>u&D(BSBi7~T$RSz(;Ek5qOQq){Mt4(m=pA*=} z!N3Fynn^#K>Dc*+vj`?YG>2Ce2#5TPyyAau(r&Pj8dA#8M z(zivmQu#b#lF*y9%OEj-&pRu9TPicAt?T!xSNYXQf*e@S#n39_U3-}0QEf%vP13H| zlL!#ZUanels;ZZ_J9xdNi=8pSuUlb@E`pipJa2dzsjU@r8mVn|dY*)t>4ru_sLY#^ zT|LHI$~A9`Twd`$BtyRjGi;45xiVpCkJKuJx1TN9en^~EzzX^{FlF8{&($qm&bV}0 zQP7dUJ;p(Xuj7(PXvv4G4LekmA2>)$gHt|Zy7HSTyn2%{{h{-A9LBb)IXU<@bFT;mIlXMxWyPA0M53pQRr-X6+#-Y%^l-{=(_~BfqpHyL| zwOk#mE=sSTqTr|mVWpvwP}ROo3~L(oW>wRn=2wVZ zc4I^>e1S$ZgvMbj*MKdgi#gEYzQSV%CH#cy`tVNfN6UCspZa#I1eYC49_O3bB}7!_ zS3Ki$$g=SHiRU-7KRG?y8aR=1I50Sns@O{FZ)-MPyy9hZgf)?#edFWXrIO59bkKSVK_=GH7 zJ(?R!tPU9Zpuz0Eb8r~x^3;$6dO zNhS)T!I4$Cd|u*oq&mATNNJxP9PjeE^ki|rcaZIsqF|(WL*q%Pwc|5>EO7_Pd%K}7 zM(vedV!30eP(c*y7f7Y^o+rGPQZ8fBns_y@RJQvmG_jHbpO7iV1F;!pWwQvp2P+Hr;%L`Up8@P4N*+Oa*VZ#&LOw+ zLedl2YI`KMpfY;3q8p4f&t@kq_c=YTWGc|#VVz{Ci6eKSAQ6@2dg89gRh(1%G&yK= zy{@3B&ec3&#HzQa{lT84CL~Vq4Rnq1v%<=8ra*P!if&dJcD#?s3%+z2WiFpG<3~AZ z_aD%tU3)J?CY8)g>u79;wQ)p-WZtA%*YOc;4w={E57fV?@&NhAoiUp#ERv23r}qrY z*AQuacPHbz{OIYqi;M;uT9Hk!z$d3xae80Y=ouC34-=B+S#Lg<754>fOV4!i2U~YZ z=yfN)u@Gnd#MLIy=C?g_Om_X`d0%%GdI!hU5!s!MLd@RV9bu5_R+h+CmaYoJb($hC zceUKsLb}P1Vdp~a&ZK@MO|+KH94E`gwC+v064Qd_Gu66yiB?hxR}&v^S`GAml3Qoh z?EH8F0+g*=x9@2_%;t3K@L-Pw+nR}68(BQg?Pxz-nvBXr)nDl_%jLUtlFaf3MK-0+ zCL8pvYn3`5jQ^~3RhF?xal9)rmT|#Bx_+UH|f23?t41zHl}Ffbr(uY6OS}tDdu!tm77dFP6ONSDhN4BX=tA2;8k0M8S|#gOCEwWP>}DM-f)%6z@Kc#xaG?c&RD z)A_{9sqpH(oNf$akXHR9dhSi;>vTkdA<~sjjl6e)=c6@aJ1yuL$nfVFDio@lKh7pp z`zJrSjkcuqaLlEu;R~g_*2i-H9Tp>!vBwG-&_aLn>PQpQR`;Vf@*x3%t%S;{J_(pb zNl_!Sn6%HN6z*@nsnq4!rWVgRfw0E6bTZK)2PvA+VGWl*BzOdCEDvp5!iJGF2b-m* zu;SQS(!cbK3}}9vR+VSeF_AH`_YGY_*DL1_t8h_0?;neRFnAxf0{R0IdHkh~KMZ_P zE#;pIBvchvIwyjI@Y6iJ-=DUOR_MF+E->BzORV}%Xi6kWg4Kx`wFX-p`|C{^+YpM~ zqi(DaqF7D(={%emaFXWPDVI&Gg`;TQ1U(Hk z!u<)6d#@7ZSZnjYY)y&yD)0&?cpfLwJO8%)|SSrloOURU|J9IKF7dKf!d_45Qh~ZYGrJOEcEz z|AHsv!dmc}=VNbKr0f^zo7VEvZaFemeKc{UNfP$F_CA7jB75vT5AODZMAgQbti0bA zrJFFNkeLOzQKsNCTi<8Kq&saC^!p9}yNJPs1y7C5Da|kKldYo&n_%&JI=ahuOl`W7K~cRXtd-1_!8b`AyW7yzTqnDd zTa})LV{hsW;&#;&jGJA{O-<+s_or2$R+WCb#!v_mjYiEWR>_H=Z1-L5rA;@|puLB4 zswX!y;Y>6@&V7rdSOAtMrJ2^--Hv?|{p?kLvxGW%u>d}y!|NHbv$Ty*yz|5LRqgx7 zcbzL=aT06oEWMzJR(NsD%kkk@@ZV0@9!EoH2kOInNDh*zKk?Jt?B% zG8m95_T|Mk-x*4bh3Q;nGq5vxYs}Il{Dlsb=(>BCZ$FxF{zf|~mDj)FgI-)Y{9XNl zD)-_7NBv6+ERuq&mmZmB+-Y<@x3+zI%ZT9owpLd>hDTxd0Q0Jx5WhTL4g2c~8tf8R z`i-6xP{z&er^%HSLz5p29mpB(J|y8aT(OEEhq^5IJ!4O}{ivP(bF#Oq*GiKTnftwe zxO4F;YO)AOl~+bFVp^2=MkO=l3Mk@Ndp|Ke_vGH zHgYyYL^=Xtg!hc@xT*osgFslJrI8an$k7?Z^&{#}!VZYzgU2um2w-uDTbY}i!6OWT zs6bs1pulhd5r-x~EU2$W(NXxGl!>{lRb#T-VTTYba4YpE|yMa zK-nA!D+ED-9?n+oASe$Ohnbayr3;9M7nmLhY6NjefB+{Tha89(7()@np#(%Gf&hml zhbo8&0soCaFc>f=h>Md8!~q`^#9@KO#R>GY0%8q0K^%6#%s>g428c)m&;jt_ zxDVoR1A)1KMz*dtE>;dU9w7anagBfB30&xKNLo2LyTEAy5R3y(rQ6>_C)v0-!CW9V zZXO7Tix-HWfL_ z3}*OM9*R1fz@s{0V1Qm?Mh?>7sSV%-2N?c_4GiHy1Z`S4155fH>I>lePf&rlS0K#R z%0$%8!p025351*)xg!7saY49&)l+jZv%LcV`Xi3?A0*?@`U|jM@c5}P=z@4SIsgAi zSpU;;AOQbx1M9~P1TOFa*HA#zEEWtnYj^=83JkC-1h_qeCnx|X{5`xq1TeG_IfNJ9 z{=X%xpYI_+TX=$x@iRdoTmYZL3Bbn=+2D(AvPyvv`yTjSw=W_kbfhEKG2?$~Y zZeE}f5H|n^AI=AVjSp`HuS75tFcSRvuTkJYadKiI-u)N=#sdTWOmIf{&I52h_&p(L z4e$k=Cw@r?et`4D&xGKWA3Oo)hhGyMF2pl12Ans3COGCioKRp50a)QY@P`BgPG|&Q z0H+bpFA2^Mza}_QfOW@0@2I)wiY=x+va#rOW-k5+(ih*stR5C15^B_4neqS^x3GT%!-L?yu3 zh!<8MVBZ5JtiPobupWq4cEEP|Ua|)m=SK;UtK2^jbOHeZhQk3s!*TVV5ZkMsHFEAd4IMqG?oe{vt)s>#E}eo5!vjl<2TGS-RL zojFOaHMp%5y+VVQJhd4f6lflwd-&q{#!aT3)?a=UG7_cOo-jBv9vHD6&${qhD#2P!LHoQzYl&XfGh;51jfd=BhLIwU+8B}7pEj~rL`)YSui5Q? zo0peTpib{>$aw48_o1|Z-Kk>oc^JWNT~i=Cu8)X*%6i7?7P4zu@XaWNy+MMS@`zA> zNi{$5VO&dx<*F68u&&*neGlJnDA(=FjQ*`m0wU&O3;+QRs$Us^P3^na6L8wRmqCtu z=kaW9?cm$Yv}taU`NM}TuPE*2jHfzZ(hq}MeP5NBHEk$ev-^@+Q`26ZfAa9rI|H5G zW^|#KMrmQ#Jx>$n`q78-VXvYIUT3u4rK*YJ;5iGsjIDIrKf_!H7KvQ($p{gglnE-{4_^KDpHHN`qzT*m!o zg_e8xxKT`_#vKQ&G=+6wu^44LMs0SYpj_kfpvxiNf_wdjt*4g-i?NI~HNw454d;aT zcxg2Rs}FNUR`1HrTQ>Q{L$8@ZbK5|H*G%(+ucDe_Cq1l+_TlsJ2owlkT1X8IhI%1C zr-^(M|H^C?hj5JSMVrc4TS%k3g6ds0Y_h3FEt67yT;(M%*7xd_9~{v2Ka|$$1QVU0 ztso!JbGU@87INq_4!$Y8%qzjhcP_>FKKIP1dAr~1wY0Vp8ROL@S8wr%zO}Ela|UfA zzURnt*hwOPSjbMp=TIGhgc8mLTAmq|msZLi!4m;-ltRDYKMl1xU zjxNMdDN&nVn-Wt}Ci#Z-kXHmAadGS0Lutkr3MpCNq&7cmcn`V>a3-#Fsobfg%;?Er z>O`Mo9fhp8ZC1M3?KZhPnn<}B$~=+s%71#MpbTr&_saJzD)XYfTU?m`#dIxYc9iql zgc%-Mv-bGjQ<%@a(z)%&G?#>^sBhe&-&hl_3!3#ax0ZU7XOAtZQHB|;F|Wzuv(A zZRU#E+FHR4!@o^jzy<|m9Tvx5rXT#ny5CLQ@22JtGm;C?EI8cZ_TKkT;r{9e?27+v zG6K?`4GhRnE>5`C1r+{mF9PZ;0+9cyz4#rq3)za$?-~OD@ef-OG561Kz8|(CFDGCS z{%tEF9{;u$;r27|iQgZr#s7rrcT@4_0{lla5pLpK)J)_C)SO?CfMW$mLKi_{IF%MC7Ye)sG<_(-(g3u3J_rZ~Xp{g>KpDUj(D)(1Egz7u;Q8NZ zaRV11P@okzpfGa->M#`8INU&-FgIXla>JqJ1?)Rur0=#MfC*r?@BwxLU}<4-1G7N^ zNVoz0lpEkyZos<_H=v-v{U-b!FTj3Kz&7FrAcT(z0jLdEG2k{7oGQPp+y8hCe;MQF zc>h;p!L1}HK<6Ly1TKnr0h+?;&dUqX9iSr*z#nkS=dYOn?05hj9|~Xu=NE1`b%5I} zZonkqh5?iStUw497!TlVM1M|z8Zd4w__ ze|^miReDK`0>l<1`w=u7K3=YWrQUQl^VyM{n(i$MspxHeI%TN(maKo>&@V5i>@l8BRu zG!X?1H6b+8@^~CrdcMvJr*{u#IF1uNjatzO{g9Tf@jMS~q;ec7iagsPP4wC*%U!O3 z^&gd2^>0^aCY@G%wvMD#9k*7YP*T_Fvvuq-&NCC(U8ZM~npz&Zbc3w&(rThLleyvC zrzR~stqsgN)p?H+ZR$SQ{Kb4cciCQj&lP{L-e^D)>0+?ihH)XmR!u3 zuH<61!B-29DmDVbpH&P?Tsx;HXUwtQMe>+-zH&#vO|9uV3{{hyI`a;R3J%^C)MwnY z!+b>}9h>|ZeOJeiC^yH#BJa+ZX)-5?CnbGA^}ah@bgo01Sn2M}Bp)U9L%Q*{m(oyw&71xRyTK4a&0xLo7vy%SUrnc zV0)of1!e3`9j$oYkJ?Oi{~1=^obbd#Ll)Jc9!lnsMisn`d8x*S#!}pJr;#N{t{(u1Tf5>CONb34l)*aof}{oFhM%_;x`r_`_efK9oD0EmG+ z^}>?Ghb0h^aTaZ4w&px^X~1O76{ItvJZV4 z>C#W#=T~pYPyE)Dr{QWHee*_RFod~a*e-8+$#wa8x76q7gLqc*TDSi|m5bhbz;D}r zrHX{AOl%t`#>-`5ftH8bUo$dN)Q--}Xk$vdsbg&V7(NqMwne;FXQq6xpRyP9o_hNx zPX(n?uI^#%L|(6{y^21eP;|RBzAz@^QIL%${`7T{oxvV_LpjQ<`dk)TYOiSmiNslE zaw#yQ>%!&C>j@k9t)~K4!eF|}6?M8?qw@ZXZJZNrGbBfXO=Z0(91A>E!0s&(0)&0w51z@qoGyN>Tj>`pqv{_ znoUd~H1)WABb7|U&-WRh)JSCk>6obbXnsMU$5UM~>pmp{uHCTH@a%(hoORzxL6I+l zI3`V)o%2C*hU>F(Mo&oZ`|sWw=y!GS@6$NG zJ7$g(M|?Z<66RNyOYg}C-TJN4&d16`Pe$<%^9qMjpcMT=3*)C1uzbKW<#66UJc3!} zr`Fn8XHWB_`rH_7o=HQZ%j~4do2N*ZKuM9HY&i;fL6_^2iWDn9I@LWn?DWuwR1#a8 zu3ZGeTA-#C;2fQy=;Yt-DA)cXl}%bfn3-**Z7^>)s7xU+BEZNv?KUf{tbJb3)^%(XO`vXdxg`_abHTwjGE={r@W+}(J?V$L)7!uee5XdzfGpug7%HnQWkHF-A4e92kTwKLvvB%S|F zc~l%u(JKAgDh63-4IK>En=gO4hNj@U8YFROM7n0*u7kxhIGs~fSt_=Ck`eE4IROwZG)T?}!?VD2m|l8aS204>{__uc5^%=0X>W!fj0}uV|^s`V!CU zhq7&!V586mws|B;(tRa9i;neJfG#djZ$rWC+(f-moc(6h@?GA?Gs<*FiQ&6MS_~?F z&h4k%jW)ZK1O_V-_O03Xzk~?5^Nz6%oOO^<-x{g~hiR3|XBW1f$lghLSzR?i+cRKH zpQgP?LTXi}2&y%wsIQZ2w?Rv^+kJ4YY~U59{|4tsA!iQ5wJ)WgF|76zHXcN68#pQ5 z8THJ=jVJc(N0>6h?2%MTJr)w+Zuz)eKNa8|%* z%;9Z1do0D(37IV@EEl04ZzBVvS&J@7CNanG&h3obH83aZWBKoffjmEu&CJ-SQzue0 z&#z|5)YV*#VG6=m>3CGn@os$=I(t`?gr0CpJ+0tg*zBv`x`*cXCmOfN-U;JPabW%d zsfz|RfB{S6xAj-)jzHnUIaMNNX(6P)anNUMAankX-i#IBpHdfHMl%7o^}T_Sw)td~ z@Yxx0*2bPXMiRxdO)J=jk2lVp)TsWB!1^!l6k4C_pYxRUG~b09QjMo^Z1i>VZF^Y1qz$H_%n z11^JQZ8VBtQ=xAq`I(-hjpwVk+7;wvK!#XMNy~sH`euINj`NI8@3)g)LEQXEJCs}A?l;lA5rY}Q8-I$P$xo^9!`uFL9-Q@ zS(nR0g*ppT)zSxRx-~zsW-dW(xvqbv=aaXP)PP;YWFtWE&QvmHv2sx=p{p(JEfj)OX`^(a{k^;?EdF$%?%QD>XVH!uip{oz zT=knu?K_fPOkYot!-wq890eW3NSZABuDqu_@r>EK6Rdnq-1Oj5X~os< z)3kz9<`{PWg_{(rHM(7oP!}gQ{0go7mHm|mXZp&47h4m&)5rK_s zzc58UzFzMlLG-y#%7?}s+AX6WH@8t8^ubr??wLoe&bzoxf3Bm|E1V1wclA$w{bNcr zFmJ~^4L|bI8p7UlNxV*OZ+Exx8fs-KElI}Ly!LuYTQC+DNyUXDz9)pn@%CX|aO}Vy zdgR7wzHhD&gJpShN$A*aqgj{st`4OmueNhnlu&7oliWAK8k_<-)~?knT(}~+-q+{) z)+V!Ii~aQEsax9gnntp&a^yzAk!mNRz5~WDjHup!6+pWZ#^lv^{j&+QInaTHHGET< zGP$NGmf5-D2}G6HNDUm?_J(fA{H7^c>SRsyp$Gd1tuO0Z7UnOIYAyFk<7+R=9Zge{ zq^&-0q#)J@pqF%slr_agzN5UhwNEN)2ijutz&n#&A}=Imb`_qF2D6>Mxd z>amQTveh;z_GZQ;iIu{>v>=yOrA_BZdSYC2T2%gG zo^3n~Yd6X1C~xrN2}*sP@gKAeAX?{Qf)LF4do;R2v}mLl@Y@Q&uMLnE_!D6`WC*Vn zHJ;y3bD1tg?V&}z)pjI_j%T;wz>CW0J2{D49cdAh*_>0jhSDmJf5+i+hjL>^aF~5xWa}$fVj1L8zgk&2-Hpk($ve_oIJGj%?B#)4Nv+$~Z!}_E z^sJVwYJ`-lTGXJZn_KWf?BjW=?QVn3Z`l5Q@~eMfvWr@KJivYOuLnHfiHyAt!tg&j zXMWYJ-Yqt|N0%`6>D!EVL>zIvC5pnw6z9Gep{7~MQo*8oUuy>SO}2NAOw3Id%Rdu% zP4c%|fBiDKV1rwGjVH(=)!>FO1LM-zi_g&UMZVzZUg4sX!{=y}Yxc=+)*@ zyCPjCS1*X8#CL^x*BiYJ^@YmW=9eY%!n@BUi*)gViLHv*R;g(^Kirv_D0wwJN4_47 zJ8r!e@s7N`aQ7+^{#d2BO|69{;Oqyf*K1V^%X89Qz&c~Eq=0ELHc*Ss?2qi053)#t~u z_n2jx4cV;Q6Gznz#g&qoiPIKGbD!{~mPeW=53r881*hMbQM0qZHi1*IcVBZce};zE5Vw4sZMLi>9Mlz`z*-_myF;o@!TdU#v8r>3x4Eo& z_eehRCT3eo&)8^#ETuGKLWNOd@BxDzdbnlxOqwm)R{O`uW>hnub1Fwt9@asd?$5scCv>D^7}IV2d2HK=?Hgr z{K~X!alHv9@IV+2tlRhoGCOrjWuCk51_G7?a4%yKqYb<;l{wUGODKxH;j?t~nx|&b zeq)s;f3!_OD5`|5#_u@+^ri9p61khlX{A%>hN1fCDc(Hq6*?5!3*8v2tjNALjge(P zH3b`9Et@NbY|aVRaXUmtK;}O45a7zpS5m01n?01Wb-tj!<>$D1;obV*&se}uvS!_syCWJ1|U6!s8X@W;l{xV)d0}U9Rh--U< zULg17<+y`ew!(uRC@&fCc1V%f7XxG%TAJ zox;k*Hmmo!3Owhj@823g%d&j8yjqCTj}hPmO@yRu?NMblzGkeeI{4;1{q-9lBzdMuxH`PBK%Kwa+28?13#E-Pvn3)4V9g8SBA>y9_Pu#y^r2&r* zhq={#Gq~@9!`bXU5LgZ6#p1BD0%E^_$vDg$U5#vh#6tt2$?!1fpE1y!K)kcf&roPC zz#+%s0>mW)O~lP?T#Wv2^Y5ljA`UD$xH^};S}V0C}N;pe@||GoYs9jzoC<52x>Uck9o(U;6yPagAvEqy8@^_D=^k!a)g)!wq-w0txQOMmQJ&9_9ty zyS#u83+|-m0b&(+;VxjniHUFtb3w4+ZQ+hi7{K9(KJaItEn*C~OBmQWh%tURK7n2G zw>K0X*ZKodtRFez`DYp48SaVwnZqqH1QI|!yba8 zRJU-%m)(e`MUZxi$2}=cKh?r-1@B+F2Aa!lD>7cqn6WP7Ur(ChUw&R?eO41?kg9a< zGdrJsaJRm1tLU!54INuyeyh%_0(hA+G}eM{W&*uMcj~7%IqAKoTvLvm80UjRlS-a- z-Z0)Imi*LHrbI`^mrbEn@xkNr^#qDIpSbkG#rZbDin8ce+NFj)vzJDE2h#3?4IJ;e z8X&337-7;nGp#%ybF#aK{S;M9FiYMY^pIj!usxg%)8JNPC1v{YJH3QqoF<0{{t7Pq zg-mjz&-I#CMF`S!-rzVhxwyJj6zieC{{=Q5MIkq~6j-N4BYzMGrOz5s@|lm@AK(bY=+3V^xM}E-Gw{&x`HgZ88>$E)%Y`h^{-FyHjS+5%=l2uWB`Bd)WhF-glY8=O{UErn~;F(g6q6#n=uE2$o;f zc4&;;6~MnOegs1!Eim=s99@6keAb1%!1*wtbh9A@F_5Ebcan4mz z)ruA7Jf3nHk7!2&A@luo6bS?1o?9tMbfUvk!eH8>^h|>|EImHjg6uR!#_w! zJfTuz5R~8%gtkiWcK7b~1A5d_dW6u@fS91RLO=DS?bYK-ur*)=LqstMeuOBZpaefq zibe=3RE-hPXsxv|0wo$^)Ivg30wETC-npCon7JbQhabAhb+hljGdu6>?94N7-)E-d zj~&kx7e4a-(V0&u%7^`VxyNG7b4H!-A2s3CrN^qr?9E&6Ki++DylfNcbz`bb?)rou&sw`zt2)Zm+SFS5#Z&npePoA#J{>rJGMSN zX~_-0S(VG*J<@-$der8H`Rjfk(HJW~5O1C`@}-9It=5#_qJz1<+_N7XimvU66m9RR zu*R8I~|eSYW0Yxdnjt8yCY&gqIy$IlF=i+Lzw7}of;VLZFNTDI+XPA?$VL8OZB4Si z79g9Tcyqj^ZP`DK4Mluhp@rFns)CGy*sv_Ip%AiO_us>6vhlKTH6rl5eKUJDAAD?F z4a42Bp}4eTLn(}Kh}h7fOy#&b{U(M4)*4X3=&LhwV#wzS$ ze+cO~SAW zF`V6Zfa4Vdi|LsOSw|&eugE#4aWyY7FD<{unZ0*jRorCzObOD;-i$ICIBkiiu-nun zAnX;ZsY{fJ%^Uvaz6itZYa3d#zMl7Pm1yCt_v4*90|>yv>3$uvPH)%ffe-jj)37!e zLzpjphe#O1R44m-jyg=SL0`%!(fTV)iB;iA|42ARbh+alq1)YAfxatKYZa)2jI|Y*yNT7s)OcNUa(O5K zY6Sh^KXNKvY7e21>KeyliDWakj&H2w#v#ocN^;itN0gn5mIcqunOoK{(6e;k=JFo~ z_YS-N*7D=w?gK?D=U?1-X5K4Z=Wn`d?!328wtu~$XMg$QV}JZ+PyVMb&M)lyqRrg- zWp`^`>aosicl7rCv|{^nKkNOQiZATGV`8j$e9l{II>wYvsVY#1uRU>f@aV^X=Du)u zZ`Y06)~~F)vvg2~A*_b}uLXD0|IfAs_q4Y((S~&x@KMi=*VDopz@*fL*hHiBo@UNB z2tK6eR?VBg!=RA_bX7gc`3*GZc6!L|I5Kvk{@;h7P;TGzSoE!%8Ny zOoB+4uztJ7iIri4|1 z5K%@{AW^0h<(&>EZA1Z?MwHP)45BPdybd~CX$^8pd1bmLmroC4WouDSm+dta`MKa& zN%d!F()(46EYC1>nqzs(2be9{Vbc0Ff}R;7vc5MhcJhJEw`awI zP|$;4R{9p;RVSCCr!44xq;E?FFHY7AN%pGX&dF^Y9fJ4_Gy^HW5SCyU^w1qj-;t)# z+{IgF4O@MP`Dr0q62q&9@{#Y=Yp<@7hg6UmQd?8ehNS$!&lAh6nryuwZ+>P7ty_48 z86jLD=$Yip^~%8A6Wf()=~8>aY>(En@TAqyAxQP2=;R|7^em}wf&)#i=ZM_a=ygcX zfN5e~p Date: Wed, 27 Feb 2019 11:58:02 +0000 Subject: [PATCH 2/3] Clean WENO convergence results --- advection/advection-higherorder.tex | 165 ++++++++++++++-------------- 1 file changed, 82 insertions(+), 83 deletions(-) diff --git a/advection/advection-higherorder.tex b/advection/advection-higherorder.tex index 1d76aa7..ec2018c 100644 --- a/advection/advection-higherorder.tex +++ b/advection/advection-higherorder.tex @@ -4,8 +4,8 @@ \section{Advection and the finite-volume method} \label{ch:adv:sndorder} -In these notes, we will typically use a {\em finite-volume} discretization. Here we -explore this method for the +In these notes, we will typically use a {\em finite-volume} discretization. Here we +explore this method for the advection equation. First we rewrite the advection equation in {\em conservation form}: \begin{equation} @@ -13,7 +13,7 @@ \section{Advection and the finite-volume method} \label{eq:advect-cons} \end{equation} where $f(a) = ua$ is the flux of the quantity $a$. In conservation form, -the time derivative of a quantity is related to the divergence of +the time derivative of a quantity is related to the divergence of its flux. % figure created with figures/advection/fv-ghost.py @@ -36,9 +36,9 @@ \section{Advection and the finite-volume method} from ${x_{i-\myhalf}}$ to ${x_{i+\myhalf}}$, normalizing by the zone width, $\Delta x$: \begin{align} -\frac{1}{\Delta x} \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} a_t \, dx &= +\frac{1}{\Delta x} \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} a_t \, dx &= - \frac{1}{\Delta x} \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} \frac{\partial}{\partial x} f(a) \, dx \\ -\frac{\partial}{\partial t} a_i &= +\frac{\partial}{\partial t} a_i &= - \frac{1}{\Delta x} \left \{ \left [f(a) \right ]_{i+\myhalf} - \left [f(a) \right ]_{i-\myhalf} \right \} \label{adv:eq:fvadv} \end{align} This is an evolution equation for the zone-average of $a$, and shows @@ -209,7 +209,7 @@ \section{Second-order predictor-corrector scheme} {\label{fig:fvadvect} Second-order finite volume advection showing the result of advecting a tophat profile through five periods with both unlimited and limited slopes. This calculation used 64 zones and -$\cfl=0.7$. \\ +$\cfl=0.7$. \\ \hydroexdoit{\href{https://github.com/zingale/hydro_examples/blob/master/advection/advection.py}{advection.py}}} \end{figure} @@ -235,9 +235,9 @@ \subsection{Limiting} \frac{a_i - a_{i-1}}{\Delta x}, \frac{a_{i+1} - a_i}{\Delta x} \right ) \end{equation} instead of Eq.~\ref{eq:slopecentered}. -with +with \begin{equation} -\mathtt{minmod}(a,b) = \left \{ +\mathtt{minmod}(a,b) = \left \{ \begin{array}{ll} a & \mathit{if~} |a| < |b| \mathrm{~and~} a\cdot b > 0 \\ b & \mathit{if~} |b| < |a| \mathrm{~and~} a\cdot b > 0 \\ @@ -277,7 +277,7 @@ \subsection{Limiting} \includegraphics[width=0.75\linewidth]{rea-nolimit-start_003} \\ \includegraphics[width=0.75\linewidth]{rea-nolimit-start_004} \\ \includegraphics[width=0.75\linewidth]{rea-nolimit-start_005} \\ -\includegraphics[width=0.75\linewidth]{rea-nolimit-start_006} +\includegraphics[width=0.75\linewidth]{rea-nolimit-start_006} %\includegraphics[width=0.55\linewidth]{rea-nolimit-start_007} \\ %\includegraphics[width=0.55\linewidth]{rea-nolimit-start_008} \\ \caption[The effect of no limiting on initially discontinuous data]{\label{fig:limitingex}Initially discontinuous data evolved for several steps with @@ -310,7 +310,7 @@ \subsection{Limiting} \end{equation} Then the limited difference is \begin{equation} -\left . \frac{\partial a}{\partial x} \right |_i = +\left . \frac{\partial a}{\partial x} \right |_i = \left \{ \begin{array}{ll} \min \left [ \frac{| a_{i+1} - a_{i-1} |}{2 \Delta x}, @@ -324,7 +324,7 @@ \subsection{Limiting} % Note that a slightly different form of this limiter is presented in \cite{leveque:2002}, where all quantities are in a {\tt minmod}, which appears to limit a bit less. -This is second-order accurate for smooth flows. +This is second-order accurate for smooth flows. The main goal of a limiter is to reduce the slope near extrema. Figure~\ref{fig:limit} shows a finite-volume grid with the original @@ -372,18 +372,18 @@ \subsection{Limiting} \subsection{Reconstruct-evolve-average} Another way to think about these methods is as a reconstruction, -evolve, and average (R-E-A) process (see Figure~\ref{fig:rea}). +evolve, and average (R-E-A) process (see Figure~\ref{fig:rea}). We can write the conservative update as: \begin{align} -a_i^{n+1} &= a_i^n + \frac{\Delta t}{\Delta x} +a_i^{n+1} &= a_i^n + \frac{\Delta t}{\Delta x} (u a^{n+\myhalf}_{i-\myhalf} - u a^{n+\myhalf}_{i+\myhalf} ) \\ - &= a_i^n + \cfl (a^{n+\myhalf}_{i-\myhalf} - a^{n+\myhalf}_{i+\myhalf} ) + &= a_i^n + \cfl (a^{n+\myhalf}_{i-\myhalf} - a^{n+\myhalf}_{i+\myhalf} ) \end{align} If we take $u > 0$, then the Riemann problem will always choose the left state, so we can write this as: \begin{equation} -a_i^{n+1} = a_i^n + +a_i^{n+1} = a_i^n + \cfl \biggl [\underbrace{\left (a_{i-1}^n + \frac{1}{2} (1-\cfl) \Delta a_{i-1} \right )}_{a_{i-\myhalf,L}} - \underbrace{\left (a_{i}^n + \frac{1}{2} (1-\cfl) \Delta a_{i} \right )}_{a_{i+\myhalf,L}} \biggr ] \label{eq:rea_orig} @@ -394,20 +394,20 @@ \subsection{Reconstruct-evolve-average} \begin{equation} a_i(x) = a_i + \frac{\Delta a_i}{\Delta x} (x - x_i) \end{equation} -Consider zone $i$. +Consider zone $i$. If we are advecting with a CFL number $\cfl$, then that means that the fraction $\cfl$ of the zone immediately to the left of the $i-\myhalf$ interface will advect into zone $i$ over the timestep. And only the fraction $1-\cfl$ in zone $i$ -immediately to the right of the interface will stay in that zone. This -is indicated by the shaded regions in Figure~\ref{fig:rea}. +immediately to the right of the interface will stay in that zone. This +is indicated by the shaded regions in Figure~\ref{fig:rea}. The average of the quantity $a$ from zone $i-1$ that will advect into -zone $i$ is +zone $i$ is \begin{eqnarray} -\mathcal{I}_< &=& \frac{1}{\cfl \Delta x} +\mathcal{I}_< &=& \frac{1}{\cfl \Delta x} \int_{x_{i-\myhalf} - \cfl\Delta x}^{x_{i-\myhalf}} a_{i-1}(x) dx \\ % - &=& \frac{1}{\cfl \Delta x} + &=& \frac{1}{\cfl \Delta x} \int_{x_{i-\myhalf} - \cfl\Delta x}^{x_{i-\myhalf}} \left [ a_{i-1} + \frac{\Delta a_{i-1}}{\Delta x} (x - x_{i-1} ) \right ] dx \\ &=& a_{i-1} + \frac{1}{2} \Delta a_{i-1} (1-\cfl) @@ -416,16 +416,16 @@ \subsection{Reconstruct-evolve-average} And the average of the quantity $a$ in zone $i$ that will remain in zone $i$ is \begin{eqnarray} -\mathcal{I}_> &=& \frac{1}{(1-\cfl) \Delta x} +\mathcal{I}_> &=& \frac{1}{(1-\cfl) \Delta x} \int_{x_{i-\myhalf}}^{x_{i-\myhalf} + (1-\cfl) \Delta x} a_{i}(x) dx \\ % - &=& \frac{1}{(1-\cfl) \Delta x} - \int_{x_{i-\myhalf}}^{x_{i-\myhalf} + (1-\cfl)\Delta x} + &=& \frac{1}{(1-\cfl) \Delta x} + \int_{x_{i-\myhalf}}^{x_{i-\myhalf} + (1-\cfl)\Delta x} \left [ a_{i} + \frac{\Delta a_{i}}{\Delta x} (x - x_{i} ) \right ] dx \\ &=& a_{i} - \frac{1}{2} \Delta a_{i} \cfl \end{eqnarray} -The final part of the R-E-A procedure is to average the over the +The final part of the R-E-A procedure is to average the over the advected profiles in the new cell. The weighted average of the amount brought in from the left of the interface and that that remains in the cell is @@ -435,10 +435,10 @@ \subsection{Reconstruct-evolve-average} + (1-\cfl) \left [ a^n_i - \frac{1}{2} \Delta a_i \cfl \right ] \\ &= a^n_i + \cfl \left [a^n_{i-1} + \frac{1}{2}(1 - \cfl) \Delta a_{i-1} \right ] - \cfl \left [ a^n_i + \frac{1}{2} (1-\cfl) \Delta a_i \right ] -\end{align} +\end{align} This is identical to Eq.~\ref{eq:rea_orig}. This demonstrates that the R-E-A procedure is equivalent to our reconstruction, prediction of the -interface states, solving the Riemann problem, and doing the +interface states, solving the Riemann problem, and doing the conservative flux update. % this figure sequence is created by figures/advection/rea.py @@ -490,7 +490,7 @@ \subsection{Reconstruct-evolve-average} \begin{figure}[ht] \centering \includegraphics[width=0.8\linewidth]{fv-gaussian-limiters} \\[1em] -\includegraphics[width=0.8\linewidth]{fv-tophat-limiters} +\includegraphics[width=0.8\linewidth]{fv-tophat-limiters} \caption[Effect of different limiters on evolution] {\label{fig:limiter_panel} The effect of different limiters on the evolution of a Gaussian initial profile (top) and a tophat initial @@ -566,7 +566,7 @@ \section{Multi-dimensional advection} \caption[A 2-d grid with zone-centered indexes]{\label{fig:2dgrid} A simple 2-d grid with the zone-centered indexes. The $\times$s mark the left and right interface states at the upper edge of the $i,j$ zone in each - coordinate direction. For a finite-volume discretization, $a_{i,j}$ + coordinate direction. For a finite-volume discretization, $a_{i,j}$ represents the average of $a(x,y)$ over the zone.} \end{figure} @@ -581,21 +581,21 @@ \section{Multi-dimensional advection} define the average of $a$ in a zone by integrating it over the volume: \begin{equation} -a_{i,j} = \frac{1}{\Delta x \Delta y} - \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} +a_{i,j} = \frac{1}{\Delta x \Delta y} + \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} a(x,y,t) \, dx \, dy \end{equation} Integrating Eq.~\ref{eq:advect2d-cons} over $x$ and $y$, we have: \begin{align} -\frac{1}{\Delta x \Delta y} - \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} - \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} a_t \, dx \, dy = +\frac{1}{\Delta x \Delta y} + \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} + \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} a_t \, dx \, dy = &- \frac{1}{\Delta x \Delta y} \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} (u a)_x \, dx \, dy \nonumber \\ &- \frac{1}{\Delta x \Delta y} \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} - (v a)_y \, dx \, dy + (v a)_y \, dx \, dy \end{align} or using the divergence theorem, \begin{align} @@ -610,7 +610,7 @@ \section{Multi-dimensional advection} Now we integrate over time---the left side of our expression becomes just the difference between the new and old state. \begin{align} - a_{i,j}^{n+1} - a_{i,j}^n = + a_{i,j}^{n+1} - a_{i,j}^n = &- \frac{1}{\Delta x\Delta y} \int_{t^n}^{t^{n+1}} \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} \left \{ (u a)_{i+\myhalf,j} - (u a)_{i-\myhalf,j} \right \} dy dt \nonumber \\ &- \frac{1}{\Delta x\Delta y} \int_{t^n}^{t^{n+1}} \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} @@ -628,13 +628,13 @@ \section{Multi-dimensional advection} \item y-face \begin{equation} \langle (va)_{i,j+\myhalf}\rangle_{(t)} = \frac{1}{\Delta x \Delta t} - \int_{t^n}^{t^{n+1}} \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} (va)_{i,j+\myhalf}\, dx dt + \int_{t^n}^{t^{n+1}} \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} (va)_{i,j+\myhalf}\, dx dt \end{equation} \end{itemize} where $\langle . \rangle_{(t)}$ denotes the time-average over the face. For a second-order accurate method in time, we replace the average in time with the flux at the midpoint in time and the average over the face -with the flux at the center of the face: +with the flux at the center of the face: \begin{equation} \langle (ua)_{i+\myhalf,j} \rangle_{(t)} \approx (ua)_{i+\myhalf,j}^{n+\myhalf} \end{equation} @@ -647,7 +647,7 @@ \section{Multi-dimensional advection} For the advection problem, since $u$ and $v$ are constant, we need to find the interface states of $a$ alone. -There are two methods for computing these interface states, +There are two methods for computing these interface states, $a_{i\pm\myhalf,j}^{n+\myhalf}$ on $x$-interfaces and $a_{i,j\pm\myhalf}^{n+\myhalf}$ on $y$-interfaces: dimensionally split and unsplit. Dimensionally split methods are easier to code, since each dimension is operated on independent of the @@ -691,17 +691,17 @@ \subsection{Dimensionally split} case (Eq.~\ref{eq:statel} and \ref{eq:stater}). For example, the $a_{i+\myhalf,j,L}^{n+\myhalf}$ state is: \begin{eqnarray} -a_{i+\myhalf,j,L}^{n+\myhalf} &=& a_{i,j}^n + - \frac{\Delta x}{2} \left .\frac{\partial a}{\partial x} \right |_{i,j} + - \frac{\Delta t}{2} \left .\frac{\partial a}{\partial t} \right |_{i,j} + +a_{i+\myhalf,j,L}^{n+\myhalf} &=& a_{i,j}^n + + \frac{\Delta x}{2} \left .\frac{\partial a}{\partial x} \right |_{i,j} + + \frac{\Delta t}{2} \left .\frac{\partial a}{\partial t} \right |_{i,j} + \mathcal{O}(\Delta x^2) + \mathcal{O}(\Delta t^2) \nonumber \\ - &=& a_{i,j}^n + - \frac{\Delta x}{2} \left .\frac{\partial a}{\partial x} \right |_{i,j} + - \frac{\Delta t}{2} \left ( + &=& a_{i,j}^n + + \frac{\Delta x}{2} \left .\frac{\partial a}{\partial x} \right |_{i,j} + + \frac{\Delta t}{2} \left ( - u \left .\frac{\partial a}{\partial x} \right |_{i,j} \right ) + \ldots \nonumber \\ - &=& a_{i,j}^n + - \frac{\Delta x}{2} \left ( 1 - \frac{\Delta t}{\Delta x} u \right ) + &=& a_{i,j}^n + + \frac{\Delta x}{2} \left ( 1 - \frac{\Delta t}{\Delta x} u \right ) \left .\frac{\partial a}{\partial x} \right |_{i,j} + \ldots \label{eq:statels} \end{eqnarray} @@ -736,18 +736,18 @@ \subsection{Unsplit multi-dimensional advection} The construction of the $a_{i+\myhalf,j,L}^{n+\myhalf}$ interface state appears as \begin{eqnarray} -a_{i+\myhalf,j,L}^{n+\myhalf} &=& a_{i,j}^n + - \frac{\Delta x}{2} \left .\frac{\partial a}{\partial x} \right |_{i,j} + - \frac{\Delta t}{2} \left .\frac{\partial a}{\partial t} \right |_{i,j} + +a_{i+\myhalf,j,L}^{n+\myhalf} &=& a_{i,j}^n + + \frac{\Delta x}{2} \left .\frac{\partial a}{\partial x} \right |_{i,j} + + \frac{\Delta t}{2} \left .\frac{\partial a}{\partial t} \right |_{i,j} + \mathcal{O}(\Delta x^2) + \mathcal{O}(\Delta t^2) \nonumber \\ - &=& a_{i,j}^n + - \frac{\Delta x}{2} \left .\frac{\partial a}{\partial x} \right |_{i,j} + - \frac{\Delta t}{2} \left ( - - u \left .\frac{\partial a}{\partial x} \right |_{i,j} + &=& a_{i,j}^n + + \frac{\Delta x}{2} \left .\frac{\partial a}{\partial x} \right |_{i,j} + + \frac{\Delta t}{2} \left ( + - u \left .\frac{\partial a}{\partial x} \right |_{i,j} - v \left .\frac{\partial a}{\partial y} \right |_{i,j} \right ) + \ldots \nonumber \\ - &=& \underbrace{a_{i,j}^n + - \frac{\Delta x}{2} \left ( 1 - \frac{\Delta t}{\Delta x} u \right ) + &=& \underbrace{a_{i,j}^n + + \frac{\Delta x}{2} \left ( 1 - \frac{\Delta t}{\Delta x} u \right ) \left .\frac{\partial a}{\partial x} \right |_{i,j}}_{\hat{a}_{i+\myhalf,j,L}^{n+\myhalf}} \underbrace{- \frac{\Delta t}{2} v \left .\frac{\partial a}{\partial y} \right |_{i,j}}_{\mathrm{``transverse~flux~difference''}} + \ldots \label{eq:statelu} @@ -756,7 +756,7 @@ \subsection{Unsplit multi-dimensional advection} explicitly appearance of the ``transverse flux difference'' in the unsplit interface state. We rewrite this as: \begin{equation} -a_{i+\myhalf,j,L}^{n+\myhalf} = \hat{a}_{i+\myhalf,j,L}^{n+\myhalf} +a_{i+\myhalf,j,L}^{n+\myhalf} = \hat{a}_{i+\myhalf,j,L}^{n+\myhalf} - \frac{\Delta t}{2} v \left .\frac{\partial a}{\partial y} \right |_{i,j} \end{equation} Here, the $\hat{a}_{i+\myhalf,j,L}^{n+\myhalf}$ term is just the normal @@ -768,7 +768,7 @@ \subsection{Unsplit multi-dimensional advection} compute these one-dimensional $\hat{a}$'s at the left and right every interface in both coordinate directions. Note that these states are still one-dimensional, since we have not used any information from the -transverse direction in their computation. +transverse direction in their computation. \item Solve a Riemann problem at each of these interfaces: \begin{eqnarray} @@ -778,13 +778,13 @@ \subsection{Unsplit multi-dimensional advection} \hat{a}_{i,j+\myhalf,R}^{n+\myhalf}) \\ \end{eqnarray} These states are given the `$^T$' superscript since they are the states -that are used in computing the transverse flux difference. +that are used in computing the transverse flux difference. -\item Correct the +\item Correct the previously computed normal interface states (the $\hat{a}$'s) with the transverse flux difference: \begin{equation} -a_{i+\myhalf,j,L}^{n+\myhalf} = \hat{a}_{i+\myhalf,j,L}^{n+\myhalf} +a_{i+\myhalf,j,L}^{n+\myhalf} = \hat{a}_{i+\myhalf,j,L}^{n+\myhalf} - \frac{\Delta t}{2} v \frac{a^T_{i,j+\myhalf} - a^T_{i,j-\myhalf}}{\Delta y} \end{equation} Notice that the @@ -793,11 +793,11 @@ \subsection{Unsplit multi-dimensional advection} right state, it would be those that are transverse, but to the right of the interface: \begin{equation} -a_{i+\myhalf,j,R}^{n+\myhalf} = \hat{a}_{i+\myhalf,j,R}^{n+\myhalf} +a_{i+\myhalf,j,R}^{n+\myhalf} = \hat{a}_{i+\myhalf,j,R}^{n+\myhalf} - \frac{\Delta t}{2} v \frac{a^T_{i+1,j+\myhalf} - a^T_{i+1,j-\myhalf}}{\Delta y} \end{equation} \end{itemize} -A similar procedure happens at the $y$-interfaces. +A similar procedure happens at the $y$-interfaces. Figure~\ref{fig:unsplitstates} illustrates the steps involved in the construction of the $a_{i+\myhalf,j,L}^{n+\myhalf}$ state. \MarginPar{more panels illustrating the sequence?} @@ -821,7 +821,7 @@ \subsection{Unsplit multi-dimensional advection} Once all of the full states (normal prediction $+$ transverse flux difference) are computed to the left and right of all the interfaces -($x$ and $y$), we solve another Riemann problem to find the final +($x$ and $y$), we solve another Riemann problem to find the final state on each interface. \begin{equation} a_{i+\myhalf,j}^{n+\myhalf} = \mathcal{R}(a_{i+\myhalf,j,L}^{n+\myhalf}, @@ -829,7 +829,7 @@ \subsection{Unsplit multi-dimensional advection} \end{equation} The final conservative update is then done via Eq.~\ref{eq:update2du}. -See \cite{colella:1990} for more details on this unsplit method, +See \cite{colella:1990} for more details on this unsplit method, and \cite{saltzman:1994} for details of the extension to 3-d. Figures~\ref{fig:adv:gaussian-2d} and \ref{fig:adv:tophat-2d} show the @@ -916,12 +916,12 @@ \subsection{Method-of-lines in multi-dimensions} \item x-face: \begin{equation} \langle (ua)_{i+\myhalf,j} \rangle = \frac{1}{\Delta y} - \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} (ua)_{i+\myhalf,j}\, dy + \int_{y_{j-\myhalf}}^{y_{j+\myhalf}} (ua)_{i+\myhalf,j}\, dy \end{equation} \item y-face \begin{equation} \langle (va)_{i,j+\myhalf} \rangle = \frac{1}{\Delta x} - \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} (va)_{i,j+\myhalf}\, dx + \int_{x_{i-\myhalf}}^{x_{i+\myhalf}} (va)_{i,j+\myhalf}\, dx \end{equation} \end{itemize} These are similar to the expressions above, except there is no @@ -979,7 +979,7 @@ \subsection{Method-of-lines in multi-dimensions} \begin{equation} a^n_{i,j} = A^n e^{Ii\theta}e^{Ij\phi} \end{equation} -Next, to simplify things, we'll assume that $u = v$, and $\Delta x = \Delta y$, +Next, to simplify things, we'll assume that $u = v$, and $\Delta x = \Delta y$, then $\cfl = u \Delta t/ \Delta x = v \Delta t / \Delta y$. Inserting this into our difference equation gives: \begin{equation} @@ -1004,7 +1004,7 @@ \subsection{Method-of-lines in multi-dimensions} method in \cite{mccorquodalecolella} allows for $\Delta t \sum_{i=1}^d (|\Ub \cdot \mathbf{e}_d|)/\Delta x_d \lesssim 1.4$. Total variation diminishing Runge-Kutta methods are popular for this application~\cite{gottliebshu:1996}. -% run as: +% run as: % ./pyro.py advection_rk tophat inputs.tophat % ./plot.py -W 7.7 -H 6 -o tophat_rk4_cfl08.pdf advection_rk tophat_0040 % @@ -1019,7 +1019,7 @@ \subsection{Method-of-lines in multi-dimensions} the method-of-lines approach with 4th-order Runge-Kutta time integration. We use $u = v = 1$ for one period on a $32\times 32$ grid. On the left is $\cfl = 0.8$---this is clearly unstable. On the right is $\cfl = 0.4$, - which is stable. + which is stable. This was run as {\tt ./pyro.py advection\_rk tophat inputs.tophat}} \end{figure} @@ -1289,11 +1289,11 @@ \subsubsection{Implementation issues with WENO schemes} fourth order Runge-Kutta, and it is the error from this integrator that is dominating. -To confirm this, figure~\ref{fig:weno-converge-gaussian} uses the eigth order +To confirm this, figure~\ref{fig:weno-converge-sine} uses the eigth order Dormand-Price Runge-Kutta method with adaptive step size control (using the -\texttt{scipy.integrate.ode} routine). Here we see high order convergence for -all $r$, and in each case the convergence rate is $2 r - 2$ for \textbf{no -reason I can understand}. +\texttt{scipy.integrate.ode} routine). In this plot a sine wave is advected once +around a periodic domain. Here we see high order convergence for +all $r$, and in each case the convergence rate is $2 r - 1$ as expected. \begin{figure}[t] \centering @@ -1308,9 +1308,9 @@ \subsubsection{Implementation issues with WENO schemes} \begin{figure}[t] \centering % figure generated by hydro_examples/advection/weno.py -\includegraphics[width=0.8\linewidth]{weno-converge-gaussian} +\includegraphics[width=0.8\linewidth]{weno-converge-sine} \caption[Very high order WENO convergence rates for linear advection] -{\label{fig:weno-converge-gaussian} WENO solutions for advecting a Gaussian one periods, using four different orders. An eighth order Dormand-Price Runge-Kutta method is used for time evolution. This minimizes the time integrator error and we see convergence at order $2 r - 2$ for all schemes, although the time integrator error eventually shows in the highest order case. \\ +{\label{fig:weno-converge-sine} WENO solutions for advecting a sine wave one period, using three different orders. An eighth order Dormand-Price Runge-Kutta method is used for time evolution. This minimizes the time integrator error and we see convergence at order $2 r - 1$ for all schemes, although round-off error shows in the highest order case. \\ \hydroexdoit{\href{https://github.com/zingale/hydro_examples/blob/master/advection/weno.py}{weno.py}}} \end{figure} % @@ -1341,18 +1341,18 @@ \section{Going further} \end{equation} The solution procedure is largely the same as described above. We write: \begin{align} -\phi_{i+\myhalf,j,L}^{n+\myhalf} &= \phi_{i,j}^n + +\phi_{i+\myhalf,j,L}^{n+\myhalf} &= \phi_{i,j}^n + \frac{\Delta x}{2} \frac{\partial \phi}{\partial x} + \frac{\Delta t}{2} \frac{\partial \phi}{\partial t} + \ldots \nonumber \\ % - &= \phi_{i,j}^n + + &= \phi_{i,j}^n + \frac{\Delta x}{2} \frac{\partial \phi}{\partial x} + \frac{\Delta t}{2} \left [ -(\phi u)_x -(\phi v)_y \right ]_{i,j} \nonumber\\ % - &= \underbrace{\phi_{i,j}^n + + &= \underbrace{\phi_{i,j}^n + \frac{\Delta x}{2} \left ( 1 - \frac{\Delta t}{\Delta x} u_{i,j} \right ) \frac{\partial \phi}{\partial x}}_{\hat{\phi}_{i+\myhalf,j,L}^{n+\myhalf}} - - \frac{\Delta t}{2} \left [\phi u_x \right ]_{i,j} + - \frac{\Delta t}{2} \left [\phi u_x \right ]_{i,j} - \frac{\Delta t}{2} \left [ (\phi v)_y \right ]_{i,j} \end{align} and upwinding is used to resolve the Riemann problem for both the @@ -1361,7 +1361,7 @@ \section{Going further} according to the velocity field in much the fashion shown here, and is described in \S~\ref{sec:lm:density}. - + For compressible hydrodynamics, we often have density-weighted quantities that we advect. This extension is described in \S~\ref{sec:euler:further}. @@ -1370,7 +1370,7 @@ \section{Going further} \section{\pyro\ experimentation} -To gain some experiences with these ideas, we can use the advection +To gain some experiences with these ideas, we can use the advection solver in \pyro\ (see Appendix~\ref{app:pyro} to get started). The \pyro\ advection solver implements the second-order unsplit advection algorithm described in the previous sections. To run @@ -1402,4 +1402,3 @@ \section{\pyro\ experimentation} and compare the results to the unsplit version. Pick a suitable norm and measure the convergence of the methods.} \end{exercise} - From 20cbf9da468fbb25253bbe7f0378396d4ad0a0e7 Mon Sep 17 00:00:00 2001 From: Ian Hawke Date: Tue, 5 Mar 2019 13:06:08 +0000 Subject: [PATCH 3/3] Update convergence figure to match number of periods of evolution. --- advection/advection-higherorder.tex | 6 +++--- higher-order/weno-converge-sine.pdf | Bin 29858 -> 30814 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/advection/advection-higherorder.tex b/advection/advection-higherorder.tex index ec2018c..3c55246 100644 --- a/advection/advection-higherorder.tex +++ b/advection/advection-higherorder.tex @@ -1291,8 +1291,8 @@ \subsubsection{Implementation issues with WENO schemes} To confirm this, figure~\ref{fig:weno-converge-sine} uses the eigth order Dormand-Price Runge-Kutta method with adaptive step size control (using the -\texttt{scipy.integrate.ode} routine). In this plot a sine wave is advected once -around a periodic domain. Here we see high order convergence for +\texttt{scipy.integrate.ode} routine). In this plot a sine wave is advected five +time around a periodic domain. Here we see high order convergence for all $r$, and in each case the convergence rate is $2 r - 1$ as expected. \begin{figure}[t] @@ -1310,7 +1310,7 @@ \subsubsection{Implementation issues with WENO schemes} % figure generated by hydro_examples/advection/weno.py \includegraphics[width=0.8\linewidth]{weno-converge-sine} \caption[Very high order WENO convergence rates for linear advection] -{\label{fig:weno-converge-sine} WENO solutions for advecting a sine wave one period, using three different orders. An eighth order Dormand-Price Runge-Kutta method is used for time evolution. This minimizes the time integrator error and we see convergence at order $2 r - 1$ for all schemes, although round-off error shows in the highest order case. \\ +{\label{fig:weno-converge-sine} WENO solutions for advecting a sine wave five periods, using three different orders. An eighth order Dormand-Price Runge-Kutta method is used for time evolution. This minimizes the time integrator error and we see convergence at order $2 r - 1$ for all schemes, although the highest order case shows limits (either from round off error, or the tolerance of the time integrator). \\ \hydroexdoit{\href{https://github.com/zingale/hydro_examples/blob/master/advection/weno.py}{weno.py}}} \end{figure} % diff --git a/higher-order/weno-converge-sine.pdf b/higher-order/weno-converge-sine.pdf index 69d634ea8f2639e1bf92d8e4b11927508616fec4..d25f8e489e95581f3c0e9bf561f4992f559dd1be 100644 GIT binary patch delta 5758 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 C9~Mmj delta 4969 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