From 6d4570a7d50ec9b61bfb2e12f5c8bf200b5623b8 Mon Sep 17 00:00:00 2001 From: wolf Date: Sat, 17 Apr 2004 16:30:41 +0000 Subject: [PATCH] Almost finish git-svn-id: https://svn.dealii.org/trunk@9041 0785d39b-7218-0410-832d-ea1e28bc413d --- .../step-15.data/img1.png | Bin 0 -> 1037 bytes .../step-15.data/img10.png | Bin 0 -> 220 bytes .../step-15.data/img11.png | Bin 0 -> 751 bytes .../step-15.data/img12.png | Bin 0 -> 223 bytes .../step-15.data/img13.png | Bin 0 -> 368 bytes .../step-15.data/img14.png | Bin 0 -> 595 bytes .../step-15.data/img15.png | Bin 0 -> 270 bytes .../step-15.data/img16.png | Bin 0 -> 348 bytes .../step-15.data/img17.png | Bin 0 -> 596 bytes .../step-15.data/img18.png | Bin 0 -> 1068 bytes .../step-15.data/img19.png | Bin 0 -> 130 bytes .../step-15.data/img2.png | Bin 0 -> 1117 bytes .../step-15.data/img20.png | Bin 0 -> 1239 bytes .../step-15.data/img21.png | Bin 0 -> 1025 bytes .../step-15.data/img22.png | Bin 0 -> 814 bytes .../step-15.data/img23.png | Bin 0 -> 423 bytes .../step-15.data/img24.png | Bin 0 -> 208 bytes .../step-15.data/img25.png | Bin 0 -> 274 bytes .../step-15.data/img26.png | Bin 0 -> 347 bytes .../step-15.data/img27.png | Bin 0 -> 394 bytes .../step-15.data/img28.png | Bin 0 -> 547 bytes .../step-15.data/img29.png | Bin 0 -> 355 bytes .../step-15.data/img3.png | Bin 0 -> 1138 bytes .../step-15.data/img30.png | Bin 0 -> 291 bytes .../step-15.data/img31.png | Bin 0 -> 168 bytes .../step-15.data/img32.png | Bin 0 -> 1609 bytes .../step-15.data/img33.png | Bin 0 -> 215 bytes .../step-15.data/img34.png | Bin 0 -> 194 bytes .../step-15.data/img35.png | Bin 0 -> 1691 bytes .../step-15.data/img36.png | Bin 0 -> 287 bytes .../step-15.data/img37.png | Bin 0 -> 418 bytes .../step-15.data/img38.png | Bin 0 -> 521 bytes .../step-15.data/img39.png | Bin 0 -> 294 bytes .../step-15.data/img4.png | Bin 0 -> 1102 bytes .../step-15.data/img40.png | Bin 0 -> 827 bytes .../step-15.data/img41.png | Bin 0 -> 438 bytes .../step-15.data/img42.png | Bin 0 -> 724 bytes .../step-15.data/img43.png | Bin 0 -> 1047 bytes .../step-15.data/img44.png | Bin 0 -> 377 bytes .../step-15.data/img45.png | Bin 0 -> 233 bytes .../step-15.data/img46.png | Bin 0 -> 845 bytes .../step-15.data/img47.png | Bin 0 -> 372 bytes .../step-15.data/img48.png | Bin 0 -> 225 bytes .../step-15.data/img49.png | Bin 0 -> 296 bytes .../step-15.data/img5.png | Bin 0 -> 337 bytes .../step-15.data/img50.png | Bin 0 -> 2216 bytes .../step-15.data/img51.png | Bin 0 -> 1207 bytes .../step-15.data/img52.png | Bin 0 -> 142 bytes .../step-15.data/img53.png | Bin 0 -> 264 bytes .../step-15.data/img54.png | Bin 0 -> 331 bytes .../step-15.data/img55.png | Bin 0 -> 232 bytes .../step-15.data/img6.png | Bin 0 -> 305 bytes .../step-15.data/img7.png | Bin 0 -> 478 bytes .../step-15.data/img8.png | Bin 0 -> 317 bytes .../step-15.data/img9.png | Bin 0 -> 279 bytes .../step-15.data/intro.html | 793 ++++++++++++++++++ 56 files changed, 793 insertions(+) create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img1.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img10.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img11.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img12.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img13.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img14.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img15.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img16.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img17.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img18.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img19.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img2.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img20.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img21.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img22.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img23.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img24.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img25.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img26.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img27.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img28.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img29.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img3.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img30.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img31.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img32.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img33.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img34.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img35.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img36.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img37.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img38.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img39.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img4.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img40.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img41.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img42.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img43.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img44.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img45.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img46.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img47.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img48.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img49.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img5.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img50.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img51.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img52.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img53.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img54.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img55.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img6.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img7.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img8.png create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img9.png diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img1.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..e6db7d6b761f2fe93a09f935b013a2310448ff1b GIT binary patch literal 1037 zcmV+o1oHcdP)RHR400001 zbW%=J06^y0W&i*Ki%CR5RCt{2SWjycK@@+RY<9QV>~0XzQYhpD6pecEBHfG7gF+BN z&_g45D0nbmpk)y(lvYi>>LE}N1i^R{FNuYEbx{glg!H5rX=oKaw8ZyjW;eT=tae)y zMDl~|%$xUbW_I6uGXdzq!`>l~=wS;&hcVG}04h!&@uNZKjRl}_FYO9zwIf+=$8sut z#x%$VsGImp3rR~iPV(6q4uDFstu$C)SGwZ$BTY0Bvay_2a$`BKW3*^}0sE%6`D=6d zD00p+HMn$ATf`l)g^kkhSl!(?C^B{UatKc& zu#`D)yhyB(!LUfElKZnr6jpMTu`uaY0ZPv1sxEE_(M~o?%dE1|b5O)!uL&74lZIVRQtV@~NNZJx2j{B-Py<@t?SaK)0nG{VZ9mw*^-L5CAfAQ$mBS%5HzjxBMAc==jpC#i~UCiSDc zIU}KpSx~kTs*LczBR>=`$q!OVp?@5Pm-ov<@S;@*?SXLG9)_2d-!ZkuCN-D#O8$_8 zKWQQEly;Xrdvdk(Gb|8+{F14p>mEPjVo@<0t9@h_0H%0Pv7@u~viem2$<32W+VS~# zfx3m|LnQVKLDA0uo1%L!V#V|>qMOhM6P-0wk+wT!kN*fKR!V;o3x67rRa^9}UOWX$ z0Fz|7gV^J|J7po%hE)FbWLHVP(h{HFq~LP{xXI$0C%sYKfR0&V5wSscj%W>QcpW+& zu&{ZDQ`pBgSF#F>V|n}yacL3JW!TxW&>_qNyK%H9R?9FGc9Qa6eiO{Bb1cBJq-Q5s zXGZY30XoJAFZs(V(|O|SEQ;0%d(n2I0=;k|{NMcdq1vn&j|}H(5rJNeNBEKx?|mWSa4zT;8*`kzGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0Xb2gE{-7;bCQAD9waq1^A?B|Gck*Oke{uOvfy@6;hD|>je=t5~S2$U-e(FPp%d9Id?Ga}ZiDYG17{hD+o%uY_ P5(WlOS3j3^P6RHR400001 zbW%=J06^y0W&i*JZAnByRCt{2R?TbFKooy5&2BcEWL5 z*WV*=(#-ylHTwx^a!H9C>QWL{@Cn0c=3hw=Q(qG^JR7NBUOkIKRji3(2@c@JygtV-<~WL-H* zpW^XPc-!U5+W0doP#@3j1%6rU&u&=Z{$X|3>gT_dwgj^Qa6UD9Abm$c%*0J%emR(? zks2PTI^R^_ZCGzYMs@Hc9YibcIb=*e$IB>2`E$C^uJR39(SeKsPo~);ub74qujLYuw(2M)e zNLHJ3F^k(ut&R3nyYjUrqeFDf-QF#==C$Ozkk#zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XearE{-7;bCMGnni<&GBH8Q=CQJJmnK`IP$QhUzY%nm8Fi>C&-^R-0!{%UEC(u8? zab{zqZeu4StH+%GD|r_cvq(tXYBYJyqOg$R$Umk4(HcG;o;L|$U;bx0I5OnPbG?0f Sta%#HA_h-aKbLh*2~7Z!LPD7U literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img13.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img13.png new file mode 100644 index 0000000000000000000000000000000000000000..d18458567c0ad48a59677ba973712a0492287cf1 GIT binary patch literal 368 zcmV-$0gwKPP)RHR400001 zbW%=J06^y0W&i*H?ny*JRCt_YU;qMsh5!ZzP6jyOYhXYIU>RnHT?}}D0s{k^1BfIB zxFm23Twn-b0kH#sR&y~N0O~B5@Q?%O5Qk9W3?UY9@G!WtEns6f0Q46FlL3PPC&LDy zFc&{qw%`K;Ljph0cMYrz2@K4PYza&Z2|PRo5WS2DV>mGkra54o{~Sn4od2l}WKUq& z-vAQiVPLtykR!mr&<=K!JX9_71b52T O0000RHR400001 zbW%=J06^y0W&i*I(Md!>RCt{2RIy6LKoEVG+vF~1atT&;1_Tkc$OkB-vJy;hqlFe? zC)fy*POXe0f|cpCJR3VPU}s}G+iTQH$d#u^oNS_-!<-z5h2Vpoo!QwpGnw5iAQ01# zXvpyp%8~ByxDp}kb?G#sf^BFq-(H8}!0HokQ20WXV6;6s&yg2w4+WX6XB*WYrYl3- zGx3_(94>UoaME>Vc@s2MGUs6`dWVaZ+*uuX6 zoy)#e8(fN}NglkAxocR`O5Dr?+89F>KEHv6-1bA^=2-%6)(p;etw^}5#8$|(>u?qB zZkPdgvz75Iw{5P%QV`zcxm7oHS0{%HC7b1yf588;@{hp~8$vfqI-8+#`b2W%t~*7# zk85uru5@CN)W9OF(*f@AH(>NLZ@r6&K3sO5A2_O!njS6%+5qIHUDZBYQ`$;CPl9S4SFp-7CAY0|NhxLVu9es z*fx9WZzf3#i^(y?J0J^dcNG8d@9M<&VtR z(6Av%rD55ur;NcnaK%iazqFZA-{X_=X+~Byws-S+BAMhRBz~>mFUs(G=K)DC>vBehu2&Mm1~S`{ QfbL@OboFyt=akR{09zYZ-2eap literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img16.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img16.png new file mode 100644 index 0000000000000000000000000000000000000000..585db798303cf535bdd5d5cf83416247f1f85c57 GIT binary patch literal 348 zcmV-i0i*tjP)RHR400001 zbW%=J06^y0W&i*H+DSw~RCt_YV1NTY1e1ZEfuVun0*u44fdPmZco;Ci0=OcD0tN?| zD6aqm!wpQusNe&G12>3L0P{Haaev`p`~?y?#PI(A9|ndEgbaW>02#0|Fi3nwRlvsJ z$bhDXmw|y}LIaq?Z^iq8f$KAn)sO%d5CD2&0+=Pj!0`Y72L@KS#_tfXZv8-%!*Bs$ z&@iaukq4RHz{{``k31&>!~Vs18DxP>S3QPKAocz~5FB7&U=r8`5@ld>fT=yo u@CjKfBgALy2(zRnCLpBwxEh3zR09Cmk1`Z0R#+_n0000RHR400001 zbW%=J06^y0W&i*I(n&-?RCt{2RiRD;K@fet7P`G_*~1YG{QyF0@RtAy0&xa~Ie|h| zU`bXMcNlanh9D4?6=0zPO&WfH4G9S$BxPo=9NpvEv={_^Nq6SW+nMxkXZC;$n)D0c zI7*^)_m)+2QBI5oI@o)r%+ge81}?A!6s60gq1%9zTCvf*m_TEBo+yh_0?BA?6) z&N))AL}bpd-3E$R9~}9RT{462cXD9X86Nge;A*VAri_jiIfNWtMvb0Em9R^%e!0r0 zK(Gioh>fS?ws`b|{skI_TZ9}7&R8;sjWUGSOIg%`pF=v}u1g0)P~6QSyt~fxEa=Ei zg+!}A>{W}j`ZcZA+T^JiVv(jV_^LHZQfC48CZDJgT7jHwJc&4umEHdmT zf>RBXo=E4&A~sZVKjn}){u!vdoxI~0bzaLeDVpb|=b4+$4b!mG1#ZY5{z%AIZicmD zc<+r&MlHkwPpk+rjbb8HOZba%fiHyZ4Xi6*X9K5vSy!754IT^6144I_Vj|X`ed3!Q zxTTLBWgNhbMh0@Cl0-%ZueKE)`Lsi?o<&uD1-F|hsnJ?v6%)yzSJ_V-5e;p2#{^|8 ij?G$7vnX@SF&3Z2sf{QEf9xv&0000RHR400001 zbW%=J06^y0W&i*Ks!2paRCt{2S4)T#M;QM4G1KqqCWPQ+**=O0&PC9G(B!lj0!^-7 z=HMa8LFbT*w^C8qK(c$#dy5$Glm-z@AaN21h=L9w0Z+0jf{;rqL2_BwzpA>XduCjm z-ldU{{h+JXJHL2XRQUBDMYC`t?Q_I?W>smYEg$Mp1g{1I%*%EB_= z1h*HB?QBQ*+Ytnt7nGMq#(0HDwx{p{sy@|1-oeDlEQ2N^Ky7N?6I^o_&bgUNVV}@y zOeUuSTNWm(YsclX<01)Xs2%_hsd7%!bPQqU*o1-C4}~!=Vrd?~yC=cU2l3wUprL)L z`)M%gjw z>u`-fjMvi2lRZ;!3m?*l)u!su7S&#@Iu1!q44ah>c3Ee%Sq;+4b~g}Pwfu4(;YC0ExJ*d7LmkNveRsJC zQSf+0Y*I_WymQj(yv&Hl2P4_T{}cM1)>Dkz4gWLiUJ2Vw5bVzb zTyA*hYlPJnV+-j2w4K2owVh#^De2r?^0=m0{5RxB{^=NZHUu|I<0UW7&Sh9rb_Zt} zeFR*q)RXiBdllUTI2v(oj&_FJ=9xwJZXBz{`CAEp&1MLu-!D7;5=+1Z9HwgladY$$ zULZ3lGrq5g?kgn~(4(K0YCa*%Pd2zatYnt^ znjSs#p9w{iq4!lBrw`zMTG6G=6pZ$FbpCFe-62eIVl!?t!#8wq)EfVVE)M^T5xu2) m%U?L0dLFf$VGn!w58w@+slgTe~DWM4f6}2Wd literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img2.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img2.png new file mode 100644 index 0000000000000000000000000000000000000000..ef048b4e31d716332abd268f37ed204e1a3d6c75 GIT binary patch literal 1117 zcmV-j1fu(iP)0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*K+et)0RCt{2S3Rg4RTTbaXLfe7v%7b|fFg=hi9cwzd|cmRUztM4*x9)RZ7j?NEX2k^(84CyXn1HM<2m5dA-jh^poulG7x-eY?5YWwY+J$skbgQt`);&{o?!K@k^!DL+ za2P5|sI2tbuO(Z)0e!b&SUpC$GaLBsZLWp<)rk-|Pi}=^0jjumjECr!3vcD#LOn7@ zZ@cUJ6y3a&JZ{^Eobhil|AeY<26+$L)R=gd*cxpnrZw8+vR6|xGdhW?=Zi{dk^^xt zO@}J~A)fknnosB_Iv6YWWt8^zEd{q4j`KRfs4QoA5b6pqN{FPfQmUpHq?og`vQ)Z3 z-i9bkcH25|Ab37xwSc^yHG0m)HMPe73zz>z%qSUFlXK>be;tv#0{)eklMp{M;Wo2u z+ifP>x(q8Sz<|p95bUxuNrQ5XTwo#~dWn)lAN5j*klJ0(He};y;k{pdluDN@no2xR zjh*KLeEE`pt?qc`HpB&|!v~l-^2{keTjEKH=Hp#3f^E6bffB zYGtM@#qcuVCwxKAcEuis?&xTgxsai!19>>T2`3wvt$}kK)~RN=UfzaTtWy*&xx((; zEZ}NM=l-9x>)!&O`{Ml=R}3tElFRj?yNxaOW`OJ{OS{4&fPHb-o8)%ka#?{v(n_ z|AB;%pvy8V8%$2VlAb_khH(1Ggz1mzI14Au03zS=zFIJ{rQxs?75%EJcRzyO(E^?6 zg0i}K@(o?ZJ2)YEM`LO@e)6;AX$&{{si-1OH&YO)_zKxFYD?{~9EDn$zy&&@Hq68I zved@~AE_@si?h_~XZCIKFwX6tka?|Nxb2?PJ!&FNsAhyQjyUgaSWE3tMO6-*&CZd> zo&qjLY5#+!aQ_k&U*iV!y|v^z`Ynq-&z45ErK}oh4t2^}CyiC+9NJNC%)C$aec^TL zZF^^t7bIIfe1W*Ye&^sO!av%=czpV@oA-XP`H$H#)1lP3gjbER0$WaHl|vQPQf8%m zNWT}BlsBG&%jNIb8}1t6=8oKpY#B9*1032?;vZWB5-qHV6?jLNzRms6UgUz2uyK$> jd`Eq+vBnx}+#mP{tA-J<5eRCA00000NkvXXu0mjf!#fy> literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img20.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img20.png new file mode 100644 index 0000000000000000000000000000000000000000..bf4729e60510f20bb04753575b0e183a65418670 GIT binary patch literal 1239 zcmV;|1StE7P)RHR400001 zbW%=J06^y0W&i*LRY^oaRCt{2SUrd&MHK#~r)Q?8f2Lcb6Lr7FtE{egN0*#uYTtL zZgzW*nG5Else13#`|4HIRKKceU=sP11t>w}@PKH{`V5>1p^|G36`gzW&w^xJt#c8g zg-`&3v9#&J&jdgBw6NazS#qC$g~xFQDqB3qqV`Vyg!1%lYFRgt1z==`K_Yd83`aeCAE@JQ8ij8 zl-i5D1MDcGm#1Cz1ofYIWXTa#O87g%1?4RhQC|O6Y0dgkKyTr{q$k&#cH<~S?(BMp zPU#qBeB8DzB+tj*cK957durTzZ$c!hHac?yWy>7%X5_zDhI5O}m<jD>+f3sd-}bTu%m%`0`k#@HSh>-bv*O^<{I#OkCVHdeU8IM@L6unzv}QemM2debwe0wdul+jtazt6=y|EsC_IZ?Rr->od3-jD zfbS{hdkFc2F%_4mqh5`*@bqMh)djxOQB!!wO=+zrQltu(A|}z}Cn_pMJNSgeR~32sN>aIXa&mH4McvXP)O$&`hl4Shs5G(9SgGlrwhb{HI^JfN4HN5vFj5x{ zS3Ej0SD$~K?=KDws(n)_o0>$ApZG72WSL6a5I2X8Kij=d|MOC;T&^~a^A$|MX-`@t z#AtP82Jf+PS25X6_-PaMjz$nWTyT3J`WyY3tM;NMMwRB z{yLP-`vv-p@L%iF&bO9ulfavQM)RFkSYd_b;(t|4@TJ6CgX91J002ovPDHLkV1i{c BPx1f& literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img21.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img21.png new file mode 100644 index 0000000000000000000000000000000000000000..94ab4608803c838afcf42aa4d6e295648dc0fcfb GIT binary patch literal 1025 zcmV+c1pfPpP)RHR400001 zbW%=J06^y0W&i*Ke@R3^RCt{2S3hVIVHAItT#`$2|8R4V##yCZia3--Ti7XRTU<8kYN3%IOoNt7~t1qliV1#FM%vI zV6&TyJzeXd9MT3`8kO-_+IY?vNPV84 zo{uNaM`mQQLat+1Q~BaS%!pKUyy(L#osuG#Sh*oOEh@K*?>_?6!wxguW2_-ggi>dd zqu7d1$)U^fNmB_u{zR(8k0Z~ecm&>e>V8-u5BLxGdC+99;#bPSLK?(E%+~WBF0Kh9 zvU9w`d&wxT2ftQZpPeZq$fY&}U*{=6J8& zB(Jhj6W#U`to#hG5F=VC&TdEx_Kg??Xb-2QPRF*xiJ56_h&>?)ydF3zl>FGFH-O?N z_z8S3Hfe|<+Ty%7pg_hzqU38ZYxlJHV`6&&s@WU;kE8W;!uNntr_TYzFYID`O1wCe ztW7Qd0#cz1J#C|Zo zWJ+*{2osVyEhT=xFvSsVu;V#7l@0}}RHR400001 zbW%=J06^y0W&i*JtVu*cRCt{2Ry%LhKoI`+>^tv0a%<6nK)DtP#Qg)@B9JgbqM^VA z6g22sIzxd{fN&cjC6Ks;vhbJ5K2q4{KD4M!CT ztw!Iet4&iY{3-Xam1sqbIt<6fPAY&dO}ZvPX*n503{%yzT*}ACu*XM`%QnF~E_IkQ z^c}O+4WLMq^81*Bq4^~{b0DbT2y-HL0&m{uNd9_h9nkMevCRK0_<2(Ixw(K>q`P}K znnk|bWjb@yk|`G0ASfuhka4EKub+~-g*CBkhsxkm#O$O?<2#|sKN%ve;@tBx&Ghqp z3pcsTBb z!{VibU~ttYIJLMPX?VfD*_nu>Vz1G>jbv$fL0;)Z&V~iq)P5=M^07*qoM6N<$g4iN`&;S4c literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img23.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img23.png new file mode 100644 index 0000000000000000000000000000000000000000..1f400dc0daadc15aba24b99786f23ec2bb5fa949 GIT binary patch literal 423 zcmV;Y0a*TtP)RHR400001 zbW%=J06^y0W&i*IB}qgt_={POal`j#TrgwggQa7 zE?5Zc0~vY2ulj)6o(dl>WX@zbYc`f`#NI(0({OeSgUV32U6>s-sBOb$5ZvW<&P@AK zzWuFR;Le%ox`?I)RlG`klIvXdINT5YpeiN@HTKD#d zrK9p*8mdHZ>z(iPH()<0k&nJvHXi)&1Ig!@EWBY{YWQBvZ|FnJ)lY|`%2m>NgZqV+SPd^%L#FVL@dc6hEi72E RkSqWI002ovPDHLkV1oZ8u=)T1 literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img24.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img24.png new file mode 100644 index 0000000000000000000000000000000000000000..07dabc405e4543007fd9ce4664ea88374435f0cd GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!py+HIB&`YPawx2z$e6Y^XAPfR;-vaXU>EP z6IxnYDk>^+a&i(95<)^kJUl#XY-|h+3{+H9BqStwct9q+iab3JNHLZK`2{mLJiCzw zp}?t literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img25.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img25.png new file mode 100644 index 0000000000000000000000000000000000000000..72c8ce2e07bedb90abed481f6375a3ab97c0b63e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E#!py+HXj$4E3FH_A_=LD_-n@CmiWPI_%$YD@ zLQ6|aMMXtUPEJBXLP$u6hlhuajg5hUfr^TXgoFeS4-Zh&tH{&yfD~g%kY6x^!?PP{ zK+XhD7srr_ImrnO%zPZ7=L#4-iVQy(DKOR@<8@#<@gQ-=fd-YMtW(oG5*V~*{7u-; z-28`$jV+JOWxrxldiVEBcs4jUC{A`1OWAusPvGbTrs*kv7)rH7J`|dAD9+?#2(^+( UJn8wF5$HAsPgg&ebxsLQ000RHR400001 zbW%=J06^y0W&i*H*-1n}RCt_YV1NMu24v8{z_1sY|A2wtfdLm_2N4%QL^s0+Alb)Y zz`($PQ#l;4F)*+)G;mK~VEDk##KgeG+W=zmC@}DVWEDUJZc7OPp#5?{^9mRkco`Yq z3xK`E$gto8(18Y>91|EEY(W-qu))+b!mM)OuLWykVAue60TaxZbOB9Zl3xL6BL^f} zbRZJb85mL+_yQ_H?5kiA<_4ge04@d_5a$Dfs~$rqh{bpTY8247M;SiBm|$=K$dsCx t0A#T=K!w`iR>NbB-2uvAY+x8P002hoBQGgP87%++002ovPDHLkV1jX$dyN19 literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img27.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img27.png new file mode 100644 index 0000000000000000000000000000000000000000..f23e1e4514b1b36099834e4e43931ad9332c768a GIT binary patch literal 394 zcmV;50d@X~P)RHR400001 zbW%=J06^y0W&i*I2uVaiRCt_YV1R-E24X-168i&DI-r0TO0(KCf+zt7W)4!cBLOBL zW<%mTH1jhktYx^s@c;h@5QBlCJ&cFp6%*90uR!VzfXWyc$hDC~puoUTfXwFsVisfp zRt99Zu(QfBFh~n9GVuNXe*nl};AiAwVBm*I^MlkL01^UFGdKho7$$&20Leca7}yy= zp*my%djgnZY{03a14?sYkz-6?$a}`{nSp`xx7`8;mIX*sU=aoeZUJ^+Py&;z0FMI$ zYTAW}Fz_)XFdhL*M1!~o7(fy7|NkEbm0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*Ip-DtRRCt{2R6k3@P!Rv6X_`MZO$P@j&8&kR-3*Qn5)hp83AErB zC^{$|w4xs%vr|DoKn6EK1#z~M;9>(^EL7sV%S&lfS`<3=2k(CO?%v%y-dzHWz}du9 z*f5w4&6s{jq`(Vv?8dW>O@NZtNok2y8F6%=i?uIzoU~OVY5pt!Oz3dov*xj^#Lz0S zxy+@+JBZ+&qKa-ZpbA2<944Qhbl(Jm zCW43_$(Ls`re0A)MBnxb4P9Fmy-$*?@5CLx$Wbh0RzrHkl)RSK4DqxL>7fflP94D3 zcn&10Lyae-jo}2299p3KK7byKnO4Sj#YhOH#eDIW+HQgKT%K@jN6j*sZC7oRMePAS z7@zD`0vvt-yAv_T%#QqIt&kK?Ty-M~t?J}(@-b>-EN0s!MQhgzkKbZ01LXl&683H) z5Xl%TWg7~`9R1t@_bB&adZMJuuWMOJ1|vz@xJp@l?hhwxgTy+X{Pf>b^m1=f@-c~% lOxYq)&%0;-Cl~k|egOu@XG7jjTrmIu002ovPDHLkV1l$t=O_RG literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img29.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img29.png new file mode 100644 index 0000000000000000000000000000000000000000..be6ae921d93759d7a34acee0d7508b8751147f38 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^dO)no!py+HxFh^qAdq7a;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XYvnT^vIy<|HRHFsZSb95{bqLo)L!0dZz#d1iC_!|ZHrr7uoxY+{+f_<5UwUP8h> zhXBL8178~*6ZGeNZ=4H+jY}I_8y_+-A7<&e(ZagNTw_C{%7JqS4t^9pn3`DNQXnEx zAt_nB+=s968^{U!GxXl|%~fD1DPa^V zTrl0D;ot`0BhR=T1lifn{5v}1l_iUWkz`7vkGL({T($)pnRYwaw2ADP<-VXGH6fve zMf^@!-17#VMt+`}7+$9r%iRHR400001 zbW%=J06^y0W&i*K@JU2LRCt{2S51ffQG?=T z@hWHwUR01hcoU=yI1s|d&M^mZj`6hZ&6{g5=d=gGo1>ryFX?FFf*9IYud1f2JJY)4 z;@>>zdavsJ)T^pj?^OdGu!%%$6Q0*YVgQ6$F61uJK;ET#BzTiPDKPTKX26&x?te%K zawsA1*7|NI=Ut`Q=c#!S13SU_mdv)rgVuP@V!`&s-8y#^82$+_TNqr531eQwo_6|C zKK zU{$$1v7N3R$W3HhXX2WK4x?V}*Bbs0u#e61ucaC=o{Zph4&2~xC)FVZVu^H*dQ*FG z5Q)O((J@Elu)bbXR?auvoiaAVY8$zP4(d`M;UY9QeASDsWWgC+`1M08muC~@x*}6} zTI-$;@%an!O=;~<$pPY(q&u$_lfJvEY@WVbbuv^?DT}Fx11=iQmf@z_R_SboD%S!_ z&yLggJw6+a&4n#-%&g~(NSWWTbqw0p0j^iS^OdK&&ext*O-0VIz>{vthlRPo_QuAz zHd%;@suz{r!y@0hVN2ap*#+!<7oy7h+$R}3X+QGz-UposQY@20;-v+FX5MHk-&r^n zx5F-eQj<|<-de*N{tFN+o4;Z1OKBHNx<(}4X#4$VnBA{$oW)9kXvV1b4e&~e$6Eb($NZpabFu7vZ71;s*p76<7pV@NGM(#HrC)gZ z?TP1}z&WBeQ@fNrigSBZg`K5zM#x-H7&W8km?yxG#)@ie)8 z@xe!cOCkxcUG==~U#8|Neg?lxD~-jCRD7B?7w@}O*A1=bn6j;)eczGE(yiuCqh8*} z{7QJ0rrMhmaoXpTBFg(Nrux^`jD)uk-SkChXD;JqyqCgOaJyTqXPJ23Q`l64eE1{T z4n8@~j~MNeFW?{I`}93a->C-QTST~D{el%>9|$g9#7d@WYuRAL3>^Z^?R%j5wPCh( z1y;d3+}h;?Y8CU|woc!P4X3LG5Z^JfhBd5V4gY-j17X7e?-)ZZwEzGB07*qoM6N<$ Ef>|pmWB>pF literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img30.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img30.png new file mode 100644 index 0000000000000000000000000000000000000000..dffebefcf271b3efc90a7f47eea2007f06afffe5 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^xzGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XYjjT^vIy<|HRDFsZR|SR7zX+GiN?+-_iI{xtTvECWuk*+{FV$2N~7YaTv8X3aXqt ke&DO{(VAzU?O7!lLO(07Uvl?vBG9o6p00i_>zopr0O6=(ivR!s literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img31.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img31.png new file mode 100644 index 0000000000000000000000000000000000000000..7a9d8adf2d458396655a99e7224c2662d78b6438 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!py+HSmSZp0LW1c@Ck9LV`F1rV4$L+A|WBc!@~nqm9si+HIQN~3GxeOaCmkj4ahO|ba4!+n3J5~z#t}Z zvQyx3OZVbWvJDkX0_F-QHnVS?gbX`;rAT OfWgz%&t;ucLK6TPBrv)F literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img32.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img32.png new file mode 100644 index 0000000000000000000000000000000000000000..4c816a1618d6d286a084ae87dd12b9ac8070dc72 GIT binary patch literal 1609 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 literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img36.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img36.png new file mode 100644 index 0000000000000000000000000000000000000000..5cde8c1a7082f8fa9ed3174e4e4deac05600a7ab GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjU!py+Hc(I646UZ?L@Ck96uZ%;tyqt#Wy4bbFQ%~O#k=)f1{(+lPL_WGn5@z#Ltwe zR?hv)v`pf-KO66{ulso>v{=;N)@2CdljXU6L4^B*MZ?Q}9d;1~rT71t4>Bq!OC5T@ j|DV{|Uwb#&OGq&63RK+^_*+^J=uievS3j3^P6RHR400001 zbW%=J06^y0W&i*IAW1|)RCt_YV1R=U3=GU*5*Y~aL8XuZClDt9@qYyaexMQt!T_j- z4MabH8pY4>pP>P2us^!-qym11i4F`L3&6%m3otAIQan&MgY4iCU~mAdYS{1q)h`@S z6&onCp9H{}0Jj(h7}nz>>oJ z&98u@A1oPv07-p-tGNJTFftqgQ6Hg7*c(vQNF;+;tYCu|Le(&SXW(UEM5x&gVsKx* z-vFf8w!-aVKL1mI;~fJ-|Nq|@*$k!z3^Gu;sDPstnU@iOP0jEC08OVwk)h5^DF6Tf M07*qoM6N<$f-5?l>i_@% literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img38.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img38.png new file mode 100644 index 0000000000000000000000000000000000000000..7c36f1cda34b0064e28b6db5dabf0d605fb35f97 GIT binary patch literal 521 zcmV+k0`~ohP)RHR400001 zbW%=J06^y0W&i*IheA z46FQ2XDWz}9vj$} z(2&IM4F1Ei_)J8NC&sxf0IS55M4p8&8ps@1*h{lvIiXA9q~eONL&G(+bk_4YB6f=D zMkLe1l7XX6oqF7~r-zA(DoG!^b=*s+=3Wuz$~M#Fd*ajf)5b3Jo!YC-u_+l^59jGj zL+h=4V6n4_DoV_(BGL>zp>_!AL$dh|+mWfnI)(7)3=pn`MnK18Q300000 LNkvXXu0mjfs2c2_ literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img39.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img39.png new file mode 100644 index 0000000000000000000000000000000000000000..87468503612205978c913850e6d7679b10ddf753 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZH!py+Hxa&=@6_8^P;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0Xa)NT^vIy<|HRDFtM_+@v(7SV1LA#aE)EyV0{KNvs40;;2njgsg8m!hKpA_Fw9uV ztHUcD(eQ=0?OwZaf%b8R>!J!@m^AiJPIh8G5mDFH*23vRHR400001 zbW%=J06^y0W&i*K%t=H+RCt{2R?UkXMHK(_OmBD3&h%6WA#VI&`sT%ihTy>jv@e2q zkV!5c9Z*!fIH&}2Ff=AclMtNv7qpOrdN890uNj3L17nO55aI-s;6W{u)!kr*wq8~B z=S=Tx5(zo%uj#JWuij@>z1Iy?z)Og!J32~lxI_|$f3TNyYhcxSc-5G?$dlBde!#I?+s5z%Q^GP~kk1419rZ|CkEz?X+ zHzH<+S;c#@SBQHDTEP2~CsMI`a1FHMc!b%ypj4)RTp{MvH?cO>d0i3pXm^F+Ep6Oc z=j%U-@y%fqr?1(qV)9LK2WZ8VPdh9xO#)p}M8y_(S4CYVEpX0{o>W;2o7BadD?;D) zdK>5v=G3Cm6rYN~>@H|`H(2c7YKC9rqyAH5*LN2+N?pbC8o>G--Yl+eN@@!a9^RAB z{sO7Z!SU#6=UF59biL&L2=IiWtbjDmR@t%!j|L@{uG>q=yFEco*~cq0`dP!d4*Z}= z)mN;qi=r!MQJ$>D0|@?FU7>?iNUhsrxxLKzY$wdH zF+w$t>oF|xBa1l4Hqe}f)6-*-{X!r)~XStIfMX$2!)asM%L=K1ZuIsg$grivwzHFXJ9v686Qb)Y>c`#(}N>*!zh80C@BM US{nu=w*UYD07*qoM6N<$f(e`y>;M1& literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img40.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img40.png new file mode 100644 index 0000000000000000000000000000000000000000..c395b14fcfdc3e80e280592292ae31009bffcf3c GIT binary patch literal 827 zcmV-B1H}A^P)RHR400001 zbW%=J06^y0W&i*Jxk*GpRCt{2Ry~N+KotHqn{2XwNeU5vjw7Yw6#<)T#6_&cVzpO- z)m0i1Ej8G9Alxn5%i76RCyH1Gw6Jr}#!iEUVBs0LM!_?_`N?E+oAdU%6YpC#nK$42 zX5LKRyabpEgTZuu0wZ|rW&s8eJ;IW|v&Kom-2qc{Xa!{)r>hQw4U>(4ixiEsn}DVR z#fxTPssQYh%CxwRzGOtGAKpqc@16OUeKm7OL+l=^pDYUUz$PpfOGiDQ8Tb^2E`nVXEYLv{GwRJ zpxJfaY|Ym}Ew>yv(TK2`Z}$HS&&%`nQzf4kJH)rzZZ>J3rB+daYS{>jZvL1|%TlRa zWQn0#W}QE10ZUCJvZLc)=0_~NkaXc>Ssq9_mOO-n`#R`>p0%MdN$L*8neUK__*Bs7 zi{iqkWcg&H9^-L4qI~F#r33MCk#6}hr*$?X(QNihr=KI@bOOH^C}bHZERRyO&7BJ9 z)d{+fe;HBv8Sff96s7jZU&hE7!3@g%@9uaLzK5#yxCGpqWNJ~~T0z(Cx>(%e@T4l9 zVMX5xum&rtU|RBC-@pUE^x*g<^+7b&1L!iM zmb|A_C!%(sy%FXj(%vFoU{1)|uF1X*Dn1Z|-YKh}(veP8B|GiqQ^0Z0Yk4J0jUm44 zvDX!*jiC0LDiJlmWtn`}jp?1TI%#002U%vXZ9Wsd&nYoBZ?84(&0r}3PW_;bd;is4 zxE^zRdHo?d-I!Q})VF&|ZLQNtzrRo&H2uzK-1mgIb+uP$L`C;#&gV9JJ45eHZj^ww zs?=D3EXrrMdfnYl&N0s};r6`cjazjVr1{qY_py&Xi$6Tkq45t0>6-um002ovPDHLk FV1mM7ik<)f literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img41.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img41.png new file mode 100644 index 0000000000000000000000000000000000000000..7c3840ab4110ef9fc89884946b2fcfd8742236e5 GIT binary patch literal 438 zcmV;n0ZIOeP)RHR400001 zbW%=J06^y0W&i*IG)Y83RCt_YU_b?YX#5Kd3;_%b4M@WL9}rAdT@cAY2ynm*H-?F@ zLns~;ie$jfP*9+N;Ic75-2Z{~!Gr@)F`)YkfYbp7E`dh&1O^~tXn@GDfCy$V;$WZy zP*7k(a6oS2fMXRCFhX^&V&E0v6=3MV zZUz^aWd6)B2?!ZJGcfc|fQ2;zuq*&8T>#;IU|`{B;7(we0^vg9-~dP*2<#PLiWv9> ze3+OvcB2{vRL7A2cQb^u1sD&1>n?K62w>=Y01|+Z>;}j>v>}uh^9u$xu*)E%3#z$I g*gVIMO>kHN04V%4Ipf^91^@s607*qoM6N<$f;bVPkpKVy literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img42.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img42.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe787d95cc79a74acf771be8e4d0eefa2bc8274 GIT binary patch literal 724 zcmV;_0xSKAP)RHR400001 zbW%=J06^y0W&i*JQb|NXRCt{2RlTd!KoI|3E+3mqE{To!@sM=B;uR^c^RN_))55|+ zg4L@uB5EhWMk`;?e;~G2PXy8KKnol3US;_Lf?(l!Y9;uLvzyB%_hHUXg&WB3eC^Ea z%`l*FMtXyAR-?D=aWD1xe|0`MI6C^Z!vwrTdvQ& z8zQV@w9x4)j1Ys`75@@2_!18#W+1X9q4FiMgVRhJ`^9=gX8T6{ErohLI#RzIcbSOTuAvE=%F&xe!r3CbFDe+FBT8n!*()UMd{GCf$r^ z+eM$qK@nNF*T*9(rV81$-X*71*%@ygAu|Vaw=D!_OooFR&!@Jq<}_8=9x>MN&qBOH zo}zp5>jHP_{I~XhXw*nI7bQnZg!$+!^O!EP_ZVFdtV#U>u=xV)J2p#6E5wx#=q)+Z z{)PuM#RKdlinMtc`Z&ayf>09jMvvtlo?)v{u{?wRV@7|`Tt~#<())|8Pd@~N90y_RRWUk0=lOI73pnK$=HPl~m2w7TIyU+!2f2y%K1H?j?vuBD zZHW6B;p2zEoyFj;9y}G%_rVTs@9B3pz{ZsPpC9SbUdNjvA2JCTZ3WQd>E9q+lDlbs zcE#3JUIN=ZJo;3bnp+F{J^ZForoj9RHR400001 zbW%=J06^y0W&i*Kl}SWFRCt{2Ry}AGQ4s!ivv>FI_iciR2*K4NAc(m}P(gTzf=%$y z(q;=4u}WcMp)86*5W~gFMz}PhT~KTU^%R1Q#UTimC)ScxqX>%Y%zL};?p@Rbu@G+H zcIM5`o0&KB<{q#n1pHZz7cQ-5LZ)UBuC2dL2s#GW-+6!qJeuYGPOaO%k&=hA{IY^7 z5ms0? zTHkU-ze#D~H7#V1h-UNq6SGH~eva>H2ZAc~A3?>SGE$tzUky;y&2le_K5Nc&6#4o9 zrN_&bq~mSWlf&f_H>EAwdL`x&mLEf{_*3xb1aWM?NU{pXzT;zuj!o7)NCzFPMBivv z@rB#R8#mT<6@n`Q`!p=Y#FUS5)VQQAR)7wq5XZVyC>ZqwI6yU+?hs=He*ukPE$)kT zTKmY}TB#dPU`$4lxxi5r>E^?i)q^p=YRdfRGLEHCP zhF}(5*5~%MT%8hW_3AxIENXlmw$eS^)mJKf#_AvVQjnLox}n?hLIbjyB-`#cs*o2% zPh0ozLOlr4WS_YH#w1R%S)5(2^Q0mPpF=UWZnZ1PK&&RmI6RnDLX>jsPuMY@l)-?F zVJNM^8^H+vEu6`%+IgY%w63x6erd1Y06c+uh5qmS40rcfkXxS4ONEiz-8|b&v6`aK zF2gAjz0WQ46)tBKvy77l9T?ap_2uQ3b!AX1uO;>O1b<$|tSi_3u=z>zph z{g$-uZccVE47PJ<>$*ErLjR8C=?Zv8rEkzc>2LD;oc@#iJX@yZ)fgus4_uK9LkvoE zae=+@Y9TLt39Ez4z_}r_1WHPyEx%MqzzY7Tl7Zq^7u!~y$lHj~2u3ghf**Gs)DdTu RJh%V=002ovPDHLkV1m|+_zwU8 literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img44.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img44.png new file mode 100644 index 0000000000000000000000000000000000000000..2c729c1f90505dcee98f215fa9fd4276b2506a53 GIT binary patch literal 377 zcmV-<0fzpGP)Z)0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*H_en%SRCt_YV1NRC22>!x(7?bDfGP%5!|woPD==UKt_%zu5S9qY zK$iW?Se0Rd9SrP1vVnmcNOnA6X862-i|-pqzU}Iol zWMD7=F<_3qa1DpYVZmAA^JZ2L?ug10NU;fR%Hw0F`V2Gx@kCY~a1YPyjJU0pTQ| z&)KQtI5GeS$RS|+FR(rUF?k#q7?=(~BvXLcQUJt?24Y@lv~mP6m@*`QSjQRkL6NJ- zz3>79;{~XRtQ#1Xfs=(ii1z_1%HzNj8~}`u2P+sA7+4xmoR9#eQC(I7CK($T1~~u# XJlH7`Xj|v*00000NkvXXu0mjfiFtzX literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img45.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img45.png new file mode 100644 index 0000000000000000000000000000000000000000..8ab2827851bb45a049c6d1e8a5d4e124cb83003c GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^qChOm!py+Hcp#T64#+VG@Ck9LMmLRde16v!xvL zlIKj|yH`qqDohVG)Db^BWgNH)JN8cbu)+e>YF)c@M)5Io)UC cSBe=JJ{by3%=*K10%#?Jr>mdKI;Vst06jiSh5!Hn literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img46.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img46.png new file mode 100644 index 0000000000000000000000000000000000000000..68555286af1217014e6bff1f2e36bd50c84d40bd GIT binary patch literal 845 zcmV-T1G4;yP)RHR400001 zbW%=J06^y0W&i*J%Sl8*RCt{2Rn2SEKooyT_9JaKJMmQ*flY0hl~TIgROW!2-G&? z619lhr0{VMEDWK@l&bFoU#XakVNqDda>Q@v{NO%Q z^}7Jott#oo>31Z(+a8BD9c5dTi>>i|IN2C&RqHUlzWiWuDIdc0T2o9vhqq@9^o{sg z?_{7j!|x>1rD)JAP`v_=x8>l#OeCCG6hxni#OI{4tMCT;Y$*f9(H$n4qTVEinyJ35 zA&VU%6#WK10>>5tcYavy30egBm2&&^cJDJLV9ReC5cLu_5QA&ff#>@5QOIyGs`{+Sl^#UIzh(SBIP62#1Y7 X)6dN-H?)J-00000NkvXXu0mjfJWYeX literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img47.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img47.png new file mode 100644 index 0000000000000000000000000000000000000000..0f977006df65cfc2a388dbf70bb5eac0c7f04147 GIT binary patch literal 372 zcmV-)0gL{LP)RHR400001 zbW%=J06^y0W&i*H@<~KNRCt_YV88-+85$Tkm>N*T_^~O301gI*0tP-Xlbzu_MC>wd zR?0S1s!2lyq^YQW+Q3@jjmk)UA&027SC$8Z2dv4QOm01E|x ztYnDeM; zU|`?@3FiOZ%)qdPfuaBUTY;IaK!IYo4ccImX@Ok>1B(N~;wCt&fFf^F4*&pul_`0o S4M0Qy0000 literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img48.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img48.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd0f4f9459a822a0be72f42b7193c1ff8d7f332 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&N!py+HxcqY>h@%_e6XLpg^X3&RR?L|*XTpRD zEiEk-6%{!-ISB~~At50i9v(I}HYzGA5)u+TJUl=h+jiS^0x8ClAirP+hi5m^fSe>x z7srr_Imtjh3CRr%ZftC2Vg}uFCpK$7O}lUv`r9G_2P=-AoSsLH5w>`#OjqgHjxW2TnW^aBRcXF95@Xa2mS&Bn&?Q&_;p Ty#DV*pluAEu6{1-oD!MzGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XfS&T^vIy<|HRDFwbLSvq(rw@MtKmkdWBH)L>#iiAjzll|f0O@x%j0=CT7kO7m*} z@GsJnd62+}FO-{2^5(3a^J$3u4>S)R&z$ybi^(&iudF|pD50FTbWBL^-X rcrd$)ah2b^#zgIA{jah;!VC;6%49#C+pT*C=wb#>S3j3^P6RHR400001 zbW%=J06^y0W&i*H&q+i%|YD$fQK;mlQut~3YgM+U) zP|GE13p}MHVYS{5Ox}jf*Cwg3;@}cO-c0H$?&|jR3T)v3Ig1FbnKRPm{p7gR5BV!f z`zua7ulBGOFnP$C;p`dChzkwq7^kQb5y6CY@&PShJDlv$r>u>^Z3!!w?v5VA=e%Yd j?BI2Uv0?e+hke5x<(nb}=juR>00000NkvXXu0mjfU#E>f literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img50.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img50.png new file mode 100644 index 0000000000000000000000000000000000000000..9b39b65e3f11c0cb7f46913b63f2fd29f839267b GIT binary patch literal 2216 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 VnHi^5^_c(w002ovPDHLkV1oPcK5zg4 literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img52.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img52.png new file mode 100644 index 0000000000000000000000000000000000000000..f4bf86e61967eed135c9117f80a8d52c7e547d40 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5#LU3JDEL6(B#^@s;1lAydGlri0|ONm6`+7% zQ-~LkVk`;r3ubV5b|VeQG4OP845^rtoY2tB>~P{h!kL7F4a^@D6iYNELo#Dt1sq^x mV-{I-kiq#4^JDfuKphcc+@15^9Nz}i%i!ti=d#Wzp$Py<$tV2) literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img53.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img53.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9242463b3807fd7429c26f596c23aa14e5de07 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$p!py+H$hUdTG9X7Qz$e6Y^XAPfR;-vXVM0qw zOGQORPEJljLPAJLh=+%Vfq{XFii(7U1P>1nP-6n*?;WGKKbb0CE&FiYRTaL!t7fzxJ;r^;p|>|*rg zjdf5zoEgWG@5C_W;K_pym|{Rrf};sT;{$ZC2@mWVsb#J@wJ$} z2M%b*HKcLqGgmV>TOJNENxZhXm&eLnGK;@)=Y|3)m4~ft3@Ln?6$dqQY=G`!@O1Ta JS?83{1OUc%fo6+-s3#-Q*R{j-FleC!Q+UD+9@=gDk;>42*+>2(gl$}&! ziENT9@M$QNux~i=`9BbFFR5huAv(jaLG{NDsg?;okJ4i_*|;*^G~_DU`-S`S9#AyB b!N{QJr*^aT$Ej~XPceA9`njxgN@xNA&vbeX literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img55.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img55.png new file mode 100644 index 0000000000000000000000000000000000000000..fb30b98b839eb157e0c563f1002bdf2080dc4057 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz5!py+HsJ}ij0mv~3@Ck97srr_Imtk64-y)fRV}*fZ!xl!JYWbpIipXphl{VK;lgwt4h0}S3~(Xpp6Wku6{1-oD!MzGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XgeET^vIy<|G5PC8Rho)G7R9NGdSaGBDUsV6dQ>p_N5p<$(idkMS&dYWU=!LSr$b z{EWa23m@`K$V%`?GB~hKMEZg7gI0?qX7y%RHR400001 zbW%=J06^y0W&i*ITuDShRCt{2ld(?2Kn#ZeOQUjalBPmTNEP7)5RcG>J#Rn<7PbyN zz^x33@&c%cg{>J_V1O*_8CekU1f1x=80=o!1SP2e!PYO5?ejVD#XbW$%?K|17&S;1 zI`r%I2|w`1q|UDeE7(gy>)}_|jHy{P8f}u1=EMQqPKs!@>HO;JKVSmkBy7l{*T;|^ zTSX8yvSPSEYi69h+Ri>2#`~o5w}SsZ?4K}%It|%q0;1sW+g(-)raJ};NFYZ_x9-q4 zuIcz$VzNt-1C2O~6N_uGK@H{J`DqG-bMHqId5@Huq2etFIC1HSa&b9U)IrU%hDC=A zSXR|db45Me%-2?I^g(6l2)MtTuf42;GOP%dT^yoE=H3pDc}%vQiv)tl=`AHFjn%#F zeNFX%_t`{kW$AK+S>->aH_rw%buU*UfUOFVowiyppIr_zUEV5jWHPGdQ7gX7Cl?q+ Uwp|UHpa1{>07*qoM6N<$g3<%bhX4Qo literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img8.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img8.png new file mode 100644 index 0000000000000000000000000000000000000000..7769cd56220014052c8ff28299a696bac45cc315 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^IzTMI!py+H_(F6;5s+gL;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0Xe%pT^vIy<|HRDFy|TUY<$STEK*=#w1AnO&)Cijy z7?`ANW_HzUI2wCXM#6)USB8g)heu~+mczFu9zKPWYgAb_&6HmFOuC$D&fmuQ6`QBm zJ3RaNKX$?Y?Tw%F8JRt9Je$&VKA&;I4?ebI@;p8c;ms}f23I&6Bzaa#`ji=27#h6! z`~JYrgWsk*l`d!W*fHI8;cVVD{f(v!i970*oa>pG**>Htd~gzHW~f%wQ1Hs%q5$*; NgQu&X%Q~loCIDq^ZEOGl literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img9.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/img9.png new file mode 100644 index 0000000000000000000000000000000000000000..3781f68634a880baf9962ed12e0e508ebf9515a8 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT&!py+H_}^S%H;|(n;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+X9eU=aEI^8}B*-tA!Qt7BG$3b& zr;B4q#hl~>hGzDJB4*~E;|EVPu>3eMNnz4PMm>%YMTRAO9}G=CIPzqiNMoNQ?l5Ux z4j<2vCN{nejtUzTnwiyhHA=60AX(1T^RuDf!g#uUgCI{$zW9s1xesch89u7aNVswE zz>lWJlZ}j#Ii}4g{n*sm+V;Meu`p-goDiYk?PM-}q;w5qz~;X~lD{7CH8JJ0vFVF2 ZGF+RW5_H`l;4aXO44$rjF6*2UngF5xUUdKf literal 0 HcmV?d00001 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/intro.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/intro.html index c59cfdf609..f35bfbe7a6 100644 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/intro.html +++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-15.data/intro.html @@ -1,2 +1,795 @@

