From 0288cf909a155bdd6e22508252393c88076c8380 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 25 Mar 2011 16:30:04 +0000 Subject: [PATCH] mld2p4-2: Version number string & docs. --- docs/html/img10.png | Bin 257 -> 208 bytes docs/html/img100.png | Bin 648 -> 216 bytes docs/html/img101.png | Bin 678 -> 648 bytes docs/html/img102.png | Bin 372 -> 678 bytes docs/html/img11.png | Bin 222 -> 256 bytes docs/html/img12.png | Bin 504 -> 242 bytes docs/html/img13.png | Bin 607 -> 498 bytes docs/html/img14.png | Bin 584 -> 612 bytes docs/html/img15.png | Bin 373 -> 587 bytes docs/html/img16.png | Bin 296 -> 371 bytes docs/html/img17.png | Bin 345 -> 294 bytes docs/html/img18.png | Bin 596 -> 341 bytes docs/html/img19.png | Bin 394 -> 622 bytes docs/html/img20.png | Bin 508 -> 403 bytes docs/html/img21.png | Bin 187 -> 530 bytes docs/html/img22.png | Bin 314 -> 212 bytes docs/html/img23.png | Bin 338 -> 304 bytes docs/html/img24.png | Bin 274 -> 337 bytes docs/html/img25.png | Bin 1058 -> 274 bytes docs/html/img26.png | Bin 341 -> 1095 bytes docs/html/img27.png | Bin 1265 -> 345 bytes docs/html/img28.png | Bin 298 -> 1286 bytes docs/html/img29.png | Bin 456 -> 300 bytes docs/html/img3.png | Bin 684 -> 752 bytes docs/html/img30.png | Bin 407 -> 447 bytes docs/html/img31.png | Bin 474 -> 406 bytes docs/html/img32.png | Bin 241 -> 480 bytes docs/html/img33.png | Bin 755 -> 247 bytes docs/html/img34.png | Bin 217 -> 757 bytes docs/html/img35.png | Bin 283 -> 216 bytes docs/html/img36.png | Bin 731 -> 289 bytes docs/html/img37.png | Bin 337 -> 742 bytes docs/html/img38.png | Bin 314 -> 338 bytes docs/html/img39.png | Bin 529 -> 304 bytes docs/html/img4.png | Bin 556 -> 671 bytes docs/html/img40.png | Bin 1345 -> 522 bytes docs/html/img41.png | Bin 1354 -> 1359 bytes docs/html/img42.png | Bin 296 -> 1343 bytes docs/html/img43.png | Bin 279 -> 297 bytes docs/html/img44.png | Bin 322 -> 282 bytes docs/html/img45.png | Bin 257 -> 320 bytes docs/html/img46.png | Bin 583 -> 259 bytes docs/html/img47.png | Bin 651 -> 577 bytes docs/html/img48.png | Bin 330 -> 656 bytes docs/html/img49.png | Bin 807 -> 330 bytes docs/html/img5.png | Bin 648 -> 558 bytes docs/html/img50.png | Bin 386 -> 807 bytes docs/html/img51.png | Bin 324 -> 380 bytes docs/html/img52.png | Bin 802 -> 321 bytes docs/html/img53.png | Bin 461 -> 804 bytes docs/html/img54.png | Bin 391 -> 464 bytes docs/html/img55.png | Bin 1062 -> 387 bytes docs/html/img56.png | Bin 1320 -> 1106 bytes docs/html/img57.png | Bin 1075 -> 1311 bytes docs/html/img58.png | Bin 1355 -> 1089 bytes docs/html/img59.png | Bin 261 -> 1352 bytes docs/html/img6.png | Bin 819 -> 645 bytes docs/html/img60.png | Bin 441 -> 260 bytes docs/html/img61.png | Bin 312 -> 433 bytes docs/html/img62.png | Bin 181 -> 315 bytes docs/html/img63.png | Bin 257 -> 196 bytes docs/html/img64.png | Bin 295 -> 258 bytes docs/html/img65.png | Bin 325 -> 300 bytes docs/html/img66.png | Bin 266 -> 293 bytes docs/html/img67.png | Bin 8736 -> 266 bytes docs/html/img68.png | Bin 292 -> 8739 bytes docs/html/img69.png | Bin 355 -> 292 bytes docs/html/img7.png | Bin 232 -> 841 bytes docs/html/img70.png | Bin 265 -> 355 bytes docs/html/img71.png | Bin 374 -> 265 bytes docs/html/img72.png | Bin 1387 -> 374 bytes docs/html/img73.png | Bin 445 -> 1387 bytes docs/html/img74.png | Bin 195 -> 445 bytes docs/html/img75.png | Bin 342 -> 195 bytes docs/html/img76.png | Bin 501 -> 342 bytes docs/html/img77.png | Bin 517 -> 501 bytes docs/html/img78.png | Bin 1471 -> 517 bytes docs/html/img79.png | Bin 279 -> 1471 bytes docs/html/img8.png | Bin 372 -> 222 bytes docs/html/img80.png | Bin 222 -> 279 bytes docs/html/img81.png | Bin 486 -> 222 bytes docs/html/img82.png | Bin 456 -> 486 bytes docs/html/img83.png | Bin 229 -> 456 bytes docs/html/img84.png | Bin 554 -> 229 bytes docs/html/img85.png | Bin 200 -> 554 bytes docs/html/img86.png | Bin 345 -> 214 bytes docs/html/img87.png | Bin 303 -> 345 bytes docs/html/img88.png | Bin 210 -> 303 bytes docs/html/img89.png | Bin 280 -> 228 bytes docs/html/img9.png | Bin 213 -> 367 bytes docs/html/img90.png | Bin 190 -> 280 bytes docs/html/img91.png | Bin 370 -> 207 bytes docs/html/img92.png | Bin 223 -> 370 bytes docs/html/img93.png | Bin 695 -> 223 bytes docs/html/img94.png | Bin 497 -> 695 bytes docs/html/img95.png | Bin 272 -> 497 bytes docs/html/img96.png | Bin 634 -> 272 bytes docs/html/img97.png | Bin 257 -> 634 bytes docs/html/img98.png | Bin 200 -> 257 bytes docs/html/img99.png | Bin 216 -> 214 bytes docs/html/index.html | 16 +- docs/html/node1.html | 28 +- docs/html/node10.html | 16 +- docs/html/node11.html | 28 +- docs/html/node12.html | 308 ++++---- docs/html/node13.html | 94 ++- docs/html/node14.html | 32 +- docs/html/node15.html | 36 +- docs/html/node16.html | 40 +- docs/html/node17.html | 28 +- docs/html/node18.html | 98 ++- docs/html/node19.html | 28 +- docs/html/node2.html | 13 +- docs/html/node20.html | 54 +- docs/html/node21.html | 16 +- docs/html/node22.html | 16 +- docs/html/node23.html | 16 +- docs/html/node24.html | 16 +- docs/html/node25.html | 16 +- docs/html/node26.html | 22 +- docs/html/node3.html | 28 +- docs/html/node4.html | 36 +- docs/html/node5.html | 16 +- docs/html/node6.html | 28 +- docs/html/node7.html | 16 +- docs/html/node8.html | 16 +- docs/html/node9.html | 16 +- docs/html/userhtml.html | 16 +- docs/mld2p4-1.1-guide.pdf | 890 ++++++++++++------------ docs/src/distribution.tex | 5 + examples/fileread/mld_cexample_1lev.f90 | 51 +- examples/fileread/mld_cexample_ml.f90 | 93 +-- examples/fileread/mld_dexample_1lev.f90 | 51 +- examples/fileread/mld_dexample_ml.f90 | 93 +-- examples/fileread/mld_sexample_1lev.f90 | 51 +- examples/fileread/mld_sexample_ml.f90 | 93 +-- examples/fileread/mld_zexample_1lev.f90 | 51 +- examples/fileread/mld_zexample_ml.f90 | 93 +-- examples/pdegen/mld_dexample_1lev.f90 | 7 + examples/pdegen/mld_dexample_ml.f90 | 7 + examples/pdegen/mld_sexample_1lev.f90 | 7 + examples/pdegen/mld_sexample_ml.f90 | 7 + mlprec/mld_base_prec_type.f90 | 8 + tests/fileread/cf_sample.f90 | 7 + tests/fileread/df_sample.f90 | 7 + tests/fileread/sf_sample.f90 | 7 + tests/fileread/zf_sample.f90 | 7 + tests/pdegen/ppde.f90 | 7 + tests/pdegen/spde.f90 | 7 + 149 files changed, 1319 insertions(+), 1323 deletions(-) diff --git a/docs/html/img10.png b/docs/html/img10.png index a6cba407d8c8d1341b7ece4ccb3ed8510f8bd009..96f1a4206edc441df7bce64eccba74e668f3ff3e 100644 GIT binary patch delta 171 zcmZoERLtqJfy7g_(hYaTiy{B_Kz4qN-jkkk&IVWdTx* zB|(0{3=Yq3qyagBo-U3d95a&>5+0;AFzsU#IC=2E0Z!2jCP9URtb7hmhZwZZOky~~ zBhbsq-tdEQLg0Y|29p^jS+esPE}I4HyB=)t^z;PwW%7nc8eY2guuDoXEcwKzopr04?D$<^TWy delta 221 zcmcb>*vO>X8Q|y6%O%Cdz`(%k>ERLtq$PlupM{x$fw8(*sSe07n5e2(&%?t5WWI_# zJr77RmIV0)GdMiEkp|?{d%8G=aLi0jU}$0xILLeCk3-I}0}Kzf3_h4Mv_?ogXqf+y z!MGzRqhUos!T|ERLtr1^kYo`so#fidXyMK2&nccQ9Ny@7#&ii(Pa zgai){4^YgRasO^0#aI&L7tG-B>_!@p6Y1&V7{W0#Ie~#GPvGE$0|kwY(hs5;CLLzH zQQ5%qoGIqgjE0GgvK}TZ3^V!77&>_r4o0}`se7Z4#MI0=AxZe|fe#!3 n^^J&vR$9YJQP~s;K8B#ZLOgGo{cElQZDH_q^>bP0l+XkK7T-7w delta 627 zcmV-(0*w9G0f+@9iBL{Q4GJ0x0000DNk~Le0001l0000d1Oos70ZZl0LI3~&Fp(u9 ze>^-qFfcGABqSIZ7z_*y0002$S<9XP0004WQchCEHLI@<}3BgdQVnMLriXRF^a1j#Bhs2CBrW5@W z%EH{KvxQEmOy${exHy3eh$0Z`7bWlcfBAdQ&-Swe6mUh-hXHf+021{e&U=Xuq{R?F z!S^XXy-0w7#EF~68j$zVA+)luKMmkzgn>?#M|#M^)y`%qr>&;4YHQDkg{&oyFsWZd z>?;IjcxEkg5-GApW1H9Rb%A#4vL$E2SB+iEP+isy!1}_@%ZlNfJeu)pOdAFDe;>nP z9sat#b;Q4O#J5%eMtt!V`87nnVC6cQH6fYb~Oo;VvxqmJc64@|X`iP5%mNl??}0@GYx@9C8zsis>1XKA@1rhXO__pL?HwV zUDjjrTKnXN=m|fT>EOEg{VdH(gwJiiKYBukNT;+CX=q!APjGTRKUTL6%xL>`Yo6M{ z0~1lQWC5RNOqU_`_$qg7p2F$nUf7)IELy^waJF0QFJ*BD&jhyJx#8l|MG!Zl*Lp3y z7jKdHqqNxVuEp&GzJjeU0u_8TWM1v4?#OIZ>H@WOag6^Iwf9;rz5;U*@C1^kt0@2g N002ovPDHLkV1j8L8lV6G diff --git a/docs/html/img101.png b/docs/html/img101.png index 0497bd702a4c49617485d62f0c89b06a01caedf4..a9d84a65494ef7a0d8b94a7d8bab70544847e698 100644 GIT binary patch delta 585 zcmV-P0=E681&9S9iBL{Q4GJ0x0000DNk~Le0001l0000d1Oos70ZZl0LXja%e+EfJ zK~zYI?Nz^T)G!qO?k<;euXp4ISiwV8G2VcRU@A=AnxR4nB;*OfP^n@;u;7Xx3Po@c z63mChj54MZ{S(T<+^MsLPN+=f*>SiyfeVNt5b75t@A>(A&(HR=0~ByY(uV=&3lbQBU6$$-=h44ya}e@UZ`=`ke}?D@KbGm>y7~Pq%}a#OZNEQyLWfAFv=V7(TZd0@ay~y+ zw+_r``*drb+Q9=8QLE&M7oaiiC!kcimTkJ1oaR<)?w%xhm z;?oc}qStyYycchg_@lJg?XJb`1HOW-F9H>OG-O`wsP4#YRO$k?A9Znz{}i?NS}nc; Xa}n?alBTOE00000NkvXXu0mjfsN4~# delta 615 zcmV-t0+{`X1*QcdiBL{Q4GJ0x0000DNk~Le0001o0000e1Oos70a1j+l#wA!e1q`u_9aLYp8$oZiyGudDdrqYEz8G^Z&f zzw<~pNw|iNzagq3TA62=4eg}D1MaUVsuEEdg(%Xh4W&&smIm2zt9w(gzAB%e@Zc(Q&?sq0|WpP{a<%k8^E~p3CsE*F4CC|dPXm^f_C@}H~F5K z7|s!D2kr>(HCxz64{&S{%p@F3H(Ht04EuEKulDOgO~(%L1vO)wJ;HPriHqmO92$?+ zYj$GORBK}RJow>?GJ^?C#S&lQ62Fb|fB*73_9s2F_^_<{tQ`OV002ovPDHLkV1fei BDb)Y~ diff --git a/docs/html/img102.png b/docs/html/img102.png index 321efb07dbe0dd29699d3f01ba644c597e805cee..0497bd702a4c49617485d62f0c89b06a01caedf4 100644 GIT binary patch delta 616 zcmV-u0+;>t0;UBaiBL{Q4GJ0x0000DNk~Le0001o0000e1Oos70a1j+l#wAze*z>) zL_t(YiS1RtYZO5g{&sfVo4bqID`J;oErg`Xf*P#Ml~yK#ZOE1u3RhYvj917+a&Z0! zITJ8iT_adtkv|{=6vV>xX_jz=5CnZQ`zy0K*+n!K=HqtX+c)35`DWhC9FW6#txZ6W z2MAQe2|W?o*cGf=hbu1u-U4;ue^ZVG_u$fCb^8AE;6j@qLY&^x!LO_M;G+vJ)ikFm zB){`WH%YjLj=v$QB3hYenGNlsh#eQ0!+h+Av8j#hp)$%p@D^$w=r@epqS&x@*iTd4 z5p#VP8x6jHHVgY~-51rgTqu5&;$n12nR@9$dWG|1yQ#<3y1&pAo`mXwf2B$>ol}yk zB-+dB@kIf1n}G+&T)g^w?`{;L#r4(^7U-5;RQ`ZjWh`_w??TKJKRB z^;g0C;OQ2&$>&XhYhH*<37moy@e$U_ar*T(u^Yg+^9jrPATH9G4SGf|vx0W`3^)0n znHbIyY6tEJ?=@T4M-Omp5X>YTOE+4X)C~J{?63CgLQTgG@dY(wKAggI7Kw}J#T*)s z)oXTQ(^P9>_&oUGiZX)5 z0|S2p+&QewP7qx&epk^W&&A>>4*+}3&5+Fi(E|}!lz|g?}3Jn7w$^L<114l;# zKLZa)<^%Hwuna4ZWLgk_6t)E{e+me;8W)7YiflL!GRJ^quaFH$3ERLtq{V@lpM{x$fw8Nt@-vX5J5g1y9!Tq%m$CpU z#*!evU>=P229i%%xCCp%0#3LbMu*LA}-GCF7GY^z)W6U|v z#MZ~o)59p>ZEi5dCeff#Z`UhE>BGiij2!K69T^UHv#j9M@t2S&Ym8*L+agi5taG9h P&@~L6u6{1-oD!M<3Ohq5 delta 186 zcmZo*y2q&68Q|y6%O%Cdz`(%k>ERLtq(y+3kA<0mfpOJa!B8N_V4|vCJr55LkohX| z^gJNNSQ6wH%;50sMjDV41a zjE(IZYtA2sZ|y7-X0>tia79dA#AMd1%45yra7#ksr_2mHql)I%)shy{5`CMRX3UoS f!6K2yV!*(lpUz+YE%}}Z$Z`fxS3j3^P6po~%ojYsCNQls zUyF>O4GCkY+>4I(*?}+tgCa}me`^z0;M|`(GLQGUA3Q2QRs{IKw%Ux&%+z-{zy`^& zQf4B^?N8}5M#Ck}9|=t3ql8-JGzLrRDZa(OtK{LW`f`(Sun;}Oyp_g%UrS$8Zi^ry) zAjobdJGijE92LFe(?iUQgLfBwkK~J13ob^{PTX9(1CADgF5)t2%x_n7-H%sys?h3w j=hlBm`T17-O+EovKZ{Cn57I6>00000NkvXXu0mjfp1;Cp diff --git a/docs/html/img13.png b/docs/html/img13.png index 7ba461792811b85eeceb699f90bcac909d84494a..79d7aaece74a5c7ef274066e7ea4a32945c213ef 100644 GIT binary patch delta 434 zcmV;j0Zsnj1o8tRiBL{Q4GJ0x0000DNk~Le0000<0000d1Oos70mh_AQ;{J|e{e}e zK~y-6`|sr42|Z?;%*8{Q7Pmd6V$dWqaNCLf zwR-L0Vi%r&BC!~s8HCH2GcnJss2*HkH6};mrSha|WYAr$4yn_UYL#W*w;AApX5XT! zMdzGsYV_gGCRN{w$E1%~lhM*bU%U47Q7s8edey}ijk2kV?9pE%+x*{(e{_rEVxcR* z)YQ8Olk0D=?`y%OCR}1~0*895C%k==nxAL^fsIP7iJBd@?z)OrMBjzwaL000002uVdwM6N<$f=$%S6#xJL delta 543 zcmV+)0^t4f1K$K8iBL{Q4GJ0x0000DNk~Le0001M0000d1Oos70gViszL6nJf89w$ zK~zYI?NvKZ0znWSj`LVJ;3z4vfW*dJ?2OHsm`Jn`8*5DLjM1O4YIB7~>?n*OR+dL$ zMMEjExx~uS#2;`Hf+Q9=`#2uq4jPr1_$52@?d;CZ%rbib__$4@@No1^00+Y0G=Va` z7P^BYF160YyWm{8EC!wKJQWq6e<(N%&T0$NM9NIEB2@4NpZ+$;+YY_=Czpk8lJYyP zQIjQfh^bj(O^(o$jL~P{ccxzp_I>obV9SO8_z0)}SI=#!)Rx5H8it)Gz=oe;>$AIj$_j z0zZ|qxLHS&25JobHlQX*%&~33$VB#$K~a-yNz9U*aTZ+qUq*Pl%;QmpA#SeD*pY2j zU+kLPjopLqEsx(GV{DT_fnZsue8O5xhgZebWb@%t;t5m}(vTi=(;ZmqV51J*$VtLX zo(qH8j?f0|Vh>fX+0-sd| z*h2j*P8mc~vEr5~-ISZg4Y8zTgFYkV`sma+1c6Kon2sz9Zn*q=A8fn zix75~R)W8hhfQ&;jAHKs^e8{_INvfU7DRFtpA z%Kr8!FKOq1DBK`@z(kn|jLD$OSZyE+4n92%mDLD%q7_wQ1$yzmyW{t2gv=)a9}nqE!;6vs23DPf zIicqlTh@JvH@m{6=i%r;dZ~fJdm`+&BYSv(RJJsF*%EKoXa9r^D`>k`=~Am9=bLrx zk!br^e@FeH8IWYdpDJDp8@BeL_hoWT)h4_I^5xlNIzw&B@Zf1G%;I@}Ug$Kg8fqyr m9kyP%KI}j42}^GN68r;9V%9SAXU-h}0000Ao0+}Y1q@gMVxD9Q5Ua+QL@f3c z_!Ge6S9CDwy@mJeqTmPF5Y?{)fA@!?CtEspfwZ*qWXQ7TlLbXmS_!>qBg`*cuQ3fC zDd`8GB6=oJvS@K#P5pulSEA5r8b(^G9ImfPs}n4-U^LpMN70jp$LN0sJRdQfh;Bpo z4m|M2lw&4jNnP8GD?=!z^v>G#nzpM9BZhEUwVYih#d2uJiwT^0p+M0Mf3~{;ks4bL zb1}4G8G<_;;r4U1e1$&6o$x>UP$s#?To2LdFG^g-5&!r$X3t}YeP6KkUSc99z&bLM zAbpXhX?q277&vHlEu5k&i{`<_DV^g=rLq%5kT-J!mM7apSexElONF(zzHx3-sw)S3 zwp1M}G(m^M!RHtCOYEm+UfL*stdh0Iv1fPtyxTxjxA8jKud%m0whAQgJ1#E=f1zVV z_1VY05j4%EE{EwON!6e9OA%nY+25a-jEfk`#SnMyXNmstyLbnG&QYzZyYrX;0000< KMNUMnLSTY|!|Uh( diff --git a/docs/html/img15.png b/docs/html/img15.png index b079abaa13df77f0888bff98951734d44add2570..e06d83a668038182fd6da7f10e605cbcdf1e32c5 100644 GIT binary patch delta 524 zcmV+n0`vX#0?Py;iBL{Q4GJ0x0000DNk~Le0001C0000f1Oos70iYym2azF5e*wu! zL_t(YiS1OsOT$1E{+gueX&SGBgWyt}bPzf@IJH_(T-wn^I7FNjJ35|=1O$I9E+Q1c z&7mOH!Nt|B_!sm~h|r;2{>xxrNFWvz=GEtf1K91pz)COxO*>k8uRm|K%?Q3FXsqJ9Jf_ge5mgT zgsSR%g#7oV$KxVmPmT;fJ3-kzw}Uh`0Dr)6_=V6a!diDD!5o9@p;>aoF&(klk0k!f zSV<#_P#@0d=PwS>4Si?T{-nGK3A7jrHl6yp2~5Ffa0i4{E@v8KP#JTZe{SuP>_b7f zCwBGbP4J8qLoK1|NE3}?UCV?jITV7euollyYViR3QKA#EV;@DP5&!ryj@rq7Rt#r* z`!jQuvXk+o4gGWRu%#ViZn+a%c&#|2jysM8&-3IUf;!k@k2)FNGdjXJRloB&aNi2* zrn?o_U>&pCqq@VUH{AXtVi;=0S*MjPB%I5ypl`>0s-f0a1@lG1xvW0$N^KoKqg5&Q-X3{60q9g99V*Z{=5X$LO=DeeLm z28IR(el{kE6gPyzW-TEw0ZMZ*d|>70g>v{AJ_x{7@Plne0)k{%Lo8@R<|F{|2VjW) z;F*xi4dpOw;9wA76o7G992~eBe?UrroQ8xHWW5atjtj#ARBIZLITvus40-^KJ*HfA ziMjv?%@3s-7&w68)yOc7;R8oUM@JJ(f_npl<`+=9yU5;vqJ!fCv&$E744?sy4~`5! z*s!>T1sDe>4S24lC&;+GZFQ7?i z7eE;hk8^HdVEDnnpvu4%@PVlV2w)N%9~ih!Gq4yi@Ub?a=wSK8*sz-+5YtMQFKP_^ zSQF}R1BQGDAblBKVj}~C2R>gIp}QUicvbOf8>#>RnRzT3m1udF000002uVdwM6N<$ Ef&~I_rvLx| delta 230 zcmVF@eu=qBA6Y=z%N*UY-Gj(1e>D) g!RBeCnyXO&0Q15aSf0``wEzGB07*qoM6N<$f-3S)M*si- diff --git a/docs/html/img17.png b/docs/html/img17.png index 87b6bd9e6b32c6e86bb6ef35b38465981062792e..382db64b325dce20bd0f3bd8e8fa679200deaa07 100644 GIT binary patch delta 228 zcmVHz>S7a9~!NR%Z20000#tRI*4lF=r%zPjrE^O*Bzyu)X zX8ORu&kM5B;R8gJlVJfu$u^=4!VTJBj07P5z`?-C4PtEIbSPjH05Td(92mG7Knww> zN)Mo`6hI6E2n7aA4lq^_h3+92ZA<_=qyL6N&d&t4vkeS&0U!bH1q>V?7#IT>rZIp6 zk9z|{$rlC_28N654In{73*Y6d-(-FANO3u-I0y0hKQ+fXY7+ dK)H`d1^|-eCW~YgM!Wz3002ovPDHLkV1j`YTJrz^ diff --git a/docs/html/img18.png b/docs/html/img18.png index c5de69c16afc031384c15b557d4cb770ac84ca14..162a577b5bd3d91a827b396cc489da7fa56f11b3 100644 GIT binary patch delta 276 zcmV+v0qg$M1l0l|iBL{Q4GJ0x0000DNk~Le0000V0000d1Oos70dlUsT#+G5e*n`- zL_t(2kz-&00!{{I1_a<|U|>Vy8Za<$2TTAmkk!D!0tRjdg$oS)4GaPd{4Bg6Azp0i zFn|KsrUT4i<@^c_5K(Rh2ZRzPq71?fx)F|KV3@$rz{(8t3qu3f1_yqSsFT130XC4m zE(zaYwts;5l98bS)umu?l|uKBY7d$qRPPH1k3S7e>zf#~3%~*#4;WZ}0KLS(74QKp z!2W?DWj84L_*fgj0xVzH1$r40kj(m0z|b!Oq!nQTKm+^@uvnUL08N0S0Zo9Xkv#8E a1polenF27afGUIiBE8@dpKQajJ_b zE)hWomx{P6PHrxaLJ$#0UoMFWL0d({#c#O#-piNwlY18+1=mh{(s0mCYY{F4?cGh3 zrd&OS2Ji$;bD&p1h8Sp-qXlv}e+v@WuoX{3R{CI_>93Hni#lL4E7FhsFke$F$CS;y z(|gVxNp#Lj2efb7tHQTM*%UB*wz-ncJ5>AD{RLSTybR=n4A)aN_x@)6e}lxB<=mK? zTQN5x;vg|+!fd+^*lmID0$O|auI?W{_pYIkR2N3S|7sO=3TCk~&7A7%e`||6eOQgb z7C?cO$;HoI(tG5M!fR@k#wH^(HK>NL&ddR>Xba-Ur!3L&NsFgV+W$u@jEnE-*FXMo z86SFq9pw5d6hO{xEK+`qBD@p z3MgFzp<%jEjtlm@&-=n+Yt@Pe^`sw{Q>fGIIVBtWxD2lTNNuAL<%-DUyjK*G4T^L} zhrn||_oU>?6V%siSVve7+vAQU=F*W9$gLsSZ%eS7uc%_=m%gX}$DiO0 XS<+g0!tU4E00000NkvXXu0mjf2$24M diff --git a/docs/html/img19.png b/docs/html/img19.png index cbd8a69dc849120b271149aef0777377bb71a564..9bca7435c1f8fc0df1845dedcd04a3d8b4d5352d 100644 GIT binary patch delta 559 zcmV+~0?_@61MUPNiBL{Q4GJ0x0000DNk~Le000180000j1Oos70ZDpFr;#B{f9y#_ zK~zYI?Nl*q+dvq7l5FWD%aX{D;1G(ZETP~Mldc*+( zUOugve-Lttv(#>k7frxONSmH+%u9{ta>V@0g@uo_31&4~UfK&y`cMieU7m{1;$0eLi5AWy54=dTo?yt_VizPo5l8z2)J0n3i-T?<-sng16 z+l&n_x;EzeeV2AuUFX=_f13ASM3R#Rl#Vov{@5Hw+bZ*rFU5BzqeSORVxp4%tt;p{&-x!jCaW`oPfi*e+L5sGDkImZ@+dhDu^&28uEl-i x<8|yL>bDr|H=7T`eE&H8GyV>8?tvTxw^H@9Z5=#@MgRZ+07*qo1w^hwV1m>a0!;t_ delta 329 zcmV-P0k;0`1d0P8iBL{Q4GJ0x0000DNk~Le0000u0000Y1Oos70gvK0Mv);*e+WrL zK~yM_V_<-S1O^6f82kVK{~sW%1_5sa1_l8P39bePqCg^0Ip+Zd27Vx$IbZ_=KUg1E z0X{wdAponK)OH3AZsz6>4;UDDxEOeVB5d^>U>QaO1}308x!5@H8csF9k&y;xS8rfo zn843y2xK-ifP;~xfyIg^fPo_bf1-e~0TOHn3?Tf517PYw09di$h6e)3M$sAkM**bk zSHl_L4ZNEf_6kJYny~;$kog$Ivlbj57&t$%Enu4fs1AYc@0+W01Cs+GiBL{Q4GJ0x0000DNk~Le0000v0000Y1Oos70bn3pc#$DYe-TMU zK~yM_V_<-S1_lOh82djEKv)3=T?PyY02KcKW^hbkAQ}j6U|`^Uz`(!{WHUD`VBiNE z!MOpSp8pVlU6OM*0~lOei!$y|0Mi@>KNy&PG9O?Ar!2;V56n-1bOuaW!|#q( z0d4~xu1)%iGup0V!Z07*qoM6N<$f1ybumI11BRP6EV#I*}({eeL#0Hus1Ng zcIYo)W?3MaDjmtsDQbF zmk%5wj0`3o3=AwFBRiVdIKV;;Ad-9c1_rl=4-5=!U~K`+5W59HLSU=XK?E}}?6Amv)gr$`cvGbT%Bd;v4Vg5jcEe+m3xT736z z2VfK`a5ga1CrK5^!Q>+*us-4yr~omw1t3Bk93L1sCPp$GE?`&y;g0000V zK~y-6V_<**2N1Dg0|Ozz4JWXI0tN>D3mgm#Y#>em0|x__01lP^VF0@{Gl(#NSR}yE zo}9qIz&?Rtw?GF23j+feNUY%kNREx5i*eZd0f#&bQW!7?fPX3B3lMG_KgS9%!=K-S z0q8d%;BMvSF@VVO0bK~B7=;^vauAJDq&jW@05gQ*Xg~;YLHx@FNGJnrDSuFyLtrb+Y9&%t_tVF5%66!BoY#Q7U`Lzr0*ipKz$4@<$ah{A-wpdZ3$gLs`!z!WC6 z7(#IvWHZzYJD_>70-C!aZpIE|ampaTi2%ZCMgcB>kqs~b01G#Xt^q*v8vp4ke1?~kio$D!C*tP fYQ%EpQbvZ-B=%KWHa{-{O=IwM^>bP0l+XkKWJ5NT diff --git a/docs/html/img22.png b/docs/html/img22.png index f1a95ef7cfb8b39bc6099fb9c489a0592750c748..dfd9e9188ca31d7f958b4135cceb8a8ebb67da4b 100644 GIT binary patch delta 185 zcmdnRbcIp1Gr-TCmrII^fq{Y7)59eQNb>=)5DPN{1LM2WLsNhpt%<6t^(rbVJUl!= z-s=fdR{$x-k|4ie28U-i(tw-@PZ!4!j+w~`3{ATobQshmB}60?8mgI?l>?qJO_4sy ztTMw=VncJA0vp>lh6Pn^yi5*{92i6Xyo=qz7{QQyi1nGW!mPy&3mH`ooIb#{ZC-9A gFVdQ&MBb@0Nc7XqW}N^ delta 287 zcmcb@xQj`(Gr-TCmrII^fq{Y7)59eQNJ|2-Itw!c17rP$bJ9SL!9-QndIJLk6%`c; z2?-t^9-!E($kX$H6k|z{UoeBivm0qZ&JIr(#}JK)$q5Mw50V{NIeGqY@UaVQZ{T2K zW#c(;?7)G&j2`+7vlu6p9SCX4G7zYFkR-wo^oB?NK+<16S%b_l9Ww#8H_``0)H^aB z2<>Aqn)RD`!lUGp4-8!&3yqp$j~)wR_@aK9t8H;WZID2gv}M^O28)GTj^FNE=f?JJ zxq#ef@df8Cg%>s6VV19XK$ZmY9RlV8K6A-17h`Ll$+ i(&vh(m5YKUf(z!v`?8 z&tV6uJgIyqPL`#_gC;1Q z`Kx251A}$})X_i({@@CL1OWqoL<0j?0v~GwgxBBEdjO&T2Lsa=1_mJrhy4Qs#}_tK o3(OB7^Eeuic|5HYyPp^U0GKx)wxNWUS^xk507*qoM6N<$g6VTnrT_o{ delta 272 zcmV+r0q_2>0@4B@iBL{Q4GJ0x0000DNk~Le0000W0000O1Oos70UmnNk&z)xf6z%p zK~xx(V_;xlVB}`tV*r8q3=A9$Q1Bs!0TmQ5a3+9gPWA;L%76hI5Cvj|hB9#hFz<^4 z149ImZg6M^^Z!EuR;?hQ0AtJrx~h2wP&+3B0~;s9rv(o{q8$v46F~N|b?^hp03hZ7 zF*Y(VF!S=E8AZ@8FktddKoi*tW@D%ofT=0mAd+1{b|T{&#-0^j3}L}w@n(((47?Zk z7&2k%IXHfFBr&uxoCtvMS=u;0_(RMvYXFgq3LFdg!7K(Yh#HG&3~Vn2aJ%k58UO%7 Wi9?a6d|+<+ z2cTj}u=a#@h>HJEfW-J*EGr-TCmrII^fq{Y7)59eQNJ{}RKMOMh17m%~C+CTZKJ^nkT^vI=W+o>j zBs@rGU@T)}>$^LVhsVcSVnM@4F=qE>mMMor7?$zaeJCzudU=eWH(?*k;bb=s(66jP0Pgg&e IbxsLQ02=2)egFUf diff --git a/docs/html/img25.png b/docs/html/img25.png index eaa0572e3ddcfedec0de0805a526ea8ff34aaa5a..e54ceeb68bd7b2dfc5a2b5bd97bfad6dd061bd08 100644 GIT binary patch delta 247 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 a1polen zL_t(2kz-&00%itez|X+IgTyTWiX=1u8H@~Azy<~mhQqAYD}c&B e5kR?*NCp6s5QRWVcuA@p+O z!X5#|1;q(bYynXeinBx$34tupq(YXUNa=zG3baUpM0{js=DoMxweNJk3!6hHM&~#4 z=FRWT`^?(|Sb%z=H%(_Wl8qQ3e;Oj~)v$3qY{F`|AgP3xgLjMmGODkPj7Eqj;B!y* zdWglGWI2%PAJjm!0D78T$%*_uBUMb5d(@(63#!a$Q`7X8@h6v0S&0x#r@g(#5^7u~ zX>n+$1ohm|9YSAAq~s=m|FX77eIgv5ALZ;#%#Ku}RfiD|iD=H@xC1tTf5mc3MR?3% zGU$|Q-x(|H({j9~=m9QnDw$L*C!bHjRS+_cvuzu2+k#KF{J^G#!#`0AED$kj)@}?E z8ovf-3qJp#CWO@2rh8yDnWIdy4zB(x-aF!bqoiDcd{U3&U_g;Fh)U=i!PdAo(WK&y zRPZBB+G9oxZH=4o<91)uf62^Q$R4L(zPLYKHUHR?)`yC{=_I#bpJD(1wg8-$HLjXy7iU;{U479Y0*@BYUg zmdq1ux$mK!IButKaVz9orw8kKR{`A%SOwC+>RVI^upAGqJ|XlJe?ZE`*R@v*0qXc9 z72g3>aqwsw2@eX02vvnOEGX@8Iz&8D1~4<7ewLj0L#5k{QZyhg8>JpAVH}=OYM;Xj zsg%-yT~+9Q68MnGEBT~k!V~<4NQ{!Mu>j}bOr&)<$y^RkD?}NnC`3>h>y>h$letoP z7_cNKibR@Gc17Ykf43R0i|b~gcrby3!OlVU-Vs1+f02I&gvjmqrIiljseyA6@-UkJ z!%;!?i|spc@(>(-X-&Mr{$dXb&Ok(s&GP*mEAaIU^8EN)YR|`U9Oby(Tf5n? zKN#-9ox6a8>@)fEJo`Eu2)$vUw7-~F%&1Bs!ae-J&TpE)e^-TVUPz}_#&(4G1b?@@ zuDOq{jN#IvpBK*PC?;s()4lw-xrA-tZ>CS3RlgZ)g0~U7Pw+u zu-%ObbSKMPe-m$W=Po?oR^3wyHMkpzw7^x)X2MiJu2#Yzg1x~^h*D7>!s8)WZOB%D zksohiRvv-kS5HnDU{Y#!7LAE|@dM5l`&fxYI zrTEo3H*RhNZWw~5DzZoomnyL%VIEj`);$UEgDv5$IVrOV;Fa9@x!nUh%0$fhX}kxs z^D~3n%lup9rorXD)cl(nlOm6!Ae__VK6164#r7I8ToEEnCz|%1rY*90#H~#<*U={nNrn+dMvpw3CPUt=Y%8 zUafWXnj95Igmg;gHC2khm9c}7$f`0xWm=Rep_32NVHD(2+!ok@yb##!obxhGlEJAn z$)<@tDJAmme$vSzJlrYH2To>z*vKDmKPfnSaIPQ;F3_ijsU;Y2e;*?rMO8B3J}5o^ zB2`_^dPU;`5`{SfPRk>k@=<0^Z(b3x?wtVN#3c>d?)rzBmxoXVimXPv|O9v8KSANf}nFXu$z!UI{J@0K1j z?oNzfD?vngYh}B1vXz;~FrGrpt9&^vv{uDP7wXO8ZM4&V8I3 z&*RmS9K(#LT!M!jb2{i4GKx>^OegukVGICSZAjyX5Bx9>DjIu|;eZNfXa`(1VM zSv}Y+G9$dDe+-@t;?mr-z=_ne;JNScSL<0XE0y}Ptdn9^E0D8U=J{1(Mmz`i80^8L z5olLac{ZkNl^udv0paOal0EcF1m)9TG0O^vuVeUws2k)AhmY9<5A-my=Uag9%l7z@ z*dX3;(w>|dVCODu*}Df#fTy29Cwyw&X&PNa;reX;sZdufPoz>?SQES86mB-$nb!Vfr05U#}}wRDG0TV96Lz> zoNyK+&`pw0VLbCM3|tBPP!5~GKQ{(mfeI+EfZ+u~zc>TKZlJp%9OeWDhJG{)*t?N= jj2Dr4JgpSCoOl2Lh6)}d)iBL{Q4GJ0x0000DNk~Le0000-0000d1Oos70oZML;E^Fqe*s2G zL_t(Ijpb84OT$nUJ^3(wY16(8P6eTZYcUA!?-yw3FUTlPjt+uX1bHsnK^#>OiepB{ zjE;8qM`SFx_+HW!`VuQj7xBO&_nv!h&VAejsNkr>=m?E)g|52IMN)M@5|8Ku=roJI zKvuc$z5zUUC9rK5juJxf5b$(nfB)#E-{8^6Q|F*t1TDW;QJcy$On`RWFPVMnM{q8U z*6#5-2m389>QrLnIS))KkE zQgtm}06#0@(ZXO@A8W09{G%AJta=a6SGTb4f0YIY1mA@mjNSNix5PP>CFi{0+#B$11tJ_;T}%XCDEChN+dd(;%UKdh4tZ` mQ-gSIx~y#AYG~~Ir}zX~G&_9LrB5aR0000wF$ diff --git a/docs/html/img3.png b/docs/html/img3.png index 85a1f23073fb3dac9c0fc0b54bec14f3bb0f23b2..1959a993df27a51b7706820294abede5382bc59c 100644 GIT binary patch delta 690 zcmV;j0!{s_1@HwSiBL{Q4GJ0x0000DNk~Le000240000V1Oos70sFJtn~@<*e{M-c zK~zYI?N!ff6G0UIl1$>}$7b>$G@h$96r`XB_n;^gZ17lAa?8Mn8Gq<4V}4p=#GfBFDRh=2{Ej;uZERbccx&2=-e#8oncp!Fq+HO?dj zHih`W6P(;MUs=r>>#avaunp9^9Z4VIXdSKD9Cz=Nl`d9Gd`s8pr_WvHQ{=Jp zRIQx~$NX$!+E#2qbrcuLcmOj%#S9R6Gs#s^MT*BMhm=Pa-|ISx%e3!sf8EzV&qwd4 z3H}C6V6{S&xKP^NE=goEV}qKT9!FFz_u}?}^n{icB;V~Bb&XpwWElcVxtMdwDZxS=@{6J(H{~5^t$icQ z#?y?nqjg;t7fea-E^K6Uf7=ndT>shJXmnlOk;jtM)3kyeZ{mSS{1}!w!36&S%pGWM z42p*y_H}<89A7Iub8@b(_I=sa4a(Yb3+LN;IQ5lZI455tD(N4ImEU4}*U5YPlv_$^ z>vGPqR9tW0XdqDd^28(Xbe)D@>F#36yRT-(vM~!cf!_$?6K2S_e-AuHxWeknQgGeM z<|U+EYazo8o(7hd76zsaWI%1jlnsd~E264ggitrQ^PN-Mu}Inlsqjhn-rc=-?|b*|2atz)^Xh=> zi?BmXg2_d914Gn-MZlT3;sg)4fB1k1eVF-m${*MLDk7ea&t@A=9asNFiex~mgtvCGQj6l7cA3x3xsFN8~?Q2`) zfIQ!M2CQ9rhlMX;Bu$ljfB6r)nkRdbq_is@QJW6Y7&NiQrdC<&>+<))9rXv3YRD0= zUc&GdzS+X9!(2UCUG(ioLp$tu;MrZ!IX^8H4=CdBo)Ja5CcG`ls`UuJ~;$00000NkvXX Hu0mjfXNDz> diff --git a/docs/html/img30.png b/docs/html/img30.png index 7740ad802af848a946ce2ccd9c972a35139e80d2..5a2639532d937573a1f3688bda5029f17dc480f7 100644 GIT binary patch delta 382 zcmV-^0fGLP1HS_yiBL{Q4GJ0x0000DNk~Le0000-0000d1Oos70oZML;E^Fre?3V= zK~y-6V_<**W+3Kh;AOxLHh^StNER?KurV-nG;j+v{D+BMz+nzHb3uTM5vYUz0Yira zLkJ6yuK;3!C7EE3qZ*ii#&==Z5Ahj0+=n0dfkXjNAyNMi=_P#V7!x85vA~e{tK<(EwECz}4UYj7!D_SctPE1TZj2fRzV8RdF*M zU@+k401BnUyx-rD0Zao8VD?qG1x%RE;te3hU&9liCqGoc)cc}ig#bex{($0dVBq*L zjo|}aAYuaRBXmXm3=B2`7ug#aIwo)&0P@*H4=_w*P()Sqr=u?cM02nnRA5*DV(=IM zV;>c8d}3gGzyQ+8W55h{7@vSTL&gCVMSK$&_&2CPBux=o(aiz@G@T4QjaU?6)rk(U c>Kvf}00rSZ(8VYLv;Y7A07*qoM6N<$f^S5R(f|Me delta 342 zcmV-c0jd7K1D69KiBL{Q4GJ0x0000DNk~Le0001C0000X1Oos70Ze!3YLOvKe-%kY zK~y-6V_<-R4j|58zySZj-~)`C&;Vrm0~t&hYQRi>xF8opM+20{ifJrPzyZV!Fb+RM zhXaHK7J_khA{m%KywU%W05R%6V2H3_%E&PZYyeW75FW=5)&>p+9w6jnVCF-3WKaSg z2&LtKO98qBqW}X(M@IvSgci2}e^BBArVbWL}mveh(Ew(Dl*G_sr2r|Y+8~&D5wNUjV7SV_&!T|UI0gpvEPTj;OC21D oqjDJw20(BxPaxJ{m=jU`f(Lv+7hu7ZkY@q8YzBnG@q?p)hXDln7#R5wz8GwP144P@ zl4rpX5Mbcw=x9KZ;N%xzU|_s}f2l)}AH*xg)G>jbM*$wUT1|XFcW?l??Fz{kZPJm82NJaU>^j)F4Uv53WI-faD~yxN|IE3PGGA!JQ&VJmwM% zvIy{?kPAWJVB75%-3BV^;ECFfd$PO_Q^QG;$2uQtFGOU?$~2nZRj1$U*? zsf$&GS5UX0?2{vmO%xMN#P!}|e>H+GKdrz}C6jYCc*p@VM;7F61->}vh5jOnKMl5| zXzlBg=O;A=N&Z|-vm#VmqMOEy3SDIsZB6KKz_(2kj3Z_k2)>J}eyQT!32dO74 zp_s4q85obzOHY#ZFxfw3InqWx{#@Ii#8DF`L)^pNpn>C%;~e~VKVrV&Z=Ns=C)lR5 zO0pB!EalqBNbah&G&3XdV62rL`#b0`UA{G&zz5>-T6Jw-_bcgc^AROI;3i=k&cIp5 z-uL8B8ne#I_2lN7!7smVh1ot-9PgZh+sBIeAI!m+za1mXM z=vsBFW5?oR{)GGq9Sb^K2j!rHodmani=&f^OTeY0ow^DlIJQuny~{PtPw<9r`i8rA z?|Zy2`7Q)VgQEaVU#=8j*$Q2=eJYBae>I;3ca>Br%F4ouX%N%#(O87JGQ+)Kf-a=m zfho5)om>t0Ifcv(Cnr9Ne#ds1sFUgVV_=90P`~W8lxW?Uij>_AJ=^9$g95Qy;KN~l zu%*sCFM6ztlUhwwIcFHyp^=M=KOp5*aH}N8W#D}ab5#~jLpse5x&+S7Jy$vHe_%Dk zJ-N)H9;QgjWnQiFcsN2FnL-L)P$03v${HQpPDBtgFPiGF&%f$Rhc7 oGo}%%U+0VyFXjd1f9T@}?b1HM5Z);!`~Uy|07*qoM6N<$f->>N`v3p{ delta 205 zcmaFB{E<<$Gr-TCmrII^fq{Y7)59eQNQ(opJPR`e17l}Ebq0{5J5g1y9!Tq%m$CpU z#*!evUhAZotSF4{$`%1X@Byc>kU`X8DDVwnKz=Z<~IG&x9 z{J>(s>M->s=MT;f;}jVO`Aa7+HXM1Fxn$d6h9B$#hqt>V6auYh@O1TaS?83{1OU_) BL#_Y- diff --git a/docs/html/img33.png b/docs/html/img33.png index 6fd25564358356159a906f78ba865f7c5a04c6a0..ed2b2ad09607450b1188df88db6b962a22ed1f49 100644 GIT binary patch delta 182 zcmey&`khg+Gr-TCmrII^fq{Y7)59eQNQ(inJPR`e17q4Gfv|~+-t`Qno-U3d5>t~C z8X9;5ZZ$G;ZZJq-`gh$Rj7cogBH?+$W9Fbck&Hn0M!uV!pZ|`<<@d6g2=391t-}~mhd2eQb3fi*Z2^Cp& zY90)%$SUCIoJX9HDsl@Di5{>*e~;tGXfp2rCVhnZIT;tArrlAr1zhNVPkNFo|%bpuvmHS=WE=2R4>{s}w)KJd*=+3Z1XRZ^R?PZT@uv`D}vb6t#W z?WTmyC-N?eMze@^oJ4y-^J$p(!$J?QgU^Z(`1IaLXI48QG$SFVHvOKDe}6yt2u!@F zj%Hwo-L03h8AE1z&ua3j5CzKVv>TEHRk z2{z!?{Ksh5_i@LRT1J|9`5c?FHjO}M#T9PI6PRUj&XhtO$(zJ}G;27ef0MJMgp}hxecB3tMu^fWW6MIgdY`_kth&IzhZBvnUYcjB zbo>=8FCcO>#n8N*w4!VIps@iwITmjM+=$WeDAl$pe;449y6{-|5CeS7FTXDRoK`q; zLMnIZN!hDti4DZ9q~hFZ@^|#R37n|INO+Cxj?2otzQab<>ysUxe92^U7K*)wN$HI)ZrsT$&Pmf}n`HlgU---EK+#YQ>=m^wl#wE(9cz48MYW{u^b@FCl)7T)XaObpO3;+NC07*qoM6N<$g7;BI;{X5v diff --git a/docs/html/img34.png b/docs/html/img34.png index 00fe6e51919ee5b58e42d8e5b0c3c7b3c6ac6e0d..e0e832576c376fba5d8305e6e468894c6f561b30 100644 GIT binary patch delta 696 zcmV;p0!RJX0rdqTiBL{Q4GJ0x0000DNk~Le0001y0000d1Oos70g7UW?vWu&e*$w! zL_t(YiS1QEYt%p#{*p~Hlk8@bA}AKo^%vMfZypSI=}8w)r6BCF#~ce@QbZh9q?WJ-vWs}K{b2Imym{}-n>Q~LU>ZIwC3!@T zEWuK+a8HVW!)_~%g@_cte3yuFe+v(yqs}Oscszt>K$n`nToTKm$D^?t(~QI?%aJp0 z#08X=l4zvR0lL{gv{f0Cy&mDyEbXG6giht3#{$~vr8w%xN>4>W+~4*m7w{J z09=S5KUM`DZ7tY(VKX#%oT=>S{r*tP(TvWm#A-#bl(uFp0@B!nW!?&r^Br z?932x{WZR*{K1|^^*(iSe}mfiYHLXE+BDm;FN5zCw0E6|LQQIZZqs=Te*m72}gd eVHY^J_yex#j?v+%4h&uZ0000z zG&8jE3$Ph8b3Ld%aNx#)2Ihhf%$=bYO9L4vuU24w%p}a##xE@)k;btg+J$Ka&r2VM zpf``CCH6J^sNs9V?@+S0p`W3njw$e2X|v2>Ms_)V&RZXH-T`f7@O1TaS?83{1OTm) BFS`H$ diff --git a/docs/html/img35.png b/docs/html/img35.png index 52fd7ba575040cf497a10a092ae5e0bfa624c515..6af9be95b7a7d98605b86956eaca2bdd0dc479aa 100644 GIT binary patch delta 149 zcmbQubc0c`Gr-TCmrII^fq{Y7)59eQL<6xr3o`=)J*Ycy;KG3h<_({iJ7-%g4P=botiXJkRhX@f*gTe~DWM4f{eLZj delta 217 zcmV;~04D#~0h&1nLTR9VOs;|q430ntEHGhUXaI_R*ucQ>07%aeXlG~#JCKP?TSx<)V6rl#GXX?* z{A>b}?BW|3zJR#w2f(s?4(uSOHZgF6)iBfx_z18qWMJTDEC6wzfCzDzd0sbw1aknb aoecnUBNw8*Q%pbr00004iBL{Q4GJ0x0000DNk~Le0001X0000h1Oos70VtkPosl6+e*#%a zL_t(YiS1P}XcR#deY3Z>JGou63nC;E!WAOvTu^M%EEq`AU8&uomED0>A~=PCOPZV{ zDI|p#19FXUu?>PC!j)HuSXi83Eh|`DA?W|Jb9?7;XRc60%scq|=l}VC{``3}2lV02 zRCC>PwB^jeG7&RfGF{IGWiBHH zY&Liyi(~scLhWBWoB5aX@F_a*TcI0YsMUr{&-;pm9bHLN2W~cYef!S)25=N_DH;j{ zh4Nfz*=>_%yB0>|2ov>2yH}jJ1gpP_2m+FoL2~fUojYjltXw6f1SZ$a2pwahE8%1@p$MB%la#=>v| zm?l<-@8nqMeV4@q?2kvE|o=E{k-lkOkRjkrdkBTvFbKtdZ58o%*t9>vN zgS?=p=9{RVOtt1TMz*W(qr#;aqWn|rL9X?RS**M@63aC|pdH7F9*TzD@{00000NkvXXu0mjf Dbx=9^ diff --git a/docs/html/img37.png b/docs/html/img37.png index e8b8da925bc41399b238c3143ee017d4b6c21fc9..ec354be6b63bfb14a8d5e1c639f625830f8eceab 100644 GIT binary patch delta 680 zcmV;Z0$2Uf0_FuFiBL{Q4GJ0x0000DNk~Le0001W0000j1Oos70Tu8GgOMRie*$Dl zL_t(YiS1QAXcR#d{`NO>w|lqS$fc44OH-U6a+L`PVtI{Xx)qyPh-YUx5Q(bHfgBY?^%E|F0O4*nns9D0U8q`flz&8?` za^b~vSh*{HAWdN7oZ_{5VIGtUQWBHtCuK~QxUs^mkw&|fOM=)-NK6>n*l`+fsekN0 zlHhIijArQT_7PBFe&>PZ(xxLC3>Dq2kONgrrgevl(HS`>G-3YvYX2She}!b8;#P!m zL{_6ru$i$8w1S*sp_$2R@IWV4;xJQusX5QdXxTV;!D@k@d_hPy$V|w}3KxYgOT<39 zrWV2#B&&ji_XX9**3eRk9D3C72WM|Uwn>_dLKBIH2rkR2)-tAg=PQcDr&Co7qj5zduna-%y`6Pd$kCgxxnRZ|7P+$d@lF0pWr{i!aw0cB)I3CLkM08)&i zNX7_(Ez#`$bH59K#P6JB_gXJ>=^A~=s^7t6| zAUuBu<{$>f851GA-3*Lh;QCpVp4B-~#|> W^*b3kTijj%0000ELBx;ErJ60`nT67}?bSD0~jE z^al>GEzBJUz=He?9|WNCytu8x1K3c_=eV)(0*J%x!2bb6b1@h;1c2=6g(%`=a9{$_ zMl7u`ebrD}5K12<%N-E#9}GTVW|7g{?v7U{M*wRBg!O`fVHYrnAcn95snx)c0egyp zuYu8pfw7|l5@fXuj9(B2JY!(_&cL7tW;1pDaA4?ZWk3OnUdTM|Fa_egL{;z~82|t$ WraD>q8Ux(`0000+0|QVk y6I9zL29_VJ0w@-+cO&x{FCz1JTB+g(LI41hL>>0Zwh8Y50000*mKThRq57cSxlWd)#DgX% zo%yR{rUQd^0o2hz2mas+fCK>pMSlYWR{|ev1BBP#(R%=){|5up7X}6)2#5Ux1IHIO pR13@xAoDmHka;|<6uX}o005XbAGV={mRbM+002ovPDHLkV1l+rQD*=E delta 466 zcmV;@0WJQp0+9qEiBL{Q4GJ0x0000DNk~Le0000&0000d1Oos70X{^tq>&*@e*uq4 zL_t(Ijoni{OT$1Iev+o?C234>auKsQxOFHvdV_;bM*o1BoJ2A>ILQ^P6a*~}&iM(M z6m-x@TtvmipWt{y@dFp{a%m$;(aoU`+yF)m6-RWNj(h4A1~12E8me^;9VQ+{o+^uIm*hQ6)#y3EbdIXo8>+@>*HnK$K9 z>m&8M%Fsfh@(K|YZqB7EdHBKoBdQaL@|}f3a01PV2z2Tp&I(E`8f$(-=r{9Wur`Iw zM5X;D6EjRQe&#m8h36}0E272#vOjK1wV|a7u7TM_Y@Lc$W`_~Ak1fK;ViBL{Q4GJ0x0000DNk~Le0001q0000c1Oos70d+@}SCJu0e*zsz zL_t(YiS1QAY|}s#{;qcY(;T%WRLN2ncVR-vVqy%iFh*iw^ng&s(iC-ILarJjvlJI~ zU_rVu5=*2^C_?H|1{S=q&?O^?#i}}VD|fy#iCveZEDYh3{NBCy?(Y5Foq;mUUCIQ1 znEHLpf+GkUVhjry0O8CP6TA@Qe+(%Ou^CO&8bJQI?!1a@K7Rr75F2O$ugAB4>r+8G z`Opxg?WH>0LM36%=i&-M&$}>H+|Q{ig{L0R*+yGRL=`}X-N_l&1C9Gjg*g&!%C5VFe~~Sr3qxs3 z@I2vcMYiDq?z1CXU#5ArBRM70-AF^=NXc_18=FNlGlz%+p-dK?ObMX6oHQu>d&&`M zu3mDrzS1JxTI31ZMbe9o3wQaiFZVyh*3@{XYP@mDwYMry?UQLikEW&Q+7KVzN8jEu zH1BrdeU4dSdVE^i#3-#pe@_tYlYHs!aF6zh!HfjtfInnoBT>`V_^*Q_7U=Q;^?_G- zm%n{{cvBb;iaq1AcpIxO-N8PLwiVKsD&&5ATyoB@(h9@TlnDGBjYgs#v6ngJP!)J7 z_o}ftt>v_}aY*8Uisg-(>{|m`v&+)n5Z0G&r7l{3_d{SsFq2AMH@q0ekDxA?3s61c vx!=kD46HOe*vmV zL_t(IjqOxDOT$1Ie$vDwR${tZDrBr%hYH2TjBa*y3yva~!5@&Jlv5D%6FRuL6sMv~ z!O1~ztXpTN8;aCP-@AO-HbGGl2OqfH`|;d+Z=SmZNMWN66DYGO3PE`_nsT5fg=AXe ziDrRl(2CNp@#3y2ytU2^O*U`Q&Nouq6~=?aoT(u&kW!rze^`|t$6+I5rqe+|-atWQtd zqJE0#@_Ct=-~S&&!GZnC-W!aqIqw5XSUMj$hcBLf9|-@3FhDC#-qGV^ra%o?>A~bs zqJt<8h4#u&I=db{_GkDP#P8#Hf@b7zyG!Co_N4Q)*dSd8lk0faDv^JQs+er)jA$G+ z=J`5rW9mh&IuVyH;nzH<$94KLGZf4O| j5&a)uN5OYg^gnz9X3nv%Rvi=?00000NkvXXu0mjfvaa4| diff --git a/docs/html/img40.png b/docs/html/img40.png index 649cfeadc227f6e20836ee6c58e0df6766765de8..7b6a5f09ae00b3eec1f464237c32f9f68db15d4c 100644 GIT binary patch delta 459 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 diff --git a/docs/html/img43.png b/docs/html/img43.png index 231a7d42c0c8e90ec2341b8925fff198f6efc4f9..4db9bd8c999b2e66b4e61deb55529cb0afdabb4c 100644 GIT binary patch delta 231 zcmV_UE4E!K=!UwQ8n9WcC7Uux5 zXF|f7y)TEh6WY}1$ZGZ>`h=N*DfLf#|Kn?$`=%_D8mmRnb}dA z0Oqo+=(x?mc#MI83nE>}z|hCQE?WRq%+$A;f#ZA&FVG7G$c999G}6H3ga80`3>n)| SWMt$30000T0ziBL{Q4GJ0x0000DNk~Le0000W0000W1Oos70rpc@QIR1`f51sZ zK~yM_V_-l9+(4WFVsQ9#0Lcmt7BmG6d>#uJ82CYI_!%K03Fu0Y6f=C_05kX*8xnXJ zE&v$}&I}(I1aND?4{mTA&{qI48dw@2A_XiPAP#UTxWFLJ7{I{5!te!T6VMMpn;f8y zWZ1w)uAL+S&J7FAF6mFry(Mg+Yv20p$J$h65lG7ls844opz3 z3z*5al@!3=z`z0YUn5+Adjo^!R2K$zgbI!e%r0L*fy_3eJq#@H!I9wyFf3(&Vhcb5 zEI$|+P68w4I!p`m1O|phK>8{JvOz$=x}rmXc77oM0M1(?Rt$K;n*aa+07*qoM6N<$ Ef+jRjW&i*H delta 191 zcmX@W)X1dR8Q|y6%O%Cdz`(%k>ERLtq@{pZo`so#fw5-YhZ_?Wed_ByT^vIsrY0vi zurfKsFg)M5*)V}QM!vy?MVpzqER!YSS(?QG_9glSAA|!uMG~^xF7(LDNC@{d^sus5 z9AIKIj*t*h@JlvW(B{j+m^?izoN3PSgLe;b@Ca{{e4D7SPL|o7xtS-Rim_w+oW}W< r53IW0tv;~8^+QB>3CD$FQ$-neP88;>pLy;!&}9ssu6{1-oD!MERLtq@{pZo`so#fw5-YhZ_?Wz3UkoJzX3_B&H@O z06~gF1B*r*gIgF|PJ?{MOzQ{QIo+&!S!pTs@0p|hF)(Hb_sV@!bx zkDZzIBNi;2-0H}Xq&(?$CYP0z_OgSPIa>0PC5=~l%D4rlFK_rL*zCi|?5x}&e*A!b sL;FVdQ&MBb@0GtUt6aWAK delta 520 zcmV+j0{8uc0>=a)iBL{Q4GJ0x0000DNk~Le0001G0000c1Oos70a%%MsF5K{e*wiw zL_t(IjqOxDNW(xB{;rAXwZPU_I#*pBL@K!3!ND{jn`jTTF)xTxSaq~u1iQ+z{0&l#NRwgu9QY=SSNaCL6HxX~g>2k!y>=ijRQcY@v)-rU6n z&nmKQC24qetq5cd8Y77^$&(cbjYdR3XrwZALYd^ssvSC)#@Gc8rN)H0e}d^Ff@B}^ z(r4x73P#n;O(R=(vHIbP-}n`@AiD95ZhtB2LHOyyJPfCUWB0&C%O>kO!=<@)yv4`M z{A>aPQ=5oaoV<*N`Mo%K<0@D3kB?Iqktf|+0%c-~kQ{%FRV^!7F-E4}^XGiWsX42B zj$GUPruG2)&{EXaGcvdiUh)hK+L*NX>akQRi9VdTYcMZPGSe;d^bYC^XjwdTj)TUo zMTrg1{FX2=^5t2)O$f+fFwC0000< KMNUMnLSTY|x$esV diff --git a/docs/html/img47.png b/docs/html/img47.png index 8659d7c87c9283fa07b1ff475b1de838a69f17d5..1080f85a351b29371800003c8686ff71f8d329ed 100644 GIT binary patch delta 514 zcmV+d0{#7q1;GR%iBL{Q4GJ0x0000DNk~Le0001F0000c1Oos70k>NdmXRS#e*wQq zL_t(IjqOywOT$1E{?gR+YHAa4Y3)+ML0pVD3k6GYGm3*CVkc2hD2S_^idv*<2M58W zB7$SxME?OtXBQnE4=w1X?{cYVF%@*MgCFF6yQtma7Lkees2-xab+*T-PS!58BKO4ef^H?G*PXLae`W|}Whg$~ zSApe(@6Ek=Y@jDJ#o!C#{D&F0AYOy;*Te{;PLL%01ijXH7)dXd!_QjjYzLUj_5llB zYnZw{tawth`q3n{uI3GkW1t+z0*XMEnrVf;ilG{FETd1nTNvD5Fzcc?jxAifLcTC< zc_b0HV{4x93K|6&cCaKvSY8q6tqE^gd|w$SCPx}msllkhB=2o9N>!xHrIKGT?iRSuo1ld6Hc&*g>q<<&QUOoLX4eB zmrlWE!6smHc6M%OC#mG@rbrRA@y+brt}A;NBc$`e?!5QD_q}=Z>j5=kh|M51)`3m` zrL4oSwzeaOyu-VgEzv7Z|1brUe;JK;>DAV-#6ymrz&<@3UgK?ZJOImW*Yr{|7uDz<0?S?8 zhi&JHq^C34q=|e7e!7$q=YWSmoMBFb9fmOxf->q2+@@Y0W(fOrBUcaREKV-10TyRG bqhsV3DFtzl$0}q`00000NkvXXu0mjfJP8=~ diff --git a/docs/html/img48.png b/docs/html/img48.png index c151a16708bc6889418f51b00e83c06a49e7dc58..6ed4302eb5cf16498b692b8f28523cc84e2e14e9 100644 GIT binary patch delta 594 zcmV-Y0HNYY~}BZEyP63jec<;t{&9DR#86De+wXWd)W|{ z8jL(kc-ti{RuDJfYv1;7Vx>}f3ny3IO1y{N(;lfrPU*#4R^ceyB#&h(CkCtdEZ(LHmL*! z`$OO5qME|~2$q$2{=WD|H_0x1VzAhkw0u{5?c-L0Kw^)yMu~TgV+Go8*YqVtYoT4k zGH@xuEQMax>pQBr#)h}|4tL2<&6}Ywfy(|499OPq==~_PY{6=cC~M9RDoNQBaeWr2 g7bd})XW-@X18eSZpMc=qBme*a07*qoM6N<$f>+!WwEzGB delta 265 zcmV+k0rvio1;iBL{Q4GJ0x0000DNk~Le0000c0000W1Oos70sBoS7Lg%Ke*nly zL_t(2kz-)M1sI|91r89&`T?sV76!0*V*-%i_`tvq7G#=$(@-b~VaSEDn0c5RSQ)@p zu<(~D zu7Tm31Is6{80!VF2vhGdhJ`GBHxxi(JP8cW$i}kux3SFc=q;eWzbF6z5S%2i@^QfW P00000NkvXXu0mjfUukAC diff --git a/docs/html/img49.png b/docs/html/img49.png index 8e70deda1290d7c97cdf201f466008e18d8d3349..a9a0cecd09bc64dac5879f9d0aef064180ea8d1d 100644 GIT binary patch delta 265 zcmV+k0rvi<2Fd~~`S|kv_kO^h6b1-gT zh3I4AXP5vqk&%#Qq5#JRh7On&9~d^kL_aXY{K2#!U_u|%lLaga{6IH>SZZ7h{0s+R zZs2FQU_ce;kOi360SU_kC}JG)Uk(hc{0S&xX50-70li=*+npweSOdof6^3shA22X} zgc_H?@e3^01E&BmaQa(zV023 P00000NkvXXu0mjf-VIuq delta 746 zcmVK5P>dkXcz zt*~RtYFWdc$WIzG@I?ADVBggtd#Jo3hoFk)wT4{U9d3F)g1pP~!dufcvY(vxh;(~w zuX7zAq>v#ItjV1k)7~YEsxcBYtq?^F*gPQZ!FZ0J#7HEKa1xE77Ad@He}pdPeB5-! z6rJ|d6|=}`T^QP}?XSjv6-4gDZV1BI@cXegJ4vr`xQ*ed|0U6pv3ITJ2xd;DGd!(Nj2PSuN%Kyjy#z5Fez7jPkV z9VSm@^jrxIzO65=X1J%f#N1M^j7k)Q<3sGtCXJvn5-)h4rBt>Kf1~`nOGOGFfpe{@ z4wAMl+y>sKo)tdEDbjV1Wpq3Go;uXYCQMY!`ienyH$mxG!4HA)=tZ?d$gRSsFh0Zj z0o;Ktw!y4LXLWfD6BO&hDoghaa#cJ5&KF^a9YUp|c%xjeC^AviSR23<6?-bXe45Lr zYNREazj_oWv6X(wKrs=t$KJqrmi=g&KY^pYgzo7-6I!SMlXfs3q~=I%zE4gmjKzg; cPsDxV56cvcEz>%07*qoM6N<$f+BWZ9RL6T diff --git a/docs/html/img5.png b/docs/html/img5.png index 81733c70d1ac2fe10917daec4e7a767517c3702e..6f8fbd7013a78435453a223a241de5cbca74337e 100644 GIT binary patch delta 495 zcmVofC0^UD#@u?A@n>6$vC z6X=ab02QVttMq+9i$e{BRDdFue< z_#U-dUyPb|s?9`_;+OVI=l{p>3-y{2wN`y43 z@*b7ghb5uApY%-;%4)ZFQEEVZn|ZFWBaZ zzqX^Q0w{$_4AW_H!xLa=mOtJ~rP%M=!8b<+rzqm3XIBZye0kYhl>EktaD z)53bOv^ua=xZ(uu=07mSB4>5J{F+}o?uhsc@q?YbynOkRyu7>x>JZ#p+n*l3EzpB8 z{qzilA;72?t2OMPVeM!m^PXj}f6CwJTfTusX=NBqjUk#l#R>AHc72Z6Pg7(4%oOEHN%lxf~-83e~yD7s~B@- zIg?%I7}~(c6(yu>d_nEDPC~0w7*0~@#JFN~W|(@HVn^Y@$zxeSLUQozG-T8|r&b|3 zd*6hq-*XMuu!>=a?_a^6%EKQ<_~^s*)|ZsMlMVMKJ$Wvyed9s0GOYyLH_d1dl;uH- zsO$0As!(Bi_HC8OMrE|Xf1M?^T7z|!v|Hu;-n}QK3ReuDqe+u7_*kh>3eM4i>^;uW z13NSwrV<>bZOYx63X`2@VGB^<#8Z2)CGdKM;!YI2q(7wlmoDQbZB{?wT`S6-Q=Jx2 z*ZqmQvEy1_^XrvC*bOh05R;J@%7CyyuyUzV)esOJ z5X!(%CW;sc8%)gtV)WR7Ap=5PklfONk#}c1xe%u+g@K`;6#M;r_wL=hmuFxUEPs6k zo~CM3^K|n!nkAk$=vUEIdOCp7f2bqEfsmr40kCR>i|KNX#=yl64pfZDEi|XW%N1DM zueG3)$tH1OkPK_{BuX%!lT55nLqV;IxI%|UGPocef3CD)34xSQ zDT490hy0&#l9#IxQq{xw5Tv|QWW-pKNr@x6JV`ZXiGnn*9$ z^3-e<-JM5w=W)4~+Nz3&j!$d!AeJ_#D@CV)&D2&=ycvar6iH|XFOAL=PIBt!eUe-Q#6RHq`kpW`gbpNWfjGMpl#N;6a$H6`P$`j$u3FD>e}Xk{#r^|tfy8SpAo=cwli zt_ZaFJ$lrXxNQb3?M=$)4cVC1PZjNfCuOAVi_cjOv)+SIo;1xlfBE@9yY2*%&+bBd zCnc}#D*hFBLLhrP+8OSNDwBK*(UTr6Anjkh~@^e*pkV zL_t(2kz-&00!|4a@dJoC7{K8F|NjsMkk7)(00;m7e?V{?AQTe=9+1GmVDO;>$k?g? zGVKFH6G)U9Vs-&G9smEsEyoHp7&Ku_c7BEpFm?|Y$0c3{0k|?nkk!-&x=3t(F!_O@ zk)xvt%w|8pya6W8(ZB!?Dkg`7e+h71Y%B_l9SvaNYm9yk#taB4q_Ac9z=&XTHc-j+ znBYGgd?2hCAK-`59`}I+%daL>QRa9D28N6aXlgmQ8yH0S6CfO>{tg8&!weXV2EFL! zH!yz+WcY?A$eh4%lYt#*tgQhG=O2ZaG#U!oUV&a&Rlaozun5v4NMt0j^9DiA^<-i(v8tG4lh42^<{_ zASTBL)(=oowhasyV5%A%5}+&te-{o0rj7|f7RwWc{01Wim;?h-h<-qXrDOrsUH=~r zC^Ls2N@x5A5*$AoP(|6}fkgHMG_@T30Sw0e3J?xke;b5R#MQtmuoK<<2KEaHET7N> z*%g?+F>nEmjW%FdiQyz}pd*YhME!wS07I0kfI%Ibw+0vZj|F@H0L>^+5q8V~W?%pS N002ovPDHLkV1nRSZKnVL delta 258 zcmV+d0sa2`0>lC#iBL{Q4GJ0x0000DNk~Le0000W0000W1Oos70rpc@QIR1`f5J&b zK~yM_V_*OR2L>$Q0|$^``@oDY&c^ToNCqn~FmPM|DPdq&z@{Av0vIyEG&=|523CUw z3=B;C3=h6c?SkoSpEcrfEjlKLqIRk!81B6!2%5&8&nv+F)&|ZU~mH) zk-+jrf#U*$z5zr7OWzWP4Q%~881w}gm>iHTW9)2CU>GO>00R#rEeS0Zy#N3J07*qo IM6N<$f^7d$H~;_u diff --git a/docs/html/img52.png b/docs/html/img52.png index ab84318b40ab6a834dacafe40bd7a3fe24569453..58627b8b869835fcec99ce29cb2134fac1ff2d25 100644 GIT binary patch delta 256 zcmV+b0ssD@2EhU$iBL{Q4GJ0x0000DNk~Le0000X0000W1Oos70U41zZ;>HOe*nKp zL_t(2kz-)M4j94Y1r89&`T?5?76y=TV*&#M#|N-7b^#n_fk6mEE`-6%!`#4Z0My37 z#>;TQfk6SEE`osL1A`aX1m+J64G@tHQ1`MG7+e6_0Av{nBy3;^U|=xdWM_c;Wda99 z7Lx+z8!#|Pd_)pp*J)s2)}DYQR>HvnbfLcj17k-=gaTNkh~)zt!%ha~%M1*X5H$@9 z-yB#zG3XmW^)U4wV_3-2cSAv6fPpaq)ymF}0^0b61ONb{`6M)-vjN8d0000XiBL{Q4GJ0x0000DNk~Le0001`0000W1Oos70rr2D6p4oj;b++O@~ zZ0xqXEzd^M+DQI{EffWt15vJA7g-i9&dDU%OR}52gF_JXD<(7Vz4_*QnR%H2r5Hf5 z;~s?!_`vSCJbIJ2F0K+_mGyjPe+bxk9{&{N^vQgxhZl#QAZpZfrZR{2gfI*coA)fH zK7a|ZjP$dym$*^$2_hH&qb-Nr`kYH7u}a|a0~&WWl39OFZh{%_atcqN=RO?NU;BQ(%LwjWv&D(diS*h@p{urBs9YX)_8e~jEx;RC_4 zj*-eg2_rw8v*j})^Lx#?43x;+vEyL}cUh~BkUbReJP)iW zOh2>4I_fC}u?uR0Wh9!vQEiB?}Zge9VOw{A^wx>}#g!&u!cieL@SInk9}<_4z(1ArH@{d>sN`&(X8iLww8+gZz+j)~4p2Sulx@ zMRwVeUeU+#fnUUBJ7An^lb@0VwSxn((|y@H_a4{wXUN-Qjbff0s4c1L|mx4j}$G^nR~J1L2ehrl#L&YIJc7?G};C z!sN2Uo2Zcv&jn>eZ~M>bjAD2%hhc%)5!XA| z9Wt}|fl0^%SJOgpAe*YFan@h1=J40<_EyU)8{OVc3V&uX6w8`8EB`5Uk%VF?Dfa-xsSU*$ z+`$W&CB2GA$(%McJulIsI7!rw$ejN5XY2TecxOI!(yx+3Z;APll;*O~m+vk;80oM@ Z`~u~bpb(?kQkDP!002ovPDHLkV1m|(WUBxG delta 397 zcmV;80doGN2F(K@iBL{Q4GJ0x0000DNk~Le0000x0000f1Oos70S*#;hLIsle*sHL zL_t(Ijonf`OT<7BedKHRl9PDi4@hAlSQxOeOksb)UQ8*dD0X(!D8c69@3097f}IFj zr?gCAf5AcoiliSL$cUUTr^cD%ML#tD6SdFe5gNHVm^%Wsw zjb+YabBtdSPFvh8135;(eX2N5)TFL!A)-bnIbNOGd-+wKSa}=($~(>|jz&dm)fiCW z%7f9w5xKKxf$76r3>enyfjL5aZf``00000NkvXXu0mjflZvYU diff --git a/docs/html/img54.png b/docs/html/img54.png index 610d7e371a0002ff7ca97b86aae5eb58cd31b1e3..072a95fd4d697df37e48d69026c67349e33b061a 100644 GIT binary patch delta 399 zcmV;A0dW3@1JDB@iBL{Q4GJ0x0000DNk~Le0000x0000f1Oos70S*#;hLIsme@;n6 zK~y-6&62TBgg_96e^?IoJeA7CPD(9ID2$06rPZlV;8w=+O3RgM6E*S}mKe3aM<5m^ zRvKTx)xsDXTo&Zu41|kU_$AEFzq2!8b{5F!uVz+qWnBKEw~#7w4^(}Y_BP;^QHcsc z>2Y*`Y3oao%e$f~l^6h~_LqR2e{6N>2ySb!G)J}`%2`((RB&9xReiod?|r_g{i9-! zz}CGlcPKw6HmCHYeTh>l!cse95?AAtqjn2sz@l0u+wy>6khv<+d@zRmIq7B6C@&(~ z*QxxcrZ*;P83l!Yz5PtoE)%nM^>@-5UFJO#zh2qylQPy<*bpX%0dSl&Wo6R=$BN5x zVO|Qa9^O{N^Di2IhLiULd^AM~!y}voy^|ZDGKqY&lVjL}@m5N^&!@^~@_e+5ZI zK~yM_V_*ORP6;6Kp@D&cqXEQa`2YVum}cN$U|<0&V1SB$V1NS$2ErhLfx+NI2avH< z0c6?-25zu0FW7930xUZI|A$+S6=*PM!kFy*3>#qV9xjec3=BL-3fWkQa385a7m3Xe zCOjQEk^lez diff --git a/docs/html/img55.png b/docs/html/img55.png index 5920385fcf8c4359f41d7ffb376cbd9360d79cc5..52f4ee09cdf4de79bda95585c8e6bfea10721748 100644 GIT binary patch delta 323 zcmV-J0lfaE2!jJ5iBL{Q4GJ0x0000DNk~Le0000f0000f1Oos70WC=_Q;{J{e*pnW zL_t(2kz-&00xk<6aiM{Mfnx%Q%kcmIe=yC!!N9--qPZEM;vX2`pn-uf2ms1}?y$WXMrqU|@N|kPp-&h%l)E!G!y# z-|fZ&D!cwa98hKsERZvP0||~F4XC2*@jxPb0-9P5{s0DJe+3AKt-lSzDB@~h71)Vx zegpf31eQ-|g6s-R-x#gR zL_t(oh3!{8XcR#d{`TkgW-k}_v{EcwB}Ej1SBRh>tb!7>$bkq7f*ZjQZQMd_9e==8 z6S4tOL5nnsU~^^A=CBBsu@TEy3EFIkNW{kZ+1p<9AiGzPrU;GInG7PBbL?l#MkG`tA=LP18KZ&BILPkVi5RC95P&8wM<3S=$Wv>`{ z8+TYM!ewMyDn#r*t^%t<=rx@Y&dDC#8C#6EKW}M5ZjEtqim-Ds{TSE18C?n#e>APCNSK9avn`*hVh(26v)EVENo`0~k`IfVByuZb6)VncAp?d;H zRP5kcX>-du&7#dD(&$DOaHh#W-}{(AanYIb_Jnkaioz|KJ#h~WBz-eN~Qtaz9q1W5v7Au)!4FnAI4 zQY@NnS(0onA;&oxk9$-E84yJ9;9S%k5*RRtTmr2@2@=ry>7K5h?Vjz?nNvR4>esJc zfAgwdz1Oc7D1uDg^IW8biFVJte+w}Nf&jBHNG4(f_AE<59m(q&`fz7*njQ#ed!Vgx z*=#b~wIY}to=>zRfd6M<*4T#KIYLWbU z`n;1#@7t^DY7MJnNoi9HHg@~oNT$Rg4C;B45Opy7^{nRxN$_kWkEC%J)Y{}~tZ{0D zjux8S+Y^`PxC4GttL&D&+Z(RPElbZH^&47fcpKTC4Aavl3`%f%Sj$6bHtBjAVrq$l|ZSBQ-sH`4OxM?LOw5OBH zuc$x*M^B_Y-YQ0}%*eH-UFk;=`grkr#w|Hi`%%Q9R!zfY<5+}SN-!K6$YFZ-+v1OK zSMPT|X(`1}%)g=)D(up@F;uA^hXZ$atmm9Pf=xvJgg}K|8Y4Lse=1EfDSvG6w5`mt z3aP>_jr+f~wI;y^Pbayrb*Iy6qQWj!{2Il&4ER8lN(F+~*QkqVW&Z-xwd`O0up+RL ztWeXj3@RFh!Lr^*j~AX9EseV7i@g?F4@7oc4G;^23uXTB2jGRTv%CMwy#5sEMpp<# zdKgDi$9Ld5f8;h6e@pDUb2A4w@i~gG)MnTPYa5M?Mf!CMs{tp$@2Z2zeI}si&<)k} zoA;!KqWV2kjZfl_w+o8SZMG6@-rrI??5obfyD2^b?#<6#3Bmk!e)sNTnZJj#u|UQY z7ap=V9>%{ep12%KPIh}{J4|ZtACVjKPR~g8tunK2lu4a~e;BjZ(aSr)lb18CU~ZPV z?B%^%I)CZxXJXt`c>*Kbb7tO!9sXsItOi)8I3B?SYww|-;1_!gYlI6@^-{qg%l1Yb zUyftBY@5-D5i@Y2kqWle*U-*40_}PuHWdZ`6~?dVWdpy*~lTzhBwbY34X?;+Aiumr*OZF=W%3t_!p~s%G5~$ RlFR@A002ovPDHLkV1m{C{%!yO delta 1263 zcmVAl%GO>q7SM|;g zsDv~$Jof>OAYDu$>7pU?r969#o=I*oblPClKM(wCME`;gqboYy$qA1(&^P#Fe>D1rCJTM% zsDE>D6EzEFi7Qb&J^v$Z_$H+L<}>(O(u!q2=z8YQ!DG6bEN9IwmpsN3}Jw%d2AGhE*M* z9&0l!r>i$weQk09%=AOWe}74c$4IzAp_CZL;VNwIv0$M_0xq7+fOJtDAR3&wBQ1n1 zVeHc*M@e)K=Dwn+-@P`kh(BOr4F`v*QE#A`(bh^&Ru?BEKNL3l$Ch&NA!->f(8fYt zMEY4j!6t=Nu87_koxSL^&EmL_UZBR*j}|DJ3<5gSZFKuAJv~Lte=Q{`r!9DC53dol@r z6*t7ue@9rLl%mHzU8%5ZaH~-4O&V1h+D|YRrw#2loaOC)YG@si+BUQo=-wjhtGGma z^EqR;qCKg`pPPolf6!$C*XaHVEj5#b!oqGrt{zD`8a!q}xQOg|TO-*_)hZYGlgO9+ zG~ON`DHhzPeR|aCjqbf=3dlIMH~G@se|~T<>n!Ktm(WBkUPgv%_iS3-cGR@htp0T1>b<;-QF#tl$hmV ze99T%w)?8h{Eb?!Z&I<{%<*0p;~3@q3f&5q^U75JV~n%CNB?|<>-ObAZVV@?Gp5|! z7p870UVbTte_bJYD=L!sg#DDZjrK##P)}-|+xW~!y%(&(>~uQ$ zI*XUPzR*=#4_+&T))`m|ejkTe%9-FJU#g&LNkS_-qo*6vr*Ges=3hmviBG6NBhMWa zH~SC$nrjTopI}X#g4$KIoEOSY={71&sMmlu2chAwf1RPmanV+{pFJKq^lOpM4@M&(GS3A@5-|7WF4W0dP Z(7)n>A2P^sFCYK_002ovPDHLkV1h6iZ7=`; diff --git a/docs/html/img57.png b/docs/html/img57.png index 989a8ea3f3059a48751cb9332c14df3b0d0edcd8..7b22cc260b250cba8dff62ab47591af71d750c6d 100644 GIT binary patch delta 1254 zcmV32$3O6e*~RL zL_t(oh3!~fXdG1({$^%p_GV|3S$|p-gbbw*eUYpn1yOVmkrc5z0TC%`2T>`+N+|du zNUxzuZyMsR5hOl!9x9~b!#+uLQT9p1r$taJ2nLFh$7zTq^rfCVKk3}bgeFl?FbDR| zz31NZo$uVAb7vOVgG9-Lr{xTle*rWE4RmH=m7%$YiKBU~0r$fJrqG{3Z3^yJ0y0ED(%mSd(VR1FskH7zbI1a4fPE!Yyamtw3 z5ItOqBEp-1eI#!sWU;`h=;3^-xDdl^%vLxWw0MDRijWGzo2JM2(;UtSe?}~B#`|gU zV_#02lOR@QQA_IQ=tq4RZvNBJ{=2e^{a}_UYbwOM@lGs93-OZTFr8g|gweFtm4;8s zgOxyxX+tGAOb8FvN~N2&rAI$a1Jp8~PAd8{a-k;afF@F9L6>zkT7MP?GoX_bx(S+Y zqf^J~9ket6=6I3W43j{8e;5^yv(0X+eyZ;#5Km+ye8@A$IJOImOnDUAUfil} z9gJ$m(1kF)u*wR z;|@&JWycb$b(#^QTqN;L8-ppQk^oriUOVV-5jAl>2}u7*JITB9>ia}rqj|q%Gn%YA z5+I@s(Hh!D62u2!(sb40k>L)16tc%bdz@W_1x~+Fetd+oZx? z3yzT)FH)2K=5I~sRpY-=QMolu?}TDH8~=C~h1Hh#Qd_7je*`Iy-c|cP1`%<*!ogsVZ43=<^y}*V#iwzOe_?&37wiu_AO5h z#pXEV1d48|Md+|&ebH}MBXn$+2pPVo@%sBL3?yTTmhaJJM6}v)n>|P=fgC%?dv-#w&sc>9(<%>4(MBc)QuTR zVRG%Y4Ll5dfyQg4u6|6v|5YizvFE5YpnG{mA?-wRxQqU_u8)K1j2xr>2fA1d8q)0@0DcYP=81G$_01*;P#6X8MR QkN^Mx07*qoM6N<$f+nL{2LJ#7 delta 1016 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 IM6N<$f|F`^)&Kwi diff --git a/docs/html/img59.png b/docs/html/img59.png index 6a373f7a79e5370964170d690bc6e2f84f1daac8..b419d848793717356e846070f46ab2ad76fb0086 100644 GIT binary patch delta 1295 zcmV+q1@QWX0>}y>iBL{Q4GJ0x0000DNk~Le0003z0000Y1Oos70Y`^O{E;C`e+0%! zL_t(oh3!~Ph#W-}{`zmawtIGaR#5aHX+dEEN(NSg0X0p2bT69mkc$x0f`^2#WZi=Y zQBtn!+GextfR{ZeJC{IE2z?PE3py7ecp3zw5-|gc#|em*M#cgxbWw&~YGM-F(;vWo1?y`%l_$k;Bj z$HBbrP%qIoP_!aoHU{SE6lN%5Kb&8;B${PT%{nf`0t3%C1ao^qZ&4TVf4^hJ&v?Xz zxdr0CnMX9?U|e5P<2{=@OKpv(`xgm(R^niP+@_=d7Y)tFq13Y${iSBFIg+mHKa@^^lQvEcHl%gX$l*xOTZDHLc_gyDdz>|{aOxN@ zw8tVtU^?$3K@v*2+0q1efKFs2P*>yHD~vEtEiNt7K>(D(_!jJjf0v$Lo^qAgUREAZ z()~6D6Za%E1VLOwLa=qZd{xhHNcojE*)yFKxF{+9)Ah2b2V!6--mGc+jfTWmJ4Vx( zOjIrCUIxRR5%tA{KpK~uT2oA1(;w%xxb_HpO4){PDQ+aMbp2PH=iR&Bz^jr~ZzwNu zNBCL7bt*=eEcPt}f4!Q@@w8H_s}B5Xz&UjKpmogVg3dO$*(;@oklHi!(q{!QS#K$0 zhFocBwQyF;Z(_qQ+FA!PiX{I`wMc11BN|aLz2DjM($cBj>8mqCr;itw(7it?w_SA2 z9qYd`7)kXjk0SYLK@CJP-yOU&e^SFXc{LEv#6Eb!=h?p&e|kmJx2Vy#=IK=#%%}Pf zr%?1|(Ve*B3M6idWQhYOH}aTwNaks3&Lvk;22b8eMpHn~o6}Bv6jM8=uU#P7r!o7~ zACw}?c_e1Fg_7OCUWhq$Or3E1q!OMb9>osN>)RanJAO{~nixx@{2G+{-98uE9i_g_ z#m;EX;zs3*e}1Wi=LmQ!`I&?CJgF_`L?$M9qOAFEV~X{ih&lW=1?fUvTO_z!{>*hb zrGFAE)nEo6R;XEgL#9M8akK5~GB4N`FMzk1_rWfpdrC^H;>tRnVu zfAC)RH90=6Xd9TQ(GJqlfYHLf^m_jsrB2xcHqZexe=+Xm|0!X*>RnikI8A6-9-h_Q zo_aohgxQwg^6OZ1P%534{CETJ0MEM6{do3F&*B%Mh>a+(2Fd0@za3o0_tbCT(9g8s zEes%XQ1<)a4Lf86&&Ykm%RRjMd(o1ICM&Fg2XIQF6l9B+)px*iH51}rGrtUhM>RSB z4jcB~Wq0Cmj%H)4_isz}4)AFIit@dC>dNY+CcEjKyCFsT+B~&vl~V5zl|=R84_>ji z>gGJV8C>lb7ZzJVrIkf}Em-b`)67jjxccUxl_S~>{R8*vDJNdJmsbD)002ovPDHLk FV1m!Hb0z=) delta 196 zcmV;#06YK43WWk8iBL{Q4GJ0x0000DNk~Le0000N0000F1Oos70g8rs^N}G-e*l9? zL_t&tnPXr8f(8aCSYW`wz;pr1Il#c&%D}+(fdK(T7}$U$2e$%9u#1~x0|Po>e!wsR zq~rrDND12p2C!)j4hcZgz=Z=yvOHnPZ@|#UkntO&?FU4LJswD8Pk_j9@CPs$`zt^= yMO+Q60z0948rUx+uzZ5B*%g?+8ZmHzv;Y7t$r`~2o`8`60000YIV@sjDzOY=Ay)Yl1{Dp6n8NlTSR7V&TOQct4-otp7HupC z6tNKWO=f0yCs~tND93RhOy=!--+uGn%;YU#;EOhYyz9-YTTFpqdo(y)GJK%IC$Q&I z%b~F>jK20f6!1&amN(H$tv2AJK}M8M$CoQ}5e6(&f!Z)YEY5`CrQ9?xgzrn@{iuQ4 z%5-r`zn#R0ixPYul0#|nT`)x zclj-UUk^-QQtrmIIabRcMKoA7jx@MVM4xSb_mL*&M6W6v2QH6fd;ZbEtF9;VZ^bDe(O( zn0^gE`HwLJPVS=SGqZp18QwbG4{IRp=5cF({51{xM$TRW_X*h*lJFyH5VB_Ki9aT! zq55{2WBYQfVdrE@tXO98eDh}}<35ywlk{rpRDT7j4CT{90oWfb(R87+>fm&Kl(U9R z#$kokI0>kIVpp|J+L-mmC`T7{L_2-9+Qdo-?2!LZ4(A-GcEGpRx{BpEnkbr!;oW}^Ma-+~!Fu`_hPSM}ld@|7HarT_o{07*qo IM6N<$g6FXqL;wH) delta 797 zcmV+&1LFLJ1+xYfPj`6bWv>Phy_!g0f4d@vwThnHhQV=J z&-Be9?to43yz!no-Ogn~4`D&Zj|45Ha^)s1kw{E?N~SdXSQ+B>4?; z03kvYiRtjGT&^dPYms+5=twqKu?^S9*Q!S%7C7XB(vHC4t4I z$gcObK?P_Q9puDMn=n^Tk&3S*e+_1)g~2$610>ZsL;8wl z^g*G-uT}~GzFj_C>(sJjXdGXHsjj^;B(r{8CKb7z)rEn9>C_J3$ph~2h$T8Q|y6%O%Cdz`(%k>ERLtq{V@lpM{x$fw8Nt^7BMR?|OzNPZ!4!j+w~` z3{3278Z#6Q960ca@sJtArD#zJ3p)da2DWCk2`SIhZ!j#W+F_w*n9#t_)2pD$KEu(= zLQ2Bn)=U{8wT34*B19VIWcSqZ&iG~Xj+t{>yl(oM$X;vn6@nDCjcqg-cyt)wkFS=sE^ZS3j3^P62e*rg1 zL_t(2kz-&$0W1s*0?2%h03e~r!0-W883Q9sH4_KJe*|E_3pn_}6weJH!5_rHzzQ@6 zWLqZ?^ED7}4hS%9Vc>0m^CDS!pe!8*PLNGa91K8NVOCa%C_A6Q28i8+O(qlYqwzUD zFz7g73NvhA2tufCU}}Imuz?Nae?a{POP~wc5*%QL7z#i_-UsB74+j(=!c1%i6Tl2+ zE|Bnt0;qBxW{3htlsH5I|FHq|*rgaS<&vTrBaF~MFVKIiUl}+$Iy#yNDQ3>tz`*En z0n=p0#19OgSwKGR0D%^e7zdDV#Gimr#Lmya1&Rkot^$q;3MJwPa8uol7K)v zBzrLUGw=(rGoYB#&kdYxve*rH^ zL_t(2kz-&$0W7Fo2G#^1Va&jAfdL!f0Hgm1fK?U3a9%LQvja%j7yu1tU|^}=LI6}XTY&*2xM))1N)AQ6#>ZNOufe#7P9o+Kym{^Rx1OJD8dc^sd+(5;QGMK|AB!ah5-{?fYQv|tPDRI*f~K$92^Z6 z1zZ7GR6{`mjKKn-*qRx*84k1n#Th?1a5K&jYyb)_IKb@8!0-XcG?>A`utFdMw|PLo z@d}IJCu9y|mugo614jb`G8yG(@@Cz{PV36QoJ;1O4q|gqesDpt8 xq?^Zp8SIbc4E)RiACed@F^CKB379f4000&LBi=kM+^YZp002ovPDHLkV1i>!R^I>s diff --git a/docs/html/img62.png b/docs/html/img62.png index c86bc3bff58d9df50e0f028aa55dfecbe88083d3..9d6d32eecd304192d0d3cb5f5ab95648124790ae 100644 GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1-!py+H$h&>QS0KkAz$e6Y^XAPfR;-vaXU>EP z6IxnYDk>^+a&i(95<)^kJUl#XY-|h+3{+H9BqStwczA%CUPYds2c#HFg8YIR9G=}s z19EnHx;TbNOifN;U^>RcX5b;fK9N^JFszO(ZxT z+b04M3n%C`oR4AKwmE`j`=Sq4QrgQ5H|QiJ%(-|j!Lacmi^ud+?rgDad8}=Bd1QRn zu}dg9ysF@mkY|k4neULp+{UV~(Soh+U=wd1&vc0!JU>`~eqw0*t294-S&%W%6AYfN KelF{r5}E+a@oSv` literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b>GXn!-#I@qpK#qEVPl)U0&6`)OSTSeLoCy;q zw6wHTR8%A+B!q;7*x1+@7#OIisPORc0M$BZzUl!|j3q&S!3+-1ZlnP@Hl8kyAsjQ4 z6C4=iI1ci(BphHo!s=in>d9*y@`gdc9H?K)>1V)#Iv$rzISdo$a4KAq*4f9SQ=`zx Z$RPKaeF3L$X&lfT22WQ%mvv4FO#nalGS&b9 diff --git a/docs/html/img63.png b/docs/html/img63.png index 4f60c79abbe0c8fc8f69c3cad158931e335924d5..05a8313fd717185c45991574fc035c5d7f962093 100644 GIT binary patch delta 178 zcmZoKn(8Q|y6%O%Cdz`(%k>ERLtq(N+c7G?$p#)xahtAQNd0G|-o&6_u`Sg~Tx zoH-LFOlWCosi>%!XeXVw=lqLIpbEy4AirP+hi5m^fE-s(7sn8enaK$Z%ERLtq{V<(frXiYfpPM_rFuY)L4Z$)>*mdySFBhu zXU?1n6DG8@v{Y17~eN%5?4Qi8mJ*jAkxO zWSXFraHD`xNt$7ynn0#W;(@)4=TbiXU`V&#Skq`|X=PPsu)%2x~7hkpCl#AS(mI=Nz%3ke3s_0Nuji>FVdQ&MBb@01-G;asU7T diff --git a/docs/html/img64.png b/docs/html/img64.png index 42fb0ca32c45928874a506c854ad6307fa4b2194..26f82f8272703fec41927eeb9e819b7a35e1deda 100644 GIT binary patch delta 237 zcmZ3^)WoFP8Q|y6%O%Cdz`(%k>ERLtq{V?)frXiYfw89MoB)ucJ5g1>-p0npz`#I7 zMMXkFf`^9(C_Go|)pa1nSQ6wH%;50sMjDXQ?CIhdA~7{N!GX1=K#X6Y*f4>Kk&Vr* zjn|=#SERLtq@{safrXiYficZNZyu0iFi};$-owMg#>U3L zz(7SsMM6S?hld9!^D6Q*NC9I>kY6x^!?PP{K+aN67sn8ZsmTckSoI1RIIr*%ASFG;qv6#}hNb)y68JAB>|(F4olw>h7D}} kI~XcajDA=^b=P7703od*70%DoAOHXW07*qoM6N<$f_Y|5>i_@% delta 259 zcmV+e0sQ`~0>uI$iBL{Q4GJ0x0000DNk~Le0000z0000W1Oos70VD%m36UX8f5S;c zK~yM_V_<*+UIsM4&%hvn%;yG^4PXf%_<*h+KVSxv38ZO40;~x8*fxNT`oIbkZ~)0M zF>FAnCed-^17-x19Yk;-_~7s=QGoL^fS8flp%11Lq@If-3=_<004hvCsK}|N7euU002ov JPDHLkV1g@DWIzA_ diff --git a/docs/html/img66.png b/docs/html/img66.png index 65efc55e86631edbfecdfb076d1d7f06e0f38c46..fcfdb853354814182beb45f1dd79105135491d2b 100644 GIT binary patch delta 272 zcmeBTTFRu_8Q|y6%O%Cdz`(%k>ERLtr0sxMfrXiYf$_Y_GmwPtL{<5E8ygz~0|ONm z6$uFm9v&W`@La7|*MSscNswPKgTu2MX+X|0PZ!4!jfu$#4NP`yCJlNAnAP|V3WY4r4_|J%&`X z9|v5e98O7y9blR*E3+<%jfX#h$w959QPAF5w7}+o{;W?dvu$ERraWYwa`X}-6Yq*e zI>uIhiELsnA}m~z5>*R7dHhmb#KYsWw_DQU+tvjy+dGwdUcWx@a&ICJ!$x>>aQ!4-f delta 245 zcmZ3=)WxLQ8Q|y6%O%Cdz`(%k>ERLtq{V<(frXiYfpPM_rFuY)!9-R0dJhi|8ygz~ z0|ONm6$uFm9v&W`%&W-L^MDj%NswPKgTu2MX+Tbgr;B5V#MI=3goFnP2iWSE4DDA5 zM00mAaN08%$!y3<{=snV$i>12>6`=XD_-8vJ;*ReTg@S)`RZq59fsh&JX#8lY8$4q z%H(kh9F&t;ucLK6UGEKeK& diff --git a/docs/html/img67.png b/docs/html/img67.png index 55d516c1428b6c6b43caada669b785eae39d94dc..4b323b5bcc49559381ecfbeac1e3ea97b12a06c7 100644 GIT binary patch delta 201 zcmV;)05<=iM2Z3-iBL{Q4GJ0x0000DNk~Le0000N0000W1Oos70epPU5RoBEe*lO{ zL_t&-m1AIFVBlcD27UrDKdKO03y1&-KL9cuuxexY0M^9Oaey0azz3-5*e$^ToGT_k zRD;#?Gb{j8y$mWKK_;-31srY(5XBoH)B)m*CIYa0W?=pT<8W_4;`lo-2f>x?W?%$L zY=UU{!oc>0feGvsmcADbjJujS9}19+#zX;QAZg4Oy8vZ00000NkvXXu0mjf D2;)ea delta 8737 zcmZ8{RZQJq)GY24cQ5YlS{#a7(Nf^x?#>UVXmNLUigVC|yA_urMT@)3*Z+5uo16Qv z_e$2o%6^!cH9MIon0#rfNHrBXbQEF~C@3g&1$k)=C@ARKf2R=+_TPP#yy25T^%nJfBtp$i?T@X@swKe>+cr-^Hl1M zzr|@q){hN;p1QzfdZ%Rd-FNhX2Tj-VS3I-)Q;gH_`fkO!zj~*w+RvOKiw7CqMa$c| z#?yU}P3TXZ@YpBsB~9lmFfZiazsXXTM!oHJAKv#9ph@4=VQ=Gb6hzg>{m`0TX&L5G5(FOWecxtQn{e<)tsWs(+;X?lVC6 zZoG2b`~665Qgg=bJ|DJuu%gK*7neyitzWWCuDU2-@xzHtMu`~ej`*Pu!8dZA>5p6F4G*%SqXO^5OjHr8_upw;1-J3pRd6hbH@c}oeT=f`<Dn$9e+V!yq^GRFa(1^PoUfS%ke{V)|jNr*e8u?(k6hI=Gh!!EDxp}=Mt^m0*d zUvs&rs{gfVsx9>W==FluM|4~N4j>U$K8>i6iy2u<7PW_EGLHaeGwuk3m<5EsSDaV^ z(`C*w(sd68sj~R~muT=vMkMD&l=1h159=EXKTG)-m7Ot9{1xj(J7@~1Iwi;ksja5=??gC2j z$THR3WK4)>GmC*sjIK0l=fGDxgy+aptmu~7hF*y$wagJLk5#8TYgx1${h^Y(2+)iS zPRE_#9jGdDJ>q-i5z}!y)+|V0yG*!o_MG_CeuSrcAcFFt=oN%frkHQxR2AhJNarC) zeJtAJTZsidC9hFV5`SJ=Yr-8|Hkn%}pwUMjnW*5Cw*j08{N`~fx5d{m5^p+b#y6|; zOF91;-V6G4DTFUJoUHGze%l&v+dG=8>@|S)%(-G8P+VrMebs4tv6}ohlGSE`K1#fc z8MWzv`$_VYxV>3CPW+6d>voOyL-f(fa<|+DY-y#!*c+i>5`2n-Xo1AG>YKXHE+zxu z`jhNHj1C}O94ZlrZ=_SX&*4rQARgo8{-iX1j|eWKlV)6z6+J(R1d;0Q^<6*x9NL-_ z8&oNkK91Iwb|FXk{p3!ekC0 zNmtJP%iXow;FEx5;Ne{2kA)(p4oi&hT^Z4OWn?1AdFLtdUyk4G<`6=csdbJwXK!kW zP;_3Odjm|+nESdb*fA*vbeb)NVXqtp59i_;OE8Xi?Y?75Avv$3!#QF|Uu^Tl2r_dB zpaEbF?7l&&x2keK?wny`IrHbwJ>ZrU6`MMp^(9TB(6CO1b;^c~(;LrX>bJxM8ve6n z2_7^QM@!DZ9xt6xhGVyMLD1JxPb%$efM? zhfxSND?$w!XJh>}H_k?d7q`gf2aW6$Gr*_O^QE&Gt-%)~g2Jv}LGyT?Cnq%_QqH@% zfn!G$nuf{?*x`Y9%qPRU{g1n*@$RI)k;S|zB^r-1-_rKPKie7-@J=8E`%{Vq62(>N z)fsZ4;SJG4v!Qs+FyqxDM@a{wptnc*tRvHCiG}r0(Tj#4COD8GO?pYzrPDy~-vOX4 zBX4XIk$sCh*VgIJoKkj3Jc}r+zpXWl7h|i@rz{H<`daktsIKw+u@viIUO$pD*gR2O zTxwR%qOmrdCdwMqt3Umm7%NvWtz!<+wXl$tr(7|Ik|bABENCLJf-5sPOlXr(U&l>; z;QQg4UgG^gMss}rY6nS0i?RQi<_e&qRikEpGuqg4=~?}|eia9Am|0&0s|T%^Os22@ z_y^gRJ$9O?GN$4?|0?@SCBpTO=|f{DYDJmTBWF^_+8-Y{MbtKy?!Nz3$-DlLfHB6E zpmjZpV!P+Hpo;ks6sEaYpnq14p3LjIlzEHr@t_`-UDtO|QxZm_MTCw?B7+!MAq!$+ zloECp&MxmDa2KU}gHaotc5h<&c+Yb5f>ZlEpA$mZrum zR5DOsl(fW?KbSjuv6n~1P&g!fVa~jSi<_Ys&!^m7#qgI_X~gFV`Kv_it@dZP8jP*7 zC9eQa%(p>^AyF{|&5(W>3rGX-;!k{t(t-`VD(#jYbzZy;nYYbjQli^7uaC07CXm73 zXOlH%^Zkr`3Bc?+)%DG7JJPuG7N&{pi9VxYZZtD2HE>PfG23#$1~-oAFY!(mVFe)tnsx zX7jpnL}t=dLv+cf9n712F=yPD7ycS`EZUjK1x<3(IHf=kZz#Tsf4_b01a!4r-?Q{j zJg)n63zlL1et?Lhs1;A~wws3mt_`(Pixlx&UF{>3kuYYd^98VCc$+Vy^TCO8wxfc# zmx>qk(>%h(hp)UIwLKlxY@HP5l;`HCD|&Bh-aZe z9hGcQ|JX70x89iGq>M;FZ~d>-K*+5UWc1_m-oWU6pm0_;OX*6coKhBQ_QYHUK7s@v zVJL`dB|brh5d&DmSo3_Sdv%k0WkIFaa1ld4y?A5#^nOaD5p`6#-#a*xd``LXAdYAsnW8m7oa$bpWx@JbDwF!M;4Bia;WF4 ziu=|9nl}^dS=DPY=~)}zpdAlUqh0efrzqlfwRD2d(weWK4sS=DoDoOAw$?33RA>CM z65!*zoB6=XeFL@ffu`j;NUORYiEKnm>>%2gy-Yc!Ia%^DGsfL&T@hzHQn@YYRqoeX z{zPKW3&4gO{helEQlzjoI3Mqg%T_#9X(JS*7BRqlLs@Ea){U(xTknx7O_L^v#5L*B}xm*fw12P#@i>YIu{A13uyAJ)7?GvN6 z?6P8_Hhd__p2+(#<<9%=S;VV+DZ-AW@6!?s znbb7g1Md;#5Gt?T4oa(4Ngl-y&%l~+t^&x|`mgXbeH^p6K0=-M)5jxw>1`m~Jy0Wpm`jCN8I(<@{oF=ER% zd@M<%$;?e=$&&L=2p~=)pM}j=9y&|HKHSOp_4N#fejMtAb2cgy$+2~!V)mDQXw@AS zgWY&+z1hB^3Tp!C5VlCzt`oz&)WQg!S*Xno?-NL5i9>X&}@9x@Nl* zw5>P+_jUJ2=2I*a50`|?MVV)*J5~nUC!-c-i2?J=5 z4JH+{bK&`(&5mi{M$H$?z|vgnWqtaCo`Lf8F&(c`@62S9;oiFc30NJx5;bb4avA0F zOW#^r-jH**#cQeEM&yF3-iG$&Z3Pz&v2q#a#s}&R>!*LGy94FJpm*MLK9JlG zxc!K>3>Jh#Y%bjfAS-(;{)_YrVf!ms;-$Uj9aMW?ICknsz5ia0x|Sj~`Z1$n0bn<_ zCL%~TpF9|@mbK_mgefWZ!~7YU*%8D~xkov|g#xUz@89u%ZHT5S@syKYfggM8=4$P{LWor!brV80%R;jO zQ8WMAjD!p+G4sVd0QfZDm919H$(6Tl!p za;GZ_p)pvSQI~7zIK4!?Z&XOdYS3bNEF+p%`e0uL?A!|&Q*Em#NHA#hlpkeQ$)tl; z@tnJz(?>65#a%x^fn$PMEL&HPQF7MsMdN_Wb z%fc)e?(&O>8EXQ12n^(direowW5sisg$@zrBWR=-Yy;eAA5KS5{>}Xh{P*Niba)aNeVQGdP z`R5=azFfm3$9z69#{Y?}NxDa+8`gQ>WTUcdb{nnB}7p#T*!o=_(~i1v9!N$_G&hAwmr!F0BX* zuijtDq9UGfLTE_h7Y3fU3VSoG{P5U7J(@Q0pz}#~XEHd4)aoxDHz_(f>c9wG8KVwh zw-Ebu-ZMLg>AHaa(X^${z+vv)QN!m<&t86xSYEjTI&op^dGbj5&dXKH3G~0Ho_Mb{ zM�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 diff --git a/docs/html/img69.png b/docs/html/img69.png index f37f62402d3e8a5640f5bce0271de9defe78d2e9..3be36af806d12a4bf22e191d4dc243c4b8f6087b 100644 GIT binary patch delta 205 zcmV;;05bpM0;B?v7YZN*0{{R4YhGU2ks(ZfqDe$SR2Y?GU|?Y20AfZ4bnp{I@M8!w zu(g0muw(;>S%|3y0X{%Y;OIEOY>)uf^ud8a0iPB;fOEwJh-qLqgA7{$p?ev487=_D znH)AS1TZiZaJYSdYMH=6rd`AVmd^~#Uy%6R8&LWF4$MKo(Cz4mPyq9HGcbN(V7|;a zz#s|H{)K_<3xmD^%(T824vf2+^#vFh6Oe7`>?oj_4{!qj09qab<9`Ly00000NkvXX Hu0mjfKNeD$ delta 268 zcmV+n0rUQ(0^SU|?Y217ccsTh#`_qAaevjN*pkiVFHL*AGjDEfM|Ax4-nyghYlW?5-tV`y*M2Op3yFC)aQY%B#lK!-4`U^v>q5CCx*)SLu& zc4B;k*MUT<=WyV4kc2Qj-ga~~3NlnPFhcmuUw~o5!0;HRlxqV6^F{{t1u(vSNACe- zqgFC70Cg~Ac9bT7wSQt@`N1l93>2scz*~T7KQGYhC_+&kjYK=1ir_yA_y7QEdqhoS S6NPX90000 zK~z|U?O2JD+aL_3Er&sXYxDpAS_I1Bo&=I$89T;Yei-_O`oY)& zQR?xRJemGEi1-%f87NjCAOt>B-+tL zpwlUouK4d_pfSSsNTI~_?lgj^rmRjc_yHGAx~shDKCtr7BTz^O35I{FAwF8Jf)tV^ zjUYABLdq=#h@vrOrJXF-hWtUujO>wrU{MYg}`lE6QR)^Ai*ca+;a( zS>x|K$1}xuuI|0gf41eyc3wlV;Ro@})P4bkXXCpa`T{&}{U+g|_M*!uHKi@x0k;)y z$0GHY6(99*j$5<@F=p*%1FM~6WIVuTo2ag643Iko)GWmI)L12DX$WKjIn6O=FmZpP zGz=PjoYT@4Rb)b(cyXFiJsRk{%qow_4^k1K#!+RCGua8Oe`|Pw3C>G{j2wTI(o;FA z6~JzSMsc)LUK>|j$9g0|0>0G6L85Be_L#8MSo@vEGPPOjSsu>5NEpjL+K=|2n2E!# z`^M|yUBmxofG@ZhBm(7jKHhQ|N-C3Br7hpidI+K(c;lgtPF`Xii<1ebNBRmy+v3WN zTB2_<1T4gIe@#llcqm(;^^^}N+B8$bc+xlIyK>c9y=5|O!N7TQmQ7WF?sK4+j>ebK ziQRU|ni5f=)ZD)`Oj29hXP^p^-IRt~(>~k#Zs~f8Zdg(bB3&rYVRX-7V~2TtMll&& zPOrN?L*_HZG+4WC)6o5b`^$|~7J4Eoc>8dr?i9f8j|) zK~yM_V_;xl-~(c21_W5Zz@Gr;a5OM5v~Yu&3Je&a1BfA#O(1gwKuR1im0<#iSs%C< z9)M_eh7SJV1vqtzbCXzz_g&8PuEvcXncYgV%vXtLJdwb&!NGJ>GV7H3~9RGcZE<%wK?E z!@%$urj%;~1M@}(_60D$eMj#BWTRFxFaUKhWOkG$fVF>OVEMr+cnlP%2*6u_YCkW~ n>nK7|9gRdgo{Hc<3itp3YI{UYWD|vO00000NkvXXu0mjf@5yGg delta 199 zcmV;&0672S0*L}4iBL{Q4GJ0x0000DNk~Le0000Q0000W1Oos70f~Y|pphX=e}_p# zK~xx(V_?7qK3o72{20P)96;g=0|N&Oh<5;oW=ROe!Ri5~85t%p3*fW~H{jU7+W@8? za6tHKED#BpyVw&LK;||uY_NrjFq2^ok$`2s0s{x!8yuVu893l_E)07a8sNMJ2Hpv9 z9!mfN<39%0z7+?+W=vsVuwY;)9Y-L!XJ!BZ002ovPDHLkV1g~U BKr8?N diff --git a/docs/html/img71.png b/docs/html/img71.png index 5b68e6d910b44d40edbea4a539a58e6e1abd3a41..1842512df08d0530d8ead9841bf012aebac3856a 100644 GIT binary patch delta 199 zcmV;&0672l0*L}4iBL{Q4GJ0x0000DNk~Le0000Q0000W1Oos70f~Y|pphX=e}_p# zK~xx(V_?7qK3o72{20P)96;g=0|N&Oh<5;oW=ROe!Ri5~85t%p3*fW~H{jU7+W@8? za6tHKED#BpyVw&LK;||uY_NrjFq2^ok$`2s0s{x!8yuVu893l_E)07a8sNMJ2Hpv9 z9!mfN<39%0z7+?+W=vsVuwY;)9Y-L!XJ!BZ002ovPDHLkV1hh- BKtBKg delta 309 zcmV-50m}Y~0`>wSiBL{Q4GJ0x0000DNk~Le0000r0000W1Oos70XNhg{gEL|fAmR2 zK~yM_V_*OQ4hD80$<2Ta8U!`~NdaUb-n0W?nxBmUFKGJEz`$mpz`*dCfq|7_0|V;^ zkSMnUeqESAdJ6-?0)B=7AXA2sfd?e?fu9jXB``2Bft>b%8;^FX0sV%PY!@KR>J7kP zY5=)m@&s^zaWlBEFfgzs6o92Uf7sX@fD}|Q8!%vj-~c3OSsb`v23BvNhqI{*_!}5F zfbrOfEXI5cl0LXMFlc@Ory*dxq#WgG0Mb*SYB(-1yLTzU!3_W*%qs6Vua&m|3jhEBNkvXX Hu0mjfg35C# diff --git a/docs/html/img72.png b/docs/html/img72.png index b7d510e1613cb98f20f29e8d6aefc61f425e9ccb..5b68e6d910b44d40edbea4a539a58e6e1abd3a41 100644 GIT binary patch delta 310 zcmV-60m=UB3ibjaiBL{Q4GJ0x0000DNk~Le0000r0000W1Oos70XNhg{gEL{e*pAJ zL_t(2kz-&00S*RsAj!>u3>pMB07(I4A>OnDV49ze0WWC!(7?cEpuoWJnSp_oVFLr} z2aqVY1AbkYKza)U!vcPW03cI_k%0#!^nsrdL?tjVFoB%*fg6u@ssa6mlWZ3t%<2um zU}^xlVe$lUfN?XpurM&NB@}?Ae>vFL9Do#5F&i*of#3inXjvS%UtWLg@(%42!7bufYufA5(Bze+21C zL_t(oh3!~fh#OTDK9l*$WG2}eaM2>gW_Xmxl1tu0H?V07SP z5tX@#?TYyEraNlU7Xs4^RW_`bX#rTFp^YgLB61NiO26?vFO) zJBUn(o(#|th#n#;h^1dBQrgh`ifa`70_x5aVt(>qBB60sm!eZ=0Z1B+ zq-%qwJ88=-zDL582Zct?ZfyCp5RfkzhaO6u9?hml?9Bqu)Ix6)!8Nomlmfs*Sp3{E zFsKQ2n$4mmG?s{G!7-f!f9lZGe+U3wIzl+$j^+pgJ$L{53sv;UF_3d*=(%88x_r&} z*vUJm^cI~h21Yset`Qd95=Bf3SeNXUu|a`I76@ZJmgKZ9|YUME2D#oaSxsBmow(6qKZ-?5Cz*5T=`RBP~H+m{C*_T@3 z66)?>7Yvboy(`WOe-^&WIKOUo&Qqm;C)5J+qc@|%%J=Vfdu^??CWdU|87*UlJ6!|6 zG)%{FkwdU)xO7#2_BFsJmIjVP! zEwR%~ew0?KO-RmiJ?1;pI!sF7L`UE91YIV;xpkSGvYgnNe@^-TWpBvm_bJY*pUuy@ zZ|}%QvbpUd!6_T*!4ve;)zb)8esbW@-%hf748gNEoRxpP+?VTN2aBoWEofc}D#nN^ z?vo(+dr&@89w6NUWrSah;3Jo}8(8RFQ0~I;^COkuTkuLy^JgMRHU6b?J0uWt(&56G z?|R|3uZiCmfAEwoy7E1EeLJ`t&jg_Fyg&Hzk*J8y##0-pr9Np(9$P~~@`fAU2nG7hc*=N2PI4E}-xcJL?5 zz^t-`j~W=*wtTULnX&_~0ymVPR@Gx!SMP*1BB-FQM2xkI!bC!H&pNqB8xR*t{AuwQ zQ#i$d3$Rud)inXSCHYn4z$EUgN`McQgca=qo p+{@^vW_n|vTa47d6#fJ9FDgMf=4j0L>Hq)$2>?k&PDHLkV1mkxf&~Bo diff --git a/docs/html/img73.png b/docs/html/img73.png index f88736e714e5ebbfdbfecaadf1f957e2eb2d5cce..b7d510e1613cb98f20f29e8d6aefc61f425e9ccb 100644 GIT binary patch delta 1331 zcmV-315(Bze+21C zL_t(oh3!~fh#OTDK9l*$WG2}eaM2>gW_Xmxl1tu0H?V07SP z5tX@#?TYyEraNlU7Xs4^RW_`bX#rTFp^YgLB61NiO26?vFO) zJBUn(o(#|th#n#;h^1dBQrgh`ifa`70_x5aVt(>qBB60sm!eZ=0Z1B+ zq-%qwJ88=-zDL582Zct?ZfyCp5RfkzhaO6u9?hml?9Bqu)Ix6)!8Nomlmfs*Sp3{E zFsKQ2n$4mmG?s{G!7-f!f9lZGe+U3wIzl+$j^+pgJ$L{53sv;UF_3d*=(%88x_r&} z*vUJm^cI~h21Yset`Qd95=Bf3SeNXUu|a`I76@ZJmgKZ9|YUME2D#oaSxsBmow(6qKZ-?5Cz*5T=`RBP~H+m{C*_T@3 z66)?>7Yvboy(`WOe-^&WIKOUo&Qqm;C)5J+qc@|%%J=Vfdu^??CWdU|87*UlJ6!|6 zG)%{FkwdU)xO7#2_BFsJmIjVP! zEwR%~ew0?KO-RmiJ?1;pI!sF7L`UE91YIV;xpkSGvYgnNe@^-TWpBvm_bJY*pUuy@ zZ|}%QvbpUd!6_T*!4ve;)zb)8esbW@-%hf748gNEoRxpP+?VTN2aBoWEofc}D#nN^ z?vo(+dr&@89w6NUWrSah;3Jo}8(8RFQ0~I;^COkuTkuLy^JgMRHU6b?J0uWt(&56G z?|R|3uZiCmfAEwoy7E1EeLJ`t&jg_Fyg&Hzk*J8y##0-pr9Np(9$P~~@`fAU2nG7hc*=N2PI4E}-xcJL?5 zz^t-`j~W=*wtTULnX&_~0ymVPR@Gx!SMP*1BB-FQM2xkI!bC!H&pNqB8xR*t{AuwQ zQ#i$d3$Rud)inXSCHYn4z$EUgN`McQgca=qo p+{@^vW_n|vTa47d6#fJ9FDgMf=4j0L>Hq)$2>?k&PDHLkV1lPrfz1E_ delta 381 zcmV-@0fPSP3cUj%iBL{Q4GJ0x0000DNk~Le0000*0000a1Oos70a^^&bCDrSe*rs5 zL_t(Ijop*6PQx$|hW{j1sf$OXE*U%a z5dtfV2P8)D*>RiHDN?11fq(Fwzx=uQYzJtGFVLZ+#;&?N|3u!c b^Z(@^guaM>0A3tB00000NkvXXu0mjfa3Zh% diff --git a/docs/html/img74.png b/docs/html/img74.png index fc5ad6bb37652fd14b90a4cee6bde4f55cf08962..f88736e714e5ebbfdbfecaadf1f957e2eb2d5cce 100644 GIT binary patch literal 445 zcmV;u0Yd(XP)RHR400001 zbW%=J06^y0W&i*IJ4r-AR5*>@ld(?2Fc60SBv$2Op=4u&?ks(Tya9QHh#jeqkO2WL zNM(S9nE|PbN2D$pJN6L*D~kstM)28jo75>%rHX-n@SVT>x%g}cXo)Y-p`_$`%*%-T z&j=NWGa=FObi0@ezyPJw!N-W3j3c08YL_~``UiDVEP<)XUT@L2i!FfIAXQluq|%{1 z>U&eW^>mn;!1U63nMnl?6NJyuq{$fLaMe%4h9~sZ_5HHsA={y(U zbhM|5t21?XZteNPNufiD?H;BuqbOINGvIEc&YQ^5`WC+r-*MgYIIY%fn_ai*tA^*l ndH7{>#;&?N|3u!c^Z(@^guaM>0A3tB00000NkvXXu0mjfeVW9S literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^Ahr+-GXn$T^La_{fE@JzpAgs0n>Vjmv0~1gIV~+M z6%`dZIXMXl2_YdN9v&VxHa03MDiRVBK($+so{|Pqj3q&S!3+-1ZlnP@UY;(FAsjQ4 z6BwF|9dZs7FdTWpA{fJC6A-A8!1kz&WqPBmmd=3#2X-)?@L+tzw4l$JT_7t);LIns q33Ass6}Fj1JXs*+^Nxpufngg5pWK`+PnQEtW$<+Mb6Mw<&;$Uo*F8f3 diff --git a/docs/html/img75.png b/docs/html/img75.png index 77ba92a4ddb8f2794bc813a22d23112d06d19daa..fc5ad6bb37652fd14b90a4cee6bde4f55cf08962 100644 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^Ahr+-GXn$T^La_{fE@JzpAgs0n>Vjmv0~1gIV~+M z6%`dZIXMXl2_YdN9v&VxHa03MDiRVBK($+so{|Pqj3q&S!3+-1ZlnP@UY;(FAsjQ4 z6BwF|9dZs7FdTWpA{fJC6A-A8!1kz&WqPBmmd=3#2X-)?@L+tzw4l$JT_7t);LIns q33Ass6}Fj1JXs*+^Nxpufngg5pWK`+PnQEtW$<+Mb6Mw<&;$Uo*F8f3 literal 342 zcmV-c0jd6pP)RHR400001 zbW%=J06^y0W&i*H)Ja4^R49>SV88(U3=Awt+zAW}90{1J;Ie!S4M05tAdSpmAr731 zp`g#@2Ui2wCbkU>3@#u>K_debOgaa~AYjmcD8MDp*a#$Ua2(Lrgh4E=1#hW$2R$aetJmtg`M85lgU o*=lqFO@LRGG-p#6{6_^J07n@>E-6&6Pyhe`07*qoM6N<$f>iB!lmGw# diff --git a/docs/html/img76.png b/docs/html/img76.png index 8d6fa2fd07d0da43f0a0424afbba060e0387ed9e..77ba92a4ddb8f2794bc813a22d23112d06d19daa 100644 GIT binary patch delta 277 zcmV+w0qXws1J(i|iBL{Q4GJ0x0000DNk~Le0000V0000d1Oos70dlUsT#+G5e*n}; zL_t(2kz-)M0Q?LLEJ)l53=A9zn5y8id<+dhJpv$&%wQo7oQk2K&*cYK1K1|E4Gat} zAVxtW0~1U-2gV>^(0?evCC}IhByMmV(AVV!G8$MK82Eu+V<=$Rkif|aWVjSufGA{P z_`<*lvG4;zdjkgJAb$4{1E5a+Yd}~fGT=0@gwVj?`oX}U3XCFtumHyg2CmZ#EC#?x z-~$V=d}3_a%@7Fm{EUeZfiG$d{cOmF{Wf68cL36tVFDW&7(B4qYIFfjfLE0?XHysa bM+F}MM;SmaDO9ge00000NkvXXu0mjf07hi8 delta 438 zcmV;n0ZIPW0`&tSiBL{Q4GJ0x0000DNk~Le0000>0000e1Oos70W$|GyOAMFe*tqz zL_t(IjqOysPQx%1J*m^YN@-Wbl0Rq#LIMV`7??XUc7q9pFTk+icA&78jUPbjCm<$9 zMEQV>j6nhk!~k}jTCMB~71WI*+1K~__}m-EHjtyH4C83Qik!eQ`y>}_R~Y8wTKY$J z+H^QlAyRpS0x1hIiXEo%iea{yf74{=I5vn?t5}Ha|b8d4T&VXzsc#^RN;9rf-}(%-=EPCd>=_f9T^<4G%tf z_rzp$Kll}mNrt-eeNkc0q(uYZ9g*JOMF#R_(zYqWHny~X%y~=PQoa{Y&~ErS8~2|@ zBST9gdIahk$Rv3;+NC07*qoM6N<$f>|HHV*mgE diff --git a/docs/html/img77.png b/docs/html/img77.png index d7d7589462fc3cae06e27a25524d5f42df00fcd8..8d6fa2fd07d0da43f0a0424afbba060e0387ed9e 100644 GIT binary patch delta 437 zcmV;m0ZRUb1oZ0000e1Oos70W$|GyOAMGe{)Gh zK~y-6?Nqx?!!Q&*snfhlX;;LOKWGI)0tT=cm^(6dg9(K%z_8$Ups`WH0Ct>Ot?UXF)QuzA*Z2DP+#AO>kfWvy<7mN(oWL^sBo}R080O6B3 zDr3YHOya*4^kw3=QUO0TgRbld4Rs)Kn~Ag$sydbuno3)9ZgU;ZfNUjrlCcHgVZ>y` zky%3pWySMxfq_tW??)#KIArU~#lD4LI*XnkLxg0eZ=5^K-!bJT%nSSIf8$aO4?cPK z#AI|o_!W&whPv{7QDM)dMFZd+k>1}$2J&Xowkg6kwzPlDc}v_ZumJH_n$>0 zLttrwMPA{FYD#^+p-OuZU889!t&(}1f&H9Yx9d11`VtI+$CMMx@&TL8k fVR?uwci|fyj*sYvfN#M73jhEBNkvXXu0mjf%Jje! delta 453 zcmV;$0XqKm1BC=3iBL{Q4GJ0x0000DNk~Le000150000c1Oos70l{IR9g!hSe}hRx zK~y-6?Nc#J12Gi-(z{+0@95R7I(2bzI?%zvq0kO)c5rm4gA^BW7xap7RxMmX1f6Ur zU4$Zn;DLx!S7#T0f}5SJ$u-xCZHfp&5kGk3CGYXxmoG0s7dG&I;Q%Iq5++Tn+? z+)~0ZMrC#ScvWXnY@-H3csv4k+6y#!>n2~9 zkb9V8dfeIxkIf!oYp_@%_z}@@0BtqG)o2LiYw_q@ceoDIx1grBSBB-xCK>7wI?Ny@ z-enorR&lbxv{;yLR{)`mu^UOLhofdngWZ={V4j<(GhxuJ0aCp0A46v-e@6U^Uqh^< zj=ceApSBdwj`@_hJFSD8MI51} vx_-4?l&<7WDlRsU)uQ}k8%#0$Pbu&LJ6D-&G*Bp|00000NkvXXu0mjf@07(% diff --git a/docs/html/img78.png b/docs/html/img78.png index e6be141f1d247b185c4bcc939a15a3a2b9050151..d7d7589462fc3cae06e27a25524d5f42df00fcd8 100644 GIT binary patch delta 454 zcmV;%0XhD^3xxzBiBL{Q4GJ0x0000DNk~Le000150000c1Oos70l{IR9g!hRe*uF@ zL_t(IjqOu0O9L?!{?fZ%6YuENtvYpaaXQe!!J*I&Zgy~VsDl(2aToN8a8@l`K?I#_ zCtZXhg5ZIOQ&(pfe}bExtjRUkifxJrLJ>cBgKo>Ufe&GNnff6QMIO=d8 zC)`rPF-B!|`gm1mQEa0ILU=vhf8~3h8w>e@+^4?7W>jN!lHNY(I-XYqG};R^dFv)$ zmymmyV|v`$36ISlVQa8hBKQ%}aR6;K!qsR90ewpWJb%qAJ?5IW2t zCf;Qk*H&?|z_eJHZ&v`JjIkR@sfVLxN`u{(SYV!;s54>EtpQTJ?;k^Fe<()$i(f;m zq>jA-XP>qd&yM+&xI3+b+@!OldU*(x@(VKh0$d4aaV^|yE}x+D%%f2QrgA_M8{k8c z=w{n4RttP(*{HZ*+0VvZ%L7Yc9UfW*E{BZzGAS7ZftUqa_R;=AHocOUUKC*&c|{zd wrMiB#U6iimO)4%nkJY059Aiu|{7)(H0XtWjYcxOV delta 1415 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 RB_3!YgQu&X%Q~loCIB>tL#hA( literal 372 zcmV-)0gL{LP)RHR400001 zbW%=J06^y0W&i*H@<~KNR49?vQ9BC4KoET~t1L#))-E}KkONqxwK7NWC@Dl^m(s!_ zAc%G;Y(xu>;1N8+7WV7x2V5muh>eeB=Ivwl?aVGf=;8q>r6HvNdX5$nDbP*Pbjw{d zD}VzG4M0GbpOw*@a_uXncoBV@uVjT}LSavK>dunff*8o6w~pVzuT0L#ykn>rmq0rO zE7VLGaG^d~Wq3%9U`T@!kLZm?v@Nds9RG1^F60BB%GfNd)u+$f90T*cL8ju?{xuWe z`Z-#~$q0v7B`(w=Y%sPC{wj5Jfw^@!CKSD!HSRC;dA74%@#XsSn12CT3vmamT34<1 S8N}WI0000-o|$yD>8;l)frg=1?Nu01`_;%=#TpfE}ChzxU`!P&D5xR(92mf-u)_)~^w zjl->$M)_6Ey$c(7syo>3OG>0ES-xjvJ{-j|eSf2(y;_6f=EWwAXWp_W9ZTlni4lkl y*zxI*%<(IqnOAg}H!vRE87SMkrO3jJfkC)eY delta 193 zcmbQvbdOQLGr-TCmrII^fq{Y7)59eQNDBcmKMOMh17ptmP1}JS-2k5u*Ug(ZuUN5S zqLF(2`RudtKvBk$AirP+hi5m^fSh;^+c%~a!r~HI;VLRm^ibx0j=U>@O1TaS?83{1OV!{J|F-9 diff --git a/docs/html/img81.png b/docs/html/img81.png index 69abd11a136f030164f8d6c0c5cb681f8d56924e..cf3b348af1ca389a534a7f60916e07d64726552b 100644 GIT binary patch delta 193 zcmaFHe2-DTGr-TCmrII^fq{Y7)59eQNDBcmKMOMh17ptmP1}JS-2k5u*Ug(ZuUN5S zqLF(2`RudtKvBk$AirP+hi5m^fSh;^+c%~a!r~HI;VLRm^ibx0j=U>@O1TaS?83{1OO)$K5zg4 delta 459 zcmV;+0W|*J0poXb2AtkFl=Cu!zKv@r9j+|NB%z?;84KH0JMQ$kc$Jz{=fis4G0|IhBHY3aLYd6 zQqhqFrZ_UvfTTeKn8W7)3;`g`(!gTH6EML+;TTAc0V2uJaDM>Ji0TcbJB-eNv10<5 z&XV{53gG}ShmBzZ1LNufhK3Cm_IwP785$k{1$ls25r|nnaI-NpiZUE926C9z10w)P zr+;WbnCZX|iYXvK7HklMXkU=fj^+ZOMMDw%#{@Xj5_JJnIyO;h1BPBCE(gPH1MZ8g zy(_yI7`I3`Fn?478DQ|0fx!$!+a!Xy%niUyIbR`*A(MeY(is@d3Yidf`Tw_qC{72M zf&Crr4h#<&P6%)cFr+d>Fq}w$%J_ql5Z~_IySIasHTE<7z~a0XpgIMRc?wWZFmyAV zz@l#3j4ntbgu0Khqk$oBGM>;F1vCU$5;-;i0MApBSr7+4SD*j@002ovPDHLkV1lk{ Bt+fCE diff --git a/docs/html/img82.png b/docs/html/img82.png index f661a49f2cae91aae13bdb5e162b832a47b34049..69abd11a136f030164f8d6c0c5cb681f8d56924e 100644 GIT binary patch delta 421 zcmV;W0b2gZ1LgxEiBL{Q4GJ0x0000DNk~Le0000^0000c1Oos70q-P$kC7ove`HBS zK~y-6V_<*)c1{LHAjK`ffCVsfGZ-2$Y+#VXCJ6d<=&f8Xf=zd4O0Eh*>^x zvoSM@G8`}la+uZwBLGOJe`r9M>A(+)DIh==Y!HKJUy#s_<^rHaLlOMP1USoJfGm_=A!V-|pSJw}X^5_A~sz z;=C51It7q<3Q$ilbTgd5qHf!aE=VGTx{tA=fgx`)p3oQtGz3@@IW_Jz P00000NkvXXu0mjfDcPUU delta 391 zcmV;20eJrA1IPm*iBL{Q4GJ0x0000DNk~Le0000<0000U1Oos70p-yiHjyDre@00} zK~y-6%~L%~#6S>zx4GnUekEXKmrf818~ZEmE~VwwHU@h!q8x(=#zwBNu(PlUh#*?{ z6TH&WA0T+(X=UNeaCc@2K@o&|u$#BDZ)SFOHh_%*&;hcBW&GfAffHa474RKTKUMob zU`^)*9!AK#9wY*qY4@)oOGr&Lf2NCW6d;o%D~2)<5wM-ZcVjJq??7!1JmrF=#0nN+ zI`AA!Xda*;MJ3;+*hh*!m$ctJkdh98*93z(fHnR4M5a{+FwzE5`Dn2ta2%O%r1E-L zO|?UyPVofZztuMF@E?e7%H|qTw}XvOIy%+$9bau)Ql055ufIWlD<(tWUA!FYr6u!h z4)d<$iFV*#Vfm-D;yaw lVeHp$C9mEpVEs2D#uttPL5Fl)7(oC4002ovPDHLkV1i}`rjq~w diff --git a/docs/html/img83.png b/docs/html/img83.png index d90d6bc795a4dda51a8a19202a25db0c82f7178d..f661a49f2cae91aae13bdb5e162b832a47b34049 100644 GIT binary patch delta 392 zcmV;30eAl80muU(iBL{Q4GJ0x0000DNk~Le0000<0000U1Oos70p-yiHjyDqe*s2G zL_t(Ijm=X%OT<7BeYd&fa(*RXWtUD63mf|@?JlL|)iwruF`^uU2*yUPu&}eR35XzC z_!GR+(jOpr;Av&y%y4&R2|*Erd$60gvu|d0b~b>G0nh=mhGqQVae)(H4;AnoPd`=r zKVVJg1s+DoydES1nrZj1AxlV2e>A3xZWJJsBrAq85D~DQ!*^pXf$u}OlTgUAw?zMrr1Y{K9{uLJdlzOf!73sIe<0&`b4Hx1~AeFQTb@GBXAs!l_0 zY!36TomQYMkZZ za*Ro&l&42lb|#m?F%vd6?+quUXFT)?{m<;Mg)^XomQYMkZZ za*Ro&l&42lb|#m?F%vd6?+quUXFT)?{m<;Mg)^XM!M_uh{_@5fzx0Z4#O!T=L0bPsO{3_~gtoPI9H zN>Z6=_@cH43`m%{NXqwNR>qcXe}n7N)Y0=cn}Kx)oRcb&Jh5XS%YJ8!x$ttK;ZH(E zxY8&D%V!PDaX3^{#5Ck#V@DF?(9e=klCg}+;Ad=M8=?Nw@E0T~h9`~iBm)GWtsqoM zl@Okm9?hkPYzVB8lY0kt9S4)6rWfFc<+CEDT9XRB-UDh-sDW(D+O)W8e^_BF>~A-< z@ujhY3eJgimS3eVmyJWGBWv;oAI#e;pGWw|55V?P7AVEMs?&92frF3J*_?}!bIFMt zx!Xr#EmWXc@%fVOfKEN?m1zHLPpJCs%y>NNDI|TMVNN~BSl80nczlWHw_{!~+ct1d zs#S}`*U<`;Mly`&kD`tSL8U|Au|ga*%F9;7NGMrYt;N#g+t<1`-75om4@>=MoQv(8 hAsy2GPwc16#~0}QSx#ts(Ch#J002ovPDHLkV1nhq<`Vz_ diff --git a/docs/html/img85.png b/docs/html/img85.png index f34aa7f1c59e09e4a26618b4f1bb64c3e7bbc0c9..d2d4988d2c157991d1ce165b8ebeedb816135615 100644 GIT binary patch delta 527 zcmV+q0`UFF0jdNtiBL{Q4GJ0x0000DNk~Le0001f0000U1Oos70dM|?cK`qYFi=cX zMYFTBsHmu%oScy_Cx7Z$%boxL00DGTPE!Ct=GbNc00F2;L_t(IjqO!EPr^VLez27u zRG_;9j3h1$4lafcM%~~Sn8wY?j&5Ak#QF(|{D7{;rK1Uh8;grSfjBuhbYLLH7~kF% z(n1r^#>M!M_uh{_@5fzx0Z4#O!T=L0bPsO{3_~gtoPI9HN`F$BY51bH2MkD~A-<@ujhY3eJgimS3eVmyJWG zBWv;oAI#e;pGWw|55V?P7AVEMs?&92frF3J*_?}!bIFMtx!Xr#EmWXc@%fVOfKEN? zm1zHLPpJCs%y>NNDI|TMVNN~BSl80nczlWHw_{!~+f+7iPpVam#MjXZltwa)=Z~U} z2Bkyau|ga*%F9;7NGMrYt;N#g+t<1`-75om4@>=MoQv(8Asy2GPwc16#~0}QSx#ts R(Ch#J002ovPDHLkV1g9x^Tq%G delta 170 zcmZ3*a)MF6Gr-TCmrII^fq{Y7)59eQNDBZl9}6=B1LI=0jru^2Zh%jS>*mdySFBhu z(MY}MeD>LRpeSQWkY6x^!?PP{K#r%Ui(?4K%;W@y<^+L*7f&#-zhNzS#-@|@* zsL0^LYOukOQPV6sn@4nof?&sTX2Z!$hZ)(_Cx|lTu<0liOMdr_**>9>k>SH?&TW*mdySFBhu z(MY}ieD>LRpeSQWkY6x^!?PP{Ku)-)i(?4K%;W@yrg8@v9yLh|Dai*7dmA3!wYJD- z7BCkvNMPmSVN}p+Xzbj}J iU)OaB`^Cq_(7H%snzPvAH$W>GJYD@<);T3GHUR)aOgb+B delta 317 zcmcb{c$3MfGr-TCmrII^fq{Y7)59eQNE-pMC<`+K17qX<3A2D4g8-ip*Ug(ZuUN5S z&YU?D_0{WNMV_7qlwd3g@(X5gcy=QV$hq$6;uxYaF*$*OF^-i@`4?M;p5t^IG^5>ZfW2>~E;x?cq(36TTrL@mdKIwz)tCII8)aGwAG diff --git a/docs/html/img87.png b/docs/html/img87.png index f2a18b21213c8823872450308b3f7f56eb9380a2..822e77fbdf1f1a3d3eb8d04798eb18cb0e189579 100644 GIT binary patch delta 279 zcmV+y0qFj(0@(r~iBL{Q4GJ0x0000DNk~Le0000o0000L1Oos70fE1envo$)f7eMw zK~yM_V_*OQUIhjez`?+c!Z%=G5N2Tb4+b9?&;T<;3p*c<#19_t6V4gNqoK|DT~o`erz zl`2rbfOrjz4PYJ<*c24-9|>TDZ3Irh5=+qK5WxD0fnfy$M@L6T6HI0|gyLBMR9k?o zN2MRa^9Kf|e*v;>3jPjY#x8_*29~pg$H4Hx3KX~yVy@Bx@ ztAkTRW3sb5GqVThgscPyR;7Te@;e+|1g05Gr-TCmrII^fq{Y7)59eQNDBfn9}6=B1EbH8TOf|^L{;s29v&Vb^H25> zpacVBNswPKgTu2MX+Tb}r;B3<$IRpe2gWn!48+d!vAHoyET24=*@J7dfl)#OTN^Wv z3@4+*wPt3APY0RVeN0z09R0|6nYEACK}TzQV}GNp&e?s+$*dO?7_8p& Wc{cz1z6WSLgQu&X%Q|MKgeCyqfH95$ diff --git a/docs/html/img89.png b/docs/html/img89.png index da04492277b863bf7d01d3c7d489dd56b19b777d..0de7438b2f200869d156715734006b657727dad4 100644 GIT binary patch delta 194 zcmbQi^n_8dGr-TCmrII^fq{Y7)59eQNDBh75DPN{1Ea+SiH{Q%b?Q}ARCsuJfWm*W zj{wCP7)yfuf*Bm1-ADs+QaxQ9LpWw8ConXZ^DBtVNGVHeV45e()5FB`{@%eKbKl4~ z1kGrj$jF|NU~%BUL;;2rTMGsid7FZUS^xPGIrI)Z`qA)`={TE0_r%o=iyI9YRbCuF raQpz@w6yyZH!3l>9=4Xys9<17sFQp7yx;da&_)JNS3j3^P6n1!f6b*H)Vg@5dZ)H diff --git a/docs/html/img9.png b/docs/html/img9.png index bee88229d851003ac9a29bd4c8d55d90605965f9..d5de00a8c938215983f0649f6345efd6bf330657 100644 GIT binary patch delta 302 zcmV+}0nz@|0q+7KiBL{Q4GJ0x0000DNk~Le0000j0000Y1Oos70ZwIo>X9K#f9**` zK~yM_)loYRfNTzW*Fu@UH~9CNT8H5B9yP*04Pd0K42poWvQQ85P)tDL20aW;(D%9(fgE` z!yy%S3=~c@j^7zxfiCeQf8uv2e_jo5>C}z1@gVJ^>hkBI9dC3hW1|Jh($ delta 146 zcmaFQbd^!DGr-TCmrII^fq{Y7)59eQL<2ED3o`=)<1Vg@OA{4+GJ-u_978x}CMP63 zNNZsF$0l&{;DH02q8Utr3I|#F9Gng@Xq}nFaKvF2e}}qELW0K+h7=J4gEJ`(YzNH} w9!n%G_%mmH!l~(s@;>!VUOGuOCk`+$>~-MPul_r&6lfWPr>mdKI;Vst004k4zW@LL diff --git a/docs/html/img90.png b/docs/html/img90.png index 0d021da2308dc0c4bc27a4c68eda8be08d5af88b..da04492277b863bf7d01d3c7d489dd56b19b777d 100644 GIT binary patch delta 253 zcmdnTID<*GGr-TCmrII^fq{Y7)59eQNGkxbJPR`e10!?&BTXPjccQ9ly@7#&goFeS z4-ZhF^L*V!AjMb`Gr-TCmrII^fq{Y7)59eQNOJ=*9}6=B17nTHX#*ffYoe-ZiG+j%4-XHJ zH_t@B3P>@Q1o;IsI6S+N2IM$-x;Tb#%uG&TU}hIM$emWy?CI8F;jA8z#>mXXVqmag zF2g11h8+wYmJ^;x@HKk&aVB(yGbS;(WEpeMxP9@&0S1O_UG|@6-tB1xn#SPi>gTe~ HDWM4f3+*ad diff --git a/docs/html/img91.png b/docs/html/img91.png index 5a5301f39fb08ed0f2611f3b7bf9c0ff7eccc664..d96d7fc26405fbdcab2058f42b8a6a3518fc957b 100644 GIT binary patch delta 180 zcmeywbe>VQGr-TCmrII^fq{Y7)59eQNOJ?R5DPN{10zQa=LH}~Yoe-Zy@Z4W4-XHJ zH_t@B3P>@Q1o;IsI6S+N2IK^Lx;Tb#%uG&TXxi=Y=0E}CkteKzJa-Z%32HElr6jy4 zNl1t|(7?qcA#uZx;U%v_48su_frq;dY!eDNe2RP+g7RHR400001bW%=J06^y0W&i*H@JU2LR5*=eU;qIo1_uy< z4X^+)M>jSZ?%fOw4J=qSK>-I4H!yI62$1>>5SojD!6Lu|pFTW*7icEi1`sO&Vgt}f z2RN6TMF7f$0R_^n_>TgJ(Xj*SHYj(4e<0A293O!GW{?1JH}C^VFt-83{Q&3g-YtO4 zEda?jz`0<(Tod>hIDT-$Oa^)$ q3J8cZV3TC)K;feDh64DH2LJ%5Kx6!Nxd?Uu0000c+XfIT0b&EtNC!BV zn?(T1g#iW9t@w`uh|#eF>NY5MgCNk6e;glx{$`K>aX0V-Nieqo#Qgy0?%pkc%q;-P zHo&=Hy<8Lc7&v}#!%PNx9^_2~mjQ`O6F_=s5ClN?T6Q!**fMbEv(DbV5iH5EfWb}x zEaVT9pbHk=?BTk^TtiqcFcOB-G$^u%(;OXk;vd$@?2>|>!GwJ{U diff --git a/docs/html/img93.png b/docs/html/img93.png index 43e3e8ddeeb0b5e92a95452db78bf9ab56b146ac..c266352ec4860c3453473840e4f9e573cff1ae82 100644 GIT binary patch delta 193 zcmdnadY@6XGr-TCmrII^fq{Y7)59eQL<2ED3o`=)<1Vg@OF)k9L{*J?2?+@v9v&dC z^L*V!AjMb`bHk=?BTk^TtiqcFcOB-G$^u%(;OXk;vd$@?2>{XkGqL~x delta 668 zcmV;N0%QH(0k;JuiBL{Q4GJ0x0000DNk~Le0001S0000d1Oos70lk2Vp8x;=Fp(uF ze;|;Jue*_$@D>F$_IA}!(EP4ZAfDX`WS-3J!x5}X} z;keoww2RnGRC}aWxb>Uf#gmpKAQ@b>`nw`KJ`M^cVM1TT27h#p*k?n-gZ2x~VmyB$ zno26CyE5%_?#r49t6hmjMnv6|(`=0y_a22HT|24WZB*xH>MuTk4VSXWNhUSRy>(VAM~-PLl_CjE*Re}i-6S)1jU`3IDN0vb=P*ELZW@Rc9n)b> zuVhj@9=Z`d^=+TT*C2<~&z^ZAmc2j@q&||VGDcE;?r&C&RX|f|z4E+_Tfso6vY`e_ zE9RynD{Ph;IOqC8{xP&Q(VyMfe?=Z+ycN6iUGr&&@6k5fEcztR0^SU_u%BAxg5w}T zpm&%dJLRV7Sc7}QR3qF5fBRFT>r2SD9G{y^XTq0a#K%UbAk6E)8@}$m2E4pi47qXl zBS+1gtR?u^a= zm^YZsQL{?gB(RN%$(IH0Lz2XW>?PEz!>Qysd7ovE8a(&KQ(XSAXyj?iD_MB9*ipKv z?a$GuEfLs)Ch~k}ea(NMSTxV`KmIzjT^OzZNZ$Z3#pa*UEG}gL0000G52NfF$_IA}!( zEP4ZAfDX`WS-3J!x5}X};keowf3%C(OjLWMR=D+>-o=xaBp?}FwfegvJ3bByC1FBe z#0GzKj@V~I!-Mt<&SE@&BAQAnr@J!kbMDKU39DU+MMgy3l+$dD8TTHAAYD7D-ECCo zXX-CLfaPw;@5JAUuPvy~rvD0>4VSXWNhUSRy>(VAM~-PLl_CjE*Re}if88WAc8w)P z#3@QwTIVo8XKosZ6&=%IPOoHAJRZ6cJ@sv$#MdB))X$!IB9^^C4x~PksWL`VeeQ2o zja5KXX}$8ij9bA#sIs93N-O53BP(o{8aU_rLjEzdHPN5l*+m{>ycN6iUGr&&@6k5f zEcztR0^SU_u%BAxg5w}Tf1r1mAv@)!=~#n%!c-&N27migqw7n^w;Z3FOlQKEV#LQr zry$Jhz#G2qyav3yR}8sv_ajHmoUA4I*yU1Z30yJCxiC9L?RHq=0q-bj?y#`iJB7-4 zJ=NEh1(`u?V!lJT!U>a=m^YZsQL{?gB(RN%$(IH0Lz2XW>?PEzPs6F?IeDLDj~YDp z#Zz4VuxR9I$}3rTw%Ad+sqN3vs4WrLf+q5OXnoCppjb4|^FRJNv|Sjj|482eFvaGd T(JU@y00000NkvXXu0mjf;;SbB delta 434 zcmV;j0Zsn51@QwRiBL{Q4GJ0x0000DNk~Le0000<0000d1Oos70mh_AQ;{J{e*tev zL_t(IjpbCYPs2bI{<{8H*A6yAFeFq?ASOt#4ME`8pU`9yNctaeW~8W=zktcf2?WW^ z;=78fiPBjnUMc+7DM zH3$dNwVY=dH=;Zhr;A1xhF*ywDuAoIN}Ioh>hOOh&9J=f6owgT-b)hqe+`(FSdCZm zhCd{miIZ5#nsq)SHBz2upF diff --git a/docs/html/img95.png b/docs/html/img95.png index 89fc7ed8de65e242a8f7d6905128eb212b121099..381d37870c8a8a4b7ab73c9397ede2848d287513 100644 GIT binary patch delta 469 zcmV;`0V@8G0`UVSiBL{Q4GJ0x0000DNk~Le0000<0000d1Oos70mh_AQvd(}Fp(uF zej>hLZ*hpWQV~%(4j{nxR48{3U$nPE~SF63i$RxZr7#@FPQ?e z5vHbSz(>bT7`dFOAvohKZhOOh&9J=f6owgT-b)hq4VaWzjaTx9KO~!plUT``bv`3CQl4ky zy&cecM{=cDPI@miQqm{Vvo|n5EaloF)=wIA>l!S15*vhG8SfLX(M?yiADPk;MgrW2_2p%pOUMQxti(OmS^! zbmTsf_HMxmy+w?lc}%)@xk${=Z^~E}$tTb#p1{J?bCq)i6Aw=$uR{_$^Wor*rgaPk nx~mUx3Z=gYSli#;{an^LB{Ts5RVzt9 diff --git a/docs/html/img96.png b/docs/html/img96.png index fb6b7f9cead5d6bd428a5978d231a459559f2097..89fc7ed8de65e242a8f7d6905128eb212b121099 100644 GIT binary patch delta 242 zcmeyxGJ#38Gr-TCmrII^fq{Y7)59eQNGkxbJPR`e10!?&BTXPjccQ9By@Z4W4-XHJ z*Ll9~B9LM%3GxeOaCmkj4ak}3>EaloF)=wIA>l!S15*vhG8SfLX(M?yiADPk;MgrW2_2p%pOUMQxti(OmS^! zbmTsf_HMxmy+w?lc}%)@xk${=Z^~E}$tTb#p1{J?bCq)i6Aw=$uR{_$^Wor*rgaPk nx~mUx3Z=gYSli#;{an^LB{Ts5UY|C64 zYho`*WpmjmARF)jZy?gKO3{>$*f6?SX;u;!21w3ao#!cKAvcqwJPsC$Iw|Q(0 z;wft(%95P(II|xct&c3+>Kn7W@30z!fObh}8};8v;*T&E8GOauQlZ%^QjxoB+oY40 zQ>M1PMMM;$?s`i;q~F(toY&H{AxBIlm?F5M{F~!v9rP6}cz3QgkQxs|K6!IWf8wE~ zp=9#Z$Fk8V+faA>dRIVB+MKBm0X$KV{hqO=qD|FzhP|@-jwDMu&Uq0IV{Y#KATHNg zrSY}!4M*8XpyzgsDA1iKqEYFanhR1U$grQ6vYb>~yZ9zA0<{Ng(aFuljo%e?cx1EY z$%v-+bhuVdr?FUX6uU{Ib4Q_de|uDkmGRU=L>k|SCX8pqxXRAdQ82(~_N3F+-w2JX z{VEAzr}V{O|2kg^OAb3DRB(dU`OQ=8fUS>(c5rkl9nFvQmokxVSXozSc*<4QIX-~@ z6Bm&n-tXXT@+RN!F?UzZl<6S% tie~g^TIbpRqH%x!;~zoot5W|j`vpi@*njth4g~-J002ovPDHLkV1n#T9ti*d diff --git a/docs/html/img97.png b/docs/html/img97.png index a6754f48c035fca8ea45d27b2b04e5bfa9122f39..fb6b7f9cead5d6bd428a5978d231a459559f2097 100644 GIT binary patch delta 572 zcmV-C0>k}*0{R3YiBL{Q4GJ0x0000DNk~Le0001W0000d1Oos70kmr><&hyve*ySO zL_t(YiS1RtZ__{&{_I?wb8BKRNM&=`C?Fz6CXW?MGqGgx*lrPHmmU-(w-OM91l>sg zgRI>wkeDqbq>e~Pov)?phTuJ)t+*tzj6@X%KI!iL_Pu-W?hI7%NYUg#;u;!21w3ao z#!cKAvcqwJPsC$Iw|Q(0;wft(f69`a^Ek5~8?BEl-0B;%yYH|XgMfBPXdCt4NaBw$ z78!iS+)|<0D^iiWYulugmQ$v-y+uS6qV9T2KBV8*g`C&Yv>``KC72?(qWqiVXC3qv zEO>XWHjo+*Lq2(PO5&lVp=9#Z$Fk8V+faA>dRIVB+MKBm0X$KV{hqO=f1*v*cZR*P z`i>+^I?j0!4r6Za{U9#aS*7u{@C`@VNTBC-j405ZD56p6o0k|SCX8pq zxXRAdQ82(~_N3F+-w2JXfBh;6VW;%PVE;N_3QG<ERLtq{V<(o`so#fiZ28K-fe@?|O!MPZ!4!iK)p6 z3`~q{77r2<9<&tykThUC{+5BQt&cwcs_yjT3@w5}KIQ%_n#n1hQDQ zwmv+-BB+qBdbpoyLk=^mnlRJcShiW*+G5Q!Yb{hi5NG-Q+J8gt96X_0-eU->FVdQ&MBb@0FIG7R{#J2 diff --git a/docs/html/img98.png b/docs/html/img98.png index c52240f8c1180dff331cf3f6df9d2681243ab08c..a6754f48c035fca8ea45d27b2b04e5bfa9122f39 100644 GIT binary patch delta 234 zcmX@X*vMqj8Q|y6%O%Cdz`(%k>ERLtq{V<(o`so#fiZ28Kp2o?5a1Kyx_R^F6)RTE znKNg?gb6JzEfY-@>t98lo(Gg>ED7=pW^j0RBMr!@_jGX#k(ipCz`(@FX7L~);XzCB z4@m>Y<8K+*+WPn-QUVSz*VUFOq+VQL*f=4`CZUN*-F$+VK_H7&YwN=UEP@L8s)zfT zHsmm~stGgAjb)p~tu59(!zopr01)?0Gynhq delta 176 zcmZoBh#8Q|y6%O%Cdz`(%k>ERLtr1?OYg_(hYaaJNj36P^3;1lAydGqEKD^|>z zGiSnt2@@?8iw^MHf#euVg8YIR9G=}s19Ch)T^vI=W+o>jB%~)Ka4;mX#j!~kBs|b+ zFuHlPk!3OiGuw$ChOXib43RYsXAT|hSjoaDbW{CTV+NxfdxwKbvw_F;t`A(yYz$0G WS)X4Qwmku`(V8oCXQ(GX)(y`NR~u`8y(aNGyEx{@y{}18hP!)qgc+Fv_uaIG89k8+iQh i`oP89vZ`Ewf#Gt3@ZP-rTc-l;VDNPHb6Mw<&;$T9COiB9 delta 185 zcmcb{c!P0*IF~#NGXn!-(Cdp{6BR}3TUuHwDk^evauN~}LPA13JUk2x3{+H9BqStw zcz75X7@QgR?*>wgB|(0{3=Yq3qyagRo-U3d95a&>7?|<|4o)~w(8wtLAev#)Va6Mk z4J^-@VlK^SnAj-mVZy>Nli!S?lSkoTgxj9FHwsBi&72dGgzp~sz;Wbx*@GDjDvK&v l--sw^r8S%sl}(Z0V+h*I^Oo7a<|@z@22WQ%mvv4FO#lpqJoW$p diff --git a/docs/html/index.html b/docs/html/index.html index c433db6a..b176468d 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -1,6 +1,6 @@ - -next -up -previous +next +up +previous -contents +contents
Next: Abstract diff --git a/docs/html/node1.html b/docs/html/node1.html index e902e46f..24009f11 100644 --- a/docs/html/node1.html +++ b/docs/html/node1.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
Next: Contents @@ -94,20 +90,16 @@ the user interface of MLD2P4. -next +next -up +up -previous +previous -contents +contents
Next: Contents diff --git a/docs/html/node10.html b/docs/html/node10.html index 42560731..fd36d9c4 100644 --- a/docs/html/node10.html +++ b/docs/html/node10.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
Next: Multi-level Domain Decomposition Background diff --git a/docs/html/node11.html b/docs/html/node11.html index 4e3097e7..f8a49b76 100644 --- a/docs/html/node11.html +++ b/docs/html/node11.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
Next: Multi-level Schwarz Preconditioners @@ -159,20 +155,16 @@ is referred to [ -next +next -up +up -previous +previous -contents +contents
Next: Multi-level Schwarz Preconditioners diff --git a/docs/html/node12.html b/docs/html/node12.html index 290e5223..99bcdaeb 100644 --- a/docs/html/node12.html +++ b/docs/html/node12.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
Next: Smoothed Aggregation @@ -72,12 +68,12 @@ where $A=(a_{ij}) \in \Re^{n \times n}$ is a nonsingular sparse matrix with a symmetric nonzero pattern, let $G=(W,E)$ be the adjacency graph of $W=\{1, 2, \ldots, n\}$ and $E=\{(i,j) : a_{ij} \neq 0\}$ are the vertex set and the edge set of $G$, respectively. Two vertices are called adjacent if there is an edge connecting them. For any integer $\delta > 0$, a $\delta$-overlap partition of $W$ can be defined recursively as follows. Given a 0-overlap (or non-overlapping) partition of $W$, i.e. a set of $m$ disjoint nonempty sets $W_i^0 \subset W$ such that $\cup_{i=1}^m W_i^0 = W$, a $\delta$-overlap partition of $W$ is obtained by considering the sets $W_i^\delta \supset W_i^{\delta-1}$ obtained by including the vertices that are adjacent to any vertex in $W_i^{\delta-1}$.

Let $n_i^\delta$ be the size of $n_i^\delta$ be the size of $W_i^\delta$ and $R_i^{\delta} \in
 \Re^{n_i^\delta \times n}$ the restriction operator that maps a vector $v \in \Re^n$ onto the vector $v_i^{\delta} \in \Re^{n_i^\delta}$ containing the components of $v$ corresponding to the vertices in $W_i^\delta$. The transpose of $R_i^{\delta}$ is a prolongation operator from $\Re^{n_i^\delta}$ to $\Re^n$. The matrix $A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
 \Re^{n_i^\delta \times n_i^\delta}$ can be considered as a restriction of $A$ corresponding to the set $W_i^{\delta}$.

@@ -230,7 +226,7 @@ M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T \begin{displaymath}
 M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
 (A_i^\delta)^{-1} R_i^{\delta},
@@ -240,27 +236,27 @@ M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
 <P></P>
 where <IMG
  WIDTH= is assumed to be nonsingular. Its application to a vector $v \in \Re^n$ within a Krylov solver requires the following three steps:

  1. restriction of $v$ as $v_i = R_i^{\delta} v$, $v_i = R_i^{\delta} v$, $i=1,\ldots,m$;
  2. solution of the linear systems $A_i^\delta w_i = v_i$, $i=1,\ldots,m$;
  3. prolongation and sum of the $w_i$'s, i.e. $w = \sum_{i=1}^m (R_i^{\delta})^T w_i$.
Note that the linear systems at step 2 are usually solved approximately, e.g. using incomplete LU factorizations such as ILU($p$), MILU($p$) and ILU($p,t$) [20, Chapter 10]. @@ -309,8 +305,8 @@ time on parallel distributed-memory computers is the so-called Restricted AS HREF="node25.html#CAI_SARKIS">5,14]. It is obtained by zeroing the components of $w_i$ corresponding to the overlapping vertices when applying the prolongation. Therefore, RAS differs from classical AS by the prolongation operators, @@ -318,22 +314,22 @@ which are substituted by $(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$, where $\tilde{R}_i^0$ is obtained by zeroing the rows of $R_i^\delta$ corresponding to the vertices in $W_i^\delta \backslash W_i^0$:

@@ -346,7 +342,7 @@ M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T \begin{displaymath}
 M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
 (A_i^\delta)^{-1} R_i^{\delta}.
@@ -367,7 +363,7 @@ M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
 
 <IMG
  WIDTH= @@ -376,19 +372,19 @@ M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T

We note that for $\delta=0$ the three variants of the AS preconditioner are all equal to the block-Jacobi preconditioner.

As already observed, the convergence rate of the one-level Schwarz preconditioned iterative solvers deteriorates as the number $m$ of partitions of $W$ increases [7,21]. To reduce the dependency @@ -396,32 +392,32 @@ of the number of iterations on the degree of parallelism we may introduce a global coupling among the overlapping partitions by defining a coarse-space approximation $A_C$ of the matrix $A$. In a pure algebraic setting, $A_C$ is usually built with the Galerkin approach. Given a set $W_C$ of coarse vertices, with size $n_C$, and a suitable restriction operator $R_C \in \Re^{n_C \times n}$, $A_C$ is defined as

@@ -433,7 +429,7 @@ A_C=R_C A R_C^T \begin{displaymath}
 A_C=R_C A R_C^T
 \end{displaymath} @@ -443,7 +439,7 @@ A_C=R_C A R_C^T and the coarse-level correction matrix to be combined with a generic one-level AS preconditioner $M_{1L}$ is obtained as

@@ -455,7 +451,7 @@ M_{C}^{-1}= R_C^T A_C^{-1} R_C, \begin{displaymath}
 M_{C}^{-1}= R_C^T A_C^{-1} R_C,
 \end{displaymath} @@ -464,28 +460,28 @@ M_{C}^{-1}= R_C^T A_C^{-1} R_C,

where $A_C$ is assumed to be nonsingular. The application of $M_{C}^{-1}$ to a vector $v$ corresponds to a restriction, a solution and a prolongation step; the solution step, involving the matrix $A_C$, may be carried out also approximately.

The combination of $M_{C}$ and $M_{1L}$ may be performed in either an additive or a multiplicative framework. In the former case, the two-level additive Schwarz preconditioner @@ -499,8 +495,8 @@ M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}. --> \begin{displaymath}
 M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
 \end{displaymath} @@ -509,33 +505,33 @@ M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.

Applying $M_{2L-A}^{-1}$ to a vector $v$ within a Krylov solver corresponds to applying $M_{C}^{-1}$ and $M_{1L}^{-1}$ to $v$ independently and then summing up the results.

In the multiplicative case, the combination can be performed by first applying the smoother $M_{1L}^{-1}$ and then the coarse-level correction operator $M_{C}^{-1}$:

@@ -550,7 +546,7 @@ z = w + M_{C}^{-1} (v-Aw); \begin{displaymath}
 \begin{array}{l}
 w = M_{1L}^{-1} v, \\
@@ -570,8 +566,8 @@ M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
  -->
 
 <IMG
- WIDTH= @@ -593,7 +589,7 @@ z = w + M_{1L}^{-1} (v-Aw) , \begin{displaymath}
 \begin{array}{l}
 w = M_{C}^{-1} v , \\
@@ -613,8 +609,8 @@ M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
  -->
 
 <IMG
- WIDTH= @@ -628,10 +624,10 @@ preconditioner is symmetric if $A$, $M_{1L}$ and $M_{C}$ are symmetric.

@@ -655,41 +651,41 @@ referred to [ to a vector $v$, i.e. for the computation of $w=M^{-1}v$, is reported, for example, in Figure 1. Here the number of levels is denoted by $nlev$ and the levels are numbered in increasing order starting from the finest one, i.e. the finest level is level 1; the coarse matrix and the corresponding basic preconditioner at each level $l$ are denoted by $l$ are denoted by $A_l$ and $M_l$, respectively, with $M_l$, respectively, with $A_1=A$, while the related restriction operator is denoted by $R_l$. -

+
@@ -725,13 +721,13 @@ $w = y_1$; --> \framebox{
 \begin{minipage}{.85\textwidth} {\small
 \begin{tabbing}
 \quad \=\quad...
 ...= y_l+r_l$\\
-\textbf{endfor} \ [1mm]
+\textbf{endfor} \\ [1mm]
 $w = y_1$;
 \end{tabbing}}
 \end{minipage}} @@ -745,20 +741,16 @@ $w = y_1$; -next +next -up +up -previous +previous -contents +contents
Next:Smoothed Aggregation diff --git a/docs/html/node13.html b/docs/html/node13.html index a94d4310..aa40bbbb 100644 --- a/docs/html/node13.html +++ b/docs/html/node13.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
Next:Getting Started @@ -62,11 +58,11 @@ Smoothed Aggregation

In order to define the restriction operator $R_C$, which is used to compute the coarse-level matrix $A_C$, MLD2P4 uses the smoothed aggregation algorithm described in [1, by suitably grouping the vertices of $W$ into disjoint subsets (aggregates), and to define the coarse-to-fine space transfer operator $R_C^T$ by applying a suitable smoother to a simple piecewise constant prolongation operator, to improve the quality of the coarse-space correction. @@ -91,27 +87,27 @@ Three main steps can be identified in the smoothed aggregation procedure:

  1. coarsening of the vertex set $W$, to obtain $W_C$;
  2. construction of the prolongator $R_C^T$;
  3. application of $R_C$ and $R_C^T$ to build $A_C$.
@@ -124,14 +120,14 @@ in [ is made of vertices of $W$ that are strongly coupled to a certain root vertex $r \in W$, i.e.

$\theta \in [0,1]$. Since this algorithm has a sequential nature, a decoupled version of it has been chosen, where each processor $i$ independently applies the algorithm to the set of vertices $W_i^0$ assigned to it in the initial data distribution. This version is embarrassingly parallel, since it does not require any data communication. On the other hand, it may produce non-uniform aggregates near boundary vertices, @@ -183,14 +179,14 @@ since it has been shown to produce good results in practice

The prolongator $P_C=R_C^T$ is built starting from a tentative prolongator $P \in \Re^{n \times n_C}$, defined as

@@ -207,7 +203,7 @@ P=(p_{ij}), \quad p_{ij}=
Figure 1: Application of the multi-level hybrid post-smoothed preconditioner.
\begin{displaymath}
 P=(p_{ij}), \quad p_{ij}=
 \left\{ \begin{array}{ll}
@@ -222,17 +218,17 @@ P=(p_{ij}), \quad p_{ij}=
 <BR CLEAR=

$P_C$ is obtained by applying to $P$ a smoother $S \in \Re^{n \times n}$:
@@ -245,7 +241,7 @@ P_C = S P, @@ -260,7 +256,7 @@ Schwarz method [23]. A simple choice for $S$ is the damped Jacobi smoother:
@@ -273,7 +269,7 @@ S = I - \omega D^{-1} A ,
\begin{displaymath}
 P_C = S P,
 \end{displaymath}
@@ -282,12 +278,12 @@ S = I - \omega D^{-1} A ,
\begin{displaymath}
 S = I - \omega D^{-1} A ,
 \end{displaymath}

where the value of $\omega$ can be chosen using some estimate of the spectral radius of $D^{-1}A$ [1]. @@ -296,20 +292,16 @@ using some estimate of the spectral radius of -next +next -up +up -previous +previous -contents +contents
Next: Getting Started diff --git a/docs/html/node14.html b/docs/html/node14.html index cc752241..c73b0645 100644 --- a/docs/html/node14.html +++ b/docs/html/node14.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
Next: Examples @@ -144,7 +140,7 @@ compilers.


-
+
Table 1: Preconditioner types, corresponding strings and default choices. @@ -185,7 +181,7 @@ Preconditioner types, corresponding strings and default choices. Aggregation: decoupled smoothed aggregation with threshold $\theta = 0$. Coarsest matrix: distributed among the processors. Coarsest-level solver: @@ -218,20 +214,16 @@ Preconditioner types, corresponding strings and default choices. -next +next -up +up -previous +previous -contents +contents
Next: Examples diff --git a/docs/html/node15.html b/docs/html/node15.html index f6778b76..6ab5b6a5 100644 --- a/docs/html/node15.html +++ b/docs/html/node15.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
Next: User Interface @@ -90,7 +86,7 @@ the corresponding Fortran 95 codes are available in examples/fileread/ -
+
Figure 2: Setup and application of the default multi-level Schwarz preconditioner. @@ -207,7 +203,7 @@ and linked to the MLD2P4 library.

-

+
@@ -239,7 +235,7 @@ Setup of a hybrid three-level Schwarz preconditioner.

-

+
Figure 3: Setup of a hybrid three-level Schwarz preconditioner.
@@ -271,7 +267,7 @@ Setup of an additive three-level Schwarz preconditioner.

-

+
Figure 4: Setup of an additive three-level Schwarz preconditioner.
@@ -299,20 +295,16 @@ Setup of a one-level Schwarz preconditioner. -next +next -up +up -previous +previous -contents +contents
Next:User Interface diff --git a/docs/html/node16.html b/docs/html/node16.html index ff796559..93ac7aee 100644 --- a/docs/html/node16.html +++ b/docs/html/node16.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
Next:Subroutine mld_precinit @@ -87,15 +83,15 @@ i.e. matrix data structure;
  • the arrays containing the vectors $v$ and $w$ involved in the preconditioner application $w=M^{-1}v$ must be of type type(kind_parameter), with type = real, complex and kind_parameter = kind(1.e0), @@ -137,20 +133,16 @@ A description of each routine is given in the remainder of this section. -next +next -up +up -previous +previous -contents +contents
    Next: Subroutine mld_precinit diff --git a/docs/html/node17.html b/docs/html/node17.html index 82e194ed..aff67be0 100644 --- a/docs/html/node17.html +++ b/docs/html/node17.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next: Subroutine mld_precset @@ -117,20 +113,16 @@ according to the preconditioner type chosen by the user. -next +next -up +up -previous +previous -contents +contents
    Next: Subroutine mld_precset diff --git a/docs/html/node18.html b/docs/html/node18.html index 673beb5d..9098b0c4 100644 --- a/docs/html/node18.html +++ b/docs/html/node18.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next: Subroutine mld_precbld @@ -137,7 +133,7 @@ refer to Section 4.


    -
    +
  • Figure 5: Setup of a one-level Schwarz preconditioner.
    Table 2: Parameters defining the type of multi-level preconditioner. @@ -181,7 +177,7 @@ Parameters defining the type of multi-level preconditioner.


    -
    +
    @@ -227,13 +223,13 @@ Parameters defining the one-level preconditioner used as smoother. @@ -241,27 +237,27 @@ Parameters defining the one-level preconditioner used as smoother. @@ -281,7 +277,7 @@ Parameters defining the one-level preconditioner used as smoother.


    -
    +
    Table 3: Parameters defining the one-level preconditioner used as smoother. @@ -199,7 +195,7 @@ Parameters defining the one-level preconditioner used as smoother.
    integer any int. num. $\ge 0$ 1 Number of overlap layers.'ILU' Local solver: ILU($p$), MILU($p$), ILU($p,t$), LU from UMFPACK, LU from SuperLU (plus triangular solve).
    integer Any int. num. $\ge 0$ 0 Fill-in level $p$ of the incomplete LU factorizations.
    mld_sub_iluthrs_ real(kind_parameter) Any real num. $\ge 0$ 0 Drop tolerance $t$ in the ILU($p,t$) factorization.
    mld_sub_ren_
    @@ -326,14 +322,14 @@ Parameters defining the aggregation algorithm. @@ -343,7 +339,7 @@ Parameters defining the aggregation algorithm. @@ -356,11 +352,11 @@ Parameters defining the aggregation algorithm. --> $4/(3\rho(D^{-1}A))$
    Table 4: Parameters defining the aggregation algorithm. @@ -313,12 +309,12 @@ Parameters defining the aggregation algorithm.
    real(kind_parameter) Any real num. $\in [0, 1]$ 0 Threshold $\theta$ in the aggregation algorithm.
    mld_aggr_omega_alg_'EIG_EST' 'USER_CHOICE' 'EIG_EST' How the damping parameter $\omega$ in the smoothed aggregation should be computed: either via an estimate of the spectral radius of $D^{-1}A$, or explicily specified by the user.
    'A_NORMI' How to estimate the spectral radius of $D^{-1}A$. Currently only the infinity norm estimate is available. Damping parameter $\omega$ in the smoothed aggregation algorithm. It must be set by the user if USER_CHOICE was specified for @@ -368,11 +364,11 @@ Parameters defining the aggregation algorithm. otherwise it is computed by the library, using the selected estimate of the spectral radius $\rho(D^{-1}A)$ of $D^{-1}A$.
    @@ -384,7 +380,7 @@ Parameters defining the aggregation algorithm.


    -
    +
    in case the block Jacobi solver is chosen as coarsest-level solver: ILU($p$), MILU($p$), ILU($p,t$), LU from UMFPACK, LU from SuperLU, plus triangular solve. @@ -442,7 +438,7 @@ level. @@ -109,8 +105,8 @@ and hence it is completely transparent to the user. @@ -121,7 +117,7 @@ and hence it is completely transparent to the user. @@ -148,28 +144,28 @@ and hence it is completely transparent to the user. --> $op(M^{-1}) = M^{-1}$; if trans = 'T','t' then $op(M^{-1}) = M^{-T}$ (transpose of $M^{-1})$; if trans = 'C','c' then $op(M^{-1}) = M^{-C}$ (conjugate transpose of $M^{-1})$. @@ -190,20 +186,16 @@ and hence it is completely transparent to the user. -next +next -up +up -previous +previous -contents +contents
    Next:Subroutine mld_precfree diff --git a/docs/html/node21.html b/docs/html/node21.html index 4f9a0fdf..03872d3b 100644 --- a/docs/html/node21.html +++ b/docs/html/node21.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Subroutine mld_precdescr diff --git a/docs/html/node22.html b/docs/html/node22.html index dca926a1..e4301cc0 100644 --- a/docs/html/node22.html +++ b/docs/html/node22.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Error Handling diff --git a/docs/html/node23.html b/docs/html/node23.html index 358f6835..c7307d78 100644 --- a/docs/html/node23.html +++ b/docs/html/node23.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:License diff --git a/docs/html/node24.html b/docs/html/node24.html index a5335df2..e3fd7c4d 100644 --- a/docs/html/node24.html +++ b/docs/html/node24.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Bibliography diff --git a/docs/html/node25.html b/docs/html/node25.html index ed275977..dbcf69df 100644 --- a/docs/html/node25.html +++ b/docs/html/node25.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:About this document ... diff --git a/docs/html/node26.html b/docs/html/node26.html index e2a9045f..3aa01cfb 100644 --- a/docs/html/node26.html +++ b/docs/html/node26.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Up:userhtml @@ -54,7 +50,7 @@ About this document ...

    This document was generated using the -LaTeX2HTML translator Version 2002-2-1 (1.71) +LaTeX2HTML translator Version 2008 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, @@ -65,9 +61,9 @@ Copyright © 1997, 1998, 1999, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    - latex2html -noaddress -dir ../../html userhtml.tex + latex2html -local_icons -noaddress -dir ../../html userhtml.tex

    -The translation was initiated by Salvatore Filippone on 2009-03-16 +The translation was initiated by Salvatore Filippone on 2011-03-25


    diff --git a/docs/html/node3.html b/docs/html/node3.html index d93d0af8..7cfba9b4 100644 --- a/docs/html/node3.html +++ b/docs/html/node3.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Code Distribution @@ -170,20 +166,16 @@ of MLD2P4 are reported in Appendix A. -next +next -up +up -previous +previous -contents +contents
    Next:Code Distribution diff --git a/docs/html/node4.html b/docs/html/node4.html index 835b4176..edcb0636 100644 --- a/docs/html/node4.html +++ b/docs/html/node4.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Configuring and Building MLD2P4 @@ -74,6 +70,26 @@ in Appendix A; please note that some third party libraries may be licensed under a different and more stringent license, most notably the GPL, and this should be taken into account when treating derived works. + +

    +The library defines a version string with the +constant +

    +
    + + +\begin{displaymath}\verb\vert mld_version_string_\vert\end{displaymath} +
    +
    +

    +whose current value is 2.0.0

    diff --git a/docs/html/node5.html b/docs/html/node5.html index 87c6b4fa..f09ab62c 100644 --- a/docs/html/node5.html +++ b/docs/html/node5.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Prerequisites diff --git a/docs/html/node6.html b/docs/html/node6.html index 2f151873..466b496e 100644 --- a/docs/html/node6.html +++ b/docs/html/node6.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Optional third party libraries @@ -119,20 +115,16 @@ compiler as MLD2P4. -next +next -up +up -previous +previous -contents +contents
    Next:Optional third party libraries diff --git a/docs/html/node7.html b/docs/html/node7.html index 3e8e62e6..0b4146fb 100644 --- a/docs/html/node7.html +++ b/docs/html/node7.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Configuration options diff --git a/docs/html/node8.html b/docs/html/node8.html index d4232a05..ff2e8a8d 100644 --- a/docs/html/node8.html +++ b/docs/html/node8.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Bug reporting diff --git a/docs/html/node9.html b/docs/html/node9.html index f38eafe8..02327024 100644 --- a/docs/html/node9.html +++ b/docs/html/node9.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next:Example and test programs diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index c433db6a..b176468d 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -1,6 +1,6 @@ - -next -up -previous +next +up +previous -contents +contents
    Next:Abstract diff --git a/docs/mld2p4-1.1-guide.pdf b/docs/mld2p4-1.1-guide.pdf index 53ace0ee..92a5c8d4 100644 --- a/docs/mld2p4-1.1-guide.pdf +++ b/docs/mld2p4-1.1-guide.pdf @@ -921,7 +921,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 198 0 obj << -/Length 1367 +/Length 1682 >> stream 0 g 0 G @@ -938,7 +938,7 @@ BT 0 0 1 rg 0 0 1 RG [-299(A)]TJ 0 g 0 G - [(;)]TJ -16.937 -13.549 Td [(please)-448(note)-448(that)-448(some)-448(of)-448(the)-448(optional)-448(third)-448(part)28(y)-448(libraries)-448(ma)28(y)-448(b)-28(e)-448(licensed)-448(under)-448(a)]TJ 0 -13.55 Td [(di\013eren)28(t)-366(and)-366(more)-366(stringen)28(t)-366(license,)-374(most)-366(notably)-366(the)-366(GPL,)-366(and)-365(this)-366(should)-366(b)-28(e)-366(tak)28(en)]TJ 0 -13.549 Td [(in)28(to)-333(ac)-1(coun)28(t)-333(when)-333(treating)-334(deriv)28(ed)-333(w)28(orks.)]TJ + [(;)]TJ -16.937 -13.549 Td [(please)-448(note)-448(that)-448(some)-448(of)-448(the)-448(optional)-448(third)-448(part)28(y)-448(libraries)-448(ma)28(y)-448(b)-28(e)-448(licensed)-448(under)-448(a)]TJ 0 -13.55 Td [(di\013eren)28(t)-366(and)-366(more)-366(stringen)28(t)-366(license,)-374(most)-366(notably)-366(the)-366(GPL,)-366(and)-365(this)-366(should)-366(b)-28(e)-366(tak)28(en)]TJ 0 -13.549 Td [(in)28(to)-333(ac)-1(coun)28(t)-333(when)-333(treating)-334(deriv)28(ed)-333(w)28(orks.)]TJ 16.937 -13.549 Td [(The)-333(library)-333(de\014nes)-334(a)-333(v)28(ersion)-334(string)-333(with)-333(the)-334(constan)28(t)]TJ/F44 10.9091 Tf 134.88 -24.508 Td [(mld_version_string_)]TJ/F15 10.9091 Tf -151.817 -24.508 Td [(whose)-333(curren)27(t)-333(v)56(alue)-334(is)]TJ/F44 10.9091 Tf 109.273 0 Td [(2.0.0)]TJ 0 g 0 G 0 g 0 G ET @@ -7542,8 +7542,8 @@ endobj >> endobj 572 0 obj << /Title (MultiLevel Domain Decomposition Parallel Preconditioners Package based on PSBLAS, V. 1.1) /Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package) /Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI) /Creator (pdfLaTeX) /Producer ($Id: userguide.tex 2008-04-08 Pasqua D'Ambra, Daniela di Serafino, Salvatore Filippone$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords() -/CreationDate (D:20090316094411+01'00') -/ModDate (D:20090316094411+01'00') +/CreationDate (D:20110325175553+01'00') +/ModDate (D:20110325175553+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6) >> endobj @@ -7556,103 +7556,103 @@ xref 0000000000 00000 f 0000000015 00000 n 0000003828 00000 n -0000426321 00000 n +0000426636 00000 n 0000000058 00000 n 0000000109 00000 n 0000008284 00000 n -0000426249 00000 n +0000426564 00000 n 0000000155 00000 n 0000000182 00000 n 0000029345 00000 n -0000426163 00000 n +0000426478 00000 n 0000000228 00000 n 0000000265 00000 n -0000036761 00000 n -0000426077 00000 n +0000037076 00000 n +0000426392 00000 n 0000000311 00000 n 0000000349 00000 n -0000045442 00000 n -0000425954 00000 n +0000045757 00000 n +0000426269 00000 n 0000000395 00000 n 0000000447 00000 n -0000045500 00000 n -0000425880 00000 n +0000045815 00000 n +0000426195 00000 n 0000000498 00000 n 0000000534 00000 n -0000052184 00000 n -0000425793 00000 n +0000052499 00000 n +0000426108 00000 n 0000000585 00000 n 0000000638 00000 n -0000052242 00000 n -0000425706 00000 n +0000052557 00000 n +0000426021 00000 n 0000000689 00000 n 0000000733 00000 n -0000065967 00000 n -0000425619 00000 n +0000066282 00000 n +0000425934 00000 n 0000000784 00000 n 0000000820 00000 n -0000066025 00000 n -0000425545 00000 n +0000066340 00000 n +0000425860 00000 n 0000000871 00000 n 0000000919 00000 n -0000075608 00000 n -0000425422 00000 n +0000075923 00000 n +0000425737 00000 n 0000000965 00000 n 0000001029 00000 n -0000092679 00000 n -0000425348 00000 n +0000092994 00000 n +0000425663 00000 n 0000001080 00000 n 0000001138 00000 n -0000120628 00000 n -0000425274 00000 n +0000120943 00000 n +0000425589 00000 n 0000001189 00000 n 0000001232 00000 n -0000148797 00000 n -0000425151 00000 n +0000149112 00000 n +0000425466 00000 n 0000001278 00000 n 0000001314 00000 n -0000159061 00000 n -0000425090 00000 n +0000159376 00000 n +0000425405 00000 n 0000001365 00000 n 0000001396 00000 n -0000185307 00000 n -0000424967 00000 n +0000185622 00000 n +0000425282 00000 n 0000001442 00000 n 0000001477 00000 n -0000189354 00000 n -0000424893 00000 n +0000189669 00000 n +0000425208 00000 n 0000001528 00000 n 0000001577 00000 n -0000196167 00000 n -0000424806 00000 n +0000196482 00000 n +0000425121 00000 n 0000001628 00000 n 0000001676 00000 n -0000237378 00000 n -0000424719 00000 n +0000237693 00000 n +0000425034 00000 n 0000001727 00000 n 0000001775 00000 n -0000247064 00000 n -0000424632 00000 n +0000247379 00000 n +0000424947 00000 n 0000001826 00000 n 0000001875 00000 n -0000249430 00000 n -0000424545 00000 n +0000249745 00000 n +0000424860 00000 n 0000001926 00000 n 0000001975 00000 n -0000252292 00000 n -0000424471 00000 n +0000252607 00000 n +0000424786 00000 n 0000002026 00000 n 0000002076 00000 n -0000254853 00000 n -0000424385 00000 n +0000255168 00000 n +0000424700 00000 n 0000002122 00000 n 0000002157 00000 n -0000259271 00000 n -0000424297 00000 n +0000259586 00000 n +0000424612 00000 n 0000002204 00000 n 0000002233 00000 n -0000266368 00000 n -0000424221 00000 n +0000266683 00000 n +0000424536 00000 n 0000002281 00000 n 0000002311 00000 n 0000003591 00000 n @@ -7660,10 +7660,10 @@ xref 0000002363 00000 n 0000003710 00000 n 0000003769 00000 n -0000420652 00000 n -0000422792 00000 n -0000421800 00000 n -0000423080 00000 n +0000420967 00000 n +0000423107 00000 n +0000422115 00000 n +0000423395 00000 n 0000004252 00000 n 0000004074 00000 n 0000003983 00000 n @@ -7672,8 +7672,8 @@ xref 0000008106 00000 n 0000004293 00000 n 0000008225 00000 n -0000421657 00000 n -0000420796 00000 n +0000421972 00000 n +0000421111 00000 n 0000008756 00000 n 0000008578 00000 n 0000008440 00000 n @@ -7707,7 +7707,7 @@ xref 0000008828 00000 n 0000019351 00000 n 0000019410 00000 n -0000420508 00000 n +0000420823 00000 n 0000019883 00000 n 0000019705 00000 n 0000019567 00000 n @@ -7722,17 +7722,17 @@ xref 0000029464 00000 n 0000028057 00000 n 0000019955 00000 n -0000422648 00000 n +0000422963 00000 n 0000029403 00000 n -0000421084 00000 n -0000422225 00000 n -0000423197 00000 n -0000274584 00000 n -0000266427 00000 n -0000274820 00000 n -0000274289 00000 n -0000274230 00000 n -0000274643 00000 n +0000421399 00000 n +0000422540 00000 n +0000423512 00000 n +0000274899 00000 n +0000266742 00000 n +0000275135 00000 n +0000274604 00000 n +0000274545 00000 n +0000274958 00000 n 0000033680 00000 n 0000033832 00000 n 0000033984 00000 n @@ -7743,390 +7743,390 @@ xref 0000034740 00000 n 0000033493 00000 n 0000029601 00000 n -0000036549 00000 n -0000036398 00000 n -0000036819 00000 n -0000036251 00000 n +0000036864 00000 n +0000036713 00000 n +0000037134 00000 n +0000036566 00000 n 0000034825 00000 n -0000036702 00000 n -0000422936 00000 n -0000044155 00000 n -0000044308 00000 n -0000044461 00000 n -0000044614 00000 n -0000044765 00000 n -0000044916 00000 n -0000045069 00000 n -0000045227 00000 n -0000045558 00000 n -0000043960 00000 n -0000036930 00000 n -0000045383 00000 n -0000267016 00000 n -0000267075 00000 n -0000274407 00000 n -0000274348 00000 n -0000274112 00000 n -0000051658 00000 n -0000051813 00000 n -0000051966 00000 n -0000051507 00000 n -0000052300 00000 n -0000051344 00000 n -0000045682 00000 n -0000052125 00000 n -0000266899 00000 n -0000266957 00000 n -0000274466 00000 n -0000056479 00000 n -0000056301 00000 n -0000052437 00000 n -0000056420 00000 n -0000060645 00000 n -0000060855 00000 n -0000060506 00000 n -0000056577 00000 n -0000060796 00000 n -0000423314 00000 n -0000066083 00000 n -0000065789 00000 n -0000060953 00000 n -0000065908 00000 n -0000074774 00000 n -0000074936 00000 n -0000075090 00000 n -0000075244 00000 n -0000075397 00000 n -0000090888 00000 n -0000074623 00000 n -0000075666 00000 n -0000074444 00000 n -0000066194 00000 n -0000075549 00000 n -0000266722 00000 n -0000266781 00000 n -0000091049 00000 n -0000091209 00000 n -0000091374 00000 n -0000091533 00000 n -0000091688 00000 n -0000091843 00000 n -0000091999 00000 n -0000092157 00000 n -0000092311 00000 n -0000092463 00000 n -0000107342 00000 n -0000107499 00000 n -0000092914 00000 n -0000090669 00000 n -0000075777 00000 n -0000092620 00000 n -0000421514 00000 n -0000422508 00000 n -0000422084 00000 n -0000421228 00000 n -0000420941 00000 n -0000092737 00000 n -0000092796 00000 n -0000092855 00000 n -0000274702 00000 n -0000274761 00000 n -0000266486 00000 n -0000266545 00000 n -0000266604 00000 n -0000266840 00000 n -0000274525 00000 n +0000037017 00000 n +0000423251 00000 n +0000044470 00000 n +0000044623 00000 n +0000044776 00000 n +0000044929 00000 n +0000045080 00000 n +0000045231 00000 n +0000045384 00000 n +0000045542 00000 n +0000045873 00000 n +0000044275 00000 n +0000037245 00000 n +0000045698 00000 n +0000267331 00000 n +0000267390 00000 n +0000274722 00000 n +0000274663 00000 n +0000274427 00000 n +0000051973 00000 n +0000052128 00000 n +0000052281 00000 n +0000051822 00000 n +0000052615 00000 n +0000051659 00000 n +0000045997 00000 n +0000052440 00000 n +0000267214 00000 n +0000267272 00000 n +0000274781 00000 n +0000056794 00000 n +0000056616 00000 n +0000052752 00000 n +0000056735 00000 n +0000060960 00000 n +0000061170 00000 n +0000060821 00000 n +0000056892 00000 n +0000061111 00000 n +0000423629 00000 n +0000066398 00000 n +0000066104 00000 n +0000061268 00000 n +0000066223 00000 n +0000075089 00000 n +0000075251 00000 n +0000075405 00000 n +0000075559 00000 n +0000075712 00000 n +0000091203 00000 n +0000074938 00000 n +0000075981 00000 n +0000074759 00000 n +0000066509 00000 n +0000075864 00000 n +0000267037 00000 n +0000267096 00000 n +0000091364 00000 n +0000091524 00000 n +0000091689 00000 n +0000091848 00000 n +0000092003 00000 n +0000092158 00000 n +0000092314 00000 n +0000092472 00000 n +0000092626 00000 n +0000092778 00000 n 0000107657 00000 n -0000107811 00000 n -0000107191 00000 n -0000108024 00000 n -0000107020 00000 n -0000093116 00000 n -0000107965 00000 n -0000266663 00000 n -0000274171 00000 n -0000119783 00000 n -0000119936 00000 n -0000120089 00000 n -0000120240 00000 n -0000120401 00000 n -0000120686 00000 n -0000119612 00000 n -0000108213 00000 n -0000120569 00000 n -0000132596 00000 n -0000131742 00000 n -0000131898 00000 n -0000132065 00000 n -0000132221 00000 n -0000132377 00000 n -0000131591 00000 n -0000132834 00000 n -0000131412 00000 n -0000120875 00000 n -0000132537 00000 n -0000421943 00000 n -0000421371 00000 n -0000422368 00000 n -0000132658 00000 n -0000132717 00000 n -0000132776 00000 n -0000423431 00000 n -0000137138 00000 n -0000137299 00000 n -0000137461 00000 n -0000137865 00000 n -0000136983 00000 n -0000133048 00000 n -0000137620 00000 n -0000137679 00000 n -0000137741 00000 n -0000137803 00000 n -0000147360 00000 n -0000147519 00000 n -0000147667 00000 n -0000147822 00000 n -0000147974 00000 n -0000148123 00000 n -0000148273 00000 n -0000148424 00000 n -0000148581 00000 n -0000158178 00000 n -0000158333 00000 n -0000158489 00000 n -0000147209 00000 n -0000149209 00000 n -0000146998 00000 n -0000138054 00000 n -0000148738 00000 n -0000148855 00000 n -0000148914 00000 n -0000148973 00000 n -0000149032 00000 n -0000149091 00000 n -0000149150 00000 n -0000159000 00000 n -0000201350 00000 n -0000233142 00000 n -0000158641 00000 n -0000158791 00000 n -0000159119 00000 n -0000158007 00000 n -0000149333 00000 n -0000158941 00000 n -0000174110 00000 n -0000168641 00000 n -0000168796 00000 n -0000168955 00000 n -0000169107 00000 n -0000169258 00000 n -0000169413 00000 n -0000169563 00000 n -0000169713 00000 n -0000169863 00000 n -0000170014 00000 n -0000170165 00000 n -0000168490 00000 n -0000170375 00000 n -0000168263 00000 n +0000107814 00000 n +0000093229 00000 n +0000090984 00000 n +0000076092 00000 n +0000092935 00000 n +0000421829 00000 n +0000422823 00000 n +0000422399 00000 n +0000421543 00000 n +0000421256 00000 n +0000093052 00000 n +0000093111 00000 n +0000093170 00000 n +0000275017 00000 n +0000275076 00000 n +0000266801 00000 n +0000266860 00000 n +0000266919 00000 n +0000267155 00000 n +0000274840 00000 n +0000107972 00000 n +0000108126 00000 n +0000107506 00000 n +0000108339 00000 n +0000107335 00000 n +0000093431 00000 n +0000108280 00000 n +0000266978 00000 n +0000274486 00000 n +0000120098 00000 n +0000120251 00000 n +0000120404 00000 n +0000120555 00000 n +0000120716 00000 n +0000121001 00000 n +0000119927 00000 n +0000108528 00000 n +0000120884 00000 n +0000132911 00000 n +0000132057 00000 n +0000132213 00000 n +0000132380 00000 n +0000132536 00000 n +0000132692 00000 n +0000131906 00000 n +0000133149 00000 n +0000131727 00000 n +0000121190 00000 n +0000132852 00000 n +0000422258 00000 n +0000421686 00000 n +0000422683 00000 n +0000132973 00000 n +0000133032 00000 n +0000133091 00000 n +0000423746 00000 n +0000137453 00000 n +0000137614 00000 n +0000137776 00000 n +0000138180 00000 n +0000137298 00000 n +0000133363 00000 n +0000137935 00000 n +0000137994 00000 n +0000138056 00000 n +0000138118 00000 n +0000147675 00000 n +0000147834 00000 n +0000147982 00000 n +0000148137 00000 n +0000148289 00000 n +0000148438 00000 n +0000148588 00000 n +0000148739 00000 n +0000148896 00000 n +0000158493 00000 n +0000158648 00000 n +0000158804 00000 n +0000147524 00000 n +0000149524 00000 n +0000147313 00000 n +0000138369 00000 n +0000149053 00000 n +0000149170 00000 n +0000149229 00000 n +0000149288 00000 n +0000149347 00000 n +0000149406 00000 n +0000149465 00000 n +0000159315 00000 n +0000201665 00000 n +0000233457 00000 n +0000158956 00000 n +0000159106 00000 n +0000159434 00000 n +0000158322 00000 n +0000149648 00000 n 0000159256 00000 n -0000170316 00000 n -0000177701 00000 n -0000177763 00000 n -0000177825 00000 n -0000174171 00000 n -0000173932 00000 n -0000170486 00000 n -0000174051 00000 n -0000177491 00000 n -0000177887 00000 n -0000177352 00000 n -0000174269 00000 n -0000177642 00000 n -0000423548 00000 n -0000185091 00000 n -0000185365 00000 n -0000184952 00000 n -0000177985 00000 n -0000185248 00000 n -0000188995 00000 n -0000189143 00000 n -0000188844 00000 n -0000189412 00000 n -0000188689 00000 n -0000185541 00000 n -0000189295 00000 n -0000194908 00000 n -0000195057 00000 n -0000195207 00000 n -0000195357 00000 n -0000195507 00000 n -0000195659 00000 n -0000195807 00000 n -0000195956 00000 n -0000196461 00000 n -0000194713 00000 n -0000189536 00000 n -0000196108 00000 n -0000196225 00000 n -0000196284 00000 n -0000196343 00000 n -0000196402 00000 n -0000201140 00000 n -0000201413 00000 n -0000201001 00000 n -0000196585 00000 n -0000201291 00000 n -0000211516 00000 n -0000211274 00000 n -0000201511 00000 n -0000211393 00000 n -0000211452 00000 n -0000222081 00000 n -0000222353 00000 n -0000221942 00000 n -0000211653 00000 n -0000222232 00000 n -0000222291 00000 n -0000423665 00000 n -0000233204 00000 n -0000232964 00000 n -0000222516 00000 n -0000233083 00000 n -0000236849 00000 n -0000237008 00000 n -0000237167 00000 n -0000236698 00000 n -0000237436 00000 n -0000236535 00000 n -0000233354 00000 n -0000237319 00000 n -0000246854 00000 n -0000247122 00000 n -0000246715 00000 n -0000237560 00000 n -0000247005 00000 n -0000249219 00000 n -0000249068 00000 n -0000249488 00000 n -0000248921 00000 n -0000247298 00000 n -0000249371 00000 n -0000252081 00000 n -0000252350 00000 n -0000251942 00000 n -0000249612 00000 n -0000252233 00000 n -0000254635 00000 n -0000254484 00000 n -0000254911 00000 n -0000254337 00000 n -0000252474 00000 n -0000254794 00000 n -0000423782 00000 n -0000259329 00000 n -0000259093 00000 n -0000255022 00000 n -0000259212 00000 n -0000267134 00000 n -0000266190 00000 n -0000259440 00000 n -0000266309 00000 n -0000274879 00000 n -0000273934 00000 n -0000267258 00000 n -0000274053 00000 n -0000274990 00000 n -0000275015 00000 n -0000275246 00000 n +0000174425 00000 n +0000168956 00000 n +0000169111 00000 n +0000169270 00000 n +0000169422 00000 n +0000169573 00000 n +0000169728 00000 n +0000169878 00000 n +0000170028 00000 n +0000170178 00000 n +0000170329 00000 n +0000170480 00000 n +0000168805 00000 n +0000170690 00000 n +0000168578 00000 n +0000159571 00000 n +0000170631 00000 n +0000178016 00000 n +0000178078 00000 n +0000178140 00000 n +0000174486 00000 n +0000174247 00000 n +0000170801 00000 n +0000174366 00000 n +0000177806 00000 n +0000178202 00000 n +0000177667 00000 n +0000174584 00000 n +0000177957 00000 n +0000423863 00000 n +0000185406 00000 n +0000185680 00000 n +0000185267 00000 n +0000178300 00000 n +0000185563 00000 n +0000189310 00000 n +0000189458 00000 n +0000189159 00000 n +0000189727 00000 n +0000189004 00000 n +0000185856 00000 n +0000189610 00000 n +0000195223 00000 n +0000195372 00000 n +0000195522 00000 n +0000195672 00000 n +0000195822 00000 n +0000195974 00000 n +0000196122 00000 n +0000196271 00000 n +0000196776 00000 n +0000195028 00000 n +0000189851 00000 n +0000196423 00000 n +0000196540 00000 n +0000196599 00000 n +0000196658 00000 n +0000196717 00000 n +0000201455 00000 n +0000201728 00000 n +0000201316 00000 n +0000196900 00000 n +0000201606 00000 n +0000211831 00000 n +0000211589 00000 n +0000201826 00000 n +0000211708 00000 n +0000211767 00000 n +0000222396 00000 n +0000222668 00000 n +0000222257 00000 n +0000211968 00000 n +0000222547 00000 n +0000222606 00000 n +0000423980 00000 n +0000233519 00000 n +0000233279 00000 n +0000222831 00000 n +0000233398 00000 n +0000237164 00000 n +0000237323 00000 n +0000237482 00000 n +0000237013 00000 n +0000237751 00000 n +0000236850 00000 n +0000233669 00000 n +0000237634 00000 n +0000247169 00000 n +0000247437 00000 n +0000247030 00000 n +0000237875 00000 n +0000247320 00000 n +0000249534 00000 n +0000249383 00000 n +0000249803 00000 n +0000249236 00000 n +0000247613 00000 n +0000249686 00000 n +0000252396 00000 n +0000252665 00000 n +0000252257 00000 n +0000249927 00000 n +0000252548 00000 n +0000254950 00000 n +0000254799 00000 n +0000255226 00000 n +0000254652 00000 n +0000252789 00000 n +0000255109 00000 n +0000424097 00000 n +0000259644 00000 n +0000259408 00000 n +0000255337 00000 n +0000259527 00000 n +0000267449 00000 n +0000266505 00000 n +0000259755 00000 n +0000266624 00000 n +0000275194 00000 n +0000274249 00000 n +0000267573 00000 n +0000274368 00000 n 0000275305 00000 n -0000276001 00000 n -0000276565 00000 n -0000276668 00000 n -0000276705 00000 n -0000277334 00000 n -0000277729 00000 n -0000278365 00000 n -0000278986 00000 n -0000279655 00000 n -0000280270 00000 n -0000280782 00000 n -0000281426 00000 n -0000281910 00000 n -0000282267 00000 n -0000282908 00000 n -0000294533 00000 n -0000294896 00000 n -0000305168 00000 n -0000305531 00000 n -0000315232 00000 n -0000315581 00000 n -0000318953 00000 n -0000319279 00000 n -0000329043 00000 n -0000329372 00000 n -0000331720 00000 n -0000331948 00000 n -0000334706 00000 n -0000334933 00000 n -0000340916 00000 n -0000341175 00000 n -0000358680 00000 n -0000359250 00000 n -0000367966 00000 n -0000368317 00000 n -0000370334 00000 n -0000370559 00000 n -0000372922 00000 n -0000373157 00000 n -0000376627 00000 n -0000376973 00000 n -0000378396 00000 n -0000378621 00000 n -0000380228 00000 n -0000380462 00000 n -0000396323 00000 n -0000396737 00000 n -0000404077 00000 n -0000404358 00000 n -0000419950 00000 n -0000423883 00000 n -0000424001 00000 n -0000424078 00000 n -0000424148 00000 n -0000426419 00000 n -0000426592 00000 n -0000426758 00000 n -0000426927 00000 n -0000427160 00000 n -0000427373 00000 n -0000427619 00000 n -0000427819 00000 n -0000428017 00000 n -0000428191 00000 n -0000428361 00000 n -0000428530 00000 n -0000428700 00000 n -0000428869 00000 n -0000429034 00000 n -0000429201 00000 n -0000429387 00000 n -0000429582 00000 n -0000429802 00000 n -0000430022 00000 n -0000430190 00000 n -0000430307 00000 n -0000430419 00000 n -0000430535 00000 n -0000430619 00000 n -0000430714 00000 n -0000430752 00000 n -0000430949 00000 n +0000275330 00000 n +0000275561 00000 n +0000275620 00000 n +0000276316 00000 n +0000276880 00000 n +0000276983 00000 n +0000277020 00000 n +0000277649 00000 n +0000278044 00000 n +0000278680 00000 n +0000279301 00000 n +0000279970 00000 n +0000280585 00000 n +0000281097 00000 n +0000281741 00000 n +0000282225 00000 n +0000282582 00000 n +0000283223 00000 n +0000294848 00000 n +0000295211 00000 n +0000305483 00000 n +0000305846 00000 n +0000315547 00000 n +0000315896 00000 n +0000319268 00000 n +0000319594 00000 n +0000329358 00000 n +0000329687 00000 n +0000332035 00000 n +0000332263 00000 n +0000335021 00000 n +0000335248 00000 n +0000341231 00000 n +0000341490 00000 n +0000358995 00000 n +0000359565 00000 n +0000368281 00000 n +0000368632 00000 n +0000370649 00000 n +0000370874 00000 n +0000373237 00000 n +0000373472 00000 n +0000376942 00000 n +0000377288 00000 n +0000378711 00000 n +0000378936 00000 n +0000380543 00000 n +0000380777 00000 n +0000396638 00000 n +0000397052 00000 n +0000404392 00000 n +0000404673 00000 n +0000420265 00000 n +0000424198 00000 n +0000424316 00000 n +0000424393 00000 n +0000424463 00000 n +0000426734 00000 n +0000426907 00000 n +0000427073 00000 n +0000427242 00000 n +0000427475 00000 n +0000427688 00000 n +0000427934 00000 n +0000428134 00000 n +0000428332 00000 n +0000428506 00000 n +0000428676 00000 n +0000428845 00000 n +0000429015 00000 n +0000429184 00000 n +0000429349 00000 n +0000429516 00000 n +0000429702 00000 n +0000429897 00000 n +0000430117 00000 n +0000430337 00000 n +0000430505 00000 n +0000430622 00000 n +0000430734 00000 n +0000430850 00000 n +0000430934 00000 n +0000431029 00000 n +0000431067 00000 n +0000431264 00000 n trailer << /Size 573 /Root 571 0 R /Info 572 0 R -/ID [<970E7D56B64E7DF138579F60CDD2F2BB> <970E7D56B64E7DF138579F60CDD2F2BB>] >> +/ID [ ] >> startxref -431692 +432007 %%EOF diff --git a/docs/src/distribution.tex b/docs/src/distribution.tex index 90dee6b8..1c16aadb 100644 --- a/docs/src/distribution.tex +++ b/docs/src/distribution.tex @@ -14,3 +14,8 @@ in Appendix~\ref{sec:license}; please note that some of the optional third party libraries may be licensed under a different and more stringent license, most notably the GPL, and this should be taken into account when treating derived works. + +The library defines a version string with the +constant +\[ \verb|mld_version_string_|\] +whose current value is \verb|2.0.0| diff --git a/examples/fileread/mld_cexample_1lev.f90 b/examples/fileread/mld_cexample_1lev.f90 index dbf1a53b..b654cf4b 100644 --- a/examples/fileread/mld_cexample_1lev.f90 +++ b/examples/fileread/mld_cexample_1lev.f90 @@ -54,34 +54,34 @@ program mld_cexample_ml implicit none -! input parameters + ! input parameters character(len=40) :: mtrx_file, rhs_file character(len=2) :: filefmt -! sparse matrices + ! sparse matrices type(psb_cspmat_type) :: A, aux_A -! descriptor of sparse matrices + ! descriptor of sparse matrices type(psb_desc_type):: desc_A -! preconditioner + ! preconditioner type(mld_cprec_type) :: P -! right-hand side, solution and residual vectors + ! right-hand side, solution and residual vectors complex(psb_spk_), allocatable , save :: b(:), x(:), r(:), & & x_glob(:), r_glob(:) complex(psb_spk_), allocatable, target :: aux_b(:,:) complex(psb_spk_), pointer :: b_glob(:) -! solver and preconditioner parameters + ! solver and preconditioner parameters real(psb_spk_) :: tol, err integer :: itmax, iter, istop integer :: nlev -! parallel environment parameters + ! parallel environment parameters integer :: ictxt, iam, np -! other variables + ! other variables integer :: i,info,j,m_problem integer(psb_long_int_k_) :: amatsize, precsize, descsize integer :: ierr, ircode @@ -90,7 +90,7 @@ program mld_cexample_ml character(len=20) :: name integer, parameter :: iunit=12 -! initialize the parallel environment + ! initialize the parallel environment call psb_init(ictxt) call psb_info(ictxt,iam,np) @@ -105,16 +105,23 @@ program mld_cexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if -! get parameters + ! get parameters call get_parms(ictxt,mtrx_file,rhs_file,filefmt,itmax,tol) call psb_barrier(ictxt) t1 = psb_wtime() -! read and assemble the matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management + ! read and assemble the matrix A and the right-hand side b + ! using PSBLAS routines for sparse matrix / vector management if (iam == psb_root_) then select case(psb_toupper(filefmt)) @@ -127,12 +134,12 @@ program mld_cexample_ml call mm_vet_read(aux_b,info,iunit=iunit,filename=rhs_file) end if end if - + case ('HB') ! For Harwell-Boeing we have a single file which may or may not ! contain an RHS. call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file) - + case default info = -1 write(0,*) 'Wrong choice for fileformat ', filefmt @@ -141,10 +148,10 @@ program mld_cexample_ml write(0,*) 'Error while reading input matrix ' call psb_abort(ictxt) end if - + m_problem = aux_a%m call psb_bcast(ictxt,m_problem) - + ! At this point aux_b may still be unallocated if (psb_size(aux_b,1) == m_problem) then ! if any rhs were present, broadcast the first one @@ -179,7 +186,7 @@ program mld_cexample_ml call psb_barrier(ictxt) if (iam == psb_root_) write(*,'("Partition type: block")') call psb_matdist(aux_A, A, ictxt, & - & desc_A,b_glob,b,info, parts=part_block) + & desc_A,b_glob,b,info, parts=part_block) t2 = psb_wtime() - t1 @@ -191,12 +198,12 @@ program mld_cexample_ml write(*,'(" ")') end if -! set RAS with overlap 2 and ILU(0) on the local blocks + ! set RAS with overlap 2 and ILU(0) on the local blocks call mld_precinit(P,'AS',info) call mld_precset(P,mld_sub_ovr_,2,info) -! build the preconditioner + ! build the preconditioner t1 = psb_wtime() @@ -210,13 +217,13 @@ program mld_cexample_ml goto 9999 end if -! set the initial guess + ! set the initial guess call psb_geall(x,desc_A,info) x(:) =0.0 call psb_geasb(x,desc_A,info) -! solve Ax=b with preconditioned BiCGSTAB + ! solve Ax=b with preconditioned BiCGSTAB call psb_barrier(ictxt) t1 = psb_wtime() @@ -284,7 +291,7 @@ program mld_cexample_ml 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) -! deallocate the data structures + ! deallocate the data structures call psb_gefree(b, desc_A,info) call psb_gefree(x, desc_A,info) diff --git a/examples/fileread/mld_cexample_ml.f90 b/examples/fileread/mld_cexample_ml.f90 index d7c74972..e098224a 100644 --- a/examples/fileread/mld_cexample_ml.f90 +++ b/examples/fileread/mld_cexample_ml.f90 @@ -57,34 +57,34 @@ program mld_cexample_ml implicit none -! input file parameters + ! input file parameters character(len=40) :: mtrx_file, rhs_file character(len=2) :: filefmt -! sparse matrices + ! sparse matrices type(psb_cspmat_type) :: A, aux_A -! descriptor of sparse matrices + ! descriptor of sparse matrices type(psb_desc_type):: desc_A -! preconditioner + ! preconditioner type(mld_cprec_type) :: P -! right-hand side, solution and residual vectors + ! right-hand side, solution and residual vectors complex(psb_spk_), allocatable , save :: b(:), x(:), r(:), & & x_glob(:), r_glob(:) complex(psb_spk_), allocatable, target :: aux_b(:,:) complex(psb_spk_), pointer :: b_glob(:) -! solver and preconditioner parameters + ! solver and preconditioner parameters real(psb_spk_) :: tol, err integer :: itmax, iter, istop integer :: nlev -! parallel environment parameters + ! parallel environment parameters integer :: ictxt, iam, np -! other variables + ! other variables integer :: choice integer :: i,info,j,m_problem integer :: ierr, ircode @@ -94,7 +94,7 @@ program mld_cexample_ml character(len=20) :: name integer, parameter :: iunit=12 -! initialize the parallel environment + ! initialize the parallel environment call psb_init(ictxt) call psb_info(ictxt,iam,np) @@ -109,16 +109,23 @@ program mld_cexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if -! get parameters + ! get parameters call get_parms(ictxt,mtrx_file,rhs_file,filefmt,choice,itmax,tol) call psb_barrier(ictxt) t1 = psb_wtime() -! read and assemble the matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management + ! read and assemble the matrix A and the right-hand side b + ! using PSBLAS routines for sparse matrix / vector management if (iam == psb_root_) then select case(psb_toupper(filefmt)) @@ -131,12 +138,12 @@ program mld_cexample_ml call mm_vet_read(aux_b,info,iunit=iunit,filename=rhs_file) end if end if - + case ('HB') ! For Harwell-Boeing we have a single file which may or may not ! contain an RHS. call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file) - + case default info = -1 write(0,*) 'Wrong choice for fileformat ', filefmt @@ -145,10 +152,10 @@ program mld_cexample_ml write(0,*) 'Error while reading input matrix ' call psb_abort(ictxt) end if - + m_problem = aux_a%m call psb_bcast(ictxt,m_problem) - + ! At this point aux_b may still be unallocated if (psb_size(aux_b,1) == m_problem) then ! if any rhs were present, broadcast the first one @@ -182,8 +189,8 @@ program mld_cexample_ml call psb_barrier(ictxt) if (iam == psb_root_) write(*,'("Partition type: block")') - call psb_matdist(aux_A, A, ictxt, & - & desc_A,b_glob,b,info, parts=part_block) + call psb_matdist(aux_A, A, ictxt, & + & desc_A,b_glob,b,info, parts=part_block) t2 = psb_wtime() - t1 @@ -199,40 +206,40 @@ program mld_cexample_ml case(1) -! initialize the default multi-level preconditioner, i.e. hybrid -! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks) -! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU -! on the blocks) as distributed coarse-level solver + ! initialize the default multi-level preconditioner, i.e. hybrid + ! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks) + ! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU + ! on the blocks) as distributed coarse-level solver - call mld_precinit(P,'ML',info) + call mld_precinit(P,'ML',info) case(2) -! set a three-level hybrid Schwarz preconditioner, which uses -! block Jacobi (with ILU(0) on the blocks) as post-smoother, -! a coarsest matrix replicated on the processors, and the -! LU factorization from UMFPACK as coarse-level solver + ! set a three-level hybrid Schwarz preconditioner, which uses + ! block Jacobi (with ILU(0) on the blocks) as post-smoother, + ! a coarsest matrix replicated on the processors, and the + ! LU factorization from UMFPACK as coarse-level solver - call mld_precinit(P,'ML',info,nlev=3) - call mld_precset(P,mld_smoother_type_,'BJAC',info) - call mld_precset(P,mld_coarse_mat_,'REPL',info) - call mld_precset(P,mld_coarse_solve_,'UMF',info) + call mld_precinit(P,'ML',info,nlev=3) + call mld_precset(P,mld_smoother_type_,'BJAC',info) + call mld_precset(P,mld_coarse_mat_,'REPL',info) + call mld_precset(P,mld_coarse_solve_,'UMF',info) case(3) -! set a three-level additive Schwarz preconditioner, which uses -! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and -! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU -! on the blocks) as distributed coarsest-level solver + ! set a three-level additive Schwarz preconditioner, which uses + ! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and + ! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU + ! on the blocks) as distributed coarsest-level solver - call mld_precinit(P,'ML',info,nlev=3) - call mld_precset(P,mld_ml_type_,'ADD',info) - call mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) - call mld_precset(P,mld_coarse_sweeps_,5,info) + call mld_precinit(P,'ML',info,nlev=3) + call mld_precset(P,mld_ml_type_,'ADD',info) + call mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) + call mld_precset(P,mld_coarse_sweeps_,5,info) end select -! build the preconditioner + ! build the preconditioner call psb_barrier(ictxt) t1 = psb_wtime() @@ -247,13 +254,13 @@ program mld_cexample_ml goto 9999 end if -! set the initial guess + ! set the initial guess call psb_geall(x,desc_A,info) x(:) =0.0 call psb_geasb(x,desc_A,info) -! solve Ax=b with preconditioned BiCGSTAB + ! solve Ax=b with preconditioned BiCGSTAB call psb_barrier(ictxt) t1 = psb_wtime() @@ -321,7 +328,7 @@ program mld_cexample_ml 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) -! deallocate the data structures + ! deallocate the data structures call psb_gefree(b, desc_A,info) call psb_gefree(x, desc_A,info) diff --git a/examples/fileread/mld_dexample_1lev.f90 b/examples/fileread/mld_dexample_1lev.f90 index 221f9cf2..e77209e5 100644 --- a/examples/fileread/mld_dexample_1lev.f90 +++ b/examples/fileread/mld_dexample_1lev.f90 @@ -54,34 +54,34 @@ program mld_dexample_ml implicit none -! input parameters + ! input parameters character(len=40) :: mtrx_file, rhs_file character(len=2) :: filefmt -! sparse matrices + ! sparse matrices type(psb_dspmat_type) :: A, aux_A -! descriptor of sparse matrices + ! descriptor of sparse matrices type(psb_desc_type):: desc_A -! preconditioner + ! preconditioner type(mld_dprec_type) :: P -! right-hand side, solution and residual vectors + ! right-hand side, solution and residual vectors real(psb_dpk_), allocatable , save :: b(:), x(:), r(:), & & x_glob(:), r_glob(:) real(psb_dpk_), allocatable, target :: aux_b(:,:) real(psb_dpk_), pointer :: b_glob(:) -! solver and preconditioner parameters + ! solver and preconditioner parameters real(psb_dpk_) :: tol, err integer :: itmax, iter, istop integer :: nlev -! parallel environment parameters + ! parallel environment parameters integer :: ictxt, iam, np -! other variables + ! other variables integer :: i,info,j,m_problem integer(psb_long_int_k_) :: amatsize, precsize, descsize integer :: ierr, ircode @@ -89,7 +89,7 @@ program mld_dexample_ml character(len=20) :: name integer, parameter :: iunit=12 -! initialize the parallel environment + ! initialize the parallel environment call psb_init(ictxt) call psb_info(ictxt,iam,np) @@ -104,16 +104,23 @@ program mld_dexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if -! get parameters + ! get parameters call get_parms(ictxt,mtrx_file,rhs_file,filefmt,itmax,tol) call psb_barrier(ictxt) t1 = psb_wtime() -! read and assemble the matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management + ! read and assemble the matrix A and the right-hand side b + ! using PSBLAS routines for sparse matrix / vector management if (iam == psb_root_) then select case(psb_toupper(filefmt)) @@ -126,12 +133,12 @@ program mld_dexample_ml call mm_vet_read(aux_b,info,iunit=iunit,filename=rhs_file) end if end if - + case ('HB') ! For Harwell-Boeing we have a single file which may or may not ! contain an RHS. call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file) - + case default info = -1 write(0,*) 'Wrong choice for fileformat ', filefmt @@ -140,10 +147,10 @@ program mld_dexample_ml write(0,*) 'Error while reading input matrix ' call psb_abort(ictxt) end if - + m_problem = aux_a%m call psb_bcast(ictxt,m_problem) - + ! At this point aux_b may still be unallocated if (psb_size(aux_b,1) == m_problem) then ! if any rhs were present, broadcast the first one @@ -178,7 +185,7 @@ program mld_dexample_ml call psb_barrier(ictxt) if (iam == psb_root_) write(*,'("Partition type: block")') call psb_matdist(aux_A, A, ictxt, & - & desc_A,b_glob,b,info, parts=part_block) + & desc_A,b_glob,b,info, parts=part_block) t2 = psb_wtime() - t1 @@ -190,12 +197,12 @@ program mld_dexample_ml write(*,'(" ")') end if -! set RAS with overlap 2 and ILU(0) on the local blocks + ! set RAS with overlap 2 and ILU(0) on the local blocks call mld_precinit(P,'AS',info) call mld_precset(P,mld_sub_ovr_,2,info) -! build the preconditioner + ! build the preconditioner t1 = psb_wtime() @@ -209,13 +216,13 @@ program mld_dexample_ml goto 9999 end if -! set the initial guess + ! set the initial guess call psb_geall(x,desc_A,info) x(:) =0.0 call psb_geasb(x,desc_A,info) -! solve Ax=b with preconditioned BiCGSTAB + ! solve Ax=b with preconditioned BiCGSTAB call psb_barrier(ictxt) t1 = psb_wtime() @@ -283,7 +290,7 @@ program mld_dexample_ml 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) -! deallocate the data structures + ! deallocate the data structures call psb_gefree(b, desc_A,info) call psb_gefree(x, desc_A,info) diff --git a/examples/fileread/mld_dexample_ml.f90 b/examples/fileread/mld_dexample_ml.f90 index e5b327b1..16d8f7db 100644 --- a/examples/fileread/mld_dexample_ml.f90 +++ b/examples/fileread/mld_dexample_ml.f90 @@ -57,34 +57,34 @@ program mld_dexample_ml implicit none -! input file parameters + ! input file parameters character(len=40) :: mtrx_file, rhs_file character(len=2) :: filefmt -! sparse matrices + ! sparse matrices type(psb_dspmat_type) :: A, aux_A -! descriptor of sparse matrices + ! descriptor of sparse matrices type(psb_desc_type):: desc_A -! preconditioner + ! preconditioner type(mld_dprec_type) :: P -! right-hand side, solution and residual vectors + ! right-hand side, solution and residual vectors real(psb_dpk_), allocatable , save :: b(:), x(:), r(:), & & x_glob(:), r_glob(:) real(psb_dpk_), allocatable, target :: aux_b(:,:) real(psb_dpk_), pointer :: b_glob(:) -! solver and preconditioner parameters + ! solver and preconditioner parameters real(psb_dpk_) :: tol, err integer :: itmax, iter, istop integer :: nlev -! parallel environment parameters + ! parallel environment parameters integer :: ictxt, iam, np -! other variables + ! other variables integer :: choice integer :: i,info,j,m_problem integer(psb_long_int_k_) :: amatsize, precsize, descsize @@ -93,7 +93,7 @@ program mld_dexample_ml character(len=20) :: name integer, parameter :: iunit=12 -! initialize the parallel environment + ! initialize the parallel environment call psb_init(ictxt) call psb_info(ictxt,iam,np) @@ -108,16 +108,23 @@ program mld_dexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if -! get parameters + ! get parameters call get_parms(ictxt,mtrx_file,rhs_file,filefmt,choice,itmax,tol) call psb_barrier(ictxt) t1 = psb_wtime() -! read and assemble the matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management + ! read and assemble the matrix A and the right-hand side b + ! using PSBLAS routines for sparse matrix / vector management if (iam == psb_root_) then select case(psb_toupper(filefmt)) @@ -130,12 +137,12 @@ program mld_dexample_ml call mm_vet_read(aux_b,info,iunit=iunit,filename=rhs_file) end if end if - + case ('HB') ! For Harwell-Boeing we have a single file which may or may not ! contain an RHS. call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file) - + case default info = -1 write(0,*) 'Wrong choice for fileformat ', filefmt @@ -144,10 +151,10 @@ program mld_dexample_ml write(0,*) 'Error while reading input matrix ' call psb_abort(ictxt) end if - + m_problem = aux_a%m call psb_bcast(ictxt,m_problem) - + ! At this point aux_b may still be unallocated if (psb_size(aux_b,1) == m_problem) then ! if any rhs were present, broadcast the first one @@ -181,8 +188,8 @@ program mld_dexample_ml call psb_barrier(ictxt) if (iam == psb_root_) write(*,'("Partition type: block")') - call psb_matdist(aux_A, A, ictxt, & - & desc_A,b_glob,b,info, parts=part_block) + call psb_matdist(aux_A, A, ictxt, & + & desc_A,b_glob,b,info, parts=part_block) t2 = psb_wtime() - t1 @@ -198,40 +205,40 @@ program mld_dexample_ml case(1) -! initialize the default multi-level preconditioner, i.e. hybrid -! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks) -! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU -! on the blocks) as distributed coarse-level solver + ! initialize the default multi-level preconditioner, i.e. hybrid + ! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks) + ! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU + ! on the blocks) as distributed coarse-level solver - call mld_precinit(P,'ML',info) + call mld_precinit(P,'ML',info) case(2) -! set a three-level hybrid Schwarz preconditioner, which uses -! block Jacobi (with ILU(0) on the blocks) as post-smoother, -! a coarsest matrix replicated on the processors, and the -! LU factorization from UMFPACK as coarse-level solver + ! set a three-level hybrid Schwarz preconditioner, which uses + ! block Jacobi (with ILU(0) on the blocks) as post-smoother, + ! a coarsest matrix replicated on the processors, and the + ! LU factorization from UMFPACK as coarse-level solver - call mld_precinit(P,'ML',info,nlev=3) - call mld_precset(P,mld_smoother_type_,'BJAC',info) - call mld_precset(P,mld_coarse_mat_,'REPL',info) - call mld_precset(P,mld_coarse_solve_,'UMF',info) + call mld_precinit(P,'ML',info,nlev=3) + call mld_precset(P,mld_smoother_type_,'BJAC',info) + call mld_precset(P,mld_coarse_mat_,'REPL',info) + call mld_precset(P,mld_coarse_solve_,'UMF',info) case(3) -! set a three-level additive Schwarz preconditioner, which uses -! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and -! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU -! on the blocks) as distributed coarsest-level solver + ! set a three-level additive Schwarz preconditioner, which uses + ! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and + ! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU + ! on the blocks) as distributed coarsest-level solver - call mld_precinit(P,'ML',info,nlev=3) - call mld_precset(P,mld_ml_type_,'ADD',info) - call mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) - call mld_precset(P,mld_coarse_sweeps_,5,info) + call mld_precinit(P,'ML',info,nlev=3) + call mld_precset(P,mld_ml_type_,'ADD',info) + call mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) + call mld_precset(P,mld_coarse_sweeps_,5,info) end select -! build the preconditioner + ! build the preconditioner call psb_barrier(ictxt) t1 = psb_wtime() @@ -246,13 +253,13 @@ program mld_dexample_ml goto 9999 end if -! set the initial guess + ! set the initial guess call psb_geall(x,desc_A,info) x(:) =0.0 call psb_geasb(x,desc_A,info) -! solve Ax=b with preconditioned BiCGSTAB + ! solve Ax=b with preconditioned BiCGSTAB call psb_barrier(ictxt) t1 = psb_wtime() @@ -320,7 +327,7 @@ program mld_dexample_ml 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) -! deallocate the data structures + ! deallocate the data structures call psb_gefree(b, desc_A,info) call psb_gefree(x, desc_A,info) diff --git a/examples/fileread/mld_sexample_1lev.f90 b/examples/fileread/mld_sexample_1lev.f90 index 81617471..e2bf2911 100644 --- a/examples/fileread/mld_sexample_1lev.f90 +++ b/examples/fileread/mld_sexample_1lev.f90 @@ -54,34 +54,34 @@ program mld_sexample_ml implicit none -! input parameters + ! input parameters character(len=40) :: mtrx_file, rhs_file character(len=2) :: filefmt -! sparse matrices + ! sparse matrices type(psb_sspmat_type) :: A, aux_A -! descriptor of sparse matrices + ! descriptor of sparse matrices type(psb_desc_type):: desc_A -! preconditioner + ! preconditioner type(mld_sprec_type) :: P -! right-hand side, solution and residual vectors + ! right-hand side, solution and residual vectors real(psb_spk_), allocatable , save :: b(:), x(:), r(:), & & x_glob(:), r_glob(:) real(psb_spk_), allocatable, target :: aux_b(:,:) real(psb_spk_), pointer :: b_glob(:) -! solver and preconditioner parameters + ! solver and preconditioner parameters real(psb_spk_) :: tol, err integer :: itmax, iter, istop integer :: nlev -! parallel environment parameters + ! parallel environment parameters integer :: ictxt, iam, np -! other variables + ! other variables integer :: i,info,j,m_problem integer(psb_long_int_k_) :: amatsize, precsize, descsize integer :: ierr, ircode @@ -90,7 +90,7 @@ program mld_sexample_ml character(len=20) :: name integer, parameter :: iunit=12 -! initialize the parallel environment + ! initialize the parallel environment call psb_init(ictxt) call psb_info(ictxt,iam,np) @@ -105,16 +105,23 @@ program mld_sexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if -! get parameters + ! get parameters call get_parms(ictxt,mtrx_file,rhs_file,filefmt,itmax,tol) call psb_barrier(ictxt) t1 = psb_wtime() -! read and assemble the matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management + ! read and assemble the matrix A and the right-hand side b + ! using PSBLAS routines for sparse matrix / vector management if (iam == psb_root_) then select case(psb_toupper(filefmt)) @@ -127,12 +134,12 @@ program mld_sexample_ml call mm_vet_read(aux_b,info,iunit=iunit,filename=rhs_file) end if end if - + case ('HB') ! For Harwell-Boeing we have a single file which may or may not ! contain an RHS. call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file) - + case default info = -1 write(0,*) 'Wrong choice for fileformat ', filefmt @@ -141,10 +148,10 @@ program mld_sexample_ml write(0,*) 'Error while reading input matrix ' call psb_abort(ictxt) end if - + m_problem = aux_a%m call psb_bcast(ictxt,m_problem) - + ! At this point aux_b may still be unallocated if (psb_size(aux_b,1) == m_problem) then ! if any rhs were present, broadcast the first one @@ -179,7 +186,7 @@ program mld_sexample_ml call psb_barrier(ictxt) if (iam == psb_root_) write(*,'("Partition type: block")') call psb_matdist(aux_A, A, ictxt, & - & desc_A,b_glob,b,info, parts=part_block) + & desc_A,b_glob,b,info, parts=part_block) t2 = psb_wtime() - t1 @@ -191,12 +198,12 @@ program mld_sexample_ml write(*,'(" ")') end if -! set RAS with overlap 2 and ILU(0) on the local blocks + ! set RAS with overlap 2 and ILU(0) on the local blocks call mld_precinit(P,'AS',info) call mld_precset(P,mld_sub_ovr_,2,info) -! build the preconditioner + ! build the preconditioner t1 = psb_wtime() @@ -210,13 +217,13 @@ program mld_sexample_ml goto 9999 end if -! set the initial guess + ! set the initial guess call psb_geall(x,desc_A,info) x(:) =0.0 call psb_geasb(x,desc_A,info) -! solve Ax=b with preconditioned BiCGSTAB + ! solve Ax=b with preconditioned BiCGSTAB call psb_barrier(ictxt) t1 = psb_wtime() @@ -284,7 +291,7 @@ program mld_sexample_ml 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) -! deallocate the data structures + ! deallocate the data structures call psb_gefree(b, desc_A,info) call psb_gefree(x, desc_A,info) diff --git a/examples/fileread/mld_sexample_ml.f90 b/examples/fileread/mld_sexample_ml.f90 index 370fd840..2d7e8c19 100644 --- a/examples/fileread/mld_sexample_ml.f90 +++ b/examples/fileread/mld_sexample_ml.f90 @@ -57,34 +57,34 @@ program mld_sexample_ml implicit none -! input file parameters + ! input file parameters character(len=40) :: mtrx_file, rhs_file character(len=2) :: filefmt -! sparse matrices + ! sparse matrices type(psb_sspmat_type) :: A, aux_A -! descriptor of sparse matrices + ! descriptor of sparse matrices type(psb_desc_type):: desc_A -! preconditioner + ! preconditioner type(mld_sprec_type) :: P -! right-hand side, solution and residual vectors + ! right-hand side, solution and residual vectors real(psb_spk_), allocatable , save :: b(:), x(:), r(:), & & x_glob(:), r_glob(:) real(psb_spk_), allocatable, target :: aux_b(:,:) real(psb_spk_), pointer :: b_glob(:) -! solver and preconditioner parameters + ! solver and preconditioner parameters real(psb_spk_) :: tol, err integer :: itmax, iter, istop integer :: nlev -! parallel environment parameters + ! parallel environment parameters integer :: ictxt, iam, np -! other variables + ! other variables integer :: choice integer :: i,info,j,m_problem integer(psb_long_int_k_) :: amatsize, precsize, descsize @@ -94,7 +94,7 @@ program mld_sexample_ml character(len=20) :: name integer, parameter :: iunit=12 -! initialize the parallel environment + ! initialize the parallel environment call psb_init(ictxt) call psb_info(ictxt,iam,np) @@ -109,16 +109,23 @@ program mld_sexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if -! get parameters + ! get parameters call get_parms(ictxt,mtrx_file,rhs_file,filefmt,choice,itmax,tol) call psb_barrier(ictxt) t1 = psb_wtime() -! read and assemble the matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management + ! read and assemble the matrix A and the right-hand side b + ! using PSBLAS routines for sparse matrix / vector management if (iam == psb_root_) then select case(psb_toupper(filefmt)) @@ -131,12 +138,12 @@ program mld_sexample_ml call mm_vet_read(aux_b,info,iunit=iunit,filename=rhs_file) end if end if - + case ('HB') ! For Harwell-Boeing we have a single file which may or may not ! contain an RHS. call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file) - + case default info = -1 write(0,*) 'Wrong choice for fileformat ', filefmt @@ -145,10 +152,10 @@ program mld_sexample_ml write(0,*) 'Error while reading input matrix ' call psb_abort(ictxt) end if - + m_problem = aux_a%m call psb_bcast(ictxt,m_problem) - + ! At this point aux_b may still be unallocated if (psb_size(aux_b,1) == m_problem) then ! if any rhs were present, broadcast the first one @@ -182,8 +189,8 @@ program mld_sexample_ml call psb_barrier(ictxt) if (iam == psb_root_) write(*,'("Partition type: block")') - call psb_matdist(aux_A, A, ictxt, & - & desc_A,b_glob,b,info, parts=part_block) + call psb_matdist(aux_A, A, ictxt, & + & desc_A,b_glob,b,info, parts=part_block) t2 = psb_wtime() - t1 @@ -199,40 +206,40 @@ program mld_sexample_ml case(1) -! initialize the default multi-level preconditioner, i.e. hybrid -! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks) -! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU -! on the blocks) as distributed coarse-level solver + ! initialize the default multi-level preconditioner, i.e. hybrid + ! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks) + ! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU + ! on the blocks) as distributed coarse-level solver - call mld_precinit(P,'ML',info) + call mld_precinit(P,'ML',info) case(2) -! set a three-level hybrid Schwarz preconditioner, which uses -! block Jacobi (with ILU(0) on the blocks) as post-smoother, -! a coarsest matrix replicated on the processors, and the -! LU factorization from UMFPACK as coarse-level solver + ! set a three-level hybrid Schwarz preconditioner, which uses + ! block Jacobi (with ILU(0) on the blocks) as post-smoother, + ! a coarsest matrix replicated on the processors, and the + ! LU factorization from UMFPACK as coarse-level solver - call mld_precinit(P,'ML',info,nlev=3) - call mld_precset(P,mld_smoother_type_,'BJAC',info) - call mld_precset(P,mld_coarse_mat_,'REPL',info) - call mld_precset(P,mld_coarse_solve_,'UMF',info) + call mld_precinit(P,'ML',info,nlev=3) + call mld_precset(P,mld_smoother_type_,'BJAC',info) + call mld_precset(P,mld_coarse_mat_,'REPL',info) + call mld_precset(P,mld_coarse_solve_,'UMF',info) case(3) -! set a three-level additive Schwarz preconditioner, which uses -! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and -! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU -! on the blocks) as distributed coarsest-level solver + ! set a three-level additive Schwarz preconditioner, which uses + ! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and + ! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU + ! on the blocks) as distributed coarsest-level solver - call mld_precinit(P,'ML',info,nlev=3) - call mld_precset(P,mld_ml_type_,'ADD',info) - call mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) - call mld_precset(P,mld_coarse_sweeps_,5,info) + call mld_precinit(P,'ML',info,nlev=3) + call mld_precset(P,mld_ml_type_,'ADD',info) + call mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) + call mld_precset(P,mld_coarse_sweeps_,5,info) end select -! build the preconditioner + ! build the preconditioner call psb_barrier(ictxt) t1 = psb_wtime() @@ -247,13 +254,13 @@ program mld_sexample_ml goto 9999 end if -! set the initial guess + ! set the initial guess call psb_geall(x,desc_A,info) x(:) =0.0 call psb_geasb(x,desc_A,info) -! solve Ax=b with preconditioned BiCGSTAB + ! solve Ax=b with preconditioned BiCGSTAB call psb_barrier(ictxt) t1 = psb_wtime() @@ -321,7 +328,7 @@ program mld_sexample_ml 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) -! deallocate the data structures + ! deallocate the data structures call psb_gefree(b, desc_A,info) call psb_gefree(x, desc_A,info) diff --git a/examples/fileread/mld_zexample_1lev.f90 b/examples/fileread/mld_zexample_1lev.f90 index ade6043d..33f50fad 100644 --- a/examples/fileread/mld_zexample_1lev.f90 +++ b/examples/fileread/mld_zexample_1lev.f90 @@ -54,34 +54,34 @@ program mld_zexample_ml implicit none -! input parameters + ! input parameters character(len=40) :: mtrx_file, rhs_file character(len=2) :: filefmt -! sparse matrices + ! sparse matrices type(psb_zspmat_type) :: A, aux_A -! descriptor of sparse matrices + ! descriptor of sparse matrices type(psb_desc_type):: desc_A -! preconditioner + ! preconditioner type(mld_zprec_type) :: P -! right-hand side, solution and residual vectors + ! right-hand side, solution and residual vectors complex(psb_dpk_), allocatable , save :: b(:), x(:), r(:), & & x_glob(:), r_glob(:) complex(psb_dpk_), allocatable, target :: aux_b(:,:) complex(psb_dpk_), pointer :: b_glob(:) -! solver and preconditioner parameters + ! solver and preconditioner parameters real(psb_dpk_) :: tol, err integer :: itmax, iter, istop integer :: nlev -! parallel environment parameters + ! parallel environment parameters integer :: ictxt, iam, np -! other variables + ! other variables integer :: i,info,j,m_problem integer(psb_long_int_k_) :: amatsize, precsize, descsize integer :: ierr, ircode @@ -89,7 +89,7 @@ program mld_zexample_ml character(len=20) :: name integer, parameter :: iunit=12 -! initialize the parallel environment + ! initialize the parallel environment call psb_init(ictxt) call psb_info(ictxt,iam,np) @@ -104,16 +104,23 @@ program mld_zexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if -! get parameters + ! get parameters call get_parms(ictxt,mtrx_file,rhs_file,filefmt,itmax,tol) call psb_barrier(ictxt) t1 = psb_wtime() -! read and assemble the matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management + ! read and assemble the matrix A and the right-hand side b + ! using PSBLAS routines for sparse matrix / vector management if (iam == psb_root_) then select case(psb_toupper(filefmt)) @@ -126,12 +133,12 @@ program mld_zexample_ml call mm_vet_read(aux_b,info,iunit=iunit,filename=rhs_file) end if end if - + case ('HB') ! For Harwell-Boeing we have a single file which may or may not ! contain an RHS. call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file) - + case default info = -1 write(0,*) 'Wrong choice for fileformat ', filefmt @@ -140,10 +147,10 @@ program mld_zexample_ml write(0,*) 'Error while reading input matrix ' call psb_abort(ictxt) end if - + m_problem = aux_a%m call psb_bcast(ictxt,m_problem) - + ! At this point aux_b may still be unallocated if (psb_size(aux_b,1) == m_problem) then ! if any rhs were present, broadcast the first one @@ -178,7 +185,7 @@ program mld_zexample_ml call psb_barrier(ictxt) if (iam == psb_root_) write(*,'("Partition type: block")') call psb_matdist(aux_A, A, ictxt, & - & desc_A,b_glob,b,info, parts=part_block) + & desc_A,b_glob,b,info, parts=part_block) t2 = psb_wtime() - t1 @@ -190,12 +197,12 @@ program mld_zexample_ml write(*,'(" ")') end if -! set RAS with overlap 2 and ILU(0) on the local blocks + ! set RAS with overlap 2 and ILU(0) on the local blocks call mld_precinit(P,'AS',info) call mld_precset(P,mld_sub_ovr_,2,info) -! build the preconditioner + ! build the preconditioner t1 = psb_wtime() @@ -209,13 +216,13 @@ program mld_zexample_ml goto 9999 end if -! set the initial guess + ! set the initial guess call psb_geall(x,desc_A,info) x(:) =0.0 call psb_geasb(x,desc_A,info) -! solve Ax=b with preconditioned BiCGSTAB + ! solve Ax=b with preconditioned BiCGSTAB call psb_barrier(ictxt) t1 = psb_wtime() @@ -283,7 +290,7 @@ program mld_zexample_ml 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) -! deallocate the data structures + ! deallocate the data structures call psb_gefree(b, desc_A,info) call psb_gefree(x, desc_A,info) diff --git a/examples/fileread/mld_zexample_ml.f90 b/examples/fileread/mld_zexample_ml.f90 index 018c4964..bef6f161 100644 --- a/examples/fileread/mld_zexample_ml.f90 +++ b/examples/fileread/mld_zexample_ml.f90 @@ -57,34 +57,34 @@ program mld_zexample_ml implicit none -! input file parameters + ! input file parameters character(len=40) :: mtrx_file, rhs_file character(len=2) :: filefmt -! sparse matrices + ! sparse matrices type(psb_zspmat_type) :: A, aux_A -! descriptor of sparse matrices + ! descriptor of sparse matrices type(psb_desc_type):: desc_A -! preconditioner + ! preconditioner type(mld_zprec_type) :: P -! right-hand side, solution and residual vectors + ! right-hand side, solution and residual vectors complex(psb_dpk_), allocatable , save :: b(:), x(:), r(:), & & x_glob(:), r_glob(:) complex(psb_dpk_), allocatable, target :: aux_b(:,:) complex(psb_dpk_), pointer :: b_glob(:) -! solver and preconditioner parameters + ! solver and preconditioner parameters real(psb_dpk_) :: tol, err integer :: itmax, iter, istop integer :: nlev -! parallel environment parameters + ! parallel environment parameters integer :: ictxt, iam, np -! other variables + ! other variables integer :: choice integer :: i,info,j,m_problem integer(psb_long_int_k_) :: amatsize, precsize, descsize @@ -93,7 +93,7 @@ program mld_zexample_ml character(len=20) :: name integer, parameter :: iunit=12 -! initialize the parallel environment + ! initialize the parallel environment call psb_init(ictxt) call psb_info(ictxt,iam,np) @@ -108,16 +108,23 @@ program mld_zexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if -! get parameters + ! get parameters call get_parms(ictxt,mtrx_file,rhs_file,filefmt,choice,itmax,tol) call psb_barrier(ictxt) t1 = psb_wtime() -! read and assemble the matrix A and the right-hand side b -! using PSBLAS routines for sparse matrix / vector management + ! read and assemble the matrix A and the right-hand side b + ! using PSBLAS routines for sparse matrix / vector management if (iam == psb_root_) then select case(psb_toupper(filefmt)) @@ -130,12 +137,12 @@ program mld_zexample_ml call mm_vet_read(aux_b,info,iunit=iunit,filename=rhs_file) end if end if - + case ('HB') ! For Harwell-Boeing we have a single file which may or may not ! contain an RHS. call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file) - + case default info = -1 write(0,*) 'Wrong choice for fileformat ', filefmt @@ -144,10 +151,10 @@ program mld_zexample_ml write(0,*) 'Error while reading input matrix ' call psb_abort(ictxt) end if - + m_problem = aux_a%m call psb_bcast(ictxt,m_problem) - + ! At this point aux_b may still be unallocated if (psb_size(aux_b,1) == m_problem) then ! if any rhs were present, broadcast the first one @@ -181,8 +188,8 @@ program mld_zexample_ml call psb_barrier(ictxt) if (iam == psb_root_) write(*,'("Partition type: block")') - call psb_matdist(aux_A, A, ictxt, & - & desc_A,b_glob,b,info, parts=part_block) + call psb_matdist(aux_A, A, ictxt, & + & desc_A,b_glob,b,info, parts=part_block) t2 = psb_wtime() - t1 @@ -198,40 +205,40 @@ program mld_zexample_ml case(1) -! initialize the default multi-level preconditioner, i.e. hybrid -! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks) -! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU -! on the blocks) as distributed coarse-level solver + ! initialize the default multi-level preconditioner, i.e. hybrid + ! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks) + ! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU + ! on the blocks) as distributed coarse-level solver - call mld_precinit(P,'ML',info) + call mld_precinit(P,'ML',info) case(2) -! set a three-level hybrid Schwarz preconditioner, which uses -! block Jacobi (with ILU(0) on the blocks) as post-smoother, -! a coarsest matrix replicated on the processors, and the -! LU factorization from UMFPACK as coarse-level solver + ! set a three-level hybrid Schwarz preconditioner, which uses + ! block Jacobi (with ILU(0) on the blocks) as post-smoother, + ! a coarsest matrix replicated on the processors, and the + ! LU factorization from UMFPACK as coarse-level solver - call mld_precinit(P,'ML',info,nlev=3) - call mld_precset(P,mld_smoother_type_,'BJAC',info) - call mld_precset(P,mld_coarse_mat_,'REPL',info) - call mld_precset(P,mld_coarse_solve_,'UMF',info) + call mld_precinit(P,'ML',info,nlev=3) + call mld_precset(P,mld_smoother_type_,'BJAC',info) + call mld_precset(P,mld_coarse_mat_,'REPL',info) + call mld_precset(P,mld_coarse_solve_,'UMF',info) case(3) -! set a three-level additive Schwarz preconditioner, which uses -! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and -! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU -! on the blocks) as distributed coarsest-level solver + ! set a three-level additive Schwarz preconditioner, which uses + ! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and + ! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU + ! on the blocks) as distributed coarsest-level solver - call mld_precinit(P,'ML',info,nlev=3) - call mld_precset(P,mld_ml_type_,'ADD',info) - call mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) - call mld_precset(P,mld_coarse_sweeps_,5,info) + call mld_precinit(P,'ML',info,nlev=3) + call mld_precset(P,mld_ml_type_,'ADD',info) + call mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) + call mld_precset(P,mld_coarse_sweeps_,5,info) end select -! build the preconditioner + ! build the preconditioner call psb_barrier(ictxt) t1 = psb_wtime() @@ -246,13 +253,13 @@ program mld_zexample_ml goto 9999 end if -! set the initial guess + ! set the initial guess call psb_geall(x,desc_A,info) x(:) =0.0 call psb_geasb(x,desc_A,info) -! solve Ax=b with preconditioned BiCGSTAB + ! solve Ax=b with preconditioned BiCGSTAB call psb_barrier(ictxt) t1 = psb_wtime() @@ -320,7 +327,7 @@ program mld_zexample_ml 998 format(i8,4(2x,g20.14)) 993 format(i6,4(1x,e12.6)) -! deallocate the data structures + ! deallocate the data structures call psb_gefree(b, desc_A,info) call psb_gefree(x, desc_A,info) diff --git a/examples/pdegen/mld_dexample_1lev.f90 b/examples/pdegen/mld_dexample_1lev.f90 index c90ea681..f21d174b 100644 --- a/examples/pdegen/mld_dexample_1lev.f90 +++ b/examples/pdegen/mld_dexample_1lev.f90 @@ -121,6 +121,13 @@ program mld_dexample_1lev if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if ! get parameters diff --git a/examples/pdegen/mld_dexample_ml.f90 b/examples/pdegen/mld_dexample_ml.f90 index b9663412..e391a393 100644 --- a/examples/pdegen/mld_dexample_ml.f90 +++ b/examples/pdegen/mld_dexample_ml.f90 @@ -125,6 +125,13 @@ program mld_dexample_ml if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if ! get parameters diff --git a/examples/pdegen/mld_sexample_1lev.f90 b/examples/pdegen/mld_sexample_1lev.f90 index 72e779a4..5330d861 100644 --- a/examples/pdegen/mld_sexample_1lev.f90 +++ b/examples/pdegen/mld_sexample_1lev.f90 @@ -122,6 +122,13 @@ program mld_sexample_1lev if(psb_get_errstatus() /= 0) goto 9999 info=psb_success_ call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if ! get parameters diff --git a/examples/pdegen/mld_sexample_ml.f90 b/examples/pdegen/mld_sexample_ml.f90 index 63384c07..95119821 100644 --- a/examples/pdegen/mld_sexample_ml.f90 +++ b/examples/pdegen/mld_sexample_ml.f90 @@ -121,6 +121,13 @@ program mld_sexample_ml call psb_exit(ictxt) stop endif + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if name='mld_sexample_ml' if(psb_get_errstatus() /= 0) goto 9999 diff --git a/mlprec/mld_base_prec_type.f90 b/mlprec/mld_base_prec_type.f90 index a896bc62..44b4022e 100644 --- a/mlprec/mld_base_prec_type.f90 +++ b/mlprec/mld_base_prec_type.f90 @@ -78,6 +78,14 @@ module mld_base_prec_type & psb_d_base_prec_type, psb_s_base_prec_type, & & psb_z_base_prec_type, psb_c_base_prec_type + ! + ! Version numbers + ! + character(len=*), parameter :: mld_version_string = "2.0.0" + integer, parameter :: mld_version_major = 2 + integer, parameter :: mld_version_minor = 0 + integer, parameter :: mld_patchlevel = 0 + type mld_aux_onelev_map_type integer :: naggr diff --git a/tests/fileread/cf_sample.f90 b/tests/fileread/cf_sample.f90 index 79222c59..9ba62758 100644 --- a/tests/fileread/cf_sample.f90 +++ b/tests/fileread/cf_sample.f90 @@ -126,6 +126,13 @@ program cf_sample info=psb_success_ call psb_set_errverbosity(2) ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if + ! ! get parameters ! call get_parms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,& diff --git a/tests/fileread/df_sample.f90 b/tests/fileread/df_sample.f90 index 32d9c472..3191657e 100644 --- a/tests/fileread/df_sample.f90 +++ b/tests/fileread/df_sample.f90 @@ -126,6 +126,13 @@ program df_sample info=psb_success_ call psb_set_errverbosity(2) ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if + ! ! get parameters ! call get_parms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,& diff --git a/tests/fileread/sf_sample.f90 b/tests/fileread/sf_sample.f90 index f9b6eefc..031b1879 100644 --- a/tests/fileread/sf_sample.f90 +++ b/tests/fileread/sf_sample.f90 @@ -126,6 +126,13 @@ program sf_sample info=psb_success_ call psb_set_errverbosity(2) ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if + ! ! get parameters ! call get_parms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,& diff --git a/tests/fileread/zf_sample.f90 b/tests/fileread/zf_sample.f90 index 904f6682..44325464 100644 --- a/tests/fileread/zf_sample.f90 +++ b/tests/fileread/zf_sample.f90 @@ -126,6 +126,13 @@ program zf_sample info=psb_success_ call psb_set_errverbosity(2) ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if + ! ! get parameters ! call get_parms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,& diff --git a/tests/pdegen/ppde.f90 b/tests/pdegen/ppde.f90 index 6ca3c13f..7debc487 100644 --- a/tests/pdegen/ppde.f90 +++ b/tests/pdegen/ppde.f90 @@ -143,6 +143,13 @@ program ppde if(psb_get_errstatus() /= 0) goto 9999 name='pde90' call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if ! diff --git a/tests/pdegen/spde.f90 b/tests/pdegen/spde.f90 index 29f44b5a..dcecb61a 100644 --- a/tests/pdegen/spde.f90 +++ b/tests/pdegen/spde.f90 @@ -143,6 +143,13 @@ program spde if(psb_get_errstatus() /= 0) goto 9999 name='pde90' call psb_set_errverbosity(2) + ! + ! Hello world + ! + if (iam == psb_root_) then + write(*,*) 'Welcome to MLD2P4 version: ',psb_version_string_ + write(*,*) 'This is the ',name,' sample program' + end if ! ! get parameters
    Table 5: Parameters defining the coarse-space correction at the coarsest @@ -427,14 +423,14 @@ level.
    integer Any int. num. $> 0$ 4 Number of Block-Jacobi sweeps when 'BJAC' is used as @@ -452,27 +448,27 @@ level. integer Any int. num. $\ge 0$ 0 Fill-in level $p$ of the incomplete LU factorizations.
    mld_coarse_iluthrs_ real(kind_parameter) Any real. num. $\ge 0$ 0 Drop tolerance $t$ in the ILU($p,t$) factorization.
    Note: defaults for @@ -497,20 +493,16 @@ level. -next +next -up +up -previous +previous -contents +contents
    Next: Subroutine mld_precbld diff --git a/docs/html/node19.html b/docs/html/node19.html index 8dd90eb1..4727a777 100644 --- a/docs/html/node19.html +++ b/docs/html/node19.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next: Subroutine mld_precaply @@ -115,20 +111,16 @@ single/double precision version of MLD2P4 under use. -next +next -up +up -previous +previous -contents +contents
    Next: Subroutine mld_precaply diff --git a/docs/html/node2.html b/docs/html/node2.html index 306db69f..080ef8a4 100644 --- a/docs/html/node2.html +++ b/docs/html/node2.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous
    Next: General Overview diff --git a/docs/html/node20.html b/docs/html/node20.html index e686cdc0..75497d58 100644 --- a/docs/html/node20.html +++ b/docs/html/node20.html @@ -1,6 +1,6 @@ - -next +next -up +up -previous +previous -contents +contents
    Next: Subroutine mld_precfree @@ -73,14 +69,14 @@ This routine computes $y = op(M^{-1})  x$, where $y = op(M^{-1})\, x$, where $M$ is a previously built preconditioner, stored into p, and $op$ denotes the preconditioner itself or its transpose, according to the value of trans. @@ -99,7 +95,7 @@ and hence it is completely transparent to the user.
      The preconditioner data structure, containing the local part of $M$. Note that x must be chosen according to the real/complex, single/double precision version of MLD2P4 under use.
      The local part of the vector $x$. Note that type and kind_parameter must be chosen according to the real/complex, single/double precision version of MLD2P4 under use.
      The local part of the vector $y$. Note that type and kind_parameter must be chosen according to the real/complex, single/double precision version of MLD2P4 under use.
    work