From f56c2ead8ec34b2d61ddddb07a60a8c144d8b702 Mon Sep 17 00:00:00 2001 From: wolf Date: Fri, 14 Jun 2002 10:11:23 +0000 Subject: [PATCH] Commit report on assembling matrices. git-svn-id: https://svn.dealii.org/trunk@6114 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/doc/reports/assemble/assemble.css | 30 + deal.II/doc/reports/assemble/img1.gif | Bin 0 -> 236 bytes deal.II/doc/reports/assemble/img10.gif | Bin 0 -> 152 bytes deal.II/doc/reports/assemble/img11.gif | Bin 0 -> 274 bytes deal.II/doc/reports/assemble/img12.gif | Bin 0 -> 552 bytes deal.II/doc/reports/assemble/img13.gif | Bin 0 -> 1195 bytes deal.II/doc/reports/assemble/img14.gif | Bin 0 -> 786 bytes deal.II/doc/reports/assemble/img15.gif | Bin 0 -> 173 bytes deal.II/doc/reports/assemble/img16.gif | Bin 0 -> 284 bytes deal.II/doc/reports/assemble/img17.gif | Bin 0 -> 142 bytes deal.II/doc/reports/assemble/img18.gif | Bin 0 -> 151 bytes deal.II/doc/reports/assemble/img19.gif | Bin 0 -> 1320 bytes deal.II/doc/reports/assemble/img2.gif | Bin 0 -> 690 bytes deal.II/doc/reports/assemble/img20.gif | Bin 0 -> 152 bytes deal.II/doc/reports/assemble/img21.gif | Bin 0 -> 129 bytes deal.II/doc/reports/assemble/img22.gif | Bin 0 -> 1254 bytes deal.II/doc/reports/assemble/img23.gif | Bin 0 -> 277 bytes deal.II/doc/reports/assemble/img24.gif | Bin 0 -> 183 bytes deal.II/doc/reports/assemble/img25.gif | Bin 0 -> 172 bytes deal.II/doc/reports/assemble/img26.gif | Bin 0 -> 209 bytes deal.II/doc/reports/assemble/img27.gif | Bin 0 -> 174 bytes deal.II/doc/reports/assemble/img28.gif | Bin 0 -> 192 bytes deal.II/doc/reports/assemble/img29.gif | Bin 0 -> 343 bytes deal.II/doc/reports/assemble/img3.gif | Bin 0 -> 235 bytes deal.II/doc/reports/assemble/img30.gif | Bin 0 -> 196 bytes deal.II/doc/reports/assemble/img31.gif | Bin 0 -> 1806 bytes deal.II/doc/reports/assemble/img32.gif | Bin 0 -> 341 bytes deal.II/doc/reports/assemble/img33.gif | Bin 0 -> 116 bytes deal.II/doc/reports/assemble/img34.gif | Bin 0 -> 1107 bytes deal.II/doc/reports/assemble/img35.gif | Bin 0 -> 322 bytes deal.II/doc/reports/assemble/img36.gif | Bin 0 -> 392 bytes deal.II/doc/reports/assemble/img37.gif | Bin 0 -> 562 bytes deal.II/doc/reports/assemble/img38.gif | Bin 0 -> 192 bytes deal.II/doc/reports/assemble/img39.gif | Bin 0 -> 157 bytes deal.II/doc/reports/assemble/img4.gif | Bin 0 -> 139 bytes deal.II/doc/reports/assemble/img40.gif | Bin 0 -> 172 bytes deal.II/doc/reports/assemble/img41.gif | Bin 0 -> 1684 bytes deal.II/doc/reports/assemble/img42.gif | Bin 0 -> 307 bytes deal.II/doc/reports/assemble/img43.gif | Bin 0 -> 280 bytes deal.II/doc/reports/assemble/img44.gif | Bin 0 -> 167 bytes deal.II/doc/reports/assemble/img45.gif | Bin 0 -> 299 bytes deal.II/doc/reports/assemble/img46.gif | Bin 0 -> 355 bytes deal.II/doc/reports/assemble/img47.gif | Bin 0 -> 73 bytes deal.II/doc/reports/assemble/img48.gif | Bin 0 -> 371 bytes deal.II/doc/reports/assemble/img49.gif | Bin 0 -> 417 bytes deal.II/doc/reports/assemble/img5.gif | Bin 0 -> 132 bytes deal.II/doc/reports/assemble/img50.gif | Bin 0 -> 368 bytes deal.II/doc/reports/assemble/img51.gif | Bin 0 -> 341 bytes deal.II/doc/reports/assemble/img52.gif | Bin 0 -> 600 bytes deal.II/doc/reports/assemble/img53.gif | Bin 0 -> 799 bytes deal.II/doc/reports/assemble/img54.gif | Bin 0 -> 92 bytes deal.II/doc/reports/assemble/img55.gif | Bin 0 -> 92 bytes deal.II/doc/reports/assemble/img56.gif | Bin 0 -> 1354 bytes deal.II/doc/reports/assemble/img57.gif | Bin 0 -> 1631 bytes deal.II/doc/reports/assemble/img58.gif | Bin 0 -> 526 bytes deal.II/doc/reports/assemble/img59.gif | Bin 0 -> 257 bytes deal.II/doc/reports/assemble/img6.gif | Bin 0 -> 182 bytes deal.II/doc/reports/assemble/img60.gif | Bin 0 -> 398 bytes deal.II/doc/reports/assemble/img61.gif | Bin 0 -> 175 bytes deal.II/doc/reports/assemble/img62.gif | Bin 0 -> 701 bytes deal.II/doc/reports/assemble/img63.gif | Bin 0 -> 713 bytes deal.II/doc/reports/assemble/img64.gif | Bin 0 -> 3965 bytes deal.II/doc/reports/assemble/img65.gif | Bin 0 -> 2331 bytes deal.II/doc/reports/assemble/img66.gif | Bin 0 -> 540 bytes deal.II/doc/reports/assemble/img67.gif | Bin 0 -> 318 bytes deal.II/doc/reports/assemble/img68.gif | Bin 0 -> 173 bytes deal.II/doc/reports/assemble/img69.gif | Bin 0 -> 100 bytes deal.II/doc/reports/assemble/img7.gif | Bin 0 -> 241 bytes deal.II/doc/reports/assemble/img70.gif | Bin 0 -> 168 bytes deal.II/doc/reports/assemble/img71.gif | Bin 0 -> 347 bytes deal.II/doc/reports/assemble/img72.gif | Bin 0 -> 1435 bytes deal.II/doc/reports/assemble/img73.gif | Bin 0 -> 108 bytes deal.II/doc/reports/assemble/img74.gif | Bin 0 -> 1978 bytes deal.II/doc/reports/assemble/img75.gif | Bin 0 -> 659 bytes deal.II/doc/reports/assemble/img76.gif | Bin 0 -> 172 bytes deal.II/doc/reports/assemble/img77.gif | Bin 0 -> 859 bytes deal.II/doc/reports/assemble/img78.gif | Bin 0 -> 169 bytes deal.II/doc/reports/assemble/img79.gif | Bin 0 -> 221 bytes deal.II/doc/reports/assemble/img8.gif | Bin 0 -> 293 bytes deal.II/doc/reports/assemble/img80.gif | Bin 0 -> 699 bytes deal.II/doc/reports/assemble/img81.gif | Bin 0 -> 195 bytes deal.II/doc/reports/assemble/img82.gif | Bin 0 -> 1460 bytes deal.II/doc/reports/assemble/img83.gif | Bin 0 -> 129 bytes deal.II/doc/reports/assemble/img84.gif | Bin 0 -> 368 bytes deal.II/doc/reports/assemble/img85.gif | Bin 0 -> 371 bytes deal.II/doc/reports/assemble/img86.gif | Bin 0 -> 455 bytes deal.II/doc/reports/assemble/img87.gif | Bin 0 -> 334 bytes deal.II/doc/reports/assemble/img88.gif | Bin 0 -> 131 bytes deal.II/doc/reports/assemble/img89.gif | Bin 0 -> 211 bytes deal.II/doc/reports/assemble/img9.gif | Bin 0 -> 798 bytes deal.II/doc/reports/assemble/img90.gif | Bin 0 -> 297 bytes deal.II/doc/reports/assemble/img91.gif | Bin 0 -> 305 bytes deal.II/doc/reports/assemble/img92.gif | Bin 0 -> 142 bytes deal.II/doc/reports/assemble/img93.gif | Bin 0 -> 298 bytes deal.II/doc/reports/assemble/img94.gif | Bin 0 -> 230 bytes deal.II/doc/reports/assemble/img95.gif | Bin 0 -> 454 bytes deal.II/doc/reports/assemble/img96.gif | Bin 0 -> 202 bytes deal.II/doc/reports/assemble/index.html | 151 +++++ deal.II/doc/reports/assemble/node10.html | 156 +++++ deal.II/doc/reports/assemble/node11.html | 153 +++++ deal.II/doc/reports/assemble/node12.html | 94 +++ deal.II/doc/reports/assemble/node13.html | 149 +++++ deal.II/doc/reports/assemble/node14.html | 105 +++ deal.II/doc/reports/assemble/node15.html | 74 +++ deal.II/doc/reports/assemble/node16.html | 73 ++ deal.II/doc/reports/assemble/node2.html | 775 ++++++++++++++++++++++ deal.II/doc/reports/assemble/node3.html | 143 ++++ deal.II/doc/reports/assemble/node4.html | 81 +++ deal.II/doc/reports/assemble/node5.html | 355 ++++++++++ deal.II/doc/reports/assemble/node6.html | 183 +++++ deal.II/doc/reports/assemble/node7.html | 321 +++++++++ deal.II/doc/reports/assemble/node8.html | 116 ++++ deal.II/doc/reports/assemble/node9.html | 108 +++ 113 files changed, 3067 insertions(+) create mode 100644 deal.II/doc/reports/assemble/assemble.css create mode 100644 deal.II/doc/reports/assemble/img1.gif create mode 100644 deal.II/doc/reports/assemble/img10.gif create mode 100644 deal.II/doc/reports/assemble/img11.gif create mode 100644 deal.II/doc/reports/assemble/img12.gif create mode 100644 deal.II/doc/reports/assemble/img13.gif create mode 100644 deal.II/doc/reports/assemble/img14.gif create mode 100644 deal.II/doc/reports/assemble/img15.gif create mode 100644 deal.II/doc/reports/assemble/img16.gif create mode 100644 deal.II/doc/reports/assemble/img17.gif create mode 100644 deal.II/doc/reports/assemble/img18.gif create mode 100644 deal.II/doc/reports/assemble/img19.gif create mode 100644 deal.II/doc/reports/assemble/img2.gif create mode 100644 deal.II/doc/reports/assemble/img20.gif create mode 100644 deal.II/doc/reports/assemble/img21.gif create mode 100644 deal.II/doc/reports/assemble/img22.gif create mode 100644 deal.II/doc/reports/assemble/img23.gif create mode 100644 deal.II/doc/reports/assemble/img24.gif create mode 100644 deal.II/doc/reports/assemble/img25.gif create mode 100644 deal.II/doc/reports/assemble/img26.gif create mode 100644 deal.II/doc/reports/assemble/img27.gif create mode 100644 deal.II/doc/reports/assemble/img28.gif create mode 100644 deal.II/doc/reports/assemble/img29.gif create mode 100644 deal.II/doc/reports/assemble/img3.gif create mode 100644 deal.II/doc/reports/assemble/img30.gif create mode 100644 deal.II/doc/reports/assemble/img31.gif create mode 100644 deal.II/doc/reports/assemble/img32.gif create mode 100644 deal.II/doc/reports/assemble/img33.gif create mode 100644 deal.II/doc/reports/assemble/img34.gif create mode 100644 deal.II/doc/reports/assemble/img35.gif create mode 100644 deal.II/doc/reports/assemble/img36.gif create mode 100644 deal.II/doc/reports/assemble/img37.gif create mode 100644 deal.II/doc/reports/assemble/img38.gif create mode 100644 deal.II/doc/reports/assemble/img39.gif create mode 100644 deal.II/doc/reports/assemble/img4.gif create mode 100644 deal.II/doc/reports/assemble/img40.gif create mode 100644 deal.II/doc/reports/assemble/img41.gif create mode 100644 deal.II/doc/reports/assemble/img42.gif create mode 100644 deal.II/doc/reports/assemble/img43.gif create mode 100644 deal.II/doc/reports/assemble/img44.gif create mode 100644 deal.II/doc/reports/assemble/img45.gif create mode 100644 deal.II/doc/reports/assemble/img46.gif create mode 100644 deal.II/doc/reports/assemble/img47.gif create mode 100644 deal.II/doc/reports/assemble/img48.gif create mode 100644 deal.II/doc/reports/assemble/img49.gif create mode 100644 deal.II/doc/reports/assemble/img5.gif create mode 100644 deal.II/doc/reports/assemble/img50.gif create mode 100644 deal.II/doc/reports/assemble/img51.gif create mode 100644 deal.II/doc/reports/assemble/img52.gif create mode 100644 deal.II/doc/reports/assemble/img53.gif create mode 100644 deal.II/doc/reports/assemble/img54.gif create mode 100644 deal.II/doc/reports/assemble/img55.gif create mode 100644 deal.II/doc/reports/assemble/img56.gif create mode 100644 deal.II/doc/reports/assemble/img57.gif create mode 100644 deal.II/doc/reports/assemble/img58.gif create mode 100644 deal.II/doc/reports/assemble/img59.gif create mode 100644 deal.II/doc/reports/assemble/img6.gif create mode 100644 deal.II/doc/reports/assemble/img60.gif create mode 100644 deal.II/doc/reports/assemble/img61.gif create mode 100644 deal.II/doc/reports/assemble/img62.gif create mode 100644 deal.II/doc/reports/assemble/img63.gif create mode 100644 deal.II/doc/reports/assemble/img64.gif create mode 100644 deal.II/doc/reports/assemble/img65.gif create mode 100644 deal.II/doc/reports/assemble/img66.gif create mode 100644 deal.II/doc/reports/assemble/img67.gif create mode 100644 deal.II/doc/reports/assemble/img68.gif create mode 100644 deal.II/doc/reports/assemble/img69.gif create mode 100644 deal.II/doc/reports/assemble/img7.gif create mode 100644 deal.II/doc/reports/assemble/img70.gif create mode 100644 deal.II/doc/reports/assemble/img71.gif create mode 100644 deal.II/doc/reports/assemble/img72.gif create mode 100644 deal.II/doc/reports/assemble/img73.gif create mode 100644 deal.II/doc/reports/assemble/img74.gif create mode 100644 deal.II/doc/reports/assemble/img75.gif create mode 100644 deal.II/doc/reports/assemble/img76.gif create mode 100644 deal.II/doc/reports/assemble/img77.gif create mode 100644 deal.II/doc/reports/assemble/img78.gif create mode 100644 deal.II/doc/reports/assemble/img79.gif create mode 100644 deal.II/doc/reports/assemble/img8.gif create mode 100644 deal.II/doc/reports/assemble/img80.gif create mode 100644 deal.II/doc/reports/assemble/img81.gif create mode 100644 deal.II/doc/reports/assemble/img82.gif create mode 100644 deal.II/doc/reports/assemble/img83.gif create mode 100644 deal.II/doc/reports/assemble/img84.gif create mode 100644 deal.II/doc/reports/assemble/img85.gif create mode 100644 deal.II/doc/reports/assemble/img86.gif create mode 100644 deal.II/doc/reports/assemble/img87.gif create mode 100644 deal.II/doc/reports/assemble/img88.gif create mode 100644 deal.II/doc/reports/assemble/img89.gif create mode 100644 deal.II/doc/reports/assemble/img9.gif create mode 100644 deal.II/doc/reports/assemble/img90.gif create mode 100644 deal.II/doc/reports/assemble/img91.gif create mode 100644 deal.II/doc/reports/assemble/img92.gif create mode 100644 deal.II/doc/reports/assemble/img93.gif create mode 100644 deal.II/doc/reports/assemble/img94.gif create mode 100644 deal.II/doc/reports/assemble/img95.gif create mode 100644 deal.II/doc/reports/assemble/img96.gif create mode 100644 deal.II/doc/reports/assemble/index.html create mode 100644 deal.II/doc/reports/assemble/node10.html create mode 100644 deal.II/doc/reports/assemble/node11.html create mode 100644 deal.II/doc/reports/assemble/node12.html create mode 100644 deal.II/doc/reports/assemble/node13.html create mode 100644 deal.II/doc/reports/assemble/node14.html create mode 100644 deal.II/doc/reports/assemble/node15.html create mode 100644 deal.II/doc/reports/assemble/node16.html create mode 100644 deal.II/doc/reports/assemble/node2.html create mode 100644 deal.II/doc/reports/assemble/node3.html create mode 100644 deal.II/doc/reports/assemble/node4.html create mode 100644 deal.II/doc/reports/assemble/node5.html create mode 100644 deal.II/doc/reports/assemble/node6.html create mode 100644 deal.II/doc/reports/assemble/node7.html create mode 100644 deal.II/doc/reports/assemble/node8.html create mode 100644 deal.II/doc/reports/assemble/node9.html diff --git a/deal.II/doc/reports/assemble/assemble.css b/deal.II/doc/reports/assemble/assemble.css new file mode 100644 index 0000000000..d1824aff42 --- /dev/null +++ b/deal.II/doc/reports/assemble/assemble.css @@ -0,0 +1,30 @@ +/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ +.MATH { font-family: "Century Schoolbook", serif; } +.MATH I { font-family: "Century Schoolbook", serif; font-style: italic } +.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } + +/* implement both fixed-size and relative sizes */ +SMALL.XTINY { font-size : xx-small } +SMALL.TINY { font-size : x-small } +SMALL.SCRIPTSIZE { font-size : smaller } +SMALL.FOOTNOTESIZE { font-size : small } +SMALL.SMALL { } +BIG.LARGE { } +BIG.XLARGE { font-size : large } +BIG.XXLARGE { font-size : x-large } +BIG.HUGE { font-size : larger } +BIG.XHUGE { font-size : xx-large } + +/* heading styles */ +H1 { } +H2 { } +H3 { } +H4 { } +H5 { } + +/* mathematics styles */ +DIV.displaymath { } /* math displays */ +TD.eqno { } /* equation-number cells */ + + +/* document-specific styles come next */ diff --git a/deal.II/doc/reports/assemble/img1.gif b/deal.II/doc/reports/assemble/img1.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6b9f87468c687b8a872ef4e22e9909f232af55f GIT binary patch literal 236 zcmZ?wbhEHb)Mb!m_{_t=$jB%mA)%t8Vq#+A;o%Vy5|WXTQBhIR($X?>=FAluoWlg3rl`y+WH=F$!=@~- xXJaCXTgaUEvHgjk{0z|cvzW+*dQ0|4osEvx_l literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img11.gif b/deal.II/doc/reports/assemble/img11.gif new file mode 100644 index 0000000000000000000000000000000000000000..e73eb272d60248ff169fa78f0a4a71988c68ce05 GIT binary patch literal 274 zcmZ?wbhEHb^ka}^_{_t=$jB%mA)%t8VrFLM;o%Vy5|WaVQc+RS($X@0`t%hmR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplfo1=Mlb);hTD(5H`+tH)UrOe@j0lE<6aAVQB!mz0 zsSBmB9n@hu;(bXtfQK_!(SRX^$quy=?UF-)DNQ|{l_rNpUcz|`6)$(+s} zBE;e*vPx{NyJ&diVhK*hsVwzEOxBb4?(5TLa56}mzQXzBsnci9o;!cx;-$-1u3o!- U<{9 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img12.gif b/deal.II/doc/reports/assemble/img12.gif new file mode 100644 index 0000000000000000000000000000000000000000..48ac2d85d76823fcdf600df8130f295842ac138a GIT binary patch literal 552 zcmV+@0@wXVNk%w1VSNB60P_q00s;aU7#JiZBsMlSNJvOjR8(bUWq5dagoK2Yl$5Bb zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0DS-_000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%K5-0KxFkDU@D0MAuUNDsj^x*hzgj7@LGZH1*ae&5;%~Pgn^d?B4HJ4!He9yg(HHn$R|Kw z5jQK+iBsySg=?KoAe3X4!RAd8CnBl$dfBy&b+zv=g^}|pH98H_3PNPYu~;h0suR)nbNTU literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img13.gif b/deal.II/doc/reports/assemble/img13.gif new file mode 100644 index 0000000000000000000000000000000000000000..c89091bd461e1ea7f114ba47c61715765c5291ac GIT binary patch literal 1195 zcmV;c1XTM+Nk%w1VM75y0P_q00s;aU7#JiZBsDcPNJvOjR8(bUWq5dagoK2Yl$5Bb zsI#-P|Ns900000000000A^8LW0RRjDEC2ui07C&m000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~k4TgOAeaCEg^nUgty-@ZLjWO395{m|c1$k+ z42FT^Fzo=$@VNYCU~Cyt&wI}A`#T5;3~7TOdw+BP^o;JuS1u=@hZHOreT2w=gOq@u?w8~{BidGylMV;szb00FqU*0D*j z)O-XZQ-g$)Xg`h>cHRq<<|(kr0Ax!8wEl65C3*!Y!Fv)6kQ9BgAr+f}g{+q#V+@{< z$3I*wWdeIFoKgUFv4K!w2Fw9~)dp!HmBAgTAj2U8Y;0x78f_#1S#>B3Hq!=s#K?e+ z8jM&10$;r3gnS}qm%=H`DTjeQ#e_GP3DY4NR1p?Hag56Se93a3ZY-o5IGD}6_X{X@)gg}TKw8Gd{(+Rn zgqMmx JeFqT$06WIC1jhgX literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img14.gif b/deal.II/doc/reports/assemble/img14.gif new file mode 100644 index 0000000000000000000000000000000000000000..918bd25602733c456606dd9a3b1ec7073b7eced2 GIT binary patch literal 786 zcmV+t1MU1rNk%w1VGIEu0P_q01Ox;a7#JiZBsDcPNJvOjR8(bUWq5dagoK2Wl9H&X zsI#-P|Ns900000000000A^8LW0RRjDEC2ui01N>i000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!?@NVWA(1ouj;CQPNKycZyuv}JU?Nq50AR}sxTKZ^0Wd&S zNd^Fdmk{s_>#M5Zogm7r_N5TSpAK;#329S1d_8`0Cj$f(R&$RN0)Z)s9zg(+Hvxr) zor)y^MhsAtDV!GoEnpvT3J%NR6|`g<9*>ZOVU z2Lx0wz^Vl;|F#6AFfc#@C`qp}STIQfS+f}G6e2f8tcA5yJtT{XtE|Pe;smB5teC+l za&hiP0-V7BVFXZ>?aH+=)UtX^03Ql+KtQ!B8w&vVGx2`YQ$n8 z0X{mu4jCz}>%f8noe@|O)=%h`31YVdX-Z)L;}OmkOudRpN91<^;U`e9 z2<5wN4AuYyNO{4!iUFn$baoFG{B`>Wk-_&|2m~C^i9@UOL%?+tAh^FK~ca?g(4)-*$E~Ja1Ub!XfhRw zF;dWD61BA;4=GLxDO+z&O>i6qKhdaGC9$RB~Wg3J_^o!I&JF znL(IRZh$5W5PhIreRz%3=AC%vspp=2_UY%JfCeh)poA7`=%I)vs_3GOHtOi3kVY!$ Qq?A@_>7|%vib4bcJDF8HcmMzZ literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img15.gif b/deal.II/doc/reports/assemble/img15.gif new file mode 100644 index 0000000000000000000000000000000000000000..f3eacb2aa507a42161587f9479345bbf689ece85 GIT binary patch literal 173 zcmZ?wbhEHb6k(8M_{_t=#Ka^aA)%t8Vs38k;o%Vy5|WmdR#8#W($X@0`t%hmR&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfhB6fNzc`LEnc5}E5M-O!6Lvji!p?4lb}Xu!9ksT z&If*7b5~Avek3~khXix;(lE;;hQlWl+hrRzO>$V;HbueIRCDpiH= T)qd-5zyGnP?)-jt1_o;Y=*K&& literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img16.gif b/deal.II/doc/reports/assemble/img16.gif new file mode 100644 index 0000000000000000000000000000000000000000..abca97a9bab49e8baa6396fb328e642dc4551ed4 GIT binary patch literal 284 zcmZ?wbhEHbbYzfa_{_t=$jB%mA)%t8Vs38k;o%Vy5|WaVQc+RS($X?z%9Ir=R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#u|clb);hTD(5H`+tH)UxMSj7fdRb6&M;61V1!* zIWxR>_#n!_a+G0(Op7_^gr*IpLPwZeAIzCC$=K=XDMQ8`Jq$Ap-58hfgzYL$;n~rt zkQ%6VRFvnJd!cMdr(2e&O^cy~gLP?pR-JH2bcBT;dy_OLE5}S0BcY@T6X)?{$R>CT zX^Z5Fx7y4REu1RLHkHHGn6+a1Voz2(an^Oh946a%W*ew+A7S$FWH(^U7h~Et@!Itp fH*ej(bNAl;2M-@Te)9C$^A|5)y?!Gt$Y2csPeNy& literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img17.gif b/deal.II/doc/reports/assemble/img17.gif new file mode 100644 index 0000000000000000000000000000000000000000..742ed0363e0f76c7d5697110bede0b48b6272bbc GIT binary patch literal 142 zcmZ?wbhEHb6kyfzxL5)zW0o?cN=(bCc~Y0{(>D^_gYy!rqC z{|rb#@h1x-BLg>s4oD1S1_O(A!AZ~6dw)!d5q7xa!r;C`fh}Q%^oBxL%{>vHxR~4< jxaTRhG*6gt_=1?SPougegHAi+15HVmW$u@im>8@9j|D3b literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img18.gif b/deal.II/doc/reports/assemble/img18.gif new file mode 100644 index 0000000000000000000000000000000000000000..d28fe1b8f1cc67d8de3f83aabd949b22a53edb53 GIT binary patch literal 151 zcmZ?wbhEHb6kyEYoK5)zV@mR3s4oD1S1_O&r!AZ~6do3QjFflMSDK<{j@luaE6exO#^+foFpv|TN sQw3u<4rCfhByg~LIV3tN1Wk6jM)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2Gu0fyxty-_xRAB%BWWV6BIFQ(i z&*(Jr5Kz0{@LhoruiNh{0Ts{h`!fmv2!DiydIm0*qQe1qnF@E(Ho#dpmlN zCxMha1qV6`n_89$U8}5JmM5yMt*;-ZJAtPbv9hbQD!aS@z9q4tCk28$3T-^0a@;oqDg~RW!wd-fB>EQmk+7Eo znK29iD}N5K#b`2ne3wNkLUchzxvA0D2UJLw>%bN&r{&Led-n zlxnyNRVxFaLjM7H%FrxYnN4$&2?;=eJFyyUF&KciL$EH=C@2t+3Fw5BXP+IwVpd^r`e0#znvhx7<} zLF2pu7BJAwAVDU+t2<1Rz;^~d33Cop7+{Uo=nT}MOUH1XwXU>K_g3Ft3;eJF!q1Yo zfcPVTDK8Mgt&lK$cJ(_uTyAQ9y0uN+LH@VLa}ro1z)7z?h5!Nth!vAZCTxAR%)ZMJ1wa9zAJ6P{HiSKuTnUVxa`D42B>F%yfBR239gaB`-o= zd4WC&G?|E)Uv}VBo9uB};FuT$M$QDuDQOu8Tv#QHS^44TB`kx6XlGPQYJg<|2OZE? z1_m4?+5`hgqd-m(W`aN)dtCM$6>QM5X+9zqH)3~(qIYNMht1TZ9NL#PVcBy_6;?4tqF^5+jST?Cx5I#Y#3l{`|g5i$eu zj*udA1+!4Vc|BuVaAqb?u(Nik(3(Nf(+ZtIY)l^sC7=8TZ2~y+VKC`5R`1odI7`QQ z^bQ>}l;#R!pDh7pi`99}0Sqnp%hrx&KpDy;kO=n#a>JMa0-5*}n$JwFpthMVq*=BP z=gKp-3kEP0O$JAo5zwUBjTe}*atKqtb>*AKbwTC~KrC1ngNRnR3W1`Xt<*PRzSa;w z)397|HsQU21g}6q4~O({+$;n2o@B3m^Wkjo z{r5v40{-~q_n;GWK~Y=&`s}0dEp+(a*#7+VvsPg_eb%r4{tsvA{nX!o(4xq!V;SBgeXj*3RlR& e7P|0-FpQxLXGp^u+VF-r%%Ki<$ioao002A6Nij(P literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img2.gif b/deal.II/doc/reports/assemble/img2.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c2f274b89a14a03a9c1c0bf049fd576e4f726af GIT binary patch literal 690 zcmV;j0!{r#Nk%w1VaNa<0P_q00|NsX7#JiZBsDcPNJvOjR8(eWW_WmbgoK2cn3$-j zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0LTCz000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3ybCIY7C~OGq96bUAmngDxIkHeEMTI@4tAe}pk+X$ z#Fs*E3@T3W8eAs_`lpbr1N#&LW+Qh(33?0!3LpprS^!`b1#A<59|1-_nI@PQ zTO>tqRTP#R1^@;N8wH;d1*#g200pBA0E2JNug z1p&(!2m!Dg2d#%23IeLr6Rijb37>o!2ngq{6bj4~kMjVO@)rlg73=MA@A1Ljxx-1Q;}66G#D>ifI74u>!~uM;Y|wK$JnvaUGv_p-~PF$EG=L(GzN6mI91j z$0Yy*62Kw^W3rB0qyU!$d%(74f!ooOT6t{UGGG(0E{!Ud%sSO8VZc)kEL&0ta5h+y zz9<#2T+o9RL$e78WMhCpaR5zF+6oq zKqsYcS&r@gPeJVGiprB+z%kfO*dMiD9tc1OmX5(*fqKBS9AqA&|v&^R0kj8v#zh ziw7|Az!NGKsK$X55k`1n2yvh=9w-o&7vhR6w&>!EFvck3j5OA0b%7 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img20.gif b/deal.II/doc/reports/assemble/img20.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c840cb5247f808ab9042a5d48e8b82cf7ce7b28 GIT binary patch literal 152 zcmZ?wbhEHb6lUOO_{_t=#>OTgA)%t8Vq;_D;o%Vy5|WylT2WEa($X?{^5hjOR&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfyH&gNzc`LEwX)B7@DWBENBvCSSpfcCLmmt!xP}) w=A`bhiN`8Rae@I$o{1B~L5GW39`h0pa~oMnr}G%>ma$X0`$D)XO^Lx80IeM>;Q#;t literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img21.gif b/deal.II/doc/reports/assemble/img21.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ee5086e3515001992a970215eda398ccb9e5518 GIT binary patch literal 129 zcmZ?wbhEHbM)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v z&*-#z%^m{Y@VGo~Xxs1jR{;=6Y!n9s00JcjZvhf}17?PNi2#dvl4%2j9ti>nB?Sc% z3I={>oSp@tlcz|XD++I_915-*u@VCZ3<-5&vkbMjwn3#ixu{JFeJlrWzZ|9-tj!Dn zu)AH)71E=?%Qvt!djZ=|0|EfUf&q~w2!tYgnk;(&&?biO5(ohX2Z&pQ0EoZ^AY2M^1y7LNmTkZ=FDogu ze8~f%j*c&m-NI=h0mh0id=gNg;h?+;8AXT;(Fs7(5(!$RXc|i*zA#iNSQXd)&c@fKwX>)CX0ap0!USq?QoFS(?ZHl)E%HIDx^mN8fMwsH^5&8-_n9eP^kdi z4@W%;Ghmpev&nBPPe8y^EQPuE_!5-`;ITt;84+L{y&-`nLqrpV9Rb>zssWt}&v}zl zLp;TQZg&>bjo0uByW#X^K#(Y93X~loJ{$`Ay8{IjB;dNCE(7e^xl=GEqb%qGIyWFd zz)Dv53k1@07*@_BaL6Fo;)Y?&5()jsf&Kv?3I*h{Q3ct+(o9(cj7FbK8Z@ZU1Y@~$ zO?jVPz*%du7s!`ECK^1%RtCecf*l6r>?R(CAH=f91o6 zQOrj(MmE{gz`MLm&NA!$(B&L2TR`(aGP{*r(la~!0zOb;8I;sh5CH20P~YI)P8b;Q z(nCEpJs#FbkWC>ZRX3rw4%=CK3)+&%`%BM2u=O^#PIa)i)x@lUrkYX)E=#$FCtd|X zh%a2$l9Y2a>a7Y}j z*KRus2@=d09DdaI1}3)$FZ>5Tj?F8C(TF7X@XWW4%`7y^o^kWkrw&l86qvnj_1q8N z(l&D}IDPlzgD$`?*h_#g2HThKKI%E+8wzJ8`BmEc_zS=L8)@e6|Nj6Cpa2I*zyccZ QfCx;W0vE_YG(-RZJ8kJ7)Bpeg literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img23.gif b/deal.II/doc/reports/assemble/img23.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7cd819a92cea4ce69442805ca0602d71e95cdc8 GIT binary patch literal 277 zcmZ?wbhEHbG-Z%y_{_t=!ongUA)%t8Vq#+A;o%Vy5|WmdR#8#W($X?z%9Ir=R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#uMIlb);hTD(5H`+tH)UrMK_XT*%C!j99YqPiTU zPQ-|Q@^~@jK=+eFDr^mh&NH8wDA0V`X+wetlQ1(w!&asop$5;3cTY|cnWr*sR)^*T zpDCZ#vCLs%PW|A;^HQ`>qKT)pA(1P$)zG$GwMB@Li-#k^Xet|fYJp^Ul_W=RBm*-W zlao*u&r&gFKe6z(4PCM|LQ^-?i_hL5&lz3J8ok9`l5LR)$9jjb)4~fSxlTA}Xq~x! Ye;o%Vy5|W;tUQtoe($X?<;=~mzR&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfhA?aNzc`LEnc79{eLDSL!$~`Y@(>vVhPXXEQY2s zK1nsK4IvDyuNN~vQ0r)T81QKYgYL-*hBpd%_B&3g@+oSW#HeL1^_{`gXQ3Kfs8BXb clR=rcrtNOcvknYzij{?#nUuq-Is_T40TjGCCIA2c literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img25.gif b/deal.II/doc/reports/assemble/img25.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb8edea8719fe91489cffc05bd2d60dbf07e99af GIT binary patch literal 172 zcmZ?wbhEHblwgoy_{_t=!NDORA)%t8VrFLM;o%Vy5|WXTQBhIR($X?*+O!obR&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfhBUnNzc`LEnc7fEyr%I5|^3A>X6aNAR^YJ(io;w zaz?~p+5{V(hAo^5dhLvlX9O}B9CJA#U=T4$;(8W)MOc%ZzUzS}GF8GY2PQih?^-;$ S#&7-Y_doX3?eAw`um%8x?K*M* literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img26.gif b/deal.II/doc/reports/assemble/img26.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ef4c1d0732018926f5e1ce2e61c25a3e81bd3a5 GIT binary patch literal 209 zcmZ?wbhEHblx2`*_{_t=!ongUA)%t8Vr*>e;o%Vy5|WylT2WEa($X?@>eLl0R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplfu(N3Nzc`LEnc79{r{2z!!Z|zgA9Ib3pbs#66Fx^ zZarhfWca#=r74j?L!xVvp1Pu7ej9^VP)+QV9w!BFO@qniJjNUrJ(A7N0^Nc^E;);* z7pGn66LL9Fa3f75iosbpEYgQL$11b3&We+PL7#O(qQkW5GiJ`3J!kH``3n|G3o=*( E0Atxh=>Px# literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img27.gif b/deal.II/doc/reports/assemble/img27.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9c26a33cb73fc79513f8abe948dea91ead3d538 GIT binary patch literal 174 zcmZ?wbhEHb6laiS_{`0~!ongUA)%t8Vq#(v5)zV{np#m&(bCc~apJ@kD^_gYy!rqC z{|rb#@h1x-BLg>s4oD1S1_MiU!AZ~6do5m{{VmJLz!4Y9u+)?%lU3wx3xkJ_;ER-w zgIpWromv%QR5(n}tTr;x5jb~7$C6Q|ThggNi9=-9Oj!kk1wyLK5vw#UbF4Sd?@wEO R`~8nSb?4vz_7-HY1^_DII3@r9 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img28.gif b/deal.II/doc/reports/assemble/img28.gif new file mode 100644 index 0000000000000000000000000000000000000000..002b77a932e06ac3dc4e3ce1431ae2d8c2cdf41b GIT binary patch literal 192 zcmZ?wbhEHblwlBN_{_t=#Ka^aA)%t8Vr*>e;o%Vy5|W;tUQtoe($X?%(xeqDR&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfhBjsNzc`LEnc7ft<$nyl(Wc(je#Y|D#uIdWW1v0 zlJxMyGbNN<8_XDWxU6Lv935GB*rz>bx45dpoN%1Y!>CFq{rCZyH$tn#7cWqX>xW})kAtC!gGEc2g-I)}X#$TRgEaug2t5%1 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img29.gif b/deal.II/doc/reports/assemble/img29.gif new file mode 100644 index 0000000000000000000000000000000000000000..779370448102899b6cc19f948da000ac262b7831 GIT binary patch literal 343 zcmZ?wbhEHb^kR@@_{_t=!ongUA)%t8Vq|3G;o%Vy5|WylT2WEa($X?{^5hjOR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#u(Xlb);hTD(5H`+tH)UrOe@6($@FhJp?TOK#lS z_t8eGMNg75s_l8QNYfG~rUnzP_S0zxp9l%4UB0kDb0?oFs+ab}QoQ-$5 zZuW%9d*vMC`oVpqj=@zV&yl52w31P;rncU#Q8Lnv(JvyB%Uvq3O}dhG$|NDy={*va zoDA#>naepVCG(h5r6#RdCAx-ZopiCV_WF#)GA%8Vd$pL>SIt-`an?Iih@*>r%B=h> zruIdmfg+dLuS#*wXV|PIa)^id)Q%V~Cb1_B&qSJDy;0xEbJ<_|_g@c{4~v=EgzG>3 nIZ|CBu<&rZfU?&dkBy6tc1sv%-8r#w@$r6E1?R3F1_o;Yx+Q#P literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img3.gif b/deal.II/doc/reports/assemble/img3.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a05126914ee03545554fe0ad93ad9e24bf076e6 GIT binary patch literal 235 zcmZ?wbhEHb)MSun_{_t=!ongUA)%t8VrFLM;o%Vy5|WylT2WEa($X?*+O!obR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplfn~;olb);hTD(5H`+tH)lBhFe;o%Vy5|W;tUQtoe($X?<;=~mzR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplfu(T5Nzc`LEnc6s)|Fe%;JHGQAt{NoYK=HYgF)&F z=2&AcTOKn81qDY&!&afk;hGn!PI)hCSRvLo`Jnd4OD`l?9at~?j^hbrbFy({;bB)| qa}-Epb!tAMDfyz@J2uan)5$$irJ<|4r?;M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4ut@;oHt9E3t7PjE9NtmQ}B9xZG(gZUmOMm3km`VgfamW0cRKkY=~VL1^_!| z9S4~gn~$Vn27Vcnaj2y&oFiCzdXAN>J_iJ{0F)O4imkv?1hgEl62`%221$qnT=oaVQ6U@&NwsE^9>WAvgtO)|#7YG32Ett0; zLA`PakC4kSE@24;#ug$#0I^pnZ5h%~IG`sIGywj#3dBQ@3E~%b5=6?mK;WV@b{-{c z0^o6zAcr_Nh!+yT#;ZZPOJAXo}fr*4330rMiRRS&*xIy7=HuuTD%X#D5U0fMgC>V}FS z!6ga^6cr$bK_l>H%+OFmP_6N848hY87Zr5@0_4@9t;tQQE@2n6C-BolKp^+8dAQ|a zH2?tW2?hk*6xDG6F|Y#)f2D~p{d5YSS^jX!d;-?T3w|%1lihhypyXL=Cxpjf4g~Zg zi)Cp6)0T9}d#&*K=6G|@boluzwn-GVf3p>Kd!*B|@hoN*YBv51ui7etF2MG|++K3x? zLZ+D-6yOznTcRhK;EJyM}cK{I+O77B*OX#hY6sz7H-L>*!f zkm|$<0zZ9b>QG+)EM;j5%pJPH7XlphA*`u+5QW&;IUfnT~*`9`oE{_C*00*>YpusK0%=^=}*FYA^z7_$`DyuxF& zl}P|#&&7FS20CNdD+LwO3_^I~0{7?%oROg7v8=tS4h(PD+>3328Vc0`zD;}Aa~?!} zfjf-WYZQUOtuv5?U7Ra{jQ+4-9|`9W$4rYQM|S7WETBuV9OUIILVKnr1~Cd==0Tjo z#pwcv0C`ge(K81$W$SGIB=`n0fQPtxo;yoh9c_j?MV=Dz;C>V5IQt$&{~ila40w~Fba0=cwl){Lq^~;UDF#1Sm58|PqQ0Ak32>rf&*bPo1y;6UJ(&WEGQiDVM76k6gyKzB6vkiV+lWyG!`NQjnjDBeDWg?@xc)) zaoABc7#GDjG)Dmn@JK{xfu%*jAsm7Hf*kIom+&nj5(T(~j6PyCHCi%)O=J@4*hZ)l zoNkQ8xeNP5@JU8ifQ%zZL)>hXICOLbAA1mqDgi*8VMss#2Wr{%aH$vp>`IlF45nnT zm;qDPCSz1iE95ZeU?9l`c!@C+?c9jvwAcz`iu0c+BW4_Rvl6YCOiiK@j~&R7&}$jg zBM61y9l?4SjPe2Wq7z_*0GPVy{e^ zuc$Brqd5Hr88oz~iNWgcJKvKw#3J0SGiH;u;s(MZ;05~93p&KD# zPPbZxG6^9%W6L57z?u?i$d9XNwd4wK^_!Ho0DmK7Yg*@O$+H$jt8^2bMd`}dzWVjA wfC{W&2TRz(8uqY=O{`)U%h<*`_OXzStYjxk*~(h>vY5@RW;e@O4nzO|J0R){lmGw# literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img32.gif b/deal.II/doc/reports/assemble/img32.gif new file mode 100644 index 0000000000000000000000000000000000000000..e17f19d9e06949d9aa626c86e34bc8d29c5ac7ee GIT binary patch literal 341 zcmZ?wbhEHbG-r@!_{_t=%*-qyA)%t8VrpvY;o%Vy5|WylT2WEa($X?@>eLl0R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#u(Xlb);hTD(5H`+tH)UrJ`2YmuZB!<@<9qHmUp z+%!Be$xgM2>!E?6f&r_HzGY%onfSqp>T_8-W-(1$RN*Va;^1(UVRu$1;{t~tRjLd| ziy1P41p>PK7fEPHIHWSWbL4U{*0V7RR~HC#aKwtXi}@9M@#s$zGMQ60T_oRqcAsdd z5MwZ>{z}ocJS?U>%a@~+@5(9%Z02rcl2LJ#7 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img33.gif b/deal.II/doc/reports/assemble/img33.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ebedd07200cf559e9db49a699c4479ead2031c2 GIT binary patch literal 116 zcmZ?wbhEHb|Nox>11SDv zVPs_BWY7W0fXrZEQ8YN|xq7dKdf=AzECvy6g$yZ10ulu=trPZyCX`K8sPklDum%8# C;2m)Q literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img34.gif b/deal.II/doc/reports/assemble/img34.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6de723df3d2d8e97d622428c18d5b832494e00b GIT binary patch literal 1107 zcmV-Z1g!fM)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kH`X{Vh8{Nk^*3WtXi+wqN0#M94du^WShvE z&**eZkx(q$6u~#~Rom}iygq6HY{h$lX9@vjf@y??5(ohX2T*!a0d;8u0ssaR1W!~i z3J3xtQj~`=ohniY6k!qrnRfc)GPCV2>?@3Pi<=AEf81% zK^Su}407opM!*t2GYE26w_rd$dn_c9plA`}KnngE5m-cqLCQl62`*h+go|W`1ZAMP zQSeHJ#td6pg^Q7H0ze%LEBwqrke|_`077BNS#hTzff5OLmXVc)?boX){1dNdcDx0WL9|4xReK>e`xHAw!C^ zCJ5103*deV@@1IVAd$zZb%D*ni4(3Ks3&K^vkaGbKfwTc!aFGyet|0q*=MH$(xUi& z`F66<^Xa{pFRGp2@ZA2geZRByDllAw9sUrCXK!?ej%QtDBfxroxTlr}V^JoMG7c?Z z0A^2Q;ubw)Y=WM8uPI{57~@$$;X@aC$Ill8sMH}nnHcbj0E#HUOfDr}(47VmPQZ>w z9W5YW2f?fq00MLv(})EJlqQse_$|^7WsS_W0zoYnv`IWI@*~D^4%Us{+;BJ38>O?gEnv#u`B^dN;{AntTbZ~u!OLYQZ1}5 zuuC1Y^uetv;MB5gw+npxQMgT#OVVujff~cD#$uEmZ>aKB4=C8x7cd9=^kWP^1m*zE zC9j<~#VaP+g-HN=R%k9Im((#`6rDUAj{p)c=ntj-C}Sqc66_LMF(2=M9wi4q`#~_d zPSLQZ;B1QCRVqWr-}ub)2TDK9)-pk{&{JrX9H3?Z0J@OQjaUnT zwA5rzW0_Co$#8aPX-^Aj*>J}#_uO>XZTH=H=dJhNeE045-+%`$_~3*WZusGdC$9M7 Zj5qH1UrR06Q6i)6oC` literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img35.gif b/deal.II/doc/reports/assemble/img35.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbc5bc69125867688090dbbea4956e1c2638b45e GIT binary patch literal 322 zcmZ?wbhEHbj9`#u_{_t=#Ka^aA)%t8Vq#+A;o%Vy5|WylT2WEa($X?@>eLl0R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#v;#lb);hTD(5H`+tH)UrOe@j8##r0y5gh91Vto z3aq`ng$SG&+R3G<$eB8QA-UnG85*iJ4d~ zZ<3tG(=5cbT8Yz5*w`SMi*>%%YUY0SHXasF^TS6(ckx6`ImyVzzE*oRC!-~c&w>j= zOgC>`*kQR@=m5{oM@v+7mme*cW8TJb=glXvIaaZjr$7Jt{pat${|wArG9DWi9Bk$g R)`~f?Vd3F+AteR|YXA`PZyo>u literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img36.gif b/deal.II/doc/reports/assemble/img36.gif new file mode 100644 index 0000000000000000000000000000000000000000..1214cb8369dc7bebd934328c9a5ce8609b6f083d GIT binary patch literal 392 zcmV;30eAjKNk%w1VLt#L0P_q00|NsX7#JiZBsMlSNJvOjR8(bUWq5dagoK2amX@ff zsI#-P|Ns900000000000A^8LW0RRjDEC2ui06zd9000F3kjY7_y*TU5yZ>M)j$~<` zXpvlo2mqP^4Bbl^2c{I^L2Cpa$2Um`DubNFfB+SQnLv~CoK!VGk6?;Pz&hJWK$$6! zDLX*G%uswK3W9pYI0yy+0X=~)5a4eN0CWrm08kPLSrh^}3S)Iy3IhrZMiK-+2mx&Z zl?9xU6mJL!UKNiP1zCfIP*;KyQWB>HEer;KuA>u8uoHo@w+W$PvQwwAOPsR|1GmN! z!L1d+f|a;`Zf(*N2fCq;EpGt{3EPB$M1&GY6=C8Gn>(^Alh^>21mKmMxbsll9ZPTq z0U}xf4&}3ya8E)?6J)H3IKvKr1H`B~M)j$~<` zXsWJk>%M4_Tm|d_fHmMCpBaEb$0souFp8RL5WoqBncU|f)DV;#>Ll@`5Dt?AVpWhr zDFZOW+$mr&ficHDp=+wC0iMII^fv->7zuwEffE6083l?b0dE_H5|T*)k6;UI3IqTF zGYkd-I|82xI|T$13Tyy^1p%oP2zw<60H0?JWwC39M+yN)TB-yy2weqL#|#Ss3ZMZJ z!;=#T2!s_2(G^WN-rijnuM`GN+hurC)(P9a;^{MXx<}LuaT3^es1ow-3}gN3oghHV z&H@91+yTT=C>XwNha}u%fX!bydvXTQizsjst_k3hLI9vQAYjSxT@aZy&V1MQL`x~8TOI{>d{-2F5aK(Prx9sv$=KtQ6sB?ax^RV1N^ z12_T2997CpbXuCiD*ysizd(pY zcW2s~e|wN|;j{3|e|CgC&b+zv=g^}|pH98H_3PNPYv0bjyZ7(l!;2qJzCr{5J7qrG Awg3PC literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img38.gif b/deal.II/doc/reports/assemble/img38.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e639468da43e9c650fdc4b2726abb11a59842d8 GIT binary patch literal 192 zcmZ?wbhEHblwgo$_{_t=!ongUA)%t8VrFLM;o%Vy5|WylT2WEa($X?x#*7s!R&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfhBjsNzc`LEnc7fEytAL!@|Hb&vC)zg%v)H3@1Vk zoY4?4n{$QjfVbhNJ1UD}n8JEklXfU8Gg^39+H<{72%N$Z?iF0bpp(3nY5O9L8Ck+& m%nFio3X9twbxz;GZBuKOT*0i~)X~}1-P7CGKS5HE!5RRGQ$O+m literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img39.gif b/deal.II/doc/reports/assemble/img39.gif new file mode 100644 index 0000000000000000000000000000000000000000..255d05e0de1eea43b5acc33085f509bb30b6128f GIT binary patch literal 157 zcmZ?wbhEHb6k(8I_{_t=!ongUA)%t8Vq#+A;o%Vy5|WdXQ&CaT($X?>=FAlGhZ!a}B& zGln6jJVd75W?13j!L_C7pb>`*6T^Zh+l;F6^a2#U4rn?z3+MUh%|8EP%Pb*A25SJl C$}@%l literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img4.gif b/deal.II/doc/reports/assemble/img4.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2aff43f8a899871db895cf17151d95f857d5b2a GIT binary patch literal 139 zcmZ?wbhEHb6lCCM_{_z?$jE45VBq255fT!Tl9EzUQPI-UGH1@56)RS3-n{w$|NjiA zK=CIFBO?PBgAPa-WCjC^MZihV)q5?n4;*xfDTr_k5M?o&ab*J6JrjjUL2dVik`0PG drCj|TC0H3ZhXe>pFidZJ7-T5mvs{qD8UV*lCzk*K literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img40.gif b/deal.II/doc/reports/assemble/img40.gif new file mode 100644 index 0000000000000000000000000000000000000000..aac5a4b07bd54d724bcc17e677aba9e003641a2b GIT binary patch literal 172 zcmZ?wbhEHb6laiO_{_t=!ongUA)%t8Vq#+A;o%Vy5|WXTQBhIR($X?*+O!obR&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfhBUnNzc`LEnc79{XgM^D1)MGn@9o2q%~(IXfd4@ zQ4>~4Y%t)EaDK=rz`at@-%&%<;Mk4+!U-aE9z2{091LtWYz|Cfy`oM6oa(buZZ{uT S;Jg0z`yYGi_V+U|SOWk?RW|Sd literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img41.gif b/deal.II/doc/reports/assemble/img41.gif new file mode 100644 index 0000000000000000000000000000000000000000..6930a1e5ebb95105b1d2607e7e6bdca508ed584d GIT binary patch literal 1684 zcmV;F25b38Nk%w1VS52Z0P_q00s;aU7#JiZBs4TMNJvOjR8(hYXLxvcgoK2Zm6fQd zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0DA#N000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(1{@+m;e9;ks`|NdcUDU03k^n zLW2ST%x=562E#yN*oxNgynY`vFvbj7BY1p;hKDZ*WO59CgNTrkk|Bb&{aw zS_=cM_<2wRAi)L&2M7SDqOggAUJfS|5Tw9B#uxqtC{_f~Oyq_H0_crQGK|51GYIy% z5MXYl2L-!YVpyPaMge3Ch4`c70^Gv@A0+_b*>i;gEFI+K+a$Au)Tscfl8~A-#(^sV zH>jj=b*k11akMnGP&VILv|&B)Y?1H+LV5@STrvvd>sSnG7F?*QLJH6cgi|Eo>+?$2 z5d^9V9)XgCfxj3e3bv5=g94KvF0-gxApyd$8zl^Qi$cv~4Dw{gY!TbSY!>it>;g?W zt8LbR*KX*Xp>~DaB2tquh=MeQEKn!Bl#o{gRshT~Gy@Tt^Na2kh@V*fVL`J2U4>6r z9NmN%?;`@l1yNvr2JjTbcaUGA{tD-Goc@tU8COK31|TnB2ZC|bRkA=O2ZSjcrG zMJK>f*Nhl;NHjoR*|}890crGd0B;!}1b}@D`Zhs@5O%_1L-}C`qF5nf@Dw{RPVkk4 z7|c^6dJ1ZQK#ppdbATg^eWHOZs^vI?JnDtV*D3{=_>(*&;1>u5qA_ql0Si>e!2-uL z0!{*33^2d~O)>zA7@ZJs*ai&U8G@IDg*m1ITwVYQn=T4~(^2&C)u)zaIydMR0vH-6 z1#n)V$YQGbfo28(4prz5r-fh~axQIF34jcs$iR*YQjq4CN_C)IZg!+Z15Oj2Fe*E5 z5@bb?6x52D1$C)9YFLKS@hh+s{s`+qU1TVS6bH^FkfkC7NV&l-Q|YIXkb8nN3?2vA zfq*&WS)eKd;EgLmxn(e?6N1w<3t$2z#f7SESLm6juTF}&8NSk$lF(Bh6nmez6_9JL zyvqi=Z^RY=V&1y=Cc3Na*TEogRfab6q#5OVo;9&9@$`K>A3W*vFm;eC+ zoWYZ}7r^G9aLtaNUeB{_40+VQW`FwwO6fXOc;447fl> z3P?o2DhO0*<=9!2{kH`E=Cy~oOIhH(s^gG1b&5;9I0`z&)Ja4L+E-+OHr(wsjFq3fb!+!ljKna|7|B(`sllK0qOEhd(~V0 z9M-^Bbs!e>l&c)+(lyV0wCrpO*cDS?mr?hpics$8Vs=FP2w!EG*?nU2Y)UHFM#Vrts5R_3;zIP;f!OIGZbZNd9s@BgBN&4RkQ9N3R&dD` zXo8U(=-MQ0(yYQ6X-vD28Yx|YkX3T$I%aX@G?)RVU4SEbvdkqZ2lO04@WhY045m1; zNP+2)N|?w@N7slY3s5HWnXaHE*YxrVXj-!y3Sy&11ktf;Vt_=QD5N*Ru#S*epk5an zCwz{kPCk4?07+qwfjTkDb~FwEkCPKVzyS_~wez2mpkEJT1<-;TqJtZt$e|3%P(7?+ zq4@wuG)D&6(2BMJjU0&IPb|t&HaM`OAU#AULrT(;n)IY7O{q#(%F>p)^rbM3sZ3`| e)0*1!rZ~;1PIt=Fp8E8sKnki*hnj~70029JB!`2Iq+6)K zoJ~OumT!7m4oq{9v0!I8&tl=l<R5ZziN#?>v|rNC~jFFJ|6P?#%|B~U1pXOdKv zW4!2M9^KMle=k;35e|n)memq$hD-^<%pE+;@r(@HgsNQ{+G6 BY=Qs) literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img43.gif b/deal.II/doc/reports/assemble/img43.gif new file mode 100644 index 0000000000000000000000000000000000000000..efde6fcc0bda1113ef9f3099591a7bcdc22c7435 GIT binary patch literal 280 zcmZ?wbhEHbG+>Zt_{_t=#Ka^aA)%t8Vq#+A;o%Vy5|WylT2WEa($X@0`t%hmR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#v9glb);hTD(5H`+tH)pGv68B1JK#2Y#(tLUV$8 z4(n<$r54h3D_XOes)UA5e*5Q<^zfh8D1ScH#<*ci|$gGes!v=*!>SX NYW&vU))Zv01^{~@H?jZ# literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img45.gif b/deal.II/doc/reports/assemble/img45.gif new file mode 100644 index 0000000000000000000000000000000000000000..d64b0e259ea36a6e72ea4804a6e576a774b5483c GIT binary patch literal 299 zcmZ?wbhEHbG+>Zt_{_t=!ongUA)%t8VrpvY;o%Vy5|WmdR#8#W($X?z%9Ir=R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#t@8lb);hTD(5H`+tH)pGv4oQefCIL%mn0RGcyu ziUcRO$n03kG+~j16cfW?)`nRE49qSG2OI;mS!Esv1gJ20dnFx|;1OXwrxa`HUG~6e zj)q`{b)nav1rt=(iB<}8HOaK{6ngP+m8F^rx3f10arv`Y3-_yOd9gFiZK*A-D(d!) zeR(_C)i#8;>M6OECwCtTuY{_TBprA3uHm^7Y&IA3uNn78Yc%1_1U}XAJ-V literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img46.gif b/deal.II/doc/reports/assemble/img46.gif new file mode 100644 index 0000000000000000000000000000000000000000..6034c45bbe394f0e6dc9931ad718450fb7109c82 GIT binary patch literal 355 zcmV-p0i6CvNk%w1VLkvK0P_q00|NsX7#JiZBsDcPNJvOjR8(kaXn1&dgoK2bmzSuh zsI#-P|Ns900000000000A^8LW0RRjDEC2ui06qX8000F3kjY7_y*TU5yZ>M)j$~<` zSdoNArT}m(1IK98p;BZ7pj?DeLO?PgFbP1bf>?$MJJNs`umnc|+^C?fB%O@rM4>&v zz!bo0(ionW`GBf=UT!q?w$RL}?ZWsF^(kqMI9azYI{sdjTz_J`}g3l|g=y zM+IOA!(K`k1pom61ZxbZ6$70ES>2M9ZWIRKJUs3a1P5Kzo(zW-*C4I}G=jTQ04M+_ zOeY}$H5ln&FVnsc2_9;TXJG&URA^9W+{m$`$Bz*pLy8TO%|Np<@PZmZ-24)5wkSIu=fk|pk|H{+C+zUb` Zo(uWtI`jSI#?zOlJnLMR6~w?`4FL4K7-#?h literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img48.gif b/deal.II/doc/reports/assemble/img48.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c8fa260245afc75ec9db2a5a1ca7238c010c235 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VL|{O0P_q00s;aU7#JiZBs4TMNJvOjR8(eWW_WmbgoK2bmzSuh zsI#-P|Ns900000000000A^8LW0RRjDEC2ui073vC000F3kjY7_y*TU5yZ>M)j$~<` zRgr{-6`)oj0Q6+ER6%S?Q30^az$ZxvQVGOiV?a=V!QWC+AW9TY#%eQoMkxq@ViK5+ z3TEh+A$x8m1i&C6-ypgYbpb#;;9em^UK0sp0|N_y848L}2nci%14{}=Apm9!Y7Aox z0$Chtj%-8#Zy{lwc@_$r8=@4ST8gR~2Sf#ms}%=$6AN(!RuYz)Ph$l*3M;?>!a`jM zWfjH7f(u&(PRU?an*a+816erQY&aDLGy<8DpaW$Ad=pRuwN3OnG`VtH^`{=Vy<(6k z#h_4}bbV0ZE5jZgU_cq`@NmZ&i4M{A_yI!TnOY%2>PSFG=EDGyYf`FQ$+D%(moQ_> RoJq5$&6_xL>a-9606T@!gJA#w literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img49.gif b/deal.II/doc/reports/assemble/img49.gif new file mode 100644 index 0000000000000000000000000000000000000000..d52efb8cd278f0aa707dfe460a5609ac7cd96e9b GIT binary patch literal 417 zcmV;S0bc$`Nk%w1VPgOt0P_q00|NsX7#JiZBsDcPNJvOjR8(eWW_WmbgoK2bmzSuh zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0Am0h000F3kjY7_y*TU5yZ>M)j$~<` zXsWJf5d;S-Yl8q769E7NXb=pA0MStp3YkG{Gf)(dnqO~HaDoB}31XT_5D3|s#S7jT z5P&cP83IrO8APF=7Ek2#4pIP=ut9DUffZX-94>tr2{wO(1BM+5L5(f|?hFo)|=PT~5BakGoM+aE%O5L3tLNqZA2q zbr+Q!LmJV{#S#ht2gphc2{;(1LC+Or(-Q|h>lEFQU+-E(6E)<53c(o4?UDT6fQsQF zA3IwcvSBdD08JeP0Sp{4m&*nK0>nfNxaemVDP&J0_U*7I0b#HK4DDcec1>l4a0)4g zu(+e9M-B#%ArO#(rp=onAoA!KfTT-kjbsX-ceJU~r%=FAlie9Ho{-JA^U>m{e#ZxV5d6|a~ib!wjw=ME#LHCz_1 z;>@1xq35&28EbUpwrE!-7CW)-KFJ95O^a%~)e*(;4_A0X%a|`F`A9tQdoWl2nA3%h z;|6g~+^=+Wa$Xd;G};&OM0p7NKW;6PlXI?;Sm3NmAoe;o%Vy5|WXTQBhIR($X?()~ppPR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#u(Xlb);hTD(5H`+tH)UrOe@j9sD(0R^7g=hrSw z<6`8AEi~YAa9_SdAaCZO?(K#mk{kWbggFLG6k|N}d6Gom;Re>8tsK@JEsvx)IE8~fu&!Lh#DqzLy;|D7I9jw%ynv@jDB4SixmInSY%R-F zk?G>B&0RuFlNlN`m?ukfEazeJ&u3ucT*$-V%F(w;xW{;e=`%#s^wA k3{PxWc(`3a*=vr+#zjZFC5*G~oY=Vdct5j{5(9%Z0E8rSdjJ3c literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img52.gif b/deal.II/doc/reports/assemble/img52.gif new file mode 100644 index 0000000000000000000000000000000000000000..96e89ccc0d04ad068491993ea87eefe413d3a77f GIT binary patch literal 600 zcmV-e0;l~)Nk%w1VVD3P0P_q00s;aU7#JiZBsVuVNJvOjR8(hYXLxvcgoK2dnVG1l zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0GI$D000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-vqhp7ZK2Gm;Tk@b0;d963IG6clSn$B$wO+$N(fp8M9O-UDgYirU}qt$ zva7;!Wk#thI!V*h3{nvG)L<2m=KLmoa1#b?9b#pFA_)UZh5$AaNNovgM*wXBcY7z0 zcM1xHV;^;Qc9U|J6sQcE69}9i3IaO?t_)xj2nS!1h874239f4jw-ZoMR~EU1tC3;H zhP%VQ7{S#H#kaNq0jd)PL50Y#+C&3+6czz_qHE4&DTR5u$N*YI6wM^$AyBWvy)yp9?D>(1f#SQ1t=<{K&EUb?KxPqD}&JGWA`tI1r~!2Fs4&!Y~SfCL%n+AS4h=+moT m&%V9;_weJ(pHIKO{rmXy>)+46zyJRL1_vnMfCTao0RTG?a`XTI literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img53.gif b/deal.II/doc/reports/assemble/img53.gif new file mode 100644 index 0000000000000000000000000000000000000000..98014b04dfb5324c203b79c83bc4e0b601b66327 GIT binary patch literal 799 zcmV+)1K|8eNk%w1Vfp|c0P_q00RaIR7#JiZBsDcPNJvOjR8(kaXn1&dgoK2cn3$-j zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0QvwQ000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_ifUL?2z=0_8*3X0yupcEwl(5Mu^loYB~V{D;aG8NM>mZa#K zu8e0`Iu5DV(61SWAVB9J`{F{FCW{b~!9z8!$r-0JB8jlY% zS8kJv)j+8aGK z?FCZ_497l7o34S>7;f`^rS$Do(;}AP;hG?TqbJE=XD}cji2+RxwK#_v0J4TqQJo?% z-(kEt_7=E%*Yw%d`m!0JcW_Ez{D+Da49-wb0Q(4_TV@#y5DFDFjWH2i`!qDdcX2?W z%Y!5c_*-2cC>TdghOIS3Z44N&AcYEr;L$w-U>3q_Rvbu;J=vv00UDRM03Qc9cC#0W z8bG#V6KIh^C2I%Gr5;Vvd0)`~?ID(pO_UY%JfCeh)poA7`=%I)vs_3GOHtOi3kVY!$ dq?A@_>7|%vs_CYjcIxS;poS{ys1!s106PwJOv3;G literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img54.gif b/deal.II/doc/reports/assemble/img54.gif new file mode 100644 index 0000000000000000000000000000000000000000..72f9c4a4ea6c18e31e5298736a3be8debbc8d36c GIT binary patch literal 92 zcmZ?wbhEHb=FH8TH~;_tU-2gkBO?PlgAM}_ ufYdTDD^~2f^KXMFM)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuZ~q z&gir{Z793n@Jr#W*eDJJfFREAlLdMn2?7XyF$D=MZ7qltjWz{hi!uslksS+{6$Eu$ zlQIUMDGHh?p^l#fr7oEi32SPiD6g<+vLK{12WJN!g%zh7w6y@YA;Y!C8M!ipF9yG} zdlL%N6AJ)|90Mc=(F}Q=n=g3_7X&EKCfpoz*(1&z;pZyl^djnqt1Ij%1*QKi4A^%8 zK#6_~UdckB%!EP<3{#*hVXy-rYajx0c-5;y#1#GyJvP*U&_#fbE()MDagsvI3I{M| zs5n9;1p)yqOeB|cTnd{cXl_Ul006-XFXi>T$pWX&5TA-Hvh*1r~8{ zUEwz%3Pls8hn*s}g#^KUZy2x$fy}`nVg84KOkdIT-d+8zL;-;e#K*vV?NNkFQ4G!` zP=6Q&I7uNI34qcdlD*ZDUL0PM2#B?@^a}x#gho?-80>=1SbfzOVFd}GlT>TO$by(g z?CnX@Q4di31K=8B|9QArfdq0GMB) zKobB8Xyf7pFk(;?gcUI8nw>X>H9#E&&`5!k3B7oLHWCo1Py!>tW@HD4CR(LYx2#oE z03inXL2`t40HC0mDx`pqb@-Ri1m|JUXhC%-@Jp!-ND2U@AOsLt41AU`}D5{)R;mPQfbrmuR|%2`fHyKy(RrCl15`pcW+O=zx>~co0+_-bW zwdH1d&^HJ-_>H#~W-vfe#gH~hJ~+Z9g2Kg|(eQ8gi97%h!}fG|Usw`E5ojSRIvMdwE%Im@WX? z-3dFf1~b*$jlF@@Y|0bDY+E-7wg+(Us)>E{3F4;(L4P2g3Qf0LVF!B?mBHUOER6%= z;GlHC-f$Af>QMb4FnJ04IaL#l;wWS;K&Ffn;5dz(6NhHMmqz;m$Pb=w!g?1lQ$u7p z$lh*0kDy?=*BQu?k8~~I7pRG#z?R;wZQ@K zfCvAqh|XGZL_-Mg6>2M@5|_xtCOYwnP>iA! Mr%1&rJ~09SJIw+&{Qv*} literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img57.gif b/deal.II/doc/reports/assemble/img57.gif new file mode 100644 index 0000000000000000000000000000000000000000..e75a97361ed5413e81ad0c36373d6de2b6b3d902 GIT binary patch literal 1631 zcmV-l2B7&zNk%w1VT1uS0P_q00s;aU7#JiZBsDcPNJvOjR8(bUWq5dagoK2amX@ff zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0E7WG000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v z&*-#z&3*#j@VGo~XkX{}dEK5ayb~J=2Lu2Dd{uq`fEt2?hKFbag&qk42#`~fj~tbk zm}LrY1s)2cpHQIyrW~cGDFurvdn*TT2b34E6a@-6s}u^Fu`3D!g~KGXGPMA=9mo^B zti}S+#MIUw$}k4oD6K4s*&N*z9G@*V6l;w9%B2Y~iq&w1AgFL|qzHCLqvMK&=XXI41asVRPrtxdL!3Ye6ww5R4r^w!8`R<~IXS?*bs2 zbOr^40OW34K(z$ct&@f**2{p@wuB`Z%P^N?u?h;1=Xrw?L-t8`fo33JmGTAye|t^H zE}@co1OYO_Pk`XxQK$R(ef>#bN+mS0_u2>Fb;m(l2CM==FYf&p zUw#1nvlLVaaw5Qc0a)T60th6qVS55zprBiOpf>?@XGx+#Q-BoUO=TyTIAM4cRF=R1 z$n}`g9tb$NluteGQPd?+3ZP7o82ti39Rys&#_OhM?nq9kk`-e~%#fqA5pR ziP0=tZjj=Ob)?AvhgnW00hb*F;K`VG0(I7O)bYlEa(EWh7zohuSCLpRZs*ORbJDaF z01KH&p-P_J8Ox6vPzuqG$YsjFenGBP8~_32wB3}fK+59;kV55Yd;W1cfvAx|*<+;> z+A5thu|Rp&sj0rI$RaS_if2#!}kZ1)J7NFdV8kjgiZpb{cmYL1o z`Hmrr^s^-eNV=zOkG&}1$&aOUSDP-I`Nlw@zz9&SwU)*B&%PAAS+2SD7((HP@2bV_ zCB82Re(UpA`tMe2KHi`vZW4F_aOtd zD4@*B$6fNHO7Ut+BXs@fub_ac2Ye%x-<29UB;r($c2=;ZBXAgZyXjW)N9ezlwRmyuN#7TYJDV2wv!MMMPBDxd~P!~p>?kZdZ65Gyj$AK!4Qgc`X>Frsmf z59Vir)Um+R3IqZV27-i6Ia$YSn1K_D?t$xJ31&=C00=_Ffd0y&i=%gp<0LoID@|37dr7Bm+%2vAam9UJZEN4l}T5hsKty!WicYw=WI&zmpXcJL@ z8H6H=kC;;klCO}-11K$%nM`0#0lJe&Xxc!UNfDtnn}E0O1Z|r+=%xj}2~H&#Zv`v literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img58.gif b/deal.II/doc/reports/assemble/img58.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ad71c8dccb6dc58e61f827ced1358055dadfadd GIT binary patch literal 526 zcmV+p0`dJvNk%w1VS4}{0P_q01Ox;a7#JiZBsMlSNJvOjR8(bUWq5dagoK2Xlar{Z zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0DAx*000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%Lb3e?>B5hN}Sftr~pc)-fW1?n8~}P42wW#b5(9)Fd4PvdBm}&ViZsMR?0^6}8gWgaLV=_VlQ}e^ zqky0Y0W=2^;XzZ80H6sB0m&$Lh+>H&vILAd6a^TgWflfdboUDtpa4+6!9vwTL84Yp zt9H1F2BHgF6~JCFi_Ah+3S?V;OMt*eodr$XhA2pe=nKDkp>5S>)y?~ Qx9{J;g9{%{+(ZNbJM(R literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img59.gif b/deal.II/doc/reports/assemble/img59.gif new file mode 100644 index 0000000000000000000000000000000000000000..f898b00d9a6638b138766d0c3d51219a20276670 GIT binary patch literal 257 zcmZ?wbhEHb)M1ce_{_t=!NDORA)%t8VrpvY;o%Vy5|WmdR#8#W($X?v!h{toR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplfo0uT_=8q(<6!NU|zyGn`G{- zE`|&lnyqP{6%tArxqTSeD}3u}g=5)RBv|zsSU80_dzvDqO_(IgJWG6{7z=xgaIVOF ziKXJxg_)Xl%Y{~pOp%P2;oQKpO@eLbe;o%Vy5|WmdR#8#W($X?#&YTr1R&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfhBpuNzc`LEnc6sW>zrJd@v#BaDc2^_==E+qK`r} z?gbiqzE)&taXBU|VCvZRP(_i$ykWM#&__Wkew4UJ9BEv;=0f(+IGU?D(& literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img60.gif b/deal.II/doc/reports/assemble/img60.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d219c6ac6cc29790c055cbe6f0c99a33237807f GIT binary patch literal 398 zcmV;90df9ENk%w1VMPER0P_q01qB5d7#JiZBs4TMNJvOjR8(eWW_WmbgoK2Xlar{Z zsI#-P|Ns900000000000A^8LW0RRjDEC2ui07U>F000F3kjY7_y*TU5yZ>M)j$~<` zSD~ORWpKsON=gv`0I`a-mIyP(VSu0+0=tl*h$$3i20>DSc#a5}fQ*$0BrXF|3=TVZ~aA+hP#m3xHB!9#mZ(0Cp4ySbY+I3JH4|3ISvk13Oj>jRchz2mn(P z1TvEnm5mdbmXQ;U2RjLQ8=DtD5~{4Os1~HBLNo$J13(&_3e;o%Vy5|WXTQBhIR($X?*+O!obR&3t9 z`Tzg_3^1VhlZBCyfrmi{BmgplfhA_bNzc`LEnd$J=&&7IBrs0#kVMrXD(z7SLnV=A5uVRn?Sr6603Mmb%%@ V2?ft?y#KMM?)>}T|9J!%tN|xkJU0LU literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img62.gif b/deal.II/doc/reports/assemble/img62.gif new file mode 100644 index 0000000000000000000000000000000000000000..1771abb7670ed5824faed847e91c74203624cbba GIT binary patch literal 701 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 XGhG{5Fc%C-OSNWuwrIPg5dZ)?1b6?j literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img65.gif b/deal.II/doc/reports/assemble/img65.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef1f07b8b031626436883fe12f9545e257937144 GIT binary patch literal 2331 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 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img67.gif b/deal.II/doc/reports/assemble/img67.gif new file mode 100644 index 0000000000000000000000000000000000000000..74852b156f23c33bd4ea2b62e43b7c21bf679666 GIT binary patch literal 318 zcmZ?wbhEHb3}ldH_{_t=$jB%mA)%t8Vr*>e;o%Vy5|WjbRZ&sV($X?>=FAle_;aq{EN5P$Fkf_`5Mx?Wjhy2lVOAz?9yWW$8OzMp zY-M1)eN|%D?(WFvE&IOz_@e1=CV27wyWdmJ5$Bs{nnn8VmqboMFb`1Ts++?;wu T+Hd{s_doX3oqzvXnZX(W8u&Zz literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img69.gif b/deal.II/doc/reports/assemble/img69.gif new file mode 100644 index 0000000000000000000000000000000000000000..852f7187a03e2c76d2f596f16e8e3261dbce8b04 GIT binary patch literal 100 zcmZ?wbhEHb3_{_t=%*-qyA)%t8Vq#+A;o%Vy5|W;tUQtoe($X?{^5hjOR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplfo0x=lb);hTD(5H`~QOF0xg14M-OtkcyOL%(|E^H zP_Fw_D*m^`fFvE&IOz_@e1=CV27wyWdmJ5$Bs@4SE#~nE@L&m9Q*}0P_x%q$ OYW&vUe*b}k!5RQ3d^-C8 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img71.gif b/deal.II/doc/reports/assemble/img71.gif new file mode 100644 index 0000000000000000000000000000000000000000..233c0f45a8242ebf314509e3e391c0b4c6a43c6c GIT binary patch literal 347 zcmZ?wbhEHb3}BFF_{_t=#Ka^aA)%t8Vr*>e;o%Vy5|W;tUQtoe($X@0`t%hmR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#u(Xlb);hTD(5H`+tH)UrOe@j8$n|juP6*A_Y8L zEw-GU?-;q{nHAm$v>soiwlX=4A;5((DnVg^#xv2~r9o^A&5Qyse3@ou>Q2}kHvhto zn1+Ri)f3J*T1`-RBgC2}#+|~$$;e>K(yVGM79mtA&cUNE#O0&Q)+@}yz|O+K*i@^| z$(%1Tk!P|*st{X-ur9+gQO<3(^I6%&iw-a}h|F9iv}T=HN5wH_Q;7tForl%CL_6yy zvNG-yW@B<>+kRX++;Q!(t76FkZ)$^mn3+3YI(tdS{a8JB^>=Rt_7L6E6VAskFq08l rk>vii`=H6*q%$wRZCG@)Tf#W&&WVkSkN0ybICsf-Zc;hU!C(yl=M;9( literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img72.gif b/deal.II/doc/reports/assemble/img72.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b49c00e3f767dd7a4a26fa16c40d878995e81cd GIT binary patch literal 1435 zcmV;M1!Ve1Nk%w1VblR10P_q00s;aU7#JiZBs4TMNJvOjR8(kaXn1&dgoK2cn3$-j zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0Mr2=000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$xId!N`vj$#1v}Oszs{G2Dx3R5L_~l zkBaNeEJ*;~@HpT+QpoRg&O#k492jnQad{$vf^UQxX(?*LED=Nj}3-1j-;fd~+c ziJuq*j|K3x!WKhn1u^Usk#K^;V=XR{GI6j(MPmL7F;a?nVIqc)&q8j@(NP0}0RRdh z10V(g90oSukOOeQ0Du5u7&v1PM?wId7+%IC5cDMqn0y9=0sw1*I|=Y|p3@rQDo!p% zi6YJ5RD($iP$x*0K$U{mtT(xKwKoA?*qbf|f@mvYKmY>;0tBdf;qAD)V{z)GaMl9f zHgvJ#<0>~PRHk(oPf#G>RNx6`$HK($ssJ+t&W1AZsf%+4&QLyYR>}Af0M!x%z)En7 zC@R{>*iIB+(wGK~&nU2#;Ch<{1++_U(9PTw+g!jah;G~gdGO`_a9daqJ;cP)r^S=X z?g4!B3FJ3$XN-O2hwZNg#HJme9~T2NY5q6SXcvSs02g*>a8zuGR3ZU@+M$r31oUv{ z4m_X=xX%Cu%vZsMXDrBogMD=@xNrlmcp;6Y6h}vy5df354 z26C~0kN((5hS>K2jh)L!IA&Kc& z1;hyg=2<{JsOWkWLV3Y*di7~rkH2;5siAUaaHgJTG-*@yj6!*K7vb6x+*nPRocOyBxnhRq4|46_MCL3~P}nyMT?%oyVEO3{+>LsMx9v=rM^#Ncd^-8lSWriU4V+Snn!TwdbUo1G0KMxEE z4q$*#3haQuc0~>Z3OLQC=w|}~Y9N2^vqArUWxoe{fN~rdo!Z_Y9tC*tLwEYvST+#@ zzqvqcGGO5gT*v|u&OnCL_}EdzW5XKYFo!jOAKI@^wW@aHFAuTN}n>TO%|Np<@PZmZ-26hG=unM4B z24=&GU3dN&obt>R{3^Jim_?4I?VN|vvz1GF81{USHhB{{xqR!v=2!m@EGY2Mk?KE@ JqRPl%4FKd|CC~r> literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img74.gif b/deal.II/doc/reports/assemble/img74.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5539ec3efa887f94cdce7289b50e50c27df0e30 GIT binary patch literal 1978 zcmV;r2SxZtNk%w1VU__?0P_q00RaIR7#JfXBQrBINJvOjR8(YSWO#UZgoK2Zm6fQd zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0G0t$000F3aLGxly*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a8q~{VaHZ-$ZXb@P9!3ffT{|LSJjw}dcUcy$Z!B_ z5`vIn08q&X`6W?3VkgJT`i|ttDCTO3W6g9R$vJLs3Er~y(zyY2C>9;!5awyyJiD=9tF!1 z3IhNF(Hzr`*Dl%CBh=m;!^Px4*~%US1a}AkkR4|W8_tS6)E3AVEi=Cw^);0AQb!0`5K}Ne zky@2H?n@yH)RGJk^zcH0hyVsK1@YF9+^`++T6kONE?u~OJJb_90W4t=eB;hdH_A({ zm=jV;NY(`}nl1fF06>c}>G}0x%fIkxyX^e?i+Vf8gtfq+?sSIl@~QP&7;^i5!21$qT= z(+-9>WfNxvyn@$N0{Au`1=z`!*NKt+VibiW{xTQ^jfwS>g5>RYoruD1CPXe_rG$VL zF~T^-TRPfUfn?JZsi1b=tNo}O!JK=Wo|G4sG_Ez-XY)Rbx2tVgnH?#&ymU>q(D$t=|Qf-3Iaj8 z_S!;mQ5cfzmxcODgt5q?AV85n{s^0_ShqeCL$n=G%YwCNG3$e~&#okf5~H2)?X}_3 zFs=#B1lv}(2FdY)8^wxH%DZ&v;BE>81Ste4>>5PKC;XBI@KjfLa*2M~3Y_W_24C_4 zm`w!SFFCEapvt@Pj&Ly#75hSC4iZmX47M7Oe5?y5qkt$05Q{*NCw-<6vdDK}aX~j3 zSAcU0J9i3B#wmZ$^B^Br@SY$FbW*O+Gn3-T!hRY+D?>R?Ks5?igOK$=L3glqIz?L@ zz&=;X9JUiCaV8n86bWbb${K{k(Fbw|bsO9j7%;2~b*qZlx+JR5v>#(nrtM)Hc7U)4 zi*InY1dVeL`2>f*Fgb<(XRC8_RgqAgy z8t0ygog0eC*wz~OMVXJA2Y@)QzH6OJA6DCDW1qWN>eZA4a>Q*n9RITMUvnJy9P?B_ z6xFFfiGXFL?tJHV9x-4`95|n|8AuY45QuCpQM-iMuXJM3QuX&IJyrM zQAj{c-RMa{x=Q|uDnLI8bWm_DVv~~ek}r8MWjJ|SnpTeZgDjzM6F#yTj4;rpCt3hW z>7wH3xHP0Zx+P|in?jPP^op{MXhJgxJ)#Xb=X)&Q(@3{dejNXE5b;(5T^>R*nB)>vfE18((#QgKnZ^W99Y zSOkq&#d6nbbyWux)x-j!a2&u2Cnn#_2L&xvSjn-q1x!Kewt6T<$5P0IeYGKK4!fZH zO$2ayb?Fd5)Qh^(Op7WSY%G#^wt1PM6NKv{-drm(L=y5+ZsbW%g-}$-q$wD@o!BZ_ zZuzP`QL>n%<$(xSlH7d;a{WSTb^YfB2@dVd)=Xi;Z1KPL+b|vTvomC z-9ashQN;M#cN4L@uYUK--~RgdzW@%ffCo(A0vq_i2u`qq7tG)WJNUs6jbX9NHMJNnacZ2$lO literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img75.gif b/deal.II/doc/reports/assemble/img75.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bf6432d29ec47fb751afd77a90c3cbcd517746e GIT binary patch literal 659 zcmV;E0&M+9Nk%w1VZZ<>0P_q00RaIR7#JiZBr`KJNJvOjR8(MKV0d_VgoK2amX@ff zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0Kfn#000F3aLGxly*TU5yZ>M)j$~<` zXsWJk>%MSY7B4MtHhyzC+johds-W0qh?}4>qjVuXh5<}LNGvVXA|`sha9>nw#{ejs z&*eY{%?1Pxu{ImNm7`^3yLqj5(>n@cEeTp(6NDRqh82n~h#*2K28$GvJd_lXD3&7% z0{{YoAD*D1SEQjLqyeT&tF0WUk0S?G2m`PhwF|eoGP}JYz_^RUz8Ji1J zgf;!EFvck3j37n;06P%!89x93 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img76.gif b/deal.II/doc/reports/assemble/img76.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc0048143d47de7c117c68266bed59bab4f2314e GIT binary patch literal 172 zcmZ?wbhEHb6lIWQ_{_rq1QHSwDk>_*#>O5V9w8wiDJdxx6%{QlEi-1!Sg~To=FOY` z|NjqC2L_5iSr{1^co=j*Jdha-ERhpVdamAU@%rpfhJ=I?5r?2QMhW(r0^G@3E{|?* zn!+M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BcvG06;7bg2<$@rXWZL2T5T`ty)V5g#?h0M6ckm_>u_J z3SG^#g&v36nYG(+F*rv3^Sej9-u1p$pVj0h8v6$5`G z02~Pd9tM~xp%Zot3Ie4w2UDx9C#M{w8>z81xU8tM3|u6y00oK`1%exQD8~~4X$eO( z&JqaG%g7nl7}E^UHQdz{%9H>EogE1TTAvF9X%>}|#U$~c6ZSLszbf$?#2Wha#Ry2@ z--!Wf?0LHYpp+3qM6`uN(eNGxfiMVSP*BJ~0092y?m3JI5r8!W${1d(p^=(468K_b z(6>N!cL^xf7IL@~ZNN?}0NKWd9kAR9n{*{>Pcu04y_M74Di2oxe92O|OiQn8}t8@GjC zya#kLKskX^Rtkr2KF!N_VCTjl78Ec5;DCXS>3P6Fr=Ic}e=oPga+vAf< zab?o2C(MSI={CROu32ClF#9S4bKOi zb3i~L<`lrwIV@4m_O@%zOCZf1y#EUP;r^E$X4PTfQAk_-l%H*qsWwtYdFW$HSFMCX z1ObvAqK^R1ap;ka!a`Ea6Nd_;bzs~FPs%kTYLlhZq$Hbh5T%nI6bR582NZ(j1_=04!k7kn z8G-?7u82)s#EAJ424w=+=6-jMl4qSDuo(i0icAPdo*xKG2BDzriOob709uflJ0X)m zo|CFjDF>Q-aOpBs7UTkrS8OUtr~A1fg{i2fs_Lq&w(9Duu*NFuthCl@>#exvs_U-2 l_Uh}ezy>Squ*4Q??6JrutL(DO3pVTQv(QE>Z3+s4oD1S1_Mi2!AZ~6do5m{-Thx-n#g2Eh9zM#lN?nzHgI-L(fg!y zCnQfrs3l>twI2p>s@QHOJkK&w#J8Jya M-+o_F&B9;}0J^3%=l}o! literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img79.gif b/deal.II/doc/reports/assemble/img79.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ae0de6db3567d3d698e3a485981632584fdb2ee GIT binary patch literal 221 zcmZ?wbhEHblx2`-_{_t=!ongUA)%t8VrpvY;o%Vy5|WylT2WEa($X?*+O!obR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplfu(E0Nzc`LEnc79{Xc4A1gnMQv87WIltPXu%5p?( zxWT|y6!t}om672EquV5=1_#F%P0dnGCmDPMI$RnS-I!D$yn0F5>JIJ3SvPxl;?Ifv zaJ-(jM~88VQtI+0!VVk>!ch$N!hs#$B1-bCH4@Fzoc`hwYHV4e+G?JqLKEgLTD)ZG RvgIpQu3Eijt&|{xH2@+SOi};< literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img8.gif b/deal.II/doc/reports/assemble/img8.gif new file mode 100644 index 0000000000000000000000000000000000000000..43fe3e7f2ba34264dd19820b0b0d71a7a1235326 GIT binary patch literal 293 zcmZ?wbhEHbv|^BD_{_t=$jB%mA)%t8VrFLM;o%Vy5|WXTQBhIR($X?()~ppPR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#uSKlb);hTD(5H`+tH)UrJ`51DB7tl}fq|&(*{u z(nc#7ibPGk7?)cz@O1emnrf<8dN-*UzENQ4?kk*R5y8)y=6K43W7YJ7XKzgoIh)bF zK0vlYl|`QI!<#MK1{GD3OyvxXJd9E{HXWi2e%V4@(ltEnOsT0%)`h~%wKB{sg=upo zwYe5^nX@rR`iOF*$XYk^tn=I`=FP~)z!+J{VByAp5`2g8()}k-pFMx^^404%Z{NND@bS~QkY-W< literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img80.gif b/deal.II/doc/reports/assemble/img80.gif new file mode 100644 index 0000000000000000000000000000000000000000..affbada694bf09309dc097a39577246f60ca067a GIT binary patch literal 699 zcmV;s0z~~sNk%w1VV?jW0P_q00s;aU7#JiZBs4TMNJvOjR8(YSWO#UZgoK2Zm6fQd zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0G|LK000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&s~v__GVN&?G*}5uW|?wZoY|O$QS^gfrF+X-6#r_Yf{I&Xe)t)0f6)+ z1Q!73>@grH?k$GRiBrgONdXHVQ>T0#1Qi2$7JD9p6a#@_?ydYXm| zm>ho-3V3p)O-O1C35988PXL7lPpk|Gw6%&W3YrE109_NLud%ZewvYq^xfhZZ2|*>P z64KNd(h>>+0t&0p*a2DK8?WTAXcYx-3rssjFsB&s?mAtAzn62xh^c4pE=brvKd zXo&Kiw16E$q&fgCk~Ir6x5Z3p@InD#6Z%nD#X;i|0PMU9AnEY}qX0rFP-Q?><(+cm zwpL}(Bioy)5iKO7S>fEyTe1peZ9wEv#R0&VB?&$kRbk!4 zwFCo568LH)&?2N;V=1UC5Ws6vq|6Rz3RMGLK^3syw z0QI;B1f}6CUm=k_Ck4nc$e#iW$o2{LO=@sJ56PsIivhF!RvHL)Xz&F#jhvT)dK;u; zMS>b2unaohIHwARdgN4th)VEafdKi9klPO^!7)O1OKC!0Cp6YL#Xt|*sN;@2_UPk} hKn5w~kVF<~3`X@}BG+9}Y!5RR8{6V<@ literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img82.gif b/deal.II/doc/reports/assemble/img82.gif new file mode 100644 index 0000000000000000000000000000000000000000..39994399398e44447b214cc7cfadd4bea78c233d GIT binary patch literal 1460 zcmV;l1xxxzNk%w1VWI&f0P_q00RaIR7#JiZBr`KJNJvOjR8(bUWq5dagoK2Yl$5Bb zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0HOgT000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kH{p=5C8-u2Eaf`ty-_xU!fpT7!ujAIG8Yu ziDlm4z(}9p@S1`f4;H{PIt4J-1MfS2DS#(WD269yI0Xuaafl`ZjWG%VcoGN!1_zKn z28t2`0Hc~BqNJb~b1Ma@r%tIG02*^m0E`&37q6wXf-(rPB)S;2qXd^j#3ly6ECm1v z6kDOfItc<7%Ol$v2hu1BQx@GE&0AMp= z3Z_nh1bwGn3S@IE}VFCh;X3goS;b%|=bCO+vc*rMEnn(#{w4eZh(ootgoIIM81JgVh zOO#8n(?ZE0FFh0>@M0c=0Vr9ByT$f{)q;3*iTf}hZ44M_9cOABH5&}39@R|w%fJ0&^ zY`Ec$dXh*+06iRta})zdk~a*IOE%d-HwcW?op&}Bsf(1d(9n%82TZb8mnL3-O)<)m zSmXw0R-nh4F%Bu6m^*r?)-(>LV$XKm#mUDde5@#EW)KSWML}0mwNQBNI95{ySMr%$ ziJ2{WD54pZ1JD5jh0>yPwzXntGLHUITNF<42H0`PC3=@{irgm60EsrYM>rbolm zrs|H(73|6YvnAxS2hS7W9Iw2bzy*lFxey(pQZO2nKy)M&0GLhyxHnm*8YR627?Ut% z2r=hkIV~Gw%R7f<=bQtL6Iy#(fv@WR2crZ6T&qFZ^HSG>K_1m7EC&~2q&Ef}4ssxh z2T=VIAV3EQLgKg5d%{irM8z#Z;S>i8#-%5MigP#6N)EB$3cuKUaInuQbBBK(eICXF9Hg3Jumw|nOqoH7wHV3fXj<6T5r zbo3oTavSv(Tx)c8?u6R{=Mp$?Ljg2TN^`^Va8gv^tJ}Z T21X_q9jX2kOEw8HGFSru&sZb} literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img84.gif b/deal.II/doc/reports/assemble/img84.gif new file mode 100644 index 0000000000000000000000000000000000000000..9207600c6e642beed5640bb85a1647a0bd60e4fc GIT binary patch literal 368 zcmZ?wbhEHbv}cfI_{_t=#Ka^aA)%t8Vr*>e;o%Vy5|W&pTv1Wc($X?@>eLl0R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#u(Xlb);hTD(5H`+tH)UrJ__mmmYf#5o3KJRM6U z8in3ZQhXue(kLFx5I2oc&`lvm#EXYf!!y8IuiKQ_B8KmrcVfiJvSTxtHZ?KCsI%yM zIY>&VG=EohTt7k5UM#n|R*bb=oULAxwJ5VgG>?ZZwj!IAA&@DXxs@}pZl=&|;Q)sE znj~jSR<1OjULHmv24QyYNn6_DHuG%V#?6|ztCO9PIa%Lf=aJ9_`^3&%5M|E3ER{9c zV?U3+WdVB;SF7-yd-;2XxSvQc>nxaZf}5vMm}x2xdk0J4j54dQYBh@%^dD~YsZvvr zc-HP^WyZth&@{E+h<0P&q0|$P@&cLMM)j$~<` zXi64AaH#4a0LDZBzz`Y)qX>wOf>6i|UMQY!Vo-{>1br9@K?VR$30xt0c@hKxgc=A43XghfY#Cz= z0W}9~hyVc+h*V~&7JHKyL24HV1AHEgEDW8HV+v~+j#Zi)0GksBM6H|?2>=JV3`YzJ zNEoFOmm5}C7zYB;XtT%_h7>Z4c)ZRQvl6l$39uFc2-1|n7|vgl2rdWJ83;1~3_3AD zppYxXc;SHatOC3N=3uCJM* RoJq5$&6_xL>eLwl06RT=fs_CM literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img86.gif b/deal.II/doc/reports/assemble/img86.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9bdeb31c8cd533e6aeb087dece239f24d7fd3a5 GIT binary patch literal 455 zcmV;&0XY6gNk%w1VNU=d0P_q00s;aU7#JiZBs4TMNJvOjR8(kaXn1&dgoK2Yl$5Bb zsI#-P|Ns900000000000A^8LW0RRjDEC2ui08aoR000F3kjY7_y*TU5yZ>M)j$~<` z=%$c}00_s~zOgwN02xR}ZV{gyqjv#KU{000mYmBhfJFiw(RK3gQvx2-F z1_+755LihP1UJP{wj>T@sxV1XdIZ0}4$|rE{RS7rKMJ0Cf@t!MIml16hKG z$P)+57PFkwJl2>K$7bA<0DZRF6qXYR<3;A@m+IsU1nm^+7YPCz%IUTE9QzXNS@73k z9gZ3UVnH&r;-G|t9I$a}_>F-8g&7JoYEz&J#tL-@eofHGpp5~K970wg3G3vT4|D#wBcT-4@I?brqZJqoXpjnks)ruC xG$5tcwWqC=Wm9BS%U~1Rw{YXiolCc_-Me`6>fOt?uiw9b0}CEZxUk>|06Xjbw;TWf literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img87.gif b/deal.II/doc/reports/assemble/img87.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e4d10b3a5cf5fd162672f527fdac318e36f6a3c GIT binary patch literal 334 zcmZ?wbhEHb^kI-;_{_t=%*-qyA)%t8VrFLM;o%Vy5|W;tUQtoe($X@0`t%hmR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#vsvlb);hTD(5H`+tH)Uy7!vL&1!kr2-5IKKVBB zYzH-%E~&OSrESm>t>HNM_Jqeht;QA=!y62oUDI3?*KnwHG(6GfjAsxrVGGnq*?OR9 z%c5y3j!v$s%6H_sBcov@6`tQxA(AFmRVBm{D9gdY)!Ug{EaM`^;#yK8%Hi0S&66w6 zUcXqHb*}Ili5|(EBIyZY?2F{s)(Wxti*-y1V_}&gy23Ymr_{b+;j=u)gzJUaQ^J-V z;NaY|Aa|88r@4M`>=Q9gCc_AwSIviyb{iUo@_aVD9`%be_Lual@6QxJxo=o-u$eNzc`LEnc79y}yHjM)j$~<` zXsWJk>%MR-&vb3yc&_hdk>mxJFJ|BwZH8h_5nLrL3PNCjVj2k->I}dIOcY$f&y*1G z4hU8GQYe~HXx@;5P|gI}$>ESHGh>Ioxd~%y7 znipOy1)Vuq6qq6g0S1m51)&lJtsrFp1*Qy>6R)Od0Vala?v$zlAFpV-3Q>UKUs^+YJe3WfgzYz5t!kL#}GMLRKoz08zcQ>khbP9C6B!*7|^JQfdP(SslsSg zK~Hjxa#cXEy2E3GW~cGi_M1V#-0+$Z=oGMqpXI)TKNo%h0WJ=aQr?En=s1IE7Xy4^ zFd*ftRq7qNEXF8+%=b~#(4Vk0Mf(cXoy}rjB@5+OQ#1w`GTSb8!Jv*u3*mHN1_6PC z0XxX(mxlm)xxyP|jO^hL2hU7LN^u>0bjpX^Wl*Asr$pq}4+^ki6b~<2H~}P*+=xMr zBqSgZ1wu-|A$30$$=Z4~`6z;tCE?Sc0W|ewB$G`_0ERBv)OExJN*?J#m{^8TfRh^d zLc&8TBq%{7AF4S5n_t%1!W_~F(V!D{_UY%JfCeh)poA7`=%I)vs_3GOHtOi3kVY!$ cq?A@_>7|%vs_CYjcIxS;poS`{rV#)DJ1DR|)@f7M?H`DT=phZn1A^X9$sS6!R0SbnQ#bmtcz(VRVg;&k(Mg;_NfIUxYny zE>G8tj^?&CR;z>!g;oeLW^fs;n#mc@ykJf^DErGJEi$o7x sROY-QUVTg5MV$NQ1LX@hp1peg=Iy)pA3lEi{N?Mn?>~P25M;0h030iCng9R* literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img91.gif b/deal.II/doc/reports/assemble/img91.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c92644af9d42e42ead15799f195b68f0f1ce361 GIT binary patch literal 305 zcmZ?wbhEHbG-Qxx_{_t=!ongUA)%t8Vq#+A;o%Vy5|WmdR#8#W($X?z%9Ir=R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#u$Wlb);hTD(5H`+tH)pGug$7yjb)Yx||dORM=MZKFW6VuIMpH zW|)4SiQ(Yp=4#THzwSWD91~u3XPlVJ;R1mI9#(qShYKOj->L?Q?`! zv^W?etSnf4IA)22c(GLTGzl|D1v2#Q70O}WZgoU-TQ0kc)oH23?78Q}nH-GQNQJPn yh;T%S@04M^C%t~^CQ;7klIk+dtA%|mKYjl4_1pI!KY#uH^Y`C>hQF>14AuaK{bx%6 literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img92.gif b/deal.II/doc/reports/assemble/img92.gif new file mode 100644 index 0000000000000000000000000000000000000000..26d549bd8807ec2196874a58acc77d4e552e8316 GIT binary patch literal 142 zcmZ?wbhEHbs4oD1S1_O(A!AZ~6do5m{H5YPlRG6xy(k&R_s@NG;;L(!EDC`i{ jxJg92n^8bwhY@o$Tf;6HE{2$NueDL@Z>&*aVz34Pw`?cx literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img93.gif b/deal.II/doc/reports/assemble/img93.gif new file mode 100644 index 0000000000000000000000000000000000000000..784eba0d769359b89c44e9c957f017bec5e86bc6 GIT binary patch literal 298 zcmZ?wbhEHbbYqZb_{_t=$jB%mA)%t8VrpvY;o%Vy5|WmdR#8#W($X?@>eLl0R&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplf#v#ylb);hTD(5H`+tH)UrOe@q=^x%ukzXob>E&A zbttIm4B)ap#+Z0nhJ&ZI;fCfFgXSc)4M{4CWalmum=eYyvcc7nfuX5Ei@AM{!iIYr z_AHVR5X?1XZVY%anNgfEt)~P2`X)9icu;g-cN0({qwz`Z36mAr4mEOZOlHtxbyac*EYP($T{=mjRr9gefiTZtmN%Wz zbu*1c%4VeM2Cn!b!X6;P;VTl&=pY;v(Z-`J&#EO{5TU@??APE|C}+yU$Y2!PCpSTS ZvihpkYu2t?zhUF1&0Dr^;}K-A1^}=2Od0?H literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img95.gif b/deal.II/doc/reports/assemble/img95.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf8a8497c3a4194d07a29e653613f2c3216fd08c GIT binary patch literal 454 zcmV;%0XhChNk%w1VQ>H+0P_q00RaIR7#JiZBs4TMNJvOjR8(bUWq5dagoK2bmzSuh zsI#-P|Ns900000000000A^8LW0RRjDEC2ui0B`^w000F3kjY7_y*TU5yZ>M)j$~<` zXsWJk>#{{68tf4e@|y}kAJ7^DFr+A~0to{kr^5g`2|?+AP%WFm0>E(C6pW>TY5>Mo z5(EX~sYqu6-BKZbQd~ob-oOw5z&isuPYelSPD~6000IdCh8hTuB?$#&Bz{H-JspE< z6P*^I32Fla3IQCa7kxdgtx^=H3YwRln-#DWff9p_x=a8Sqssr0d!MIDN_t zGF2hQiAM7#uvEriml+BK4$zU9GG2gL6e_L=8i!4Q1&GW9_#fOt?uiw9b0}CEZxNrmjJ6~6-;{X5v literal 0 HcmV?d00001 diff --git a/deal.II/doc/reports/assemble/img96.gif b/deal.II/doc/reports/assemble/img96.gif new file mode 100644 index 0000000000000000000000000000000000000000..8134a66931ab1898a4d960698f7c23e3d3c2c8bf GIT binary patch literal 202 zcmZ?wbhEHblweR~_{_t=$jB%mA)%t8Vr*>e;o%Vy5|WmdR#8#W($X?*+O!obR&3t9 z`Tzg_3^1VhlZBCyfrmi{Bmgplfu(%HNzc`LEnc79`RYajLxNkLmmmYf#DMfNo{l9F z2i1>GS9~Gtl6Yvf27~_Th8cG#q~V;f?}>1DE4#T`!?ad@~G{_$SRd yWH7-%BS!U`qQQjyhg4bh*$OI|b-XKu*%|D+`X@}BG + + + + +assemble + + + + + + + + + + + + + + + + + +next +up +previous +
+ Next: Introduction +
+
+ + +