Introduction

+ +

+Foreword +

+ +

+This program demonstrates a number of techniques that have not been shown in +previous example programs. In particular, it shows how to program for +one-dimensional problems, and some aspects of what to do with nonlinear +problems, in particular how to transfer the solution from one grid to the next +finer one. Apart from this, however, the program does not attempt to do much +more than to entertain those who sometimes like to play with maths. + +

+The application we chose is, as you will see, not even very well suited for +anything, since it is rather impossible to solve. When I started to write the +program, I was not aware of this, and it only turned out later that the +optimization problem we are looking at here is severely plagued by many, +likely even degenerate minima, and that we cannot really hope to find a global +one. What we do instead is to rather start the optimization from many initial +guesses (which is cheap since the problem is 1d), and hope that we can get a +reasonable best solution for some of them. While the whole thing, as an +application, is not very satisfactory, keep in mind that solving particular +applications is not the goal of the tutorial programs; rather, we would like +to demonstrate techniques of programming with deal.II, which is indeed the +focus here. + +

+ +

+The problem +

+ +

+Now for a description of the problem. In the book by Dacorogna on the +Calculus of Variations, I found the following statement, which confused me +tremendously at first (see Section 3.4.3, ``Lavrentiev Phenomenon'', very +slightly edited): + +

+

+Theorem 4.6: Let +

+

+
+$\displaystyle I(u)=\int_0^1 (x-u^3)^2 (u')^6\; dx.$ +

+

+ Let +

+

+
+$\displaystyle {\cal W}_1 = \{ u\in W^{1,\infty}(0,1) : u(0)=0, u(1)=1 \}
+$ +

+

+

+
+$\displaystyle {\cal W}_2 = \{ u\in W^{1,1}(0,1) : u(0)=0, u(1)=1 \}
+$ +

+

+

+

Then +

+

+
+$\displaystyle \inf_{u\in {\cal W}_1} I(u) \ge c_0 > 0 = \inf_{u\in {\cal W}_2} I(u).
+$ +

+

+ Moreover the minimum of $ I(u)$ + over +$ {\cal W}_2$ + is attained by + +$ u(x)=x^{1/3}$ +. +
+

+

REMARKS. +
+

+

[...] +
+

+

ii) it is interesting to note that if one uses the usual finite element + methods (by taking piecewise affine functions, which are in +$ W^{1,\infty}$ +) + one will not be able to detect the minimum of some integrals such as the one + in the theorem. + +
+In other words: minimizing the energy functional over one space +( +$ W^{1,\infty}$ +) does not give the same value as when minimizing over a larger +space ($ W^{1,1}$ +). Furthermore, they give a rough estimate of the value of the +constant $ c_0$ +, which is +$ c_0=\tfrac{7^23^5}{2^{18}5^5}\approx 1.61\cdot
+10^{-6}$ + (although by their calculation it is obvious that this estimate is +far too small, but the point of course is just to show that it is strictly +larger than zero). + +