+

+
+
Assembling matrices in deal.II + +
+

+

+
+
+
+

+

+
Wolfgang Bangerth +
+ETH Zürich, Switzerland +
+
+May 2002 +
+
+ +

+


+ + + +

Overview

+ +

+Assembling the system matrix for finite element discretizations is standard, +at least as far as scalar problems are concerned. However, things become a +little more complicated in implementations once problems are vector-valued, +and in particular if finite elements are used in which different components of +vector-valued shape functions are coupled, such as for example for +divergence-free elements. + +

+It is this case that we are interested in in this report, and we will discuss +the implementational details user programs must follow if they want to use +such elements with deal.II. In order to explain the problem in a +simple way, we start by reviewing the algorithms that are used, first for the +scalar case, then for the case of ``simple'' vector-valued finite elements, +and finally for the most general case. However, we do not intend to give an +introduction into the derivation of finite element methods, or of posing a +partial differential equation in weak form. + +

+The interface for vector-valued finite element shape functions with more than +one non-zero component that is described in this report is presently being +implemented, and will be merged with the library after version 3.4 is +released. Thus, it will be part of version 3.5 or 4.0 of the library, +depending on which version number we will assign to the successor of 3.4. By +then, the library will also contain an implementation of Nedelec elements, for +which these techniques are necessary. The interface for primitive +vector-valued shape functions, for which only one vector component is +non-zero, has been part of the library since its publication with version 3.0. + + +