+While the theorem was not surprising, the remark stunned me at first. After +all, we know that we can approximate functions in $ W^{1,1}$ + to arbitrary +accuracy. Also, although it is true that finite element functions are in + +$ W^{1,\infty}$ +, this statement is not really accurate: if the function itself +is bounded pointwise by, say, a constant $ C$ +, then its gradient is bounded by +$ 2C/h$ +, and thus +$ \Vert u_h\Vert _{1,\infty} \le 2C/h$ +. That means that we should be +able to lift this limit just by mesh refinement. Finite element functions are +therefore only in +$ W^{1,\infty}$ + if one considers them on a fixed grid, not on +a sequence of successively finer grids. (Note, we can only lift the +boundedness in $ W^{1,1}$ + in the same way by considering functions that +oscillate at cell frequency; these, however, do not converge in any reasonable +measure.) + +

+So it took me a while to see where the problem lies. Here it is: While we are +able to approximate functions to arbitrary accuracies in Sobolev + norms, this does not necessarily also hold with respect to the functional +$ I(u)$ +! After all, this functional was made to show exactly these +pathologies. + +

+What happens in this case is actually not so difficult to understand. Let us +look at what happens if we plug the lowest-order (piecewise linear) +interpolant $ i_hu$ + of the optimal solution $ u=x^{1/3}$ + into the functional +$ I(u)$ +: on the leftmost cell, the left end of $ i_hu$ + is tagged to zero by the +boundary condition, and the right end has the value +$ i_hu(h)=u(h)=h^{1/3}$ +. So +let us only consider the contribution of this single cell to $ I(u)$ +: +
+