Table of contents

+ + + + + +

+
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node10.html b/deal.II/doc/reports/assemble/node10.html new file mode 100644 index 0000000000..f5d49fc212 --- /dev/null +++ b/deal.II/doc/reports/assemble/node10.html @@ -0,0 +1,156 @@ + + + + + +Assembling vector-valued problems: The complicated case + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: Getting information about shape + Up: assemble + Previous: The Stokes equations +
+
+ + +

+Assembling vector-valued problems: The complicated case +

+ +

+The more complicated case is when more than one component of a vector-valued +shape function is non-zero, i.e. the representation +

+
+ + + +
$\displaystyle \Phi_i(\vec x) = \left( 0, \dots, 0, \varphi_i(\vec x), 0, \ldots, 0\right)^T,$ +   
+

+does not hold any more. The usual case where this happens is when shape +functions have to satisfy certain constraints, such as that they should have +zero divergence or curl, or when the normal fluxes at some points, e.g. the +face centers, are the degrees of freedom: + +$ \vec n\cdot \Phi_i(x_a) = \delta_{ia}$. In this case, the individual +components of a shape function are no more independent, and thus cannot be +chosen such that only one component is non-zero. + +

+What happens in this case? First, the function +FiniteElement::system_to_component_index does not make much sense +any more, since a shape function $ \Phi_i$ cannot be associated with only one +vector component any more. Calling this function for basis functions $ \Phi_i$ +that are not restricted to only one non-zero component will thus yield an +exception being thrown. + +