+ + + + + + + + + + + + + + + + + + +
$\displaystyle \int_0^h (x-(i_hu)^3)^2 ((i_hu)')^6 dx$$\displaystyle =$$\displaystyle \int_0^h (x-(h^{1/3}x)^3)^2 ((h^{1/3}/h)')^6 dx$
 $\displaystyle =$$\displaystyle h^{-4} \int_0^h (x^2-2hx^4+h^2x^6) dx$
 $\displaystyle =$$\displaystyle h^{-4} (h^3/3-2h^5/5+h^9/7)$
 $\displaystyle =$$\displaystyle {\cal O}(h^{-1}).$
+
+ +Ups, even the contribution of the first cell blows up under mesh refinement, +and we have not even summed up the contributions of the other cells! + +

+It turns out, that the other cells are not really problematic (since the +gradient is bounded there by a constant independent of $ h$ +), but we cannot +really avoid the trouble with the first cell: if instead of the interpolant we +choose some other finite element function that is closer on average to +$ x^{1/3}$ + than the interpolant above, then we have to increase the slope of +this function, since we have to obey the boundary condition at the left +end. But then we are hit by the weight $ (u')^6$ +. This weight is simply too +strong! + +

+On the other hand, the interpolation of the linear function +$ \varphi(x)=x$ + +connecting the boundary values has the finite energy +$ I(i_h\varphi)=1/10$ +, +independent of the mesh size. Thus, +$ i_hx^{1/3}$ + cannot be the minimizer of the +energy as +$ h\rightarrow 0$ +. This is also easy to see by noting that +the minimal value of $ I$ + cannot increase under mesh +refinement: if it is finite for some function on some mesh, then it must be +smaller or equal to that value on a finer mesh, since the original function is +still in the space spanned by the shape functions on the finer grid, as finite +element spaces are nested. However, the computation above shows that we should +not be surprised if the value of the functional does not converge to zero, but +rather some finite value. + +

+There is one more conclusion to be drawn from the blow-up lesson above: we +cannot expect the finite dimensional approximation to be close to the root +function at the left end of the domain, for any mesh we choose! Because, if it +would, then its energy would have to blow up. And we will see exactly this +in the results section below. + +

+ +

+What to do? +

+ +

+After this somewhat theoretical introduction, let us just once in our life +have fun with pure mathematics, and actually see what happens in this problem +when we run the finite element method on it. So here it goes: to find the +minimum of $ I(u)$ +, we have to find its stationary point. The condition for +this reads +

+
+ + + + +
$\displaystyle I'(u,\varphi) = \int_0^1 6 (x-u^3) (u')^5 \{ (x-u^3)\varphi' - u^2 u' \varphi\}\ dx,$ +   
+