+Second, the functions FEValues::shape_value and +FEValues::shape_grad returning the values and gradients of the only +non-zero component of a shape function at a quadrature point cannot work any +more, since there are now more than only one non-zero components for some or +all values of $ i$. For those shape function for which this holds, you will +again get an exception upon calling these functions. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous +
+ Next: Getting information about shape + Up: assemble + Previous: The Stokes equations + +
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node11.html b/deal.II/doc/reports/assemble/node11.html new file mode 100644 index 0000000000..b537efd228 --- /dev/null +++ b/deal.II/doc/reports/assemble/node11.html @@ -0,0 +1,153 @@ + + + + + +Getting information about shape functions + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: Evaluating shape functions + Up: Assembling vector-valued problems: The + Previous: Assembling vector-valued problems: The +
+
+ + +

+Getting information about shape functions +

+ +

+So how do you find out whether calling these functions is ok or not? In other +words, how do you know whether shape function $ \Phi_i$ has only one non-zero +component, or more? For this, there are two functions: +FiniteElement::is_primitive(i) returns as a bool whether +the shape function has only one non-zero component. For example, for a + +$ Q^2/Q^2/Q^1$ element, this would be true for all 22 shape functions. +For a finite element for which every shape function is non-zero in more than +one component, it would be false for all indices $ i$. It might also +be true for only some shape functions, for example if the velocity +components of the Stokes discretization are done using some more complicated +element, but the pressure component with a $ Q^1$, then it would be +true for the pressure shape functions, but false otherwise. + +