+for all test functions $ \varphi$ + from the same space as that from which we +take $ u$ +, but with zero boundary conditions. If this space allows us to +integrate by parts, then we could associate this with a two point boundary +value problem +

+
+ + + + +
$\displaystyle -(x-u^3) u^2(u')^6 - \frac{d}{dx} \left\{(x-u^3)^2 (u')^5\right\} = 0, \qquad\qquad u(0)=0, \quad u(1)=1.$ +(1)
+

+Note that this equation degenerates wherever $ u^3=x$ +, which is at least the +case at +$ x\in\{0,1\}$ + due to the prescribed boundary values for $ u$ +, but +possibly at other places as well. However, for finite elements, we will want +to have the equation in weak form anyway. Since the equation is still +nonlinear, one may be tempted to we compute iterates + +$ u_{k+1}=u_k+\alpha_k\delta u_k$ + using a Newton method for updates +$ \delta
+u_k$ +, like in +

+
+ + + + +
$\displaystyle I''(u_k,\delta u_k,\varphi) = -I'(u_k, \varphi).$ +   
+

+However, since +$ I''(u_k,\cdot,\cdot)$ + may be an indefinite operator (and, as +numerical experiments indicate, is in fact during typical computations), we +don't want to use this. Instead, we use a gradient method, for which we +compute updates according to the following scheme: +

+
+ + + + +
$\displaystyle \left<\delta u_k,\varphi\right> = -I'(u_k, \varphi).$ +(2)
+

+For the scalar product on the left hand side, there are multiple valid ways; +we choose the mesh dependent definition +$ \left<u,v\right> = \int_\Omega (uv +
+h(x)^2 \nabla u\cdot \nabla v)\; dx$ +, where the weight $ h(x)^2$ +, i.e. using +the local mesh width, is chosen so that the definition is dimensionally +consistent. It also yields a matrix on the left hand side that is simple to +invert, as it is the sum of the well-conditioned mass matrix, and a Laplace +matrix times a factor that counters the growth of condition number of the +Laplace matrix. + +

+The step length $ \alpha_k$ + is then computed using a one-dimensional line search +finding +

+
+ + + + +
$\displaystyle \alpha_k = \arg\min_\alpha I(u_k+\alpha\delta u_k),$ +(3)
+

+or at least an approximation to this using a one-dimensional Newton method +which itself has a line search. The details of this can be found in the code. +We iterate the updates and line searches until the change in energy $ I(u_k)$ + +becomes too small to warrant any further iterations. + +

+The basic idea that you should get in all this is that we formulate the +optimization method in a function space, and will only discretize each step +separately. A number of subsequent steps will be done on the same mesh, before +we refine it and go on to do the same on the next finer mesh. + +