+Second, the FiniteElement::n_nonzero_components(i) function returns +in how many components the $ i$th shape function is non-zero. Again, for the + +$ Q^2/Q^2/Q^1$ combination, this would yield the value 1 for all allowed +indices $ i$. For coupled elements, it would be greater than 1. + +

+Third, you may sometimes want to know in which components a certain shape +function is non-zero. For this, the +FiniteElement::get_nonzero_components(i) function is the right thing: it +returns a reference to a vector of boolean values, one for each component of +the vector-valued finite element, and the values indicate whether the shape +function is non-zero for each of them. + +

+Note that if you have the result of +FiniteElement::get_nonzero_components(i), then the result of +FiniteElement::n_nonzero_components(i) is simply the number of +true values in the array returned by the first function. Likewise, +FiniteElement::is_primitive(i) is simply whether +FiniteElement::n_nonzero_components(i) returned a value other than +1. The functions are thus redundant in some way, but useful nevertheless. Of +course, the values of the FiniteElement::is_primitive(i) +and FiniteElement::n_nonzero_components(i) functions are not +recomputed every time based on the result of some other function, but are +cached once at the time of construction of a finite element object. + +

+


+ + +next + +up + +previous +
+ Next: Evaluating shape functions + Up: Assembling vector-valued problems: The + Previous: Assembling vector-valued problems: The + +
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node12.html b/deal.II/doc/reports/assemble/node12.html new file mode 100644 index 0000000000..879e388d9f --- /dev/null +++ b/deal.II/doc/reports/assemble/node12.html @@ -0,0 +1,94 @@ + + + + + +Evaluating shape functions + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: The elastic equations + Up: Assembling vector-valued problems: The + Previous: Getting information about shape +
+
+ + +

+Evaluating shape functions +

+ +

+Now, we have seen which functions cannot be called for non-primitive shape +functions, and also how to find out about shape functions and whether they are +primitive and the like. Yet, we don't have replacements for the functions that +cannot be called, so here they are: instead of FEValues::shape_value +and FEValues::shape_grad, call +FEValues::shape_value_component and +FEValues::shape_grad_component. These functions take as arguments +first the number of the shape function, and second the number of the +quadrature point (these are also the arguments of the original functions), but +now as additional third argument the vector component. + +

+Of course, these functions can be called on primitive shape functions as +well. In that case, the following holds: + +

    +
  • The value of FEValues::shape_value_component(i,q,c) is equal + to FEValues::shape_value(i,q) if and only if the component + c is equal to fe.system_to_component_index(i).first, + i.e. if c is the only non-zero component of the shape function + i. +
  • +
  • For all other components c, the returned value of + FEValues::shape_value_component(i,q,c) is zero. +
  • +
+The same of course also holds for +FEValues::shape_grad_component(i,q,c) and +FEValues::shape_2nd_derivative_component(i,q,c). + +

+


+
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node13.html b/deal.II/doc/reports/assemble/node13.html new file mode 100644 index 0000000000..a547f6ff95 --- /dev/null +++ b/deal.II/doc/reports/assemble/node13.html @@ -0,0 +1,149 @@ + + + + + +The elastic equations + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: The Stokes equations + Up: Assembling vector-valued problems: The + Previous: Evaluating shape functions +
+
+ + +