+As for mesh refinement, it is instructional to recall how residual based error +estimates like the one used in the Kelly et al. error estimator are usually +derived (the Kelly estimator is the one that we have used in most of the +previous example programs). In a similar way, by looking at the residual of +the strong form of the nonlinear equation we attempt here to solve, see +equation (1), we may be tempted to consider the following +expression for refinement of cell $ K$ +: +
+

+ + + + + + + + + +
$\displaystyle \eta_K^2$$\displaystyle =$$\displaystyle h^2 \left\Vert
+(x-u_h^3) (u_h')^4 \left\{ u_h^2 (u_h')^2 + 5(x-u_h^3)u_h'' + 2u_h'(1-3u_h^2u_h') \right\}
+\right\Vert^2_K
+\notag$ +(4)
  $\displaystyle +
+h \left\vert (x-u_h^3)^2 [(u_h')^5] \right\vert^2_{\partial K},$ +(5)
+
+ +where $ [\cdot]$ + is the jump of a quantity across an intercell boundary, and + +$ \vert\cdot\vert _{\partial K}$ + is the sum of the quantity evaluated at the two end +points of a cell. Note that in the evaluation of the jump, we have made use of +the fact that $ x-u_h^3$ + is a continuous quantity, and can therefore be taken +out of the jump operator. + +

+All these details actually matter - while writing the program I have played +around with many settings and different versions of the code, and the result +is that if you don't have a good line search, good stopping criteria, the +right metric (scalar product) for the gradient method, good initial values, +and a good refinement criterion, then the nonlinear solver gets stuck quite +readily for this highly nonlinear problem. Initially, I was hardly able to +find solutions for which the energy dropped below 0.005, while the energy +after the final iteration of the program as it is is usually around 0.0003, +and occasionally down to less than 3e-5. + +

+However, this is not enough. In the program, we start the solver on the coarse +mesh many times, with randomly perturbed starting values, and while it +converges it yields a different solution, with a different energy every +time. One can therefore not say that the solver converges to a certain energy, +and we can't answer the question what the smallest value of $ I(u)$ + might be in + +$ W^{1,\infty}$ +. This is unsatisfactory, but maybe to be expected for such a +contrived and pathological problem. Consider it an example in programming with +deal.II then, and not an example in solving this particular problem. + +

+ +

+Implementation +

+ +

+The program implements all the steps mentioned above, and we will discuss them +in the commented code below. In general, however, note that formulating the +Newton method in function spaces, and only discretizing afterwards has +consequences: we have to linearize around $ u_k$ + when we want to compute + +$ \delta
+u_k$ +, and we have to sum up these two functions afterwards. However, +they may be living on different grids, if we have refined the grid before this +step, so we will have to present a way to actually get a function from one +grid to another. The SolutionTransfer class will help us here. On the +other hand, discretizing every nonlinear step separately has the advantage +that we can do the initial steps, when we are still far away from the +solution, on a coarse mesh, and only go on to more expensive computations when +we home in on an solution. We will use a +very simplistic strategy for when we refine the mesh (every fifth nonlinear +step), though. Realistic programs solving nonlinear problems will have to be more +clever in this respect, but it suffices for the purposes of this program. + +

+We will show some of the things that are really simple in 1d (but sometimes +different from what we are used to in 2d or 3d). Apart from this, the program +does not contain much new stuff, but if it explains a few of the techniques +that are available for nonlinear problems and in particular 1d problems, then +this is not so bad, after all. + +

+Note: As shown below, the program starts the nonlinear solver from 10 different +initial values, and outputs the results. This is not actually too many, but we +did so to keep run-time short (around 1:30 minutes on my laptop). If you want to +increase the number of realizations, you may want to switch to optimized mode +(by setting the ``debug-mode'' flag in the Makefile to ``off''), and increase +the number of realizations to a larger value. On the same machine as above, I +can compute 100 realizations in optimized mode in about 2 minutes. For +this particular program, the difference between debug and optimized mode is +thus about a factor of 7-8, which can be explained by the fact that we ask the +compiler to do optimizations on the code only in the latter mode, but in most +part due to the fact that in optimized mode all the ``Assert'' checks are +thrown out that make sure that function arguments are correct, and that check +the internal consistency of the library. The library contains several +thousands of these checks, and they significantly slow down debug +computations, but we feel that the benefit of finding programming errors +earlier and including where the problem exactly appeared to be of significantly +greater value than faster run-time. After all, all production runs of programs +should be done in optimized mode anyway. + +

+A slowdown of a factor of 7-8 is unusual, however. For 2d and 3d applications, +a typical value is around 4. + -- 2.39.5