+The elastic equations +

+ +

+With the above, we can now assemble the matrix for the elastic equation in +mostly the same way as before. The difference is that for each shape function, +we have to loop over all components. The code then looks like this (compare +this with the one in Section 5.1): +

+  for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
+    for (unsigned int comp_i=0; comp_i<fe.n_components(); ++comp_i)
+      for (unsigned int j=0; j<fe.dofs_per_cell; ++j)
+        for (unsigned int comp_j=0; comp_j<fe.n_components(); ++comp_j)
+          for (unsigned int q=0; q<n_q_points; ++q) 
+            {
+                           // first assemble part with lambda+mu
+              cell_matrix(i,j)
+                 += ((lambda+mu)                       *
+                     fe_values.shape_grad_component(i,q,comp_i)[comp_i] * 
+                     fe_values.shape_grad_component(j,q,comp_j)[comp_j] *
+                     fe_values.JxW(q)); 
+
+                           // then part with mu only
+              if (comp_i == comp_j)
+                cell_matrix(i,j)
+                  += (mu                           *
+                      (fe_values.shape_grad_component(i,q,comp_i) * 
+                       fe_values.shape_grad_component(j,q,comp_j)  )*
+                       fe_values.JxW(q)); 
+            };
+
+If you dislike this particular order of the loops, you can reorder them as you +like, as they are independent. + +

+The code as shown above can be optimized. For example, instead of +unconditionally performing the loop over all components of shape functions $ i$ +of $ j$, we might first ask whether these shape functions are primitive, using +fe.is_primitive(i), and use the loop only if the result is false; +if, on the other hand, the result is true, we only need to set +comp_i to the fixed value +fe.system_to_component_index(i).first, and likewise for shape +function $ j$. + +

+Another possibility for optimization would be to ask whether a certain +component over which we loop is actually non-zero, or if the shape function is +a non-primitive one but happens to be zero in the present component +nevertheless. For this, we could replace the loop over comp_i by +this: +

+    for (unsigned int comp_i=0; comp_i<fe.n_components(); ++comp_i)
+      if (fe.get_nonzero_components(i)[comp_i] == true)
+
+If the if-clause does not succeed then this component of the shape function is +definitely zero, and there will not be a contribution to the matrix anyway, so +we can also skip the computations. + +

+


+ + +next + +up + +previous +
+ Next: The Stokes equations + Up: Assembling vector-valued problems: The + Previous: Evaluating shape functions + +
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node14.html b/deal.II/doc/reports/assemble/node14.html new file mode 100644 index 0000000000..ad5eeaf519 --- /dev/null +++ b/deal.II/doc/reports/assemble/node14.html @@ -0,0 +1,105 @@ + + + + + +The Stokes equations + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: Conclusions + Up: Assembling vector-valued problems: The + Previous: The elastic equations +
+
+ + +

+The Stokes equations +

+ +

+Likewise, this is now the code for the Stokes equations: +

+  for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
+    for (unsigned int comp_i=0; comp_i<fe.n_components(); ++comp_i)
+      for (unsigned int j=0; j<fe.dofs_per_cell; ++j)
+        for (unsigned int comp_j=0; comp_j<fe.n_components(); ++comp_j)
+          for (unsigned int q=0; q<n_q_points; ++q) 
+            {
+                           // velocity-velocity coupling?
+              if ((comp_i<dim) && (comp_j<dim))
+                if (comp_i == comp_j)
+                  cell_matrix(i,j)
+                      += (nu *
+                          (fe_values.shape_grad_component(i,q,comp_i) * 
+                           fe_values.shape_grad_component(j,q,comp_j)  ) *
+                          fe_values.JxW(q)); 
+
+                           // velocity-pressure coupling
+              if ((comp_i<dim) && (comp_j==dim))
+                cell_matrix(i,j)
+                    += (-fe_values.shape_grad_component(i,q,comp_i)[comp_i] * 
+                        fe_values.shape_value_component(j,q,comp_j)        *
+                        fe_values.JxW(q)); 
+
+                           // pressure-velocity coupling
+              if ((comp_i==dim) && (comp_j<dim))
+                cell_matrix(i,j)
+                    += (fe_values.shape_value_component(i,q,comp_i) * 
+                        fe_values.shape_grad_component(j,q,comp_j)[comp_j] *
+                        fe_values.JxW(q)); 
+            };
+
+Again, the same optimizations as above are possible. Here, they even seem +worthwhile, since it is often the case that the velocity variables are +discretized using a non-primitive finite element, while the pressure uses a +primitive element. In that case, some shape functions are primitive (namely +those discretizing the pressure), and of the non-primitive shape functions +(those for the velocity variables) some vector components (the pressure +components) are always zero. Thus, both optimizations described above would be +useful. We leave the implementation of this to the reader. + +

+


+
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node15.html b/deal.II/doc/reports/assemble/node15.html new file mode 100644 index 0000000000..546d82241a --- /dev/null +++ b/deal.II/doc/reports/assemble/node15.html @@ -0,0 +1,74 @@ + + + + + +Conclusions + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: About this document ... + Up: assemble + Previous: The Stokes equations +
+
+ + +

+Conclusions +

+ +

+We have shown how finite element matrices are assembled using the +functionality of the deal.II library. For the scalar case, and, in +the vector-valued case, if the +finite element shape functions are such that only one vector component of each +shape function is non-zero, assembling is relatively simple. In the other +case, when there are shape functions with more than one non-zero component, +some more care is necessary, but assembling is still straightforward and +follows the same pattern as before. + +

+


+
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node16.html b/deal.II/doc/reports/assemble/node16.html new file mode 100644 index 0000000000..84bf42eacc --- /dev/null +++ b/deal.II/doc/reports/assemble/node16.html @@ -0,0 +1,73 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Up: assemble + Previous: Conclusions +
+
+ + +

+About this document ... +

+

+This document was generated using the +LaTeX2HTML translator Version 2002-1 (1.68) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html assemble.tex +

+The translation was initiated by Wolfgang Bangerth on 2002-06-14 +


+
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node2.html b/deal.II/doc/reports/assemble/node2.html new file mode 100644 index 0000000000..f393f7447c --- /dev/null +++ b/deal.II/doc/reports/assemble/node2.html @@ -0,0 +1,775 @@ + + + + + +Linear systems for finite element methods + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: Assembling scalar problems + Up: assemble + Previous: Introduction +
+
+ + +

+Linear systems for finite element methods +

+ +

+We start by briefly introducing the way finite element matrices are assembled +``on paper''. As usual in finite elements, we take the weak form of the partial +differential equation. In the most general case, it reads: find $ u\in
+V$ such that +

+
+ + + +
$\displaystyle a(u, v) = (f,v)_\Omega \qquad \forall v\in V,$ +   
+

+where +$ a(\cdot,\cdot)$ is the bilinear form associated with the partial +differential equations, and $ V$ is the space of test functions. For +simplicity, we have here assumed that the problem is linear and that then + +$ a(\cdot,\cdot)$ is a bilinear form; if the problem is nonlinear, it is +usually solved using a sequence of linear problems, so this is no restriction. + +

+In finite elements, we define an approximation of the solution $ u$ by choosing +a finite dimensional subspace $ V_h$ spanned by the basis functions + +$ \{\varphi_i\}$, and searching +$ u_h\in V_h$ by testing the weak form by the +test functions from $ V_h$. The problem then reads: find +$ u_h\in V_h$ +such that +

+
+ + + +
$\displaystyle a(u_h, v_h) = (f,v_h)_\Omega \qquad \forall v_h\in V_h.$ +   
+

+ +

+Now, +$ \{\varphi_i\}$ is a basis of $ V_h$. We denote the dimension of $ V_h$ by +$ N$, and will henceforth let all sums be over the range +$ 0\ldots N-1$, to keep +with the standard notation of the C/C++ programming languages. With this, we +can expand the solution +$ u_h=\sum_{j=0}^{N-1} U_j \varphi_j$, and by +bilinearity of the form +$ a(\cdot,\cdot)$, the problem above is equivalent to +

+
+ + + +
$\displaystyle \sum_{j=0}^{N-1} U_j a(\varphi_j,\varphi_i) = (f, \varphi_i) \qquad \forall i=0\ldots N-1.$ +(1)
+

+Denoting +

+
+ + + +
$\displaystyle A_{ij} = a(\varphi_j,\varphi_i), \qquad \qquad F_j = (f, \varphi_j),$ +   
+

+the equations determining the expansion coefficients $ U_i$ are therefore: +

+
+ + + +
$\displaystyle A U = F.$ +(2)
+

+ +

+Note that we have taken a reverted order of indices in the definition of $ A$, +since we want the linear system (2) with the solution to the +right of the matrix, to keep with standard notation, instead of to the left as +in (1). For symmetric problems, there is no difference, but for +non-symmetric ones this is a common source for problems and a rather common +trap. + +

+For partial differential equations, the bilinear form used in (1) +involves an integral over the domain $ \Omega$ on which the problem is +posed. For example, for the Laplace equation we have +

+
+ + + +
$\displaystyle A_{ij} = a(\varphi_j, \varphi_i) = (\nabla \varphi_j, \nabla \varphi_i)_\Omega = \int_\Omega \nabla \varphi_j \cdot \nabla \varphi_i \; dx.$ +   
+

+For practical purposes, we split this equation into integrals over the +individual cells $ K$ of the triangulation +$ \mathbb{T}$ we use for the +discretization. In deal.II, these cells are always lines, +quadrilaterals, or hexahedra. With this, we have that +

+
+ + + +
$\displaystyle A = \sum_{K \in {\mathbb{T}}} A^K, \qquad\qquad A^K_{ij} = a_K(\varphi_j, \varphi_i) \qquad 0\le i,j\le N-1,$ +   
+

+where the bilinear form +$ a_K(\cdot,\cdot)$ only involves an integral over the +cell $ K$. The important point is that we do so since for the localized basis +functions used in finite elements, $ A^K$ is a matrix with almost only zeros. +The only elements which are not zero are those corresponding to indices $ i,j$ +indicating those shape functions that have support also on the element $ K$. +For example, in 2d and using the usual bilinear shape functions for a scalar +problem, only the four shape functions associated with the vertices of the +cell $ K$ are nonzero on $ K$, and thus only the entries in $ A^K$ are nonzero +where the four rows corresponding to these indices and the respective four +columns intersect. + +

+In general, assume that there are $ N_K$ shape functions with support on cell +$ K$, and let the set of their indices be denoted by $ I_K$. Then we can define +a matrix $ \hat A^K$ of (small dimension) +$ N_K\times N_K$ holding these nonzero +entries, and we can obtain back the original contribution $ A_K$ to $ A$ by the +transformation +

+
+ + + +
$\displaystyle A^K_{ij} = \left\{ \begin{array}{ll} 0 & \text{if $i\not\in I_K$\...
+...al(i),local(j)} & \text{otherwise}, \end{array} \right. \qquad 0\le i,j\le N-1.$ +   
+

+Here, $ local(i)$ gives the number of the global degree of freedom $ i$ on the +cell $ K$, i.e. the position of $ i$ in the index set $ I_K$. One could call +$ \hat A^K$ the reduced form of $ A^K$, since the many zero rows and +column have been stripped. + +

+In general, when assembling the global matrix, the reverse way is used: when +adding up $ A^K$ to $ A$, we do so only with $ \hat A^K$ by +

+
+ + + +
$\displaystyle A_{global(i),global(j)} +\!\!= \hat A^K_{ij} \qquad \qquad 0\le i,j\le N_K-1.$ +   
+

+Thus, indices only run over the (small) range +$ 0\ldots N_K-1$ instead of + +$ 0\ldots N-1$. Here, $ global(i)$ denotes the global number of the degree of +freedom with number $ i$ on this cell $ K$, i.e. +$ global(i)=I_K[i]$, where the +bracket operator returns the $ i$th element of the set $ I_K$. + +

+The main part of assembling finite element matrices is therefore to assemble +the local matrix $ \hat A^K$. Before we go on with discussing how this is done +in deal.II, we would like to comment on the evaluation of the +integrals involved. Since the integrals are usually too complex to be +evaluated exactly (they may depend on coefficients appearing in the equation, +or the solution of previous steps in nonlinear or time-dependent problems), +they are approximated by quadrature. Assume we have a quadrature formula with +$ N_q$ points $ x_q$ defined on cell in real space (as opposed to the unit cell) +and weights $ w_q$. Then, for example for the Laplace equation, we approximate +

+
+ + + +
$\displaystyle \hat A^K_{ij} \equiv \int_K \nabla\varphi_i \cdot \nabla \varphi_...
+...\sum_{q=0}^{N_q-1} \nabla\varphi_i(x_q) \cdot \nabla \varphi_j(x_q) \ w_q \vert$det$\displaystyle \ J(\hat x_q)\vert.$ +(3)
+

+For other problems, the integrand is different, but the principle remains the +same. +det$ \ J(\hat x_q)$ denotes the determinant of the Jacobian of the +transformation between the unit cell on which the quadrature weights are +defined, and the real cell, and $ \hat x_q$ is the point on the unit cell +corresponding to the quadrature point $ x_q$ in real space. + +

+Since all matrices and right hand side vectors only require knowledge of the +values and gradients of shape functions at quadrature points, this is all that +deal.II usually provides. One can see this as a kind of view +on a finite element, as it only provides a certain perspective on the actual +definition of a shape function. Nevertheless, this is entirely sufficient for +all purposes of programming finite element programs. + +

+In deal.II the FEValues class does this: you give it a +finite element definition, a quadrature formula object, and an object defining +the transformation between unit and real cell, and it provides you with the +values, gradient, and second derivatives of shape functions at the quadrature +points. It also gives access to the determinant of the Jacobian, although only +multiplied with $ w_q$ as these two are always used in conjunction. It also +provides you with many other fields, such as normal vectors to the outer +boundary. In practice you do not need them all computed on each cell; thus, +you have to specify explicitly in which data you are interested when +constructing FEValues objects. + +

+In the following, we provide a list of connections between the symbols introduced +above, and the respective functions and variable names used in typical +deal.II programs. With this, we will subsequently show the basic +structure of an assembly routine. If you have already taken a look at the +example programs provided with deal.II, you will recognize all these +names. If you haven't, this would be a good time to look at the first +three of them. + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$ A$system_matrix
$ \hat A^K$cell_matrix
$ K$cell
$ N$dof_handler.n_dofs()
$ N_K$fe.dofs_per_cell
$ I_K$local_dof_indices
$ N_q$quadrature_formula.n_quadrature_points
+$ \varphi_i(x_q)$fe_values.shape_value(i,q)
+$ \nabla\varphi_i(x_q)$fe_values.shape_grad(i,q)
$ x_q$fe_values.quadrature_point(q)
+$ \vert$det$ J(\hat x_q)\vert w_q$fe_values.JxW(q)
+
+ +

+With this vocabulary, the typical matrix assembly loop in deal.II has +the following form: first declare a quadrature object and use it for the +initialization of a FEValues object as discussed above: +

+  QGauss2<2>  quadrature_formula;
+  FEValues<2> fe_values (fe, quadrature_formula, 
+                         UpdateFlags(update_values    |
+                                     update_gradients |
+                                     update_JxW_values));
+
+In practice, you may want to use a different set of fields to be updated on +each cell. For example if you do not need the values of shape functions on a +cell, you may omit update_values from the list. Also note that by +default a bi- or tri-linear (depending on space dimension) mapping between +unit and real cell is used. Other mappings are possible, for example quadratic +ones, or a mapping that makes use of the fact that in many cases cells are +actually rectangular, rather than arbitrary quadrilaterals; in order to use +them, another constructor of the FEValues class can be used, which +takes a mapping object as first argument, before the other arguments listed +above. + +

+Next we define abbreviations for the values of $ N_K$ and $ N_q$: +

+  const unsigned int 
+      dofs_per_cell = fe.dofs_per_cell,
+      n_q_points    = quadrature_formula.n_quadrature_points;
+
+Then have an object to store the matrix $ \hat A^K$, which is of size + +$ N_K\times N_K$: +
+  FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
+
+And an object representing the set of global indices of degrees of freedom, +previously denoted by $ I_K$, that have support on the present cell, i.e. those +degrees of freedom local to the present cell: +
+  std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+
+The next step is then to loop over all cells: +
+  typename DoFHandler<dim>::active_cell_iterator
+       cell = dof_handler.begin_active(),
+       endc = dof_handler.end();
+  for (; cell!=endc; ++cell)
+    {
+
+On each cell, first tell the FEValues object to compute the values of +the various fields for this particular cell, and do not forget to reset the +local matrix $ \hat A^K$ to zero before adding it up: +
+      fe_values.reinit (cell);
+      cell_matrix.clear ();
+
+Now comes the main part, assembling the local matrix $ \hat A^K$. It consists +of a loop over all indices +$ 0\le i,j \le N_K$ and all quadrature points +$ 0\le
+q\le N_q$, and summing up the contributions. As this is what we will discuss +in detail later on, we only denote it here by an ellipse: +
+      for (unsigned int i=0; i<dofs_per_cell; ++i)
+        for (unsigned int j=0; j<dofs_per_cell; ++j)
+          for (unsigned int q=0; q<n_q_points; ++q)
+            cell_matrix(i,j) += ...;
+
+After we have $ \hat A^K$, we still have to sum it into the global matrix +$ A$. This is done by first getting the set $ I_K$ of the global indices of the +shape functions that were active on this cell, and then distributing $ \hat A^K$: +
+      cell->get_dof_indices (local_dof_indices);
+
+      for (unsigned int i=0; i<dofs_per_cell; ++i)
+        for (unsigned int j=0; j<dofs_per_cell; ++j)
+          system_matrix.add (local_dof_indices[i],
+                             local_dof_indices[j],
+                             cell_matrix(i,j));
+    };
+
+When this is done, we go on to the next cell. + +

+Within this framework, the only open point is assembling $ \hat A^K$ on one +quadrature point. This will be subject of the rest of this report. + +

+


+ + +next + +up + +previous +
+ Next: Assembling scalar problems + Up: assemble + Previous: Introduction + +
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node3.html b/deal.II/doc/reports/assemble/node3.html new file mode 100644 index 0000000000..9d1ecb7eaf --- /dev/null +++ b/deal.II/doc/reports/assemble/node3.html @@ -0,0 +1,143 @@ + + + + + +Assembling scalar problems + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: Vector-valued problems + Up: assemble + Previous: Linear systems for finite +
+
+ + +

+Assembling scalar problems +

+ +

+For scalar problems, assembling $ \hat A^K$ is relatively simple. With the +terms introduced above, and for the Laplace equation, this looks as follows: +

+    local_matrix(i,j) += (fe_values.shape_grad(i,q_point) *
+                          fe_values.shape_grad(j,q_point) *
+                          fe_values.JxW (q_point));
+
+This term is placed in the innermost loop, i.e. is performed for all indices +$ i,j$, and all quadrature points q_point. + +

+For nonsymmetric problems, the order of terms has to be considered, as +mentioned above. For example, for the advection equation +

+
+ + + +
$\displaystyle \beta \cdot \nabla u = f,$ +   
+

+with which the bilinear form +

+
+ + + +
$\displaystyle a(u,v) = (\beta \cdot \nabla u, v)_\Omega$ +   
+

+is associated, the local matrix is assembled as +
+    local_matrix(i,j) += (fe_values.shape_values(i,q_point) *
+                          ( beta * fe_values.shape_grad(j,q_point) ) *
+                          fe_values.JxW (q_point));
+
+Here, beta is an object of type Tensor<1,dim>, which +represents a tensor of rank 1 in dim space dimensions. + +

+Assembling matrices for scalar problems is also shown from a practical +perspective in many of the example programs of deal.II, where it is +also demonstrated how to do this for the right hand side vectors. Thus, scalar +problems are not too interesting, and we now turn to vector-valued problems. + +

+


+ + +next + +up + +previous +
+ Next: Vector-valued problems + Up: assemble + Previous: Linear systems for finite + +
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node4.html b/deal.II/doc/reports/assemble/node4.html new file mode 100644 index 0000000000..f8e652c3b8 --- /dev/null +++ b/deal.II/doc/reports/assemble/node4.html @@ -0,0 +1,81 @@ + + + + + +Vector-valued problems + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: The elastic equations + Up: assemble + Previous: Assembling scalar problems +
+
+ + +

+Vector-valued problems +

+ +

+Since we need some problems at which we will explain assembling the matrix for +the vector-valued case, we now briefly introduce two simple equations. The +first are the Lamé equations of elasticity, which are taken for the symmetric +case, then we briefly introduce the Stokes equations as a nonsymmetric problem. + +

+


+ +Subsections + + + +

+
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node5.html b/deal.II/doc/reports/assemble/node5.html new file mode 100644 index 0000000000..67e3e8e61b --- /dev/null +++ b/deal.II/doc/reports/assemble/node5.html @@ -0,0 +1,355 @@ + + + + + +The elastic equations + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: The Stokes equations + Up: Vector-valued problems + Previous: Vector-valued problems +
+
+ + +

+ +
+The elastic equations +

+ +

+As first example for the methods we are going to discuss for vector-valued +problems, we consider the elastic Lamé equations for isotropic materials, +which read in strong form: + +

+
+$\displaystyle -
+\nabla (\lambda+\mu) (\div\vec u)
+-
+(\nabla \cdot \mu \nabla) \vec u
+=
+\vec f.
+$ +

+These equations describe the three-dimensional deformation $ \vec u$ of an +elastic body under a body force $ \vec f$. The respective bilinear form +associated with this operator is then + +

+
+$\displaystyle a(\vec u, \vec v) =
+\left(
+(\lambda+\mu) \div\vec u, \div\vec v
+\right)_\Omega
++
+\sum_k
+\left(
+\mu \nabla u_k, \nabla v_k
+\right)_\Omega,
+$ +

+or as a sum over components: + +

+
+$\displaystyle a(\vec u, \vec v) =
+\sum_{k,l}
+\left(
+(\lambda+\mu) \partial_l u_...
+..._\Omega
++
+\sum_{k,l}
+\left(
+\mu \partial_l u_k, \partial_l v_k
+\right)_\Omega.
+$ +

+ +

+When assembling matrices, it is advantageous to write the weak form +(i.e. after integration by parts) as a kind of operator. This is since matrix +elements after discretization are defined as +

+
+ + + +
$\displaystyle A_{ij} = a(\varphi_j,\varphi_i)_\Omega,$ +   
+

+where +$ \varphi_i,\varphi_j$ are two vector-valued trial functions, and it +would be nice if we could write the bilinear form +$ a(\cdot,\cdot)$ as a kind +of scalar product +$ (\varphi_i, Q \varphi_j)$, where $ Q$ is a differential +operator. This is trivial if we take $ Q$ as the operator of the strong form, + +$ Q=-\nabla (\lambda+\mu) \div - (\nabla \cdot \mu \nabla)$, but we wanted to +do this for the weak form. For this, we introduce some notation that is used +in quantum field theory: for differential operators, we indicate by an arrow +placed atop of it whether it shall act on the object to the left or to the +right of it. Thus, + +$ \varphi \overleftarrow\nabla \cdot \overrightarrow\nabla \psi
+=(\nabla\varphi)\cdot(\nabla\psi)$. With this, a simple computation shows +that +

+
+\begin{multline*}
+a(\vec u,\vec v)
+=
+(\lambda+\mu)
+\left(
+\begin{pmatrix}
+...
+...\mid
+\begin{pmatrix}
+v_1 \\ v_2
+\end{pmatrix} \right)_\Omega.
+\end{multline*}
+
+

+The sought operator $ Q$ is then +

+
+ + + +
$\displaystyle Q = (\lambda+\mu) \begin{pmatrix}\overleftarrow \partial _1 \over...
+...tial _1 + \overleftarrow \partial _2 \overrightarrow \partial _2 \end{pmatrix},$ +   
+

+and +$ a(\vec u,\vec v)=(\vec u \vert Q \vert \vec v)$. We demonstrate the fact that $ Q$ +acts to both sides by placing it in the middle of the scalar product, just as +in the bra-ket notation of quantum physics. + +

+The advantages of this formulation will become clear when discussing +assembling matrices below. For now, we remark that the symmetry of the weak +form is equally apparent from the form of $ Q$ as well as from the initial +definition of +$ a(\cdot,\cdot)$. + +

+


+ + +next + +up + +previous +
+ Next: The Stokes equations + Up: Vector-valued problems + Previous: Vector-valued problems + +
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node6.html b/deal.II/doc/reports/assemble/node6.html new file mode 100644 index 0000000000..287b5f6327 --- /dev/null +++ b/deal.II/doc/reports/assemble/node6.html @@ -0,0 +1,183 @@ + + + + + +The Stokes equations + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: Assembling vector-valued problems: The + Up: Vector-valued problems + Previous: The elastic equations +
+
+ + +

+ +
+The Stokes equations +

+ +

+For a nonsymmetric problem, we take the Stokes equations: +

+
+ + + + + + + + +
$\displaystyle -\Delta \vec u + \nabla p$$\displaystyle = 0,$ +   
div $\displaystyle \vec u$$\displaystyle = 0.$ +   
+

+We denote by +$ \vec w=\{\vec u,p\}$ the entire solution vector. In the weak +form, the above equations read +

+
+ + + +
$\displaystyle a(\vec u,p; \vec v, q) = \nu(\nabla \vec u_1, \nabla \vec v_1) +\...
+... \vec u_2, \nabla \vec v_2) - (p, \nabla\cdot \vec v) + (\nabla\cdot\vec u, q).$ +   
+

+Since we integrated the gradient term in the first equation by parts, but not +the divergence term in the second equation, the problem is now +nonsymmetric. If we would have liked, we could have made the problem symmetric +again by multiplying the entire second equation by $ -1$, but we don't want to +do that for now for illustrational purposes. + +

+Again, we introduce the operator $ Q$ for this problem, which after some +computations turns out to be +

+
+ + + +
$\displaystyle Q = \begin{pmatrix}\nu(\overleftarrow \partial _1 \overrightarrow...
+...\\ \overrightarrow \partial _1 & \overrightarrow \partial _2 & 0 \end{pmatrix}.$ +   
+

+Again, it is clear from this form that we could have made the operator +symmetric by multiplying the last row by $ -1$. Note when checking the symmetry +of $ Q$ that taking the transpose of such an operator means reverting the +directions of the arrows over the operators, and exchanging their order. +For example, using the first term, these two steps are + +$ \overleftarrow \partial _1 \overrightarrow \partial _1 \rightarrow \overrighta...
+... \partial _1
+\rightarrow \overleftarrow \partial _1 \overrightarrow \partial _1$. + +

+


+ + +next + +up + +previous +
+ Next: Assembling vector-valued problems: The + Up: Vector-valued problems + Previous: The elastic equations + +
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node7.html b/deal.II/doc/reports/assemble/node7.html new file mode 100644 index 0000000000..a05621fe17 --- /dev/null +++ b/deal.II/doc/reports/assemble/node7.html @@ -0,0 +1,321 @@ + + + + + +Assembling vector-valued problems: The simple case + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: The elastic equations + Up: assemble + Previous: The Stokes equations +
+
+ + +

+Assembling vector-valued problems: The simple case +

+ +

+The simple case in assembling vector-valued problems is when the (also +vector-valued) shape functions are chosen such that only one component in the +vector is nonzero. This is usually the case, if we choose the shape functions +to be the outer product of scalar shape functions, such as independent +bilinear ansatz spaces for each component of a finite element space. + +

+In this case, each shape function $ \Phi_i$ has the representation +

+
+ + + +
$\displaystyle \Phi_i(\vec x) = \left( 0, \dots, 0, \varphi_i(\vec x), 0, \ldots, 0\right)^T,$ +   
+

+where $ \Phi_i$ is the vector-valued shape function, and $ \varphi_i$ its +only non-zero component. Let us denote by $ c(i)$ the index of this non-zero +component, then $ \Phi_i$ can also be written as +

+
+ + + +
$\displaystyle \left(\Phi_i(\vec x)\right)_l = \varphi_i(\vec x) \delta_{c(i),l},$ +   
+

+with the Kronecker delta function +$ \delta_{jk}$. + +

+With this simple form, the cell matrix on cell $ K$ has a simple form: +

+
+ + + +
$\displaystyle A^K_{ij} = a_K(\Phi_i,\Phi_j) = \left(\Phi_i \mid Q \mid \Phi_j \right)_K = \left(\varphi_i \mid Q_{c(i),c(j)} \mid \varphi_j \right)_K.$ +   
+

+Thus, in assembling the local cell matrices, we only have to determine the +single components in which the two shape functions are non-zero, and +pick one element from the matrix $ Q$ to assemble each entry of the cell +matrix with the help of the values of the functions $ \varphi_i$ at the +quadrature points. Here, it comes handy that we have written the operator as a +matrix operator $ Q$, since this makes it very clear how shape functions $ i$ +and $ j$ couple: if +$ Q_{c(i),c(j)}$ is zero, then they do not couple at all for +this operator. Otherwise, it is easily visible which derivative acts on which +shape function for this combination of shape functions. + +

+In deal.II, these two actions mentioned above (getting the non-zero +component of a shape function, and the value of this component at a given +quadrature point) are done as follows: + +

    +
  • Determining the non-zero component: Given the shape function + with number $ i$ (i.e. its index local to the degrees of freedom on the + present cell), its only non-zero component is obtained by the function call +
    +  const unsigned int nonzero_component_i
    +     = fe.system_to_component_index(i).first;
    +
    + The FiniteElement::system_to_component_index returns a pair of + numbers for each index +$ 0\le i < N_K$, the first of which denotes the only + non-zero component of the shape function $ i$. Since for the case described + in this section, the individual components of the vector-valued finite + element are independent, we consider each component as a set of scalar shape + functions; the second number of the pair returned by the function then + denotes the index of the shape function $ \varphi_i$ within the shape + functions corresponding to this component. + +

    +If, for example, our finite element in use is a +$ Q^2/Q^2/Q^1$ combination + (for example for 2d flow computations: bi-quadratic ansatz functions for the + velocities, bi-linear for the pressure), then we have a total of 22 shape + functions (9+9+4). For each +$ 0\le i < 22$, the first part of the pair + returned by the function described above, $ c(i)$, may then either be 0, 1, + or 2, denoting the three possible components of the finite element. If + $ c(i)$ is either 0 or 1, then the component to which the shape function $ i$ + belongs is a bi-quadratic one, and the second index is between 0 and $ 8$ + (inclusive) as the $ Q^2$ element has 9 shape functions. If $ c(i)==2$, then + the second part is between 0 and 3 (inclusive). + +

    +

  • +
  • Getting the value of +$ \varphi_i(\vec x_q)$: Since only one + component of $ \Phi_i$ is non-zero, we can use the same function as before, + i.e. FEValues::shape_value(i,q), which in the scalar case returned + the value of shape function $ i$ at quadrature point $ q$. Likewise, the + FEValues::shape_grad(i,q) function returns the gradient of this + particular component. + +

    +In other words, whether the finite element is scalar or not, the two + indicated functions return value and gradient of the only non-zero component + of a shape function. If the finite element is scalar, then it is of course + clear which component this is (since there $ c(i)==0$ for all valid indices + $ i$), in the vector-valued case, it is component $ c(i)$. +

  • +
+ +

+


+ +Subsections + + + +
+ + +next + +up + +previous +
+ Next: The elastic equations + Up: assemble + Previous: The Stokes equations + +
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node8.html b/deal.II/doc/reports/assemble/node8.html new file mode 100644 index 0000000000..0d730b7e9f --- /dev/null +++ b/deal.II/doc/reports/assemble/node8.html @@ -0,0 +1,116 @@ + + + + + +The elastic equations + + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: The Stokes equations + Up: Assembling vector-valued problems: The + Previous: Assembling vector-valued problems: The +
+
+ + +

+ +
+The elastic equations +

+ +

+With this, and the definition of the ``bi-directional'' operator $ Q$ in +Section 4.1, the local matrix assembly function for the elastic +equations would then read as follows: +

+  for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
+    for (unsigned int j=0; j<fe.dofs_per_cell; ++j)
+      for (unsigned int q=0; q<n_q_points; ++q) 
+        {
+          const unsigned int
+            comp_i = fe.system_to_component_index(i).first,
+            comp_j = fe.system_to_component_index(j).first;
+
+                           // first assemble part with lambda+mu
+          cell_matrix(i,j) += ((lambda+mu)                       *
+                               fe_values.shape_grad(i,q)[comp_i] * 
+                               fe_values.shape_grad(j,q)[comp_j] *
+                               fe_values.JxW(q)); 
+
+                           // then part with mu only
+          if (comp_i == comp_j)
+            cell_matrix(i,j) += (mu                           *
+                                 (fe_values.shape_grad(i,q) * 
+                                  fe_values.shape_grad(j,q)  )*
+                                 fe_values.JxW(q)); 
+        };
+
+Note that this code works in any space dimension, not only for +dim==2. Optimization of this is possible by hoisting the computation +of comp_i and comp_j, denoting $ c(i)$ and $ c(j)$, +respectively, out of the inner loops. Also, if the coefficients are +non-constant, they need to be computed at each quadrature point; this may be +done using this fragment in the innermost loop: +
+  const double
+    lambda_value = lambda.value(fe_values.quadrature_point(q)),
+    mu_value     = mu.value(fe_values.quadrature_point(q));
+
+assuming that lambda,mu are variables of classes that are derived +from the Function<dim> class. + +

+


+
+Wolfgang Bangerth +2002-06-14 +
+ + diff --git a/deal.II/doc/reports/assemble/node9.html b/deal.II/doc/reports/assemble/node9.html new file mode 100644 index 0000000000..b08791e1ec --- /dev/null +++ b/deal.II/doc/reports/assemble/node9.html @@ -0,0 +1,108 @@ + + + + + +The Stokes equations + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: Assembling vector-valued problems: The + Up: Assembling vector-valued problems: The + Previous: The elastic equations +
+
+ + +

+ +
+The Stokes equations +

+ +

+For the Stokes equation, things are slightly more complicated since the three +components denote different quantities, and the operator $ Q$ does not have +such a simple form, but the case is still simple enough. We present its +generalization to an arbitrary number of space dimensions, i.e. assume that +there are dim velocity variables and one scalar pressure: +

+  for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
+    for (unsigned int j=0; j<fe.dofs_per_cell; ++j)
+      for (unsigned int q=0; q<n_q_points; ++q) 
+        {
+          const unsigned int
+            comp_i = fe.system_to_component_index(i).first,
+            comp_j = fe.system_to_component_index(j).first;
+
+                           // velocity-velocity coupling?
+          if ((comp_i<dim) && (comp_j<dim))
+            if (comp_i == comp_j)
+              cell_matrix(i,j) += (nu *
+                                   (fe_values.shape_grad(i,q) * 
+                                    fe_values.shape_grad(j,q)  ) *
+                                   fe_values.JxW(q)); 
+
+                           // velocity-pressure coupling
+          if ((comp_i<dim) && (comp_j==dim))
+            cell_matrix(i,j) += (-fe_values.shape_grad(i,q)[comp_i] * 
+                                  fe_values.shape_value(j,q)        *
+                                 fe_values.JxW(q)); 
+
+                           // pressure-velocity coupling
+          if ((comp_i==dim) && (comp_j<dim))
+            cell_matrix(i,j) += (fe_values.shape_value(i,q) * 
+                                 fe_values.shape_grad(j,q)[comp_j] *
+                                 fe_values.JxW(q)); 
+        };
+
+Again, optimization is possible by observing that only one of the outer +ifs in the body can be true, for example using else clauses, +or break statements. + +

+


+
+Wolfgang Bangerth +2002-06-14 +
+ + -- 2.39.5