From 9429b4e51be35887756949ff68c0c59b52abe3c1 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 18 Dec 2019 13:53:25 +0000 Subject: [PATCH] Switch html docs to htlatex, step 1. --- README.md | 19 + ReleaseNews | 15 - docs/html/contents.png | Bin 278 -> 0 bytes docs/html/footnode.html | 218 ------------ docs/html/img1.png | Bin 200 -> 0 bytes docs/html/img10.png | Bin 404 -> 0 bytes docs/html/img100.png | Bin 178 -> 0 bytes docs/html/img101.png | Bin 363 -> 0 bytes docs/html/img102.png | Bin 533 -> 0 bytes docs/html/img103.png | Bin 359 -> 0 bytes docs/html/img104.png | Bin 368 -> 0 bytes docs/html/img105.png | Bin 228 -> 0 bytes docs/html/img106.png | Bin 340 -> 0 bytes docs/html/img107.png | Bin 259 -> 0 bytes docs/html/img109.png | Bin 194 -> 0 bytes docs/html/img11.png | Bin 526 -> 0 bytes docs/html/img110.png | Bin 737 -> 0 bytes docs/html/img111.png | Bin 373 -> 0 bytes docs/html/img116.png | Bin 134 -> 0 bytes docs/html/img117.png | Bin 257 -> 0 bytes docs/html/img118.png | Bin 390 -> 0 bytes docs/html/img119.png | Bin 263 -> 0 bytes docs/html/img12.png | Bin 129 -> 0 bytes docs/html/img120.png | Bin 244 -> 0 bytes docs/html/img121.png | Bin 276 -> 0 bytes docs/html/img122.png | Bin 374 -> 0 bytes docs/html/img123.png | Bin 222 -> 0 bytes docs/html/img124.png | Bin 259 -> 0 bytes docs/html/img125.png | Bin 808 -> 0 bytes docs/html/img126.png | Bin 412 -> 0 bytes docs/html/img127.png | Bin 431 -> 0 bytes docs/html/img128.png | Bin 354 -> 0 bytes docs/html/img129.png | Bin 310 -> 0 bytes docs/html/img13.png | Bin 3167 -> 0 bytes docs/html/img130.png | Bin 839 -> 0 bytes docs/html/img131.png | Bin 335 -> 0 bytes docs/html/img132.png | Bin 500 -> 0 bytes docs/html/img133.png | Bin 402 -> 0 bytes docs/html/img134.png | Bin 267 -> 0 bytes docs/html/img135.png | Bin 533 -> 0 bytes docs/html/img136.png | Bin 545 -> 0 bytes docs/html/img137.png | Bin 335 -> 0 bytes docs/html/img138.png | Bin 232 -> 0 bytes docs/html/img139.png | Bin 520 -> 0 bytes docs/html/img14.png | Bin 643 -> 0 bytes docs/html/img140.png | Bin 613 -> 0 bytes docs/html/img141.png | Bin 581 -> 0 bytes docs/html/img142.png | Bin 312 -> 0 bytes docs/html/img143.png | Bin 277 -> 0 bytes docs/html/img144.png | Bin 870 -> 0 bytes docs/html/img145.png | Bin 215 -> 0 bytes docs/html/img146.png | Bin 583 -> 0 bytes docs/html/img147.png | Bin 732 -> 0 bytes docs/html/img148.png | Bin 523 -> 0 bytes docs/html/img149.png | Bin 268 -> 0 bytes docs/html/img15.png | Bin 230 -> 0 bytes docs/html/img150.png | Bin 572 -> 0 bytes docs/html/img151.png | Bin 240 -> 0 bytes docs/html/img152.png | 0 docs/html/img153.png | Bin 8603 -> 0 bytes docs/html/img154.png | 0 docs/html/img155.png | Bin 1099 -> 0 bytes docs/html/img156.png | Bin 758 -> 0 bytes docs/html/img157.png | Bin 875 -> 0 bytes docs/html/img158.png | Bin 867 -> 0 bytes docs/html/img159.png | Bin 1172 -> 0 bytes docs/html/img16.png | Bin 196 -> 0 bytes docs/html/img160.png | Bin 1348 -> 0 bytes docs/html/img161.png | Bin 1029 -> 0 bytes docs/html/img162.png | Bin 1121 -> 0 bytes docs/html/img163.png | Bin 1209 -> 0 bytes docs/html/img164.png | Bin 1156 -> 0 bytes docs/html/img165.png | Bin 373 -> 0 bytes docs/html/img166.png | Bin 431 -> 0 bytes docs/html/img167.png | Bin 304 -> 0 bytes docs/html/img168.png | Bin 915 -> 0 bytes docs/html/img169.png | Bin 678 -> 0 bytes docs/html/img17.png | Bin 371 -> 0 bytes docs/html/img170.png | Bin 659 -> 0 bytes docs/html/img171.png | Bin 219 -> 0 bytes docs/html/img172.png | Bin 429 -> 0 bytes docs/html/img173.png | Bin 2452 -> 0 bytes docs/html/img174.png | Bin 449 -> 0 bytes docs/html/img175.png | Bin 478 -> 0 bytes docs/html/img176.png | Bin 410 -> 0 bytes docs/html/img177.png | Bin 354 -> 0 bytes docs/html/img178.png | Bin 208 -> 0 bytes docs/html/img179.png | Bin 395 -> 0 bytes docs/html/img18.png | Bin 540 -> 0 bytes docs/html/img180.png | Bin 387 -> 0 bytes docs/html/img181.png | Bin 290 -> 0 bytes docs/html/img19.png | Bin 486 -> 0 bytes docs/html/img2.png | Bin 3108 -> 0 bytes docs/html/img20.png | Bin 184 -> 0 bytes docs/html/img21.png | Bin 231 -> 0 bytes docs/html/img22.png | Bin 201 -> 0 bytes docs/html/img23.png | Bin 225 -> 0 bytes docs/html/img24.png | Bin 469 -> 0 bytes docs/html/img25.png | Bin 482 -> 0 bytes docs/html/img26.png | Bin 267 -> 0 bytes docs/html/img27.png | Bin 4180 -> 0 bytes docs/html/img28.png | Bin 791 -> 0 bytes docs/html/img29.png | Bin 245 -> 0 bytes docs/html/img3.png | Bin 3149 -> 0 bytes docs/html/img30.png | Bin 591 -> 0 bytes docs/html/img31.png | Bin 1090 -> 0 bytes docs/html/img32.png | Bin 311 -> 0 bytes docs/html/img33.png | Bin 3994 -> 0 bytes docs/html/img34.png | Bin 799 -> 0 bytes docs/html/img35.png | Bin 454 -> 0 bytes docs/html/img36.png | Bin 875 -> 0 bytes docs/html/img37.png | Bin 311 -> 0 bytes docs/html/img38.png | Bin 3960 -> 0 bytes docs/html/img39.png | Bin 508 -> 0 bytes docs/html/img4.png | Bin 178 -> 0 bytes docs/html/img40.png | Bin 909 -> 0 bytes docs/html/img41.png | Bin 564 -> 0 bytes docs/html/img42.png | Bin 572 -> 0 bytes docs/html/img43.png | Bin 320 -> 0 bytes docs/html/img44.png | Bin 4024 -> 0 bytes docs/html/img45.png | Bin 655 -> 0 bytes docs/html/img46.png | Bin 476 -> 0 bytes docs/html/img47.png | Bin 498 -> 0 bytes docs/html/img48.png | Bin 536 -> 0 bytes docs/html/img49.png | Bin 572 -> 0 bytes docs/html/img5.png | Bin 200 -> 0 bytes docs/html/img50.png | Bin 597 -> 0 bytes docs/html/img51.png | Bin 243 -> 0 bytes docs/html/img52.png | Bin 256 -> 0 bytes docs/html/img53.png | Bin 415 -> 0 bytes docs/html/img54.png | Bin 2923 -> 0 bytes docs/html/img55.png | Bin 192 -> 0 bytes docs/html/img56.png | Bin 229 -> 0 bytes docs/html/img57.png | Bin 421 -> 0 bytes docs/html/img58.png | Bin 824 -> 0 bytes docs/html/img59.png | Bin 283 -> 0 bytes docs/html/img6.png | Bin 376 -> 0 bytes docs/html/img60.png | Bin 1916 -> 0 bytes docs/html/img61.png | Bin 3748 -> 0 bytes docs/html/img62.png | Bin 3122 -> 0 bytes docs/html/img63.png | Bin 367 -> 0 bytes docs/html/img64.png | Bin 253 -> 0 bytes docs/html/img65.png | Bin 247 -> 0 bytes docs/html/img66.png | Bin 261 -> 0 bytes docs/html/img67.png | Bin 2398 -> 0 bytes docs/html/img68.png | Bin 261 -> 0 bytes docs/html/img69.png | Bin 335 -> 0 bytes docs/html/img7.png | Bin 202 -> 0 bytes docs/html/img70.png | Bin 773 -> 0 bytes docs/html/img71.png | Bin 5090 -> 0 bytes docs/html/img72.png | Bin 5450 -> 0 bytes docs/html/img73.png | Bin 805 -> 0 bytes docs/html/img74.png | Bin 368 -> 0 bytes docs/html/img75.png | Bin 502 -> 0 bytes docs/html/img76.png | Bin 326 -> 0 bytes docs/html/img77.png | Bin 366 -> 0 bytes docs/html/img78.png | Bin 301 -> 0 bytes docs/html/img79.png | Bin 2461 -> 0 bytes docs/html/img8.png | Bin 231 -> 0 bytes docs/html/img80.png | Bin 373 -> 0 bytes docs/html/img81.png | Bin 539 -> 0 bytes docs/html/img82.png | Bin 167 -> 0 bytes docs/html/img83.png | Bin 800 -> 0 bytes docs/html/img84.png | Bin 369 -> 0 bytes docs/html/img85.png | Bin 1401 -> 0 bytes docs/html/img86.png | Bin 502 -> 0 bytes docs/html/img87.png | Bin 366 -> 0 bytes docs/html/img88.png | Bin 256 -> 0 bytes docs/html/img89.png | Bin 243 -> 0 bytes docs/html/img9.png | Bin 242 -> 0 bytes docs/html/img90.png | Bin 186 -> 0 bytes docs/html/img91.png | Bin 418 -> 0 bytes docs/html/img92.png | Bin 507 -> 0 bytes docs/html/img93.png | Bin 219 -> 0 bytes docs/html/img94.png | Bin 582 -> 0 bytes docs/html/img95.png | Bin 319 -> 0 bytes docs/html/img96.png | Bin 457 -> 0 bytes docs/html/img97.png | Bin 394 -> 0 bytes docs/html/img98.png | Bin 285 -> 0 bytes docs/html/img99.png | Bin 415 -> 0 bytes docs/html/index.html | 408 --------------------- docs/html/next.png | Bin 245 -> 0 bytes docs/html/next_g.png | Bin 272 -> 0 bytes docs/html/node1.html | 111 ------ docs/html/node10.html | 298 ---------------- docs/html/node100.html | 177 ---------- docs/html/node101.html | 146 -------- docs/html/node102.html | 149 -------- docs/html/node103.html | 103 ------ docs/html/node104.html | 125 ------- docs/html/node105.html | 81 ----- docs/html/node106.html | 89 ----- docs/html/node107.html | 87 ----- docs/html/node108.html | 136 ------- docs/html/node109.html | 177 ---------- docs/html/node11.html | 59 ---- docs/html/node110.html | 176 ---------- docs/html/node111.html | 178 ---------- docs/html/node112.html | 176 ---------- docs/html/node113.html | 178 ---------- docs/html/node114.html | 210 ----------- docs/html/node115.html | 190 ---------- docs/html/node116.html | 189 ---------- docs/html/node117.html | 342 ------------------ docs/html/node118.html | 91 ----- docs/html/node119.html | 159 --------- docs/html/node12.html | 98 ------ docs/html/node120.html | 168 --------- docs/html/node121.html | 117 ------ docs/html/node122.html | 119 ------- docs/html/node123.html | 123 ------- docs/html/node124.html | 115 ------ docs/html/node125.html | 98 ------ docs/html/node126.html | 150 -------- docs/html/node127.html | 194 ---------- docs/html/node128.html | 153 -------- docs/html/node129.html | 114 ------ docs/html/node13.html | 99 ------ docs/html/node130.html | 92 ----- docs/html/node131.html | 107 ------ docs/html/node132.html | 76 ---- docs/html/node133.html | 440 ----------------------- docs/html/node134.html | 180 ---------- docs/html/node135.html | 67 ---- docs/html/node14.html | 90 ----- docs/html/node15.html | 90 ----- docs/html/node16.html | 99 ------ docs/html/node17.html | 89 ----- docs/html/node18.html | 92 ----- docs/html/node19.html | 89 ----- docs/html/node2.html | 169 --------- docs/html/node20.html | 80 ----- docs/html/node21.html | 91 ----- docs/html/node22.html | 98 ------ docs/html/node23.html | 216 ------------ docs/html/node24.html | 59 ---- docs/html/node25.html | 89 ----- docs/html/node26.html | 90 ----- docs/html/node27.html | 100 ------ docs/html/node28.html | 91 ----- docs/html/node29.html | 92 ----- docs/html/node3.html | 196 ----------- docs/html/node30.html | 91 ----- docs/html/node31.html | 92 ----- docs/html/node32.html | 96 ----- docs/html/node33.html | 114 ------ docs/html/node34.html | 106 ------ docs/html/node35.html | 98 ------ docs/html/node36.html | 94 ----- docs/html/node37.html | 94 ----- docs/html/node38.html | 117 ------ docs/html/node39.html | 117 ------ docs/html/node4.html | 222 ------------ docs/html/node40.html | 80 ----- docs/html/node41.html | 92 ----- docs/html/node42.html | 82 ----- docs/html/node43.html | 164 --------- docs/html/node44.html | 57 --- docs/html/node45.html | 89 ----- docs/html/node46.html | 92 ----- docs/html/node47.html | 134 ------- docs/html/node48.html | 111 ------ docs/html/node49.html | 90 ----- docs/html/node5.html | 194 ---------- docs/html/node50.html | 88 ----- docs/html/node51.html | 97 ----- docs/html/node52.html | 93 ----- docs/html/node53.html | 280 --------------- docs/html/node54.html | 317 ----------------- docs/html/node55.html | 264 -------------- docs/html/node56.html | 283 --------------- docs/html/node57.html | 216 ------------ docs/html/node58.html | 281 --------------- docs/html/node59.html | 264 -------------- docs/html/node6.html | 281 --------------- docs/html/node60.html | 283 --------------- docs/html/node61.html | 219 ------------ docs/html/node62.html | 194 ---------- docs/html/node63.html | 194 ---------- docs/html/node64.html | 427 ---------------------- docs/html/node65.html | 469 ------------------------- docs/html/node66.html | 77 ---- docs/html/node67.html | 633 --------------------------------- docs/html/node68.html | 761 ---------------------------------------- docs/html/node69.html | 270 -------------- docs/html/node7.html | 108 ------ docs/html/node70.html | 277 --------------- docs/html/node71.html | 133 ------- docs/html/node72.html | 450 ------------------------ docs/html/node73.html | 259 -------------- docs/html/node74.html | 133 ------- docs/html/node75.html | 116 ------ docs/html/node76.html | 103 ------ docs/html/node77.html | 198 ----------- docs/html/node78.html | 143 -------- docs/html/node79.html | 320 ----------------- docs/html/node8.html | 121 ------- docs/html/node80.html | 209 ----------- docs/html/node81.html | 114 ------ docs/html/node82.html | 133 ------- docs/html/node83.html | 151 -------- docs/html/node84.html | 221 ------------ docs/html/node85.html | 128 ------- docs/html/node86.html | 118 ------- docs/html/node87.html | 138 -------- docs/html/node88.html | 213 ----------- docs/html/node89.html | 165 --------- docs/html/node9.html | 241 ------------- docs/html/node90.html | 125 ------- docs/html/node91.html | 149 -------- docs/html/node92.html | 125 ------- docs/html/node93.html | 149 -------- docs/html/node94.html | 130 ------- docs/html/node95.html | 129 ------- docs/html/node96.html | 256 -------------- docs/html/node97.html | 125 ------- docs/html/node98.html | 291 --------------- docs/html/node99.html | 106 ------ docs/html/prev.png | Bin 279 -> 0 bytes docs/html/prev_g.png | Bin 327 -> 0 bytes docs/html/up.png | Bin 211 -> 0 bytes docs/html/up_g.png | Bin 231 -> 0 bytes docs/html/userhtml.css | 30 -- docs/html/userhtml.html | 408 --------------------- docs/src/Makefile | 29 +- docs/src/commrout.tex | 12 +- docs/src/datastruct.tex | 96 ++--- docs/src/methods.tex | 3 +- docs/src/penv.tex | 51 +-- docs/src/precs.tex | 18 +- docs/src/psbrout.tex | 39 +- docs/src/toolsrout.tex | 96 ++--- docs/src/util.tex | 18 +- 333 files changed, 151 insertions(+), 23560 deletions(-) delete mode 100644 docs/html/contents.png delete mode 100644 docs/html/footnode.html delete mode 100644 docs/html/img1.png delete mode 100644 docs/html/img10.png delete mode 100644 docs/html/img100.png delete mode 100644 docs/html/img101.png delete mode 100644 docs/html/img102.png delete mode 100644 docs/html/img103.png delete mode 100644 docs/html/img104.png delete mode 100644 docs/html/img105.png delete mode 100644 docs/html/img106.png delete mode 100644 docs/html/img107.png delete mode 100644 docs/html/img109.png delete mode 100644 docs/html/img11.png delete mode 100644 docs/html/img110.png delete mode 100644 docs/html/img111.png delete mode 100644 docs/html/img116.png delete mode 100644 docs/html/img117.png delete mode 100644 docs/html/img118.png delete mode 100644 docs/html/img119.png delete mode 100644 docs/html/img12.png delete mode 100644 docs/html/img120.png delete mode 100644 docs/html/img121.png delete mode 100644 docs/html/img122.png delete mode 100644 docs/html/img123.png delete mode 100644 docs/html/img124.png delete mode 100644 docs/html/img125.png delete mode 100644 docs/html/img126.png delete mode 100644 docs/html/img127.png delete mode 100644 docs/html/img128.png delete mode 100644 docs/html/img129.png delete mode 100644 docs/html/img13.png delete mode 100644 docs/html/img130.png delete mode 100644 docs/html/img131.png delete mode 100644 docs/html/img132.png delete mode 100644 docs/html/img133.png delete mode 100644 docs/html/img134.png delete mode 100644 docs/html/img135.png delete mode 100644 docs/html/img136.png delete mode 100644 docs/html/img137.png delete mode 100644 docs/html/img138.png delete mode 100644 docs/html/img139.png delete mode 100644 docs/html/img14.png delete mode 100644 docs/html/img140.png delete mode 100644 docs/html/img141.png delete mode 100644 docs/html/img142.png delete mode 100644 docs/html/img143.png delete mode 100644 docs/html/img144.png delete mode 100644 docs/html/img145.png delete mode 100644 docs/html/img146.png delete mode 100644 docs/html/img147.png delete mode 100644 docs/html/img148.png delete mode 100644 docs/html/img149.png delete mode 100644 docs/html/img15.png delete mode 100644 docs/html/img150.png delete mode 100644 docs/html/img151.png delete mode 100644 docs/html/img152.png delete mode 100644 docs/html/img153.png delete mode 100644 docs/html/img154.png delete mode 100644 docs/html/img155.png delete mode 100644 docs/html/img156.png delete mode 100644 docs/html/img157.png delete mode 100644 docs/html/img158.png delete mode 100644 docs/html/img159.png delete mode 100644 docs/html/img16.png delete mode 100644 docs/html/img160.png delete mode 100644 docs/html/img161.png delete mode 100644 docs/html/img162.png delete mode 100644 docs/html/img163.png delete mode 100644 docs/html/img164.png delete mode 100644 docs/html/img165.png delete mode 100644 docs/html/img166.png delete mode 100644 docs/html/img167.png delete mode 100644 docs/html/img168.png delete mode 100644 docs/html/img169.png delete mode 100644 docs/html/img17.png delete mode 100644 docs/html/img170.png delete mode 100644 docs/html/img171.png delete mode 100644 docs/html/img172.png delete mode 100644 docs/html/img173.png delete mode 100644 docs/html/img174.png delete mode 100644 docs/html/img175.png delete mode 100644 docs/html/img176.png delete mode 100644 docs/html/img177.png delete mode 100644 docs/html/img178.png delete mode 100644 docs/html/img179.png delete mode 100644 docs/html/img18.png delete mode 100644 docs/html/img180.png delete mode 100644 docs/html/img181.png delete mode 100644 docs/html/img19.png delete mode 100644 docs/html/img2.png delete mode 100644 docs/html/img20.png delete mode 100644 docs/html/img21.png delete mode 100644 docs/html/img22.png delete mode 100644 docs/html/img23.png delete mode 100644 docs/html/img24.png delete mode 100644 docs/html/img25.png delete mode 100644 docs/html/img26.png delete mode 100644 docs/html/img27.png delete mode 100644 docs/html/img28.png delete mode 100644 docs/html/img29.png delete mode 100644 docs/html/img3.png delete mode 100644 docs/html/img30.png delete mode 100644 docs/html/img31.png delete mode 100644 docs/html/img32.png delete mode 100644 docs/html/img33.png delete mode 100644 docs/html/img34.png delete mode 100644 docs/html/img35.png delete mode 100644 docs/html/img36.png delete mode 100644 docs/html/img37.png delete mode 100644 docs/html/img38.png delete mode 100644 docs/html/img39.png delete mode 100644 docs/html/img4.png delete mode 100644 docs/html/img40.png delete mode 100644 docs/html/img41.png delete mode 100644 docs/html/img42.png delete mode 100644 docs/html/img43.png delete mode 100644 docs/html/img44.png delete mode 100644 docs/html/img45.png delete mode 100644 docs/html/img46.png delete mode 100644 docs/html/img47.png delete mode 100644 docs/html/img48.png delete mode 100644 docs/html/img49.png delete mode 100644 docs/html/img5.png delete mode 100644 docs/html/img50.png delete mode 100644 docs/html/img51.png delete mode 100644 docs/html/img52.png delete mode 100644 docs/html/img53.png delete mode 100644 docs/html/img54.png delete mode 100644 docs/html/img55.png delete mode 100644 docs/html/img56.png delete mode 100644 docs/html/img57.png delete mode 100644 docs/html/img58.png delete mode 100644 docs/html/img59.png delete mode 100644 docs/html/img6.png delete mode 100644 docs/html/img60.png delete mode 100644 docs/html/img61.png delete mode 100644 docs/html/img62.png delete mode 100644 docs/html/img63.png delete mode 100644 docs/html/img64.png delete mode 100644 docs/html/img65.png delete mode 100644 docs/html/img66.png delete mode 100644 docs/html/img67.png delete mode 100644 docs/html/img68.png delete mode 100644 docs/html/img69.png delete mode 100644 docs/html/img7.png delete mode 100644 docs/html/img70.png delete mode 100644 docs/html/img71.png delete mode 100644 docs/html/img72.png delete mode 100644 docs/html/img73.png delete mode 100644 docs/html/img74.png delete mode 100644 docs/html/img75.png delete mode 100644 docs/html/img76.png delete mode 100644 docs/html/img77.png delete mode 100644 docs/html/img78.png delete mode 100644 docs/html/img79.png delete mode 100644 docs/html/img8.png delete mode 100644 docs/html/img80.png delete mode 100644 docs/html/img81.png delete mode 100644 docs/html/img82.png delete mode 100644 docs/html/img83.png delete mode 100644 docs/html/img84.png delete mode 100644 docs/html/img85.png delete mode 100644 docs/html/img86.png delete mode 100644 docs/html/img87.png delete mode 100644 docs/html/img88.png delete mode 100644 docs/html/img89.png delete mode 100644 docs/html/img9.png delete mode 100644 docs/html/img90.png delete mode 100644 docs/html/img91.png delete mode 100644 docs/html/img92.png delete mode 100644 docs/html/img93.png delete mode 100644 docs/html/img94.png delete mode 100644 docs/html/img95.png delete mode 100644 docs/html/img96.png delete mode 100644 docs/html/img97.png delete mode 100644 docs/html/img98.png delete mode 100644 docs/html/img99.png delete mode 100644 docs/html/index.html delete mode 100644 docs/html/next.png delete mode 100644 docs/html/next_g.png delete mode 100644 docs/html/node1.html delete mode 100644 docs/html/node10.html delete mode 100644 docs/html/node100.html delete mode 100644 docs/html/node101.html delete mode 100644 docs/html/node102.html delete mode 100644 docs/html/node103.html delete mode 100644 docs/html/node104.html delete mode 100644 docs/html/node105.html delete mode 100644 docs/html/node106.html delete mode 100644 docs/html/node107.html delete mode 100644 docs/html/node108.html delete mode 100644 docs/html/node109.html delete mode 100644 docs/html/node11.html delete mode 100644 docs/html/node110.html delete mode 100644 docs/html/node111.html delete mode 100644 docs/html/node112.html delete mode 100644 docs/html/node113.html delete mode 100644 docs/html/node114.html delete mode 100644 docs/html/node115.html delete mode 100644 docs/html/node116.html delete mode 100644 docs/html/node117.html delete mode 100644 docs/html/node118.html delete mode 100644 docs/html/node119.html delete mode 100644 docs/html/node12.html delete mode 100644 docs/html/node120.html delete mode 100644 docs/html/node121.html delete mode 100644 docs/html/node122.html delete mode 100644 docs/html/node123.html delete mode 100644 docs/html/node124.html delete mode 100644 docs/html/node125.html delete mode 100644 docs/html/node126.html delete mode 100644 docs/html/node127.html delete mode 100644 docs/html/node128.html delete mode 100644 docs/html/node129.html delete mode 100644 docs/html/node13.html delete mode 100644 docs/html/node130.html delete mode 100644 docs/html/node131.html delete mode 100644 docs/html/node132.html delete mode 100644 docs/html/node133.html delete mode 100644 docs/html/node134.html delete mode 100644 docs/html/node135.html delete mode 100644 docs/html/node14.html delete mode 100644 docs/html/node15.html delete mode 100644 docs/html/node16.html delete mode 100644 docs/html/node17.html delete mode 100644 docs/html/node18.html delete mode 100644 docs/html/node19.html delete mode 100644 docs/html/node2.html delete mode 100644 docs/html/node20.html delete mode 100644 docs/html/node21.html delete mode 100644 docs/html/node22.html delete mode 100644 docs/html/node23.html delete mode 100644 docs/html/node24.html delete mode 100644 docs/html/node25.html delete mode 100644 docs/html/node26.html delete mode 100644 docs/html/node27.html delete mode 100644 docs/html/node28.html delete mode 100644 docs/html/node29.html delete mode 100644 docs/html/node3.html delete mode 100644 docs/html/node30.html delete mode 100644 docs/html/node31.html delete mode 100644 docs/html/node32.html delete mode 100644 docs/html/node33.html delete mode 100644 docs/html/node34.html delete mode 100644 docs/html/node35.html delete mode 100644 docs/html/node36.html delete mode 100644 docs/html/node37.html delete mode 100644 docs/html/node38.html delete mode 100644 docs/html/node39.html delete mode 100644 docs/html/node4.html delete mode 100644 docs/html/node40.html delete mode 100644 docs/html/node41.html delete mode 100644 docs/html/node42.html delete mode 100644 docs/html/node43.html delete mode 100644 docs/html/node44.html delete mode 100644 docs/html/node45.html delete mode 100644 docs/html/node46.html delete mode 100644 docs/html/node47.html delete mode 100644 docs/html/node48.html delete mode 100644 docs/html/node49.html delete mode 100644 docs/html/node5.html delete mode 100644 docs/html/node50.html delete mode 100644 docs/html/node51.html delete mode 100644 docs/html/node52.html delete mode 100644 docs/html/node53.html delete mode 100644 docs/html/node54.html delete mode 100644 docs/html/node55.html delete mode 100644 docs/html/node56.html delete mode 100644 docs/html/node57.html delete mode 100644 docs/html/node58.html delete mode 100644 docs/html/node59.html delete mode 100644 docs/html/node6.html delete mode 100644 docs/html/node60.html delete mode 100644 docs/html/node61.html delete mode 100644 docs/html/node62.html delete mode 100644 docs/html/node63.html delete mode 100644 docs/html/node64.html delete mode 100644 docs/html/node65.html delete mode 100644 docs/html/node66.html delete mode 100644 docs/html/node67.html delete mode 100644 docs/html/node68.html delete mode 100644 docs/html/node69.html delete mode 100644 docs/html/node7.html delete mode 100644 docs/html/node70.html delete mode 100644 docs/html/node71.html delete mode 100644 docs/html/node72.html delete mode 100644 docs/html/node73.html delete mode 100644 docs/html/node74.html delete mode 100644 docs/html/node75.html delete mode 100644 docs/html/node76.html delete mode 100644 docs/html/node77.html delete mode 100644 docs/html/node78.html delete mode 100644 docs/html/node79.html delete mode 100644 docs/html/node8.html delete mode 100644 docs/html/node80.html delete mode 100644 docs/html/node81.html delete mode 100644 docs/html/node82.html delete mode 100644 docs/html/node83.html delete mode 100644 docs/html/node84.html delete mode 100644 docs/html/node85.html delete mode 100644 docs/html/node86.html delete mode 100644 docs/html/node87.html delete mode 100644 docs/html/node88.html delete mode 100644 docs/html/node89.html delete mode 100644 docs/html/node9.html delete mode 100644 docs/html/node90.html delete mode 100644 docs/html/node91.html delete mode 100644 docs/html/node92.html delete mode 100644 docs/html/node93.html delete mode 100644 docs/html/node94.html delete mode 100644 docs/html/node95.html delete mode 100644 docs/html/node96.html delete mode 100644 docs/html/node97.html delete mode 100644 docs/html/node98.html delete mode 100644 docs/html/node99.html delete mode 100644 docs/html/prev.png delete mode 100644 docs/html/prev_g.png delete mode 100644 docs/html/up.png delete mode 100644 docs/html/up_g.png delete mode 100644 docs/html/userhtml.css delete mode 100644 docs/html/userhtml.html diff --git a/README.md b/README.md index cc1a77e6..9804a69c 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,25 @@ Fix all reamining bugs. Bugs? We dont' have any ! ;-) The PSBLAS team. +--------------- +Project lead: +Salvatore Filippone + +Contributors (roughly reverse cronological order): + +Soren Rasmussen +Zaak Beekman +Ambra Abdullahi Hassan +Pasqua D'Ambra +Alfredo Buttari +Daniela di Serafino +Michele Martone +Michele Colajanni +Fabio Cerioni +Stefano Maiolatesi +Dario Pascucci + + RELATED SOFTWARE ---------------- diff --git a/ReleaseNews b/ReleaseNews index 7b1829da..6627c0be 100644 --- a/ReleaseNews +++ b/ReleaseNews @@ -97,18 +97,3 @@ interested in the package MLD2P4 from http://github.com/sfilippone/mld2p4-2 Contact: https://github.com/sfilippone/psblas3 -Contributors -Salvatore Filippone -Alfredo Buttari -Soren Rasmussen -Ambra Abdullahi Hassan -Pasqua D'Ambra -Daniela di Serafino -Michele Martone -Michele Colajanni -Fabio Cerioni -Stefano Maiolatesi -Dario Pascucci - - - diff --git a/docs/html/contents.png b/docs/html/contents.png deleted file mode 100644 index 0c752c66c876acaa2131d43788a7406f5979f746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOpUP)n_8B^;cn$O_g|3BG{!1Fj&^JiWpJWLeA$WK=+#U`gfB`ZJpvc?v;;IiS zWN}RlBW%jSmz3^2R|i?JM0KMv+9z;7ee - - - - -Footnotes - - - - - - - - - - - - - - - - -
-
... -explicitly1
-
In our prototype implementation we provide -sample scatter/gather routines. - -
.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-
-
-
... domain2
-
This is - the normal situation when the pattern of the sparse matrix is - symmetric, which is equivalent to say that the interaction between - two variables is reciprocal. If the matrix pattern is non-symmetric - we may have one-way interactions, and these could cause a situation - in which a boundary point is not a halo point for its neighbour. - -
.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-
-
-
... prec%build3
-
The subroutine style psb_precinit and psb_precbl are still supported for - backward compatibility - -
.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-
-
-
... follows4
-
The string is case-insensitive - -
.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-
-
-
... method5
-
Note: - the implementation is for $FCG(1)$. - -
.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-
-
-
- - diff --git a/docs/html/img1.png b/docs/html/img1.png deleted file mode 100644 index 2ac27f9619e5eb27f3ca81d3b0f77011c78ffb37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!py+HxR`CDK9Hjx;1lBd|NsA)GiR2Um%n@W z&e+&kP*8Bys#P5w9YA>(7ni$t?$q#`>GkCiCxvXHh-PMH0000)L`2=)-6A3)ySuv-E6N)H z0004WQchCOO@Ms1W0EQBMt(p4&z~a7%9W0CXEc3}oOwfIcdgAd3JDD|t z8TF|h<9Dg}C5JT8iioCH)uh}?{otLT21 zTj)s|f>-OIXC4AD9^&PFC0HAS*_$-VmuYZ4dJBoAM}&2Ev*ER45JzwRUHSqS!Qf3A yw0V0sM@=_)&qhoMZcb|Dy$*UU&2#Sue-RIimk8_{iK!?60000S diff --git a/docs/html/img100.png b/docs/html/img100.png deleted file mode 100644 index 89a17445a1029668b2dc5d19d19653f60ae4a6e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!py+HIB&`YPasDh($ diff --git a/docs/html/img101.png b/docs/html/img101.png deleted file mode 100644 index f539ffeb3309da75bba063bf2f46ca8d6c155676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hIoUP)SV1R;83=9_-@PQ2iAToe~ft7(t39m{91}1hWgEIug zn*d@qFzIt!fEW)5XvPLqI1%gvKx26r7!tsoOKc!=5rYB`)Mn;y3&=2^0N}Zx184Jt z>@Pr)1O?jy0VqfC69tfX?E`~! z1_OgTip~=ZlNr3gETB#%U?N0Gf&2jsds|d4B8hAv-A_Xp001=)B*xBXU4j4r002ov JPDHLkV1ixrha~_2 diff --git a/docs/html/img102.png b/docs/html/img102.png deleted file mode 100644 index bbb0a1c0638813184dbf7efea93ec2d3bef9b505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmV+w0_y#VP)@QY}xzP!v7umUe63_Lg}nA16e{zCv(_{3}wcXA#_(I z&%r7ppw=G<)NJ^O)TY2TdTD%_msC@;81BET_`4~DBi1&Wutb3;Y zK>cJ?tr8rvousJzD#0W5lXfbuqn>tcM+pW8$(cl5rdcdA3q1${WK$nM`4U@X zxxh?#M$CxA_R3_|Xv2!>{^dHrAv)u?9}J#;%W!8ft7GLOatnJ6Txf=O^TBQb8_gwL z0rN3rkFH@C%M_n8AcJSFh0hSN-KS5waXKD1R_8de$;sfPf4jt6kev&-30>PP1l)V( zuQafz87dHTGEwHJb%0}FB}Aq@R<1Cu_4Eqeh+*op%=7kJTl+jO6Jo9L6v7`AohkbO XvC&&dV>9~m00000NkvXXu0mjfjvnZ4 diff --git a/docs/html/img103.png b/docs/html/img103.png deleted file mode 100644 index b6226f3cb58570dcd90e8ddd8732b6904a4be507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8j!py+H_;_2w zg{O;Sh{nX^1O{eS1-^s>EIJNniW?ptVA3gaIKZVO<&f1SCd06iKOwxGA;;lQ18>S2 zX?=0&!^UkaY;Aj(74Ps^@<=OasTmju8nLKnBvde{Bug~7Z7_Cjv5=6Ekd(N=-1o!a zLu2iZ1jY*oxgFNbVCDWP!4#?ZYKNqRg`$oaJDc35SO=+$#t4hn#)VTH*&`pB%y`0L z9g)Z69I%k@upL`lIU7&Sf`CVl=NzzY{K|Ae+(GP$v2kR)rNL*@_HXP6~! zYrmGTl8|`DX<(qGAbI`^gG<%o9Y>i{47Qm#6f-b*UROVw#=5{9=w}8`S3j3^P6SU;qOFAYQ-#2MR#^fdK_@GhhcC{4f^NGlmTe44gRB zAp@2K5ZPb=Bvcqa2yFNUv4M{-;Q*TeP>vO3KO+Of1tQGC33wUUfFwH*A7E#JiZy_} z#?8vg!0?@+0O({UAnPv3*%$ad5)x_|4lpo)Tm@8=z`zA^`pTOiYFzMLDz@pgMz;KL#|1$%_ACM65g;oYV2KEa;pL|#akE{0#I~ZoM0mZl$ zTmT0I(24^LNsU4c3>pkv9~l^gKtf`EP^)-A1j_+bH}wMXH!Ay+6aWBqO)Pn?2Tg+j O0000?0wP*4dWH_+TiD8#8Gw9eT%UGCayn)MLgASv2gwd7iO>+`1rZO;G Xnjxg1Sth6fw2i^j)z4*}Q$iB}$i+)j diff --git a/docs/html/img106.png b/docs/html/img106.png deleted file mode 100644 index bd84d15a13c55f0d1ca4f209b9dbf12f7d15f537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^`amql!py+HXsMCK2;>+9_=LFr|NnpH%$eoo<)NXW z@7}#LHa0$U=8T}A;Hp)tIyySi($atmU0hu5-o2}&q_lhYZh2Y7sX!sdk|4ie28U-i zK=PM7T^vI+CMG8^F!>1_Jj}q()pJLqhK-fYPFbOFCZlx%dlDlXpC6lBox*Fb!|WS0 zE=$Us+W7K1dk`PD#1CE}nFbw4wz@W69vYZWLWL!%?)O-uOd4!^Uh$HDi-T*T^jsN)2=qZfF;{ kh~4C4)Y~EJEXTl*HA%(dr`P=!pzjzwUHx3vIVCg!07F`EA^-pY diff --git a/docs/html/img107.png b/docs/html/img107.png deleted file mode 100644 index 6c716f7e4178c36efee52549aad19407b2ea3fb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^3LrKMGXn#oZ=&N)AjcrUC&cyt|Nk>*&MYr44-E}{ z_wJpsvGJKRX9NWWSFKvr(b18XmIhSl;^K1m?p-A%rQN%C%gZWG1qv~i1o;IsI6S)n zl5g~MaSY*@nVjIjUc)UBIbp{iK~5$fov1Ls$^`kUt+I9b||$o%*%OCB2=>vB$o ziMM&yF!9XdnJg(G!Fs?;NAi_zB$vdud+9N!*B@YDSY;#m{CfG!zd*+@c)I$ztaD0e F0sx<5TcrR1 diff --git a/docs/html/img109.png b/docs/html/img109.png deleted file mode 100644 index 660cca8c7ec796eebb489d2e672e35a6881cb687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj;GXn#o1jC}|K#p#JPl)UP|Nm#soLOF89vT|@ z?%lgHXU+%;3a(nUs-vSLEiDbG%EiUy?%lgeN=mzT?_M^AZw^q1u_VYZn8D%M4UoLE zr;B3<$IRq}ga;`J2>}dAY<=uJ1qaxdK2|gMU@4Q}z$nGTb4P}UCnkrHr>9@uAc1{N o_zmHPD=XR0Fe!9BlvHMBm|@1HdBjz1InX!;Pgg&ebxsLQ09B|yy#N3J diff --git a/docs/html/img11.png b/docs/html/img11.png deleted file mode 100644 index 31bd2fc6ebcfb2228566927602896b510cc08d62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)7f@ zn~Uh?(Ag;z2eC^L@j)D7mx3+|x{7~5=;mh4P47+8o3vPTaOfd?Irn_ux$gw%hr~z` z31|bRPh3CdA}NI{Ra8JP2!Jq~)YFJ?>08uDXp**plnyje)Ue~{EmDvnAuYSH9)3N8 z)8&BI*BHyZ!uFT$Vj)Q1oCox++v%kx`G`uX+99LRrbOx<2!3DxA(SviXb**Vrl}9> zj4A?ZG;a~jf2uEx8nR5Y0+^P6ZU&X*Pnw=2Euo}CNqYxRDXMJv%`~$}mL0gY?5ar% z&X^WbuN%Yq$->4M6)sY3$NA{rMUT(tmoC7oV#(8Xdo~g>8tOp*Ie4*Q<2a^nqXq1T zULaph@Lp855>)jPIW6jyysJ9HRb@?NuVSiLYUvH~fd}4cpki}X6Hidhn2Il85#k9O zcf)b6=VXnmx_`VYAf{puxLq+0!Z~{oy8J#5R)KOS>IHuq!_}exuQC1<-vYE!YLm6E Q=l}o!07*qoM6N<$f_S&-cmMzZ diff --git a/docs/html/img110.png b/docs/html/img110.png deleted file mode 100644 index 1aaed1e97dc2f8e3957f687bf71d97c2d9f312c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)TxS)sImALl7Zi!9wy^O)Tu~v77%apt1E#Q0%s+4;ML@;)W_HZod1!HkAmn4` z&6{uD%zN|Z?Ernmuu4V1!JlAEV2_wo28;qAkdV0^`SwfNdrUBDwOW6i_MOC4^3u&E z?B~#)N_VoH4yg%yT(^IRORaF#ft7=d$*km$fa|=>H9Qx4=m7KVEO1kY#oKY>Rk+eu zz`IJ#w50|c zEYL%Yi~Cwu9;shv%5aNicb-av*ZGk7`y4CMjSOzw|4!?l)75J{V+Ql8rHoKUYc#G;Ta81!+J@YfRLlsAwDMA*u z@doRl(kpsU9WB2H+up$pPAa4A+lEGuedEq?PESXV3a_I%KM7x8SFoGtv52N%U{uzD((ez84b;ije_TX z9$3Os$|mh1krH+|OT0tDUO+fkPcVU*kFmwVTD_TDtXF=;3yvZO#u+I}VV3ob&66hC zZ8{N}=O)L-7T0s&NoraI!xvMZIh~G;jt!lSGaVbJv)?qUlM(y)Xu4ccgEHgHbcb1K zJy%-Ue%K3#oLh0xzOylLYX{SWzloxbPvv~$3I`pe8*%-sC9b!VmihTm<>{P`je7#MEc(eUPo R+zbj}22WQ%mvv4FO#m8@hr9p) diff --git a/docs/html/img116.png b/docs/html/img116.png deleted file mode 100644 index ea78705b71ed2e7cb82e4cbbfc9efb37caa1bfdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj;GXn#o1jC}|K#ov=Pl)UP|Nm#soLOF89vT`7 z6x+Rf_te<=yg(LXNswPKgTu2MX+VyWr;B3<$IRpe2L?A*fs;(mJZA*tBpx$)F>-91 ez}#}om65^j1moX;7{hR&Y6eeNKbLh*2~7abRwP&e diff --git a/docs/html/img117.png b/docs/html/img117.png deleted file mode 100644 index 74f211e1e3c6cc60031f040e98a014fb4b6367f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMI!py+H7%x2QDUf3j;1lBd|NsA)GiR2UmxqRi zzI*r1*x2~YnKOcdf~!`o>gec5OG^VPba8RHd-txAlG5(oyX9pSrvil-OM?7@862M7 z0Lj;Tx;Tb#%uG%If?EtK67Mt(8W?}GinD1vNcq9AXq}_xiHyu<45rT* zng6rJPUm)DX4zvI*}(MY&K)Q54X+p)*RxNkv{7jNGhdQPa*|Z3C@R7(8A5T-G@yGywoy CcvSU?2ia_`tvmq__zxYaaR57oN`Qrd0c24wn8VLd-~gAI0CEun zM}qi--y9AF`~@IKZs1^GT)?n__W~#&az6kC6b`Uo;DPJ8z`%fTC>H~R0`(k90hofs z_HqDviRl7{8r}n7Y8jZ6U%)s~(17C?gCfTRo(~NCpBWhbfW-N^7F^L{VE8bZ;{k&L zFbF=Zf+dMnYz$j~)E4#&{0YE-;#zP48mSfuoC-inaAm(51Lp(=u8#~1LYOYp2N5g> kFeO+(3F#X-o~8=`0F-GlG@kMKk^lez07*qoM6N<$f~2gJ7ytkO diff --git a/docs/html/img119.png b/docs/html/img119.png deleted file mode 100644 index fdfd3db7a7accefb6aa96c9dfe408ed99ccfa6f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)i!py+HD3-|}4dmzs_=LFr|NnpH%$eoo<)NXW z@7}#TbLNbopx~-it2#P5($dm^s$5)L?%uttq@=Wa_wHp=_~rnG7)yfuf*Bm1-2lmV zc)B=-NK8#m0D_bQOd<(9-%8lpSlJ~k%oUzY5ph%zXI7taoL5jJfjxNjfds})fjwRV zha)NuT(NFrGdO!>0>dH;g=GdZm)b7y?+Cclc+`gFLy193qh$#{GxKZK87;r9*x1q- zHQL`FRAaMSX&w;A-E4Y@L5+<~*W&q8B{ny0+cjcqo!A(*$SDb2eRfm;=q3hFS3j3^ HP6 Xv4`o`XSvK}K;;acu6{1-oD!M8sD8yJ2FVdQ&MBb@0D2=%7XSbN diff --git a/docs/html/img121.png b/docs/html/img121.png deleted file mode 100644 index 4c5591100d17b9afb1b86907d6640487850c0b0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^@*p+`GXn#oU}h;VkYg6$6XN>+|Nq5{7tfqIv%I`K zG&JG5=N43U^RH{dqkQ3a0IE_X_*=KTM^Svzi$?VHr)#~cK5xD6(x9%1Td zm+I$;+u*!FIn;4=zU_pF2T?uqBK28}BsWg3V#rwZhnEShP`q5dZMO*oNZcj4b9{Zx0Kgafm@4WNo Y{fC%acO7u30J@98)78&qol`;+0I?%-J^%m! diff --git a/docs/html/img122.png b/docs/html/img122.png deleted file mode 100644 index 8e8e8c7b617ef9d65016d9de0d80b87d8db2f0da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)=)kjc;Yff1ORy%KnP7(N&>q$5=EGYha4fMh_N$qZB3 z7`z<#8BSbbd%$3L0by1i1G6kx1_+)ptQX+C_O5}!{sS|RKvHGF!2B01GYVh;05K>y ULaoNwV*mgE07*qoM6N<$f^M#jssI20 diff --git a/docs/html/img123.png b/docs/html/img123.png deleted file mode 100644 index 56826b8bf01bdaa32853861434dfdbb451e4b900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&N!py+HxcqY>h+`1o6XN>+|NogYXO@?jhlYl} zd-u-R*!awuGlGJGt5&V*=;%mGO9Lu&adEkO_pXwX((c{6)?;<3R}H zMD8CKM2w>5Keyc{cjigefhi24w(Q9pI-S=h1wXjUk@jcR&I1x_&mUl5_z=MR*{!O% Q0%#9|r>mdKI;Vst061<=9{>OV diff --git a/docs/html/img124.png b/docs/html/img124.png deleted file mode 100644 index e205726f752de2f3b9c3206e5602974187753a72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^(m>3|!py+H82!xa29RSA;1lBd|NsA)GiR2UmxqRi zzI*r1*x2~YnKOcdf~!`o>gec5OG^VPba8RHd-txAlG5(oyX9pSrvil-OM?7@862M7 z0LeFcx;Tb#%uG&jVB_X;P?4W={`7$ZXEro8Hg*jQrHM=o!5;L<}LRvy# zK*Ndm3?Cb3U3DnYW0tn=FiY@waA;9)qvO^UjgA%P+pR<855$x)Ds1FiB+l`ykz-!E z!O>O)rHx#t9@j9aOp?gsZm8^e)h_X4`utRZyDTQ047NdHNi(DOcmf^6;OXk;vd$@? F2>^0?UMK(n diff --git a/docs/html/img125.png b/docs/html/img125.png deleted file mode 100644 index 0df61bc18ca942c85295b2217fa35a9a6dce5cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 808 zcmV+@1K0eCP)+0000mP)t-s|NsA) znVENYcU4tY?(Xh0Gc(N0%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001 zbW%=J06^y0W&i*Jrb$FWR7i>KRnKeGKotHmn`E=eCbR6RJ!r?pL#tq0Z=N>AA5@CE z1rLe`b5IZub_;s)V9;WVtrGhWn4>p?l%fQoO3|Ve*Mf&qgr#`!*0hMWJ+w{|Thi?h zD^(EbcbI(h-kWdUOlIByNf6kXN!llgr z_r^oV%=r^Nnm>PRP6o04r#T@&U7-1|yXyNMYyRI_-am(2eoZ%JZ4hH&DJIz(2U#Ja znKTRWXK#*?KCwRH^pVw|%>oU`D~lf)$hSKJRRt(5ZO)miu~wDoQvCOI*DDeYC>mIX z1TgI=U63fmk!p(-L=m{}If@EW;AgthNO@`sr7CYL@Q4mAycf1TE=2dkhJB@u^hDa3 zL1i|>{AaVIhevn#T`Xe>O*!8S8uvd5G!N297{=Tvy5=HlBo2#`brA>pyp=57>7rP2Bq7%mhiOb9tICuhW-_0eA%H;>97FI~k zR7bq-45w`)s+g@9XrDq}IOR>5VHIfafaDOC!K<|WQ<}eAw_z~3glSw$&e@7X7`W+v zL4PR4*)-@2!Y3UJy$0j%m$<}Nbp)S6OMwgU3$3qK@sN$~F@n=~tr?t4D9au_YcSod z>YpPe-5tYaQ!{~~u-s&Ap@gzt;SZW8MrjV&GdL{tsyy)+B=J_$CGv m=6wl=evs`@dKbIc3O@i+C!Uu>O7X-10000SV896kK!gFBU;+a#ABbketq%-1QFsaryda8~VFOI$ z0s;MKfE|bzFd^x6XHjSXv4LU-Hh^U78xAmh01Gg)JMchNI>7WVAk8|`KmwEo`#Bfn zKy6fOnHadC0>CikNDw&A4iXSxm<18s!0>?^qJoKVfp-HhI5{EApUg0oje(&6#I#80`DpQlfk}XY zNn7ax#C(Ql4C@6L7$+dRW-W%tZlUnl6wstO6EJiPIRF5Fuq@>wuw2#v0000*QoTyVKoI`&!zIS7i@k8?8(3P}h&Dcguv%SnkT=jq zK@_yGvv3Qmt5RyWrA5F6JDuJKM7i$1?9A@Ye8cR_1n?NJw&+IB@5>=< zxmNwbZbu9nLupZ&@E^H;MM{B*@V5w%NQR$Dthazy23Layu5tInIc%MuSx5XIeXm%)BR%V1;0fq!NJF;6#(BBn)MN}57;3Q0blvBZ zV^0vf6p(3)m5HF~je9&q#M7zfr^I-}C`JRnzm9R2O66 Z@dbcGIFt8jJ&ynY002ovPDHLkV1j5w#Kiyr diff --git a/docs/html/img128.png b/docs/html/img128.png deleted file mode 100644 index 8ae7e6e58190234b3da209af2c9c766da4ef7f6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmV-o0iFJdP)SU;u*&KpemT2LeEBz<>mJ`515jPA0e-1_lLOs!#zt z5HH{at9EBmXkh3Di`F+BVEDko@BymGfq{iM({O+Uu>M>izQD>45dt}N0s}{az;Sk< z@dXSF8yG%t1D&w}sIHKchhYc90hmu1E4UO$|IB814gw|A2(}xfZZ7EMj2bW?;B+089bFDmDh*4ZNVh=IM0+hdBd-MMBR< zi!TgJ0u0Rm85m}wSh5yuk^+ht8;GkyH6M}=0La`V>GPR%*Z=?k07*qoM6N<$g0rE4 AxBvhE diff --git a/docs/html/img129.png b/docs/html/img129.png deleted file mode 100644 index 03e5d0350d226cb15e264056ef036bcc9af17008..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 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 diff --git a/docs/html/img130.png b/docs/html/img130.png deleted file mode 100644 index 84c60af3d463eec8d2269eeaa0d79d4921123fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmV-N1GxN&P)KRY7ReP#FG_rs->vCQ(5q2#piQ@UnUFCPa|UA?OZc zHzhmh4)w5s$S%UOR@76=4#Nq;5D^B-!WhB~LI;AoS$a@d!Id$@n{RW2;gI=~tZPfV z(aS(&-y!dN|NGyUKmYsx7oZjzu?*EX7we(O`|}uDKnIL9JQhz5Jq1SgcXL=ccGo=3 z&?K4d7P1=Id1F9g5EXW<(8`-zMtdcOJxg5V4{?(aK1`TQ5R7%$bd4!@vVcM68Q)V3 zJmrLIB!DZND!|P;-Inrmm~f5yxm6*whVyTz5GN|4V3h;Dq(+$KBErfB^N+h5uX0}s zrVB-h?w*VSL4H6d!@ZMM)*M&8tl4Sjk@02~)@64pY1O+Be?pR~cL<;NkE2tqnCo59wTkx zE~>}0@SqbpI$Gq7G+M;FGOuvOQ3PH5O<+vr9VZ{C;|5Vu5g6^f^+x)s$7`E<$kQmV z>gy#Qv(Dpq?OsICwgP6vm)B(|)SD;rjWoQ2`wJgA8-!(aOC3Xbqs-&%8A)&n znQiy=SJbcapO1wV+(L=Qr|MoSmdU60Iwiik&n#>g+5>kE{j7yp*9KBa2YNx|>L?Ys z1Ydkv6&VNAKKzt^+%Dm(U8A1DroDnC9p8K_XBw3UFvs143;zV>G8#p$*G{n02)g~= zpAu4+qAy&sm-~T+gzn;e^Sn00_kHYSx*G0cn$@fnXImEkwbFVZM>xU(_zTU#wQo4? R-u(ao002ovPDHLkV1nmUhj#z~ diff --git a/docs/html/img131.png b/docs/html/img131.png deleted file mode 100644 index 8aa2fd479620438432151766fa114d58be561f87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmV-V0kHmwP)dX z8S@yadN^`~A9}pU0@`v08eqI+!`b{QyA6Sa0n!MPBY>HeR7hg)v%#gWLdx(LaP0@u zI58;SoE-Ow)CGLjo#P0MfGbJG20GY3|2!fRxk0Otw7Ug!(iw;LTBGM4cFOGqeU8ju h!c6U1{%Eo9a0ivDAa8ELk(B@d002ovPDHLkV1j-ji^>21 diff --git a/docs/html/img132.png b/docs/html/img132.png deleted file mode 100644 index 8c725ced5f339779b92535fa7c293ced7f241be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmV@QoTw8K@k3Om)z-XjyUTYXBMUDc~&Ew#}S-KVy&j z+|$z?o{#c0^EG`nRUKe>FjQGo`@7+^ckh6$=8uBxkkNW2dgOh+jGQ`0)qpPn+CFIq zY~ke22T)1bSkX35#q?sdyb<^P3ib|9os&I;1L6Rm@P_otGs3W8y}um-N3efUQiUR) qW=gh!ll*vIv^xq5A@ySWy5SEfJ4ppc=T$=h0000~?fQqlGPdAw#UQ}U;u_pO09c-dAf~YJ z5h{_*1iBtXzX44U2m}cs(-VLs-21kaVwO3=N#5z{>3iqhQ&2PplX-M;F3bM5D8Nsv z4_06Vk)CV~Ki?{yunblmY!OVY(FcuiMOJ$+*&TCvDL3pSNq%VOAumAu6 diff --git a/docs/html/img134.png b/docs/html/img134.png deleted file mode 100644 index 8fbf5a93f28c83e320f6f831c0f8d0dd99f4e1a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g%!py+Hxc1!P&p?iDfKQ0)|NsAI&YW3ZULG16 z`tIF3V`JkpXU+%;3U+jKq@|?+Rk^sh+`W5ONl9t=emnH^3fvX>y&hzTrW0<&3@!XV9g@%VlZyH=*Jm6;CcKp3mV~*WD z_8!KXojh^;4Rg}k!pzv5*>Wc=%I5jZazoG7t06NU_?hSp%!yPVxMML>5k Nc)I$ztaD0e0sutOU(x^o diff --git a/docs/html/img135.png b/docs/html/img135.png deleted file mode 100644 index ae2386e3facd4cfc362d95639b6267d781020766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmV+w0_y#VP)Dd0CbyfCkP0!69@(kn2Da3Q!I^jz|~2A27sa7C zxE5L`b#itp2pxn%aMCTa1Pl%iqR^iZagd^=UM@|0t+o{kI_R_9z0dpH`*nAK4?=qs z2~357fP<26B}JD+L8I=b$W02V0UD5(4MsecFekKrdcc7mRoKps*&YE@+KknxuNXj` zH|t~=4$u_rJ<*xy3tDWOl3|#qp1{_eE-cHOGUd4k^~0#KHbWXB1A-2HqyZ>sLv9EM z#G!E!yE6CEUc+HUYa3W+`@>?OG`L7V!jlwc=`=poNDL)IvMf)bdNowZR$0b9uOXgL zm-OkClUc2$oLP#$2dO^tr=t3|PlmjgeSj0bD(4fX`%st^fxif1;LTlbY|fDvgtEuA zSo3J5mv)KwmM2ahb*Pfr&CUwoTwo0mTfapPJ3;^wRONj+QQUUM1E7kG*TSOfi#O~m zoXNywt!>EMamQPzAh>{4Hv;xD2kNONu z3LrKko9YH4wUY`qJV@Z?;e@bt&K#hTEyREVRIWCr3T_4l{(^vj%Y57nOiD^0phCPC z6apAHm?28eoH+m#V!!aEO(B6d0ZHRf2OJ4_rJ0E`1QHJXpBY#bI~zEcb!hw-!l~-R zDh54ZKqj0Art5T^s<;+h*ugN1jsE~c34#6l&l}U{qkR|A1i> hleW?YqTD|+000GBC+GJL+JpcA002ovPDHLkV1mfGe98a- diff --git a/docs/html/img138.png b/docs/html/img138.png deleted file mode 100644 index 28bf892de4cf98b516cc966a4577fdf9982cedd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&N!py+HxcqY>h+`1o6XN>+|NogYXO@?jhlYl} zd-u-R*!awuGlGJGt5&V*=;%mGO9Lu&adEkO_pXwX((c{62JW`%-V7Q4g+mu@O1TaS?83{1OUK-RL=ka diff --git a/docs/html/img139.png b/docs/html/img139.png deleted file mode 100644 index 69fa8cc71517b3ae30beee0dc4c9c72c2e81369f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmV+j0{8uiP)gNtg^{wA2yekcVij^sqDc-1iJS7l>iv5}Ar% zA##|6U|a48w1iP|d!SoobYOwZor!g(!Qjhhk>Y`&fxWr~C+)`Vt^#h&21*V2Dg@u^ zG#%axknIS@8{dyO9W;^U^2AO9PyEj0pPK{sRurXGJxORkQZKA z@y?&rP0htS@W92Hvgx%ZO4#5mAC3CKhiAeqsq#aaBRw^;iBF&GDaR9!xQ0`7cu*k> z)pIb%-P1g>S(@CzJ)I(2wHzHLkDi#~S?GN|bQq~uHaqAabHgX-8%~r0KRX=DGQ5^nyz2>g>YmVCk5=tRMP`X$LmjiWk2o70X z0;PzHgdmm*LKpY9xM$MALQq7%;pM&W zUtV(W?tuAlR_~~bAnKh^+Y795`k2A6*!y$D*y_3x{u z9iAK%%@_h})uyK~)UhR>x(HmjhSa2nSxzru1Ahbr_pEHc9J3iO)GS8?p$$*aI_-(k zVujOOo~IT{@n8E#{7zJ+7v8L>O5KyWYfBa)ua1R(Id;AepX$et!L|xoX%0aT%5n+@V)`;g@ z`;j;d=`bH-aO-MsgPW*Y;d19gR`?h=#qx%x*Jr z+sTm~G(^zjcgHi+_Y&7kUoq?3-9@NSl!z6iuVKDy91%AhOkP1&sC442?>JGo&2@MW z4>H2J34G?AfVnL~i8+$rn^d`P4VLr=bqx3jA#+;g5=XCiCyOuV$xh=7I^t*(g4E0z{t$Rz;oshl41c=y(|h4 znvr;C4H3}r0hNy>;-ncEco`lrFz_IWxd5>~sxod+qTj&4>cF6+q`)wnBgJKbivma$ zlakU0&IJtOd@yAo(?Vd@ZTPG3_W%PE)EOHB82K2^oH+oFMFF57ByF)U6g+4M*v0@; zH{oZ(7no@fV1V5lXu>!EFaGQ>!~mAuL{SDK5->Fi5LQGOFhi&khAyapFm`njP})fW zpJ|Zv!M}mwH<%%cUHqxQKeJyAmuamk$QH5v z17;8fhW&aB4EvctsgB7WS(=~k17pD5Sq$A6rZLn)d?*Ss?vs)dDDyBdoL~Uj!E|6h z1J?n*4+$`*F@dB(*={n!R5qZ-AWYNXu^@x+D%$~I$)%yo;PgXRS|(8>kU0Q&_>bdQ3e0*EVWhyxn{|LV&&1@zjv00000NkvXXu0mjfZxj16 diff --git a/docs/html/img141.png b/docs/html/img141.png deleted file mode 100644 index f659c90c4a84c34f67d4316091e38ae9a7bea1cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmV-L0=oT)P)KRliHaKoowtUZo|rQN*po^|UI~(zv)95cdw z1YO;NC^$G22XV7FIR=8ckktU-+PY>?*Ia@ z*06%AbDXCSaX)>Y*m^51!mRNW3?V^N zaQE>Woj#CcO4&bdha&YLQ{;)15_oUPYE5NVT?a%d2z@P^^O(pmz?Z;4DkdS2RvcTE z%}@I(IZZ6PdDXhoW_Oexm=g5#S|~f;x=t zs$d#P&Uin-Lae43upCXi#EpY&@mz}IF+|@^lglXNof4zZ(!sJHZrtt-E`8Z TgYZ0q00000NkvXXu0mjfZL$Dy diff --git a/docs/html/img142.png b/docs/html/img142.png deleted file mode 100644 index eb9a94fb926a6fcc8ca8348505ab4eac0c49df0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E!!py+HctY8*2gor9@CkAK|NsBYnKR4F%R@s$ z-@SWhY;1hy%o#yJ!BwkPb#!#3rKJHCy12O9y?a+lNon`)-SV=EQ-MN^B|(0{3=Yq3 zfaJG%x;TbNOifNmNO&NU(!k8l%Esnq@S0hmc#fGzk^?(`!;Fb9%_i(AsAuwUV07kW zVmO<`nr&n;;lP=M0|yo?RN6SN`7mR@*ct_fV-^f0q8-=xPXt7;ESV`GC1w-wAT{B^ zv*+akl?+poe_JHF9X2YP!NwP~R*Ba@mmzra1Eza?3X@W~r%0b%aHQb;!QV`mnK|bB zHzqQ_=UY%Uk29c={|whA=^NWP3O3)J8suPH`%pY;=WGE6hQ4!3+cde@K|WycboFyt I=akR{0F%vco&W#< diff --git a/docs/html/img143.png b/docs/html/img143.png deleted file mode 100644 index 3df4bd77545b396fa90496a94c5ac61a0b34bf41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5ed!py+HxJ5gec5OG^VPba8RHd-txAlG5(oyX9pSrvil-OM?7@862M7 z0Lf4Gba4#fn3b(mcR%?GGd^DRuoo*FiW>e8A|yGLSW~1UTDp;WmbYZEP{+n#e*0ANN%|!&hze0QNb6SF6q`+7zg&-7 zC1L%eum)QPrv*Thn5V`}GTHpqY&ILMIC2ZN#DFVXV=h@y_ocpLUC7k1KVlV&*W23w z3Uj*SL7`CecPz0lpJ|)0A5laGDdhWTK$ZxP*}Lv&#iGuOz;j2496(14NNf~mlZF3V zjJZ(hZ=P+vZ8morv1E6VHKr{lzlX?_;H_1GU=dmxB3I!C?^X6yFjXEplCu}Mq&$YH zx*{JY8#e(h?a*tz$Yn`sqVySMHY3u^!?IOpp-4eEt;4==xdr7iKcNJ3-Va|@EHw)D z+A_IUb{wb$^~$1f8ZaYV4bf&51^K0QBWzWM<F;xoSRGO2YreStd@TxQgGqLp-HXnW1 znOF`>)cdde@x>73yHOk79>y~JE_@EI+~O@O_nI}18D9iiBd|?#c~=0V#aCC4Y8A62 zQ{BFT%ZPsMqS%~$-ka{)i!Ei1PD*A_?X5{?w?eo7NXNDdk1Ax)WT?9`c*%c>&&~VLkx<0A^&SwUSx>$N&HU07*qoM6N<$g6o`#h5!Hn diff --git a/docs/html/img145.png b/docs/html/img145.png deleted file mode 100644 index d3d1573f6c148aed7e57479b5406f9dafa8692fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^LLfE^GXn#oV!H4iAjcrUC&cyt|Nk>*&MYr44-E}{ z_wJpsvGJKRX9NWWSFKvr(b18XmIhSl;^K1m?p-A%rQN%C%gZWG1qv~i1o;IsI6S)n zk`MKCaSY*@nVbLwOi69Y3Qdi^Ga0#r8fM5Ji(IJBpu#UAVUWN$NAfS1!>eW|MvwMp z31((~<-_bbT7eGhjSlbUzLW5btxcF`vLlZg>o$hAz4s*;to`^h8*H={ffg`$y85}S Ib4q9e0L_C#S^xk5 diff --git a/docs/html/img146.png b/docs/html/img146.png deleted file mode 100644 index 7ecedb71d1a3be936e0e89f4bed1fe19071d05ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)KRJ}^WP!#@h+a_sib7Q68U@-;<6~sJ3HaAVh&B2O` zllTawR0pR%LVW-+IEZ6)cE}3|;@~C(-4w<9(>7_fwW1aWKgd1z%RTqYIp>~SAOZ#Q z7H9>Z!#9yjAuMM48vltf=;Lbk}fk&w};Q45LL+x4aX^9U9xQrrr+_>nT{f~NS@YorZpzk zLYk4g$?0#UF*3|V(*XzMHqfr4Cc8;_??idgJTWDQ>dQjdDjufIbhXQ?Rc$Motpw05 z$tvY1JrWBXq+Hmx1;6f=n*s8moOzC6bVo1GWM^`Q(%gZ>|fvh#gvwjy$+|^dBKRnKb^K^T2I`yN_qgmb{87JiJm1_HY8Mv?&hg{|RS6mnkR47+FhIbjU(Y=ji-_ zt7kl~=>&O3JF$1nsL4f?H_V%(;z@k`+?ldN!*tQS?(j zjljT~j2P#pihp^aSdezSF^#xECx_!|GGM z=|p(HN1ud*lbk*PJ2)0cvhWdKoW5;AvrAdZ^1JX5u8)QIhh6ACkyuDRvDeb6btUt$ z@@;C<*xK)6d)Zr~|DHJt>in2gOpKR9y(}sbp4Qe0MhreXt?L>7A$$idD|Pn&-@0000mP)t-s|NsA) znVENYcU4tY?(Xh0Gc(N0%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001 zbW%=J06^y0W&i*IiAh93R5*?0QNK&WKp1_wCTU9BG&ov>1d2G^4yhY15y$6w7pI*N^@(Z43BArY>;J|VZ&09Ots5xxnngG0507q#Hs$JT6Q?e9`tI|qv! z(CU2<1Mbe4=k~^rNQ;tf;IV1}Cu#4R`nDQ$revmBr7%UTq&fc`J^f!(Z diff --git a/docs/html/img149.png b/docs/html/img149.png deleted file mode 100644 index 18cdc9576d9ad2f63c7000b0d840983cc72eba54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMI!py+H7%x2QDUf3j;1lBd|NsA)GiR2UmxqRi zzI*r1*x2~YnKOcdf~!`o>gec5OG^VPba8RHd-txAlG5(oyX9pSrvil-OM?7@862M7 z0LgcGx;Tb#%uG&5NO+*lAjFg3@PyS&p*fS0nQO=S1C2+Rz1R#4KGX?h#4k9|z$j;6 zAj1&E#KXhOlOxBI_lJk)&KaKNI~zoH%jj=sUd9*qmit7Erol=UwaIn+Qg{6L-+V!B zf~yVJ9BzrOr}_m=XVQPXJy6%XxUru3bvuhff8oF9|7HG5%kGeplwfGHl5c%%{;wG5 ODh5wiKbLh*2~7aSonVLn diff --git a/docs/html/img15.png b/docs/html/img15.png deleted file mode 100644 index d9af05b2e66ad2ffa69a7427acf290cbb042556a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^dLT9nGXn!-@QOl^gl>ROi0l9V|7XseSzcZq8XEfU z-8*Ar<1=T@2nq^zbabSpr2$pBxVYTCdsj(GY4`5kWh*vo0EHM!g8YIR9G=|($)|g| zIEF|}O-?w#Cm|{#QK5dIB8H<&pTT3Jks*hHfq`;%gI3~%%9bOU83z(=@(wKOSknH! ziDA+dM~MjmRR>NTI3jRh!Uu-=noisW9s=s;4(?>sYFhSBgn2bX%pA@WAuR!7Jf(6x Z47W}A-u?G$zX!CE!PC{xWt~$(69B#sP_qC4 diff --git a/docs/html/img150.png b/docs/html/img150.png deleted file mode 100644 index a83c2523b21ff3cb104a1130ccd33536aaea03da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 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 diff --git a/docs/html/img154.png b/docs/html/img154.png deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/html/img155.png b/docs/html/img155.png deleted file mode 100644 index 1b52ccb2faed93dd09781202c2c5c9c956ac3832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1099 zcmV-R1ho5!P)(R7i=nRy~LtM-={c@2sDl)2(vBaNrnC#32quIAPMI**4(9 zoEw+hxHwlTQn=I^0)`a1gkTa6j2o@L{j9o0}(iqN-acAWUhu~oOy*In7 z-IY#~?c}>#?aZ6^y`PykGYiZ>K>x~3^{G7sTsN)c=2<>$KoL3U;w`@{CJlorsvn48 zima5hI-h8L43!sD=P@W_msxIu8`SD^@7`F!QvH!MMv=Zdq`94DsyokD;e;UbSemC0 zMKS{(I(y|x>?+X9HoO+F*HHykK&X}EEM`gw{E`OrQKam1t+bDdt3_11iABpnUB(!D zA^lXlWxeX7Nb9H4t{ixp7ge#$)5W40DR9K55NKEy-Sh@MMd4^IVhPDMV~!YPS2W1R zR?;a}{>;sXPMU>TQzHm-eJih^^MVsFLHuBh_g1n?rc{UqmOnk9)`G6|Lat__ib1=$ z8oLTxtx$1jx@BuyD_-Fx2kkZuQ)T^(mpry-sC9s9?<^lzc4-`@rs5?{gZ5FXbg5pg zACjzs^KHck*B?W}q*vhu0y@ty8X2whc}BIjCGXML)xBYAUe*H{jHYbRwUv%sd3pfJ zY9JHFS@|nV>}rq{F?81yvbds+0@=FdB&%o%BvIW%vP=9~vzrQUrruPP@`7%xECU(!CA4qjZQjE;SruJ7*rLwERQVWQU^#>Oj5baHV&OB&UbuCM@e~EwK!rgZs)%QP0&+R+OTfXH`(W-%MBd% zLNvEx%Kom#(yxDcaB9ay>G!En8?bs>9;o#-Qu=K7et4=@gVj9Sq*}1~L(r}_VE3wU zS<)w-eXhX{WTwx<@BOHRbXlY>#7J?RIIOHIRse}WI#RCfuC0NLn%US4&5Z~-(Hp%YZT|PF+ z%s1crG4H)BFo7Qb2>F;o$i-!(Q2-1v)hX~fQHhQi5_cIaIHDxCBB7>+?K01V}Tb>SEo(ZFj&?=WnQj7d{;DK{1 zF*6XG#X&t;W=R=U_$|(%`RohUf#F>E54l&WXP9dK-RBWx7+)>&+7rW&y`I2I1v}hI zpIJ*)Nsi30Qwx-p+tvW5MRXNU@DrBBOOe|1sj#M0eT&0|U||v~WbdNocpOn-sLD$% zh*iay7|%d7m#d1@c0dO5cf>Hk$iAC3KddOCPr`Be;{_f~e~~qfZJnAck9n` z%(0DS;(vSQr@L+F=S~C9n)itRNS|M1{LuD*CPn_YeNacKVFx&WzqW>3{fne9huFg% z&?D0K5-5!D=6MheMl|+Iaze0)Sakzt8{A1QE>QDIK6Zika-)1bIF(dJP%OeWM35J& zj;AxRHkD(k+Jiot$dg#~v+HQnSQc<|4eE8-L7}$-oIKd~@wp$M(NwXvHfVY2F{Sll zOg4kT0L)$i>(^m6s3v-kYJAp~(pA~BK5)i%q1m=W8`clWvx5uW??323HldKb0Wvst oBBn4FQhi_Ar15V*mgE07*qoM6N<$g13`hJpcdz diff --git a/docs/html/img157.png b/docs/html/img157.png deleted file mode 100644 index f241006d2a5a78e572d8af0521ca02d9e6f961d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmV-x1C;!UP)%oI3!y$~hq09AK;6}pqe{E#oicR-IVdKn>VoRPsj^jtdZbql>bL_$JE!_I z!yvpy*ly__-5LQbCPex)9J5}yUYY1$Zbl!k`qX}M4J15TsX^7C4CbV#MqL?WwO}nw zQ6E0MxQ~PT{slFf(V=0aHXZ6RGrs`4HV&&4HR05>!eZe*)>bB9+z58$o(e15eS~B8#(+d91)#m;_FBZcpONatozPF^4lJ=^6?JI(}h` zmW_s=s%cxr3UmyyTH$Pa_zO8yuT}3$O&$OM002ovPDHLkV1g*` BgzEqR diff --git a/docs/html/img158.png b/docs/html/img158.png deleted file mode 100644 index 55f17c1aee09cd30d3ce1806fb928af2541d464a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 867 zcmV-p1DyPcP)@S7f?rKqQcOtyfDRg4viMIB z-I^&whmMM&5W2)!N|urzYnIncp{C#|P{<&fF%*(5TZOlFsC)P1XW5dPDA2R@^zQC^ z-`#t6l7JkM{I5zx23_>)v1M8wsL=qbK;)_wcD(LRaUhZ?w}@YW3zi~Gr8T~bDcm}P z9EU>62pGXBb8wnUmpxH*uT-2oP>$$yyp&yK7WC|fW|9`lD4S~D3*xm0ws8FU2H_ZB zT5wfh@!avzCDSL==Ho&Iv@?+~K{FB2D~=|3AwiTbOUhXT26{~$wJP3{VJ6AX1viOa z#$p#;nv!f4LOn@(WuPZ!3TsX*r7ZQtltYv*XQCS^PlY>fu-OPTk>8=?lvL+Zl`F$p zSdhLe?2vG*2PUpI>26a2MZ*VlNqM_wG|4EcTvIbrh->Ues#{0OWApRJx}@%vu{}<) zyrefXIB-2p6n1JQl@Z+rV%}5d6nhBAI%Pye74_^OelFtHsAP|=fK;=lnaUWVAW=?u zcWQn?n>fyaoEM}|$(%?<&$e-n?9XU2|5Z@SnsPewPXEST$sF)NEo2?7055<0sf_F| zTZeS~qZVy;uN&K}=6iDNEyHTJ#;}#HhvViuT%0}uwuZ#Qe9Hfb=(a~a)L-oEGW3jx zUBWZgJ>TezIiJ$_p%viu$tuk%1Ki*Z=r22)qg7&v;@4opVEZ&{1YA-%j(fwmZ;)YLMi%}|Wu!EP*Pp6O4@lyjF-zi? z6bb9$Oh$p8=|DB#scW-2j(bGMw(x7%!}pUA?KPdz={8O0noWALnnPmf_odP-#v4Z- z`u#r8YWZkC2Cb!6$ipGA7}~!;Z|-hOpx$0xA_VxN^7sntwy8wSVC<|t0~X1Q#bw^L tz`vx(SN&d6@(Q8;ci7vcSpZWH@E03t#6CexT*CkW002ovPDHLkV1mtao74aR diff --git a/docs/html/img159.png b/docs/html/img159.png deleted file mode 100644 index 4aecd5d283cb72148bb2125599a47321e8fe435f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1172 zcmV;F1Z(?=P)MJn&58%$gCJGXYzi)7#FyZZ0ecd@OBWJhFtNFI zTYPB=AY`{ynoVW9GVgD08h{B}mDkVAm2`epnTc;reFtlChsTLBcDfcS5x!8qF*qfJ zXshrBVhSB+6({NBg{SR-y#BVBLpyK+S+ra)4h*f|Xy)}TR~QP2Fp)s+&Ca$^3Esd) zg^N+avEb6>3rc|8b9Uev3~*6KdUd+Tmx0JkJPbTU5|NQArAZ-{YTm;g4up`NHIT4_ zqoX3}&J?_iG?uvf0tAr)^qACG<5CA}5$a-P^;<8rbCvFzRUmcE=hUj(Iz4L9zmjA< zXnNZ(=!%^oOI9X{JmTM-wcd*!hU|lAwi-FBWtdi-4$Ia}oFP9H6h|C~I|FN#K%auR zhyC>ouu%mJ7S`q-43BbO2p@)p#szLlMXl~*0~@F?>C=)9OSxOj<9uF-loJ&xOsE$z z)BFM8r`cGyttxY(k%G<@8d<2w_D)z%FU50wIT5IH$`u^tsTKCyp^a++|RULY_3O)9!N!xK z=o&8`8^MD)%^?R55!yNVbJz)p(bFyqlEYpq1D+PyK81)YjPao8WsZxNbVd+k0_%JA z(|)#f}}rjtej$&R*b{BZGikc!W-mqz6Lq zL~T2I7Rez1Q>$_~i-Ogmi%&KyE~6$rhRt-YLeJ*@q(o??btz9w(`yQ&F~LVH6XCm3 zX6x#mQmL#Me^%@YY*%Q}_oxIrTq=W4T5R78Y_q{4hl9{zO@J1GARIqOse^qjIA~1s%h1(nnL3saZ4CVl3uBt);+ZzY>ns zB)AZ4o2fiF7kSh_4#WysNF|C!um{qqZNfFxT^x7aCbw5XsZnN9pYt&Rp{Xnu!`UR= zp>|Eq$#(_g_9b3aRXI!4rQF6{ARnu-xjYs(H49+e2it4;jqIUQSH_jRu-lphJOy$zRcaC>&;O3oP z#HQVuzKbsK6{6;*ZIJGn4S4H8oRv>U=IDXP#0sV(%x?o1#nfV&`HgvUs`+~M zW|>)7g;V|6Tn^ayJS+>e63>_Csa9=LLF@k-;eSJ&5dHyYHaU-iHZvXo00003nk$51k3c9gpE?J9=>2#v{^O@jJs zkBX%oh4#l;j=+mNB-+##=?Ur-GfQbZqpclXd$OJDkwGgbY2+l?#4=_QbID$%Y-|A{ z5my~#aSe^8TZuUWRWCXvpmeH)m*(UH)uxd>wN=bdM^Ik!R#8HIqplL%AMWKn4DUJs~Ip#1Mjw;z7!MG-kL6LttDUq1b zb#&sVV&;H(3>&MbSYZQ&44Fb|Rf%aqOb(S-6h<#pMwvAiQ*;XZ_0lP;pd*6jjpxA# z;VHlM64y3JT|crej&kOPV?-{ZG#XYylm3XKQW*FxQuZL8WI4EsC9`;g-YY&djm2Rc zcaY-Xuqh7KYq4bgNx9#0q{?$hscx7;RRygM_MyV0Ve`&#R7+mOu^Hd&bU}Kp=cS7L z$#*sc{F5HS@;JMRzB9nhbL7yR;u_;Kwdu`_oOyibCU57&&aEjv7gARzRNms=9=1?f zpHA(jiq{h!zd4MdGv3A4bicXjYVZ?!9Mhk&T0?pF60rIBDpFNc)(@{7_Ig6!ygT}&sR~dt)$4kbv}HuIJq}i zHgoVOR4I#vuqQs5tlY&_h^PY2`DWfonI1+W9TCMTWW6Je_2+s5nPg-5S>9#ixBR-Asfzi4EVUC? z!3ln(cjK^%C{!vB_U}eP)2$v;MdmXgsiK=C^?D=9Rmc1+7rS&orw4bcI0!qatwr9I z+SR4ye)u(7I_-9Q;oU)a5c*koNz!}=03{?Zp`e|X2eJ1=P#9z|?AAG@Y;GOi}qW(zb00000NkvXXu0mjf2Q%i2 diff --git a/docs/html/img162.png b/docs/html/img162.png deleted file mode 100644 index 28c318222068b8358d8b7087834c94a6b6304c49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1121 zcmV-n1fKheP)Z zY(9u1GcT0te6_tef+WbH&Jka~t!cx1X@Np=vKe^&_yC&Su5u7^Ayx8SSmai^dKr}k zQo=A3p`Tf{Ug1Sjv5aRPKCHJ4(BNpm)$kiQp6v~eR_a8e%2sMExUw?g>L}*1mDdy~ z#;WCWa|p5@4Jb~~O1XPv48XakfrJn#P&1_%VM_)zSc7|kz(@ia-VKH;dOJnUQMvIh zuxEhCE(GJAg!ep(EtOtjrdDjp7KQWG_424GX`afvAh8+D?%k}6%pg5V<`9_9aLoy0 zeQ!E6+s~8W1jT7<+Fo*^ZHxx3*x)1ys;mZ3r#!|V^(JJ8F)s|Pm{p{Mzoiq3ei-Bq z1XuAqn~{V8?PVAvJQ^@rc>LIVnx;mmgFxAQj2}?{*W@!(Sa-0L1Ri>scp3rc# z=lIh&TsEZOO|0tm67dSv(}(ZXP1*odxNc;PQ}c6oQ=n+Y5{E6k=ZrXonOE+NEd8u3 zxP*z%)@ z_tB)L84ib5M9`nL`_>1ftaOgQCpGmjzMYVs4Rk`M>tS6s5qT1*>bEmn+BlAYbCdNw z!lxmN67o<4Z)gXLK-V5AKN&CC#fk)rCf!ZRx=m`>Q_FNJ`NUalYh~qm n4WZdv{I?apLFz$gS-i>w$XVtovlz#bz4 zws8KyUtvPJuwci+nL5!8+;^JlPnGbJP9$DGI-$iV01;rG z{Bj-Yde_d|bxd1sZ4{coMZm*M_)O|qc80bIL?a@x&*5SSEF}gZ7}NVI;(8C@<{jdw z@gu$ljB&>ReSyn6~S`>))6NJ4WSAR-yel)NduONO2H7uu- zU7GhBvJ6M+wGr_S^$I%k%rV1jTonz2ej-RZdY{an-QDxNFzK}vElH(TLli<^%Ty9zfe zPLiF88Mjnf2IZx+#(rPuMmNMFBEB$&%Z0h}ScKb!#=#}*jl0{BPx$cu_{KdC-s#-F z^;#Z3?yvVhcs};v<9`CU5tBLiANl;7ffK(9e-kyolfZ+$9>5dS+#UxRlIE4?(v{p+ z1vLDQByzsp%*FDz0Kx+M?j{a4ayoi*hh(w(c(Nf2aWBsANjpwfMT%=(zw|(-r87~% z!RK%aw*Y@xAz=pUrWfYIR|m5|Q(=zv#_m=A4B(M;MP(~7y07yGzjoE1O_BuvUKC%4 zkXTKjtsxJQVyI!sLKy59%7W>%bS5e|oSl;KL;3_+F5zG33qq&@?sy-1CJj6aTOlpd zHTJXo%qS;pYZ6Wir-g`h$jwJ`T)2WO61JW^o_w|i$MFdK zu6FmkvO-`j-mZ}9Kre~42MHl!5^@&w$Rl&@Zif%0Pr1pUl^ki zysxpE{`R{YV?;+cJI0&vpoeJKOk1QiRxpkw7T6tJUsomlsn(Ibwg1x;G&^{{iNkl4tNQ Xa|$OU_OVe100000NkvXXu0mjfJ-;_% diff --git a/docs/html/img164.png b/docs/html/img164.png deleted file mode 100644 index 73fe83b67b58ea611fa9a759900c012d770a0b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmV-~1bh35P)!pL*Va_^+_U#_oYZ9<_3wmhoI%tMm$g=lREQ6qyXEx**81}q|cP?8|tAH!d@jcdRlDXGTR)~Y1a zWa$4oqRiz9T2k7f;1?s~bBe*R){MmNkqh6~3*j`K+7wP780`#A_H1&F)>;5nn8O|& zJ5q`^LM%^Iar*X%+Tm9S@;)4(LM00kb(T^gbmDQxQ6k?H(_GiGZIe5xR1bEAfl`)a z)V{9Lo8uy=TZfXI;O{!r0BGcITir?Wr7R@V$JPp8qx?{5Di=dm(edyWjg8bNZ!K|l z?0?xL_7eVGw(&=&4MnG_T_$mE3Y1s1jfvZwMxm(tDoyrz7A;wo?opF#89Go7-AqQE zT&rkQghL$}YdBOYamPY;?2$|DT{bI_m)Jc_KUS6CenC&KpHZb}>GA4Mq@_@cMevM# ziA5rmNDPwD6R%WhLo){)V=`*>)1gGrMashwJzjZ>LsVdzm~d62(3go=Zlzy5;RI{R!=~BM>YKpJ(pPdk8#%NXc{n+{rZQ`wh)QV_b#+c`U zn=+~2J*_Rwoh;&|4{;uNqF`FyOK|EmH+&&2XV;>`;hrc2uB5cFN<3E4+7#8pP2jmd z9VCl-w6k~RfemAK^Ra^)foL&zaOd;$`0K0pQ9XA7t;@1;PiOb(%&WbDo4wcRq)Xin z4eHxZ(nU_~AwHhRd#J8pUA{(Vuz9VofpMZPxvvP(y3G;qD{Onc1YqV#>sF8_*;`NV z6RfoV0rl7y^KTYyx@F&`uxL$i7gs=El`4uyHV}wN_zv?SuIBK7j>5b8&C<^nz4ZFQ z4MAt5!Ug}Xr}mn~Kk_Qw6(WopMpW4&Q4uJ#C#F1%%;TlFz>(SL`dcLJYbUKa(5KP)SU;qMs5g?Jo00+`63=9eh49I{dfCY)S8w56>C`e%V z_dke%fstctCxZdQ2L%*Khz15UfKc;5L4k*rnThEG*dPXm21azXq=N!Xi`Wi4VQ}XV z=W_$HFFayUn83(a?*Mc%H$y=|!j}UK416F}1_mJV9}sKuqWY0Eup17@(A)i T@r?7`00000NkvXXu0mjf(@h%<6GBNeh_iJS$ zqOSL!@R`dJJVF$p?fzqwEGejCt*z&=1xv*&N?AZifXNJ%4ynFkLhQ3mK+@JuhNzh- z%6{sJ8;J~z#?(pQeV+&)L*x2$B2jPlP$$-oDMYQIQK`R{c?^2Zoj|&o68-?AvpIvi zebnucofW+jeQCI9$-qc|N;w?3ieBNID|F+?Ygtq2p#K0b@Jzbk9lvtqX&c10L}$o+ z9ckw*jbBR8Jrq%ck_0ojV9=6k?}>P{$`2>KJh%T0af13;m-w)Do7Y|1u{H7hH{JOU Zd;ne6G@J;|9@_u_002ovPDHLkV1g(i!o&ao diff --git a/docs/html/img167.png b/docs/html/img167.png deleted file mode 100644 index 0c441a4406839785dbd542469ff4d22966008c43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)SV88)1ftVdx-~$5#*9Hd^HM_xJ1B%!Jh8Av!hBV(L?bS%A)sIa7dL~>nFBEX1pLa$2inLSZlHq$Ht_SpI1CpICj4bM19S$E!^Ci* z-~n6)Lgr8ib|V2&^}6Defw-Abqkj@ZzWq-D44Dsx4CxHt9P)X0w^>W?L2u zezG%@KlA?k^XJb@7ND=-s9vE~)G9}H9g)s37a;LAs9-Clc=rjQ)P5thxXGj#kM3rv ztuUso0wK(8PE$?|a-mGf)nGUeazY{Rst=6v&9HY!4VFEVH+q5!jy86vnPHPwS%tc_ z2SnF0O%3L0Fyr&C@6?q#Ni+P~3n`ph2fgB$5W*o+_*oh=7B_qo!9ejSI{-RXO5t~)E#|Oz1?MsCxFrH!LZa)b6v1on2=+TZJR)JoEHo~;Tv+2 zzF`SszX+wG{5LTle$|TeP^upM%YE_m>q%}OH= z!=^$Vuoy-qFxBQ^(W25*M1e%yUUo1{rN}VgNn`Cv5dWpWkj`Z(U$1>dGc!3o0-A{h zA4Wg}nllob`v8@Tqe+2U-pR0cG|+E0=zUsq!o%uX^+82*Zvej(nC#XYwCIR>+rbqr z)B+uj!L=PnENi!M?d_1luxiAjyxIhK41WT2hQdcs15WW~w{u8N=QJ-%OK==+mVS&^ zCw%G93-L-AzPRp4;(qH|7~Zko6v|5bn;At{U`0+KMDb&qDJr9hODg^zapip4%#j!Q zG{lW)F#E!eX;5QpHk0Pmlfy!JDc@+XXi@r>JY}U#cfv2Kb~QDEuH!2%LXD|KVZ zR0*M$RO;5{#6%?|QY54fMcl~H;kv*;2O}|LV2GgV)T$X68Lq0-c7i@T+;L|(2NE*y zN%7hK-tYPBvtxjSIE^YFMHz-nJmy7l5XXQju2f7x?RuhGyb_E$RFfPsKk6XoA1<@K z8x5m+9n$GAo?Vyw4)mf~j_U@o0X#6rWQ!)lC{IyDX_rpZZ8iR8;u6XxIk)P1KPdWI zUrbN><58dS@)a0r;8XmyM;qSj7MNiz4n~r8Rt3vS*mVE7>HJWpsZ~?QFOl!mYGwN( ze_oSd@Zy8A^MR+O8Ps&POY~!#di!BZ+VO`ry*0n85(b`xrKPP}1==jMRF{Zz^6iHo zOhSNz;TCZmmheXa@bt8*HmrplqN7Zcel@>Nex;I9E7=-WUt7DI&@L6UHbJ{y&$Qty zmgQ_4m1}72doLbu8`^De4}!K=&$oN0t+Rf{hGsvsh16!dpH+J>duMBI?5k1s39!b_ z@XFEn28e@-3e}i2`x~aG{<>#yfLF|7r6#ZSf}4yi?4^ZW^ivz+Axp{Q-)C-Ee>`%8kn8*#KoS zF*0~FFbWW`6vf;PI23T>6THC4ouHsFApt|$z#yZI2-~R!6i8Ffxd4mch5&vIhAvi4 z2#*OECkhM`egZwS;TpP94u*yY0oV*?BF!D-g58*a6zv8?s>78g@T+4Hy7*Ip2zC5? z9~c8J?@(oE{MevvtF1770SP)#Z+B%(Gn*?X#WFawW5=qTwF3M zqB!YRMI6MTD!7Q)!BxoMro-VRh*$@9R(z6I{u;y|Xv-qAg>?>~vJa`RTGEgXk4oK6e8xZsL`AlQofZP--+f1|P zg%RjIRhji{vA{rOTNLI@+@{0zePwh^ zV4$ZjmVi>I#_T}WV+!oEJ-86}CYI>0J_T{uKgmS{rDS7m{AH#D^{uUGxo}ZCy;wnl zRFP|vJ_4&BI%q6*?IACMX0q_8Rlc6|1aCEAp0LCeoU{LL*LF3 t0%J`9*lsi5Ubwx4n+x(Y0iW9m`vlU(itmRtOxged002ovPDHLkV1j)~CPx4O diff --git a/docs/html/img171.png b/docs/html/img171.png deleted file mode 100644 index cbcd172629a6c66045b415b0ecdd4109eef8c923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9X!py+HxI{I%6UfmG@CkAK|NsBYnKR4F%iq0w zXKZYI=FAyELBUn4R&{iAq@|?+Rk^sh+`W5ONl9t`D+oZ3}+V&0`{hdF0|#IUe2=uVYfxSKz1 Q63`w7Pgg&ebxsLQ0NXE3yZ`_I diff --git a/docs/html/img172.png b/docs/html/img172.png deleted file mode 100644 index 881b68af772a0f2aaeeb0d9e4260ed08bfe17371..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmV;e0aE^nP)ghXIgqU{Yc@z`&rubqiTB2T4Zb1x!$y5lZtiK)lYx4HZ!EW#9r* z4;U1{Tuumekg0a&2TtlagKTgcO0%Mgb3y6f5Q=wU1BBr@0YZB-2!ce|HZVX06#T&y z6FVg#{U~vZ?U`T;9I6%Wb!vRDx7O?6FB`AP(e!y_sTJpR!tUx*% zUmL&jgQ#4_-^iiL$)ivKW_(go0>upj#}kIVNbxB2b4RasB#JDo>`vweHJ%~^=3Wx&$ XLsc#;=ziLL00000NkvXXu0mjf(;1&5 diff --git a/docs/html/img173.png b/docs/html/img173.png deleted file mode 100644 index e803c83496e7973d6cae4b1d447a187c73fcbd6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2452 zcmV;F32XL=P)yK(0000mP)t-s|NsA) znVENYcU4tY?(Xh0Gc(N0%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001 zbW%=J06^y0W&i*Q5=lfsRA_cXF%2J;Dx^^W zsVRlJp%i{lrxE?A_^692Bpx5Lu7D^!)*wWw5M+t^5mYKJR)yLwD;rc$140b&fz%bj zL;^*8z{HSHx(^;qpm)uZ6FJ!^R z2p1R{A#Su>qG^y4C2~SSDQj9tUf{wc%jCRI(V#5@+%8T}N90(}1QXCjlri&Yj$@LI z$VwJ{^u-H<)6pLIa9MQ8`cR>cqO}rG8LaU za5X_zFu@kZ`Wq)7DAydkf1A)$NF_Z_6(#8ExUGt$x7U{pbr<)8+-7(+)* zGKXpvQ=(2(NqY=rwTUsCAOoz!RvyKK=xkuk#F#f=)l(5k(V_0az?e~yk9E{`^?^s0 zk;BYGO^nOgFj!-$;~Nt{p1-T=TiAdf@eD!ge2$=`Z;J^*r7>=$>~X7YpwlW{jaUDx zpibGL@;cfW!kC^=%#y$i1bcOBvZ=X1jx3fmlvoE>6BFB4da&!=Op#fVQBnD^3Z!AR ztQH|V(1P1)wt$LTQa)7epTIg)LM35@DDyJBo*IV7qn*HUpEsr9 zXkS%7rpWY5YK(3Luw1X3#PstRTL_7xrVEhM40D{9$5z(_?40ha7+J1w6>3@|n`HS( zvP&nxvyAlt4%rH zp`#!69mk6)RL@{a9!_;`1KIp<=gH3g?HHmi$yy}cR9V54CksGHE0vtWD3WE`w-@Wb(z;aIjKh^U! zP3C`x^uPJ+lfmOnVl|fc0o?pH_6R=zq2?#**4#f#m437>n99sDA|N+p1`i%|gP2jS93-~v1Z_~Anl3zV&vDDagPoi%AwL^ zZJB4o=%llrAx5%ep8W@uor3N+9!jl36^nk)kq_aLCSHFY?f|rg@NIf*9}}@}cT*8} zzTxVnZT~q?tQWxO0=((-5WO;qB6ev|M0hS0vH2*qjDr!=3|>gA_9HI5HcD~XS9EJD z1Epx|sA*Dmh*pm4@!3TCK*Xp(2f)M9eICl3#%I9S>^^t^e%T6OC3y?`>0d^xE33E~apmgw! zd=)YuxO@yvzBf{Dku_F1pnU*_y|lTEyMS2P$E`mJ&3dxp0pGU>*{@!tv=iyb`qB@8 z>?qn}l_qR%Zo=Z)p{kRj6h*?|tcc$a{x^c$F3YAFeeN-2b!(dj;Fun_OMQ*#2qHE%eYj zd32a{`WDQj6{Y&&_`!G{JMY5p+voFV7}|cym8p*c(?LaAN?5OudVs0}j z$Q?^wBS?L?d7NIw6rFPb=Ym9M)VP#{fk(oH<1v{z#s=`qLVf$Js^Yeh>k+F<&r2VR z1R=3h{nmjtMS1g`^P!9 z4f}VHbU5ve8a=feroG(R#ortTP8FUsX1Gw7rG8zb1^bqWx%v?Ep+w}@m%1~ zPoKn^z@(ZsmLBJDf>zU;Wo?gOPk4bf=8vdJtbLgDs-iiDM&0lPLkd=>oBAg_{7vN_ S(1}<80000^vp^FF(eT3lP zpi4#{!7)Pz7a@y_Q|J?jgOgx!aOmXf))x>w=a!-!3awD^59i*S^PiJ@{y(5F2}_|u zDr?!RE>{i>Q^a0ahPV@LEX!#+wcl9<{i?}b`gM{R9o9LZ4>#b-Q

y-bp<&PZHi- zZw}##*Zlz#eC!*(cA=Y`G}lw`Anv}G0cO<-W& zDMzCCozRNWdIYTnFM<$uqjn3%QKyH=t>EsIZweWjYw#brm-kmLv1U1`<##xRSQKw0 zCk3kgdCE(@;!}V1&>rK2x2S84o&{Uh<70^dSE)VCIA#39C%vZe&>6_K9o>Gx9z??~ rm2iQgT4J}eg_2vk`00`c{bPIs@KQOWgNMoi00000NkvXXu0mjfO{B&g diff --git a/docs/html/img175.png b/docs/html/img175.png deleted file mode 100644 index 7fdc87eaef5a7418964237cc2a5a5a2376df086a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmV<40U`d0P)+P{B&WKoEUdYZH^!4dS7fLW~#DOZ|XC?jGz_5bUiU z6n`N-dJuvjcnng+gTfw)2u1vbdM;@EgDrSd(AlJ0C6e0rm`wJ~&YNKYjqM{~ATUTF zv>NZXRm#-qU6gvg7#!vCZ3M6t#*jxVOHTTg&B;khNvR8KOty|;7}|O|ww&`>#9B%+ z*{W^aM67PrCT1K@MC!TY?RM)xG$Fx!U((QFL-Eg2b0N%~1KL-SVC71tr3moGmG!#o z9eSsq(90>(PwYJ-Y{iLzT*XFWT1z}wU9PIFm7AeR75Cb%*zRT6m1zg}e>Nz>pa5c4 zQ!&gC=QGNDQ-Fm`>d4emf2OCv2t3h2!dC|@Db??>9yoXjc7`Xse?hvhAhVVaaG`^Q z>LV%<79tw;R(()A+TK4?%wyLn4?A?xe6Ndg-`yMGEZ4$ZTk4qqk$$1*`3oVw0mUS# U4nu?$Z~y=R07*qoM6N<$f}hvbIRF3v diff --git a/docs/html/img176.png b/docs/html/img176.png deleted file mode 100644 index 432e95403208127e1cede448b796e52bacf25578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmV;L0cHM)P)0wX0000mP)t-s|NsA) znVENYcU4tY?(Xh0Gc(N0%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001 zbW%=J06^y0W&i*I7)eAyR5*=eV1NJxeg$13Q!I-Vb}ZuxdmH z>`|)E z0`dkhhPMM2*-Pu8j16E?e!-Ya8vlhD7?OT2VCb0m;{aHO@gPDOKi2}@0EUF~ z3`z{?3_J>)3)mQBpvE98V_3z;({Pvn07D6bA=_^U_G=6b?-@Yhe@P$3Qi}wp4hNnD zMg<1@4~+9a|L19x{D$mCp-uV>xB=4{AUHrE5QZNB0BMCo<)m;r4*&oF07*qoM6N<$ Eg5g)3Q~&?~ diff --git a/docs/html/img177.png b/docs/html/img177.png deleted file mode 100644 index c8ef97d9ddd6dc56dfc2effa41545df88b71e348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmV-o0iFJdP)%=0000mP)t-s|NsA) znVENYcU4tY?(Xh0Gc(N0%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001 zbW%=J06^y0W&i*H;7LS5R2Y?GU;u#yEDXDM?}jje7{&$yeg=k?4$xwfqSV9IV+O!|;FxWDW;YvyO)7y0s~J21D^uJ7T*0pbM?P~ zjn5U}X1nl}fr0M>vw}zo11C_)1l+FKjTLMF00>7;e2xWl$p8QV07*qoM6N<$f^`ps Ao&W#< diff --git a/docs/html/img178.png b/docs/html/img178.png deleted file mode 100644 index d50fc6ead5ec73f953287dcfa4bd766db6346718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^vLH4KGXn$Tg&Yq*&MYr44-E}{ z_wJpbpx~-itJ2cafbw_m-c?dk+P!=CS+4jWKt5whkY6x^!?PP8$tX`3#}JO0$q5b3 zyam%3dJYCLC`mWW;M6+AGWqraMwKa3L?kR`N(L}Whj=gTe~DWM4f Dj2}ew diff --git a/docs/html/img179.png b/docs/html/img179.png deleted file mode 100644 index 4a8ca50badd9b2f2e3a513dd2fd4d8643ac94d82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmV;60d)R}P)K5jP#1|=nZm@w~!13U~5Sne~_JAj3F&Kv>>vtQW8%J9Izh4TQ4AtMBE zBoL#@70!wvtQeBS_&+mfZ4!_a6lQReZ(?B4=wNW_7r>?X!zuE3``FgEEo{5d)ICO{009YwlV zzT!DwU`MarREbB~!ZWbJf+N66NCn_2Mp6_Iq%OjM++icts6erAosQM@!(PtE0q&>>h1vlv-TjR_Mf; zdGBD~gNR0+f}s{F);;n@3Ur0000SU;qIY1}1I>G~mL(@Bv+nfk}aZo#8Gog8-KTh8z-L zXJD8BVSGLOfI$Gr;19UKz=%%^VE}ZYAdvd7fq~&J4+G-{PLO*VzA}lw@!P%QNJDU??!y#=yV> z)Q=Pj%rtT?*Trc?2XDU<9)PXQx4kC*5~Hy6*ix=)Rj%kKq{AH)? zoED{Vt!yPQ^`{D|h#1ml%_{rjgH3I=P+iQj^X*=KG0d#@3ejEUp$?*@?+YEKS4v}i o759*n-e3{zJkLkbyf$x1AIMx9yR){u>Hq)$07*qoM6N<$g0mKLY5)KL diff --git a/docs/html/img19.png b/docs/html/img19.png deleted file mode 100644 index d0e22d1f1d026b0c96b841519a8b50c623c0da30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmV@P)@Q@>BbKp1_cEw;4fIvF;R3Ac`pH#q2E!s=jx{ssOC z)x<#;5En;uGjSjeZYG48;lg5!1BnwOk;vkp-(4+fB{sx_#h2@SKl=La?)$Dl3gd3U zhXXEs3qMg0VIm|aKlduewo(B)%`8?np6TJC39u?~Pr(sJG}l5Y{EgfnwHJo%ahmla zw0^%&CFwu|-YOMY7e7Q)q7>-F=CXISTv%~cgG926=v*H;7=o;8!&qsmykNTwnt`G$ z(UAFYfy!$czN?extAQ;WCKHO^t~;jeCPZ34FUR%Vb|`H%mvPR2jmB9zHh$r`kr|@k zE618(AnoDo!|FNbz`=1TNbpzh_R$EaYvW67QhXZ5{2thYfX82w`t;LGyqzFd1|Ged zRE;~zI>eXGO>`Y*{98D}p@lczm9!q~pL|Y70`5g?n$W*mYjJ3$9`ICO&n}FDT7A!I cFF;M>3o7?VneImjNdN!<07*qoM6N<$f^6T{U;qFB diff --git a/docs/html/img2.png b/docs/html/img2.png deleted file mode 100644 index ce374483e615394e990dec773625273263dfca43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3108 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 diff --git a/docs/html/img21.png b/docs/html/img21.png deleted file mode 100644 index 5211fce19c36cb65268e45f834a5bff5ed5f4fc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?(olHy`uVBq!ia0vp@KrF|?%)r1{)UfjnkYf+|NogYXO@?jhlYl} zd-u-R*!awuGlGJGt5&V*=;%mGO9Lu&adEkO_pXwX((c{6ef%(D=}S zfti{6f(aiR+qV20SKqcpck`ame;~pT^rwbtyR5^X?>ue^g$I}EDs(MwP;Xq|z2O!o bi!=k1y_jR{v$iQf3mH6J{an^LB{Ts5kk(LK diff --git a/docs/html/img22.png b/docs/html/img22.png deleted file mode 100644 index 6a7336dd74bd2b9988e0067617cb07afa1f14f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^d>}RpGXn#o%-5n@K#o>`Pl)UP|Nm#soLOF8{_fqo zGiS~S3JR`TwW_0|BP}frsKmv^*?Yc z!Z9;BA>l!4LP7vT5}O)3n?^yx1K$Rtvr-OP>kJYYOq1Ez^xAIn@XX;6mXNsdZr-sF wCiXMl5?VJJzMSLcF=uVqvXaqRm6@60tsPh1&Wq9!K!X`PUHx3vIVCg!0IDuRi~s-t diff --git a/docs/html/img23.png b/docs/html/img23.png deleted file mode 100644 index 8820cddeaedb8247cf2defa7392439ca2c3372c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM6!py+HICDGGdmu+Ez$e7@|NsBx<>jHFq3_x+&MmUI+Gd8o_P~|zprBJ2M+^pYmEiFNdA+jdX_{hSPn~V$% XzTC=BpB>TxTFBt(>gTe~DWM4f!B9%f diff --git a/docs/html/img24.png b/docs/html/img24.png deleted file mode 100644 index 87dfb3617e0beb11fe0895d44d446b3ed411cad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P)xwWI52E5*uba2zm_n1t z@z($Vmg!$^ohL$_5(Cc%7@I#1r)m5D&q44GLUn?G1F|wE1qKV44#l4V440Y&gf=Mv zd29+WB@+5g4G`9S1BPV`dJN1BJPHi^IS&9uI3i%G*ccYUm^TeL0vL8M{Ner0z;uB1 zLjq996K)~z23U&azQEVOkn}@n3ZsTD16Lzh%m6Ca^U>l9l*uTu6qg^7fimwAVw8aZ Y0I_XGENs)f8~^|S07*qoM6N<$f&@pt?*IS* diff --git a/docs/html/img26.png b/docs/html/img26.png deleted file mode 100644 index 7bb6f1e1499f9158c58e068883f892658149b069..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMI!py+H7%x2QDUf3j;1lBd|NsA)GiR2UmxqRi zzI*r1*x2~YnKOcdf~!`o>gec5OG^VPba8RHd-txAlG5(oyX9pSrvil-OM?7@862M7 z0LgcHx;Tb#%uG&5NO+LVAjIQuZeS3@U>G50u%O{LUyp~)f+bAM%B0$u%ymtde( diff --git a/docs/html/img27.png b/docs/html/img27.png deleted file mode 100644 index e3b06a48c325a65e036275e6611472e0b371f081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4180 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 Vl8}jH_oV;;002ovPDHLkV1n_5Z{7d^ diff --git a/docs/html/img29.png b/docs/html/img29.png deleted file mode 100644 index a39cee90cac107b421587a79c88a0aeedfda1d1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^(jYbqGXn$T-6D%JAV)XAC&cyt|Nk>*&MYr4fA{X4 zv9a-)GiL+^1y`+F)zQ(BmX-!o<>KOU_wHRKC8gcFcXLY45CjS_mIV0)GdMiE0g^BC zba4#fn3wX=Ms0(;HP(mM16*ls7awHa=uD)@JrQV7xIw zu33qh`8AWDTbrc=BdZ=8pPoYQfzN&GCAQnWX=sjCoO_cwW4W>Ljh+4y5;wlc85?x0 pVe`&UPk5l0utG4=;^YAa2FY?k1+H@OI-m;}JYD@<);T3K0RZ2qQGoye diff --git a/docs/html/img3.png b/docs/html/img3.png deleted file mode 100644 index 869e09eb2d53a8c79295a6821ce0df639fcc5bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 zcmV-T46^fyP)0flC>#}qlBS!?b3Kg+=6WZ-!MV>`^To9wnstoUq5Ei;KoCe#`kF-&5JLqv zB^2kAJm;v=UNKc&V#PI3booiR1%p@8A}S%x3nP6C*oal`b0K!8Lp)Y)l zP2WCF(3W@^)D76&obX!I$d|^y_b0cfWf)XxT6EA2U=^Oa5}$dXfRVt;>c=iLCHnTo z!Hw8Y)c)t{F;#DhG2Ep>?nV4?`ts}cDqWAM`;+wcu}?p>#8*S_3rJ`(EHxOso0n7~q9^TigF3Dk*d>x^Dv9oDAJtI2Y9d*vAWaS*a#BuhE+ z&p=rUAde~e8b;sIWcDF4foh17wWnA8$Rh3Plcxy#>SW&}6gQ&#n|(a};GRev^8YQ886g9V+*~kDLe~+PF|F&P#D2mJG<`C2wLFKv^D>P0g1_}X z+~s(1agO&I@iNDXr}{L<8Y<@ZSNf-4pzV!r1%7aJ3>S22!T4CwKO{Ws%}JZkajmaU zh?FM{KJ*>_yYIkjNIe0!$(Ea{uHc2mJo;h!149R3g#qCld!c?~#wtDaj5GdY2+V~w znkqQXZJkt=4%U))ocKE^MD&d|5H*4lm>L=NKz?rSYY~Kq){54M1d%ZZE20_%b40LN z3h=~Sqi&&!g7Y_C_tEILME;u^2(_EwdsaMLr~8dOsmWwclZ)|p3(?*x19lseEefOA zKibm&C=7}SVNvkYELm@)GmU6L%7CKpbq^c>^9N~a3a6I4eswiolJV6H>v}P3`1$LFoxbuOQyg6NL4O+9+!m{8-*Rq@IMJ zk`dBNQn&oXOx?2-eu$|HT%gdEKv1!2Dr!=VY#d>0FnEAy%PV`IS)gtD%y!~BD~GzZ>|l!dboEzeTrZ@0k*fK zL!u_t8we8V2wp3I8VE7@5p@p4K^}?YaPu+)@F4=EzcDjL6=WXL=^|7@sGRmiE@?%4 z6EyP^GMorMfv}R+XgW(FYUwP?P^)q~5q<|DisvpDbniHljKf4~An<7FfdA0w>T*5IQ~urKaZlpz&# zJAJPff+6i`^!h0zmE=RO-*jyq7QhJ4%X>ZybbIoKuv@VUgIlp}Oy@szD;~VIo(QWM z?yqdTV0I|=?bA#f(hpX$6X78%c%Bq+UYVFY9CR@76kqfS0x2dj{lPrm_(^sjA@m%8 zEPSsMf@Fw(Vou`&1R5FjRR$@VDQ)!=1k!FhC7kL^RM194iYmXGdI+Ttaw7aJ!m>Qu zBdntBy))$@8%G;(-_tQG<%zI?s{DLG0kAv6Nx5JXkwpl}ent%@3}H}aW%}asM2>J)8*dGA(hAESzb@rHO~*0znq_QA?Sxq=eA%ijIj+j)ULF->Vy4 zLI6wwUK0>6W$eeLe`8myU(HQqgf4+N5n?CUQ4D09a>Qt~mh9qS^Mt>?5tK)92iE?t z7kNOZTVVObS|h<+$C><1GWe+vG7TG;|LH}REoL%A$U_FASOqW$eT>y#C+id z<@SeVn@f-k&9LDcGsmK3BDwvs8>&o(v?UyK?nL2x&F!zWpJo|IPj7e~erTa+;xxBE z>II74!%1JE1q1coZ*h-Uk=l_a``7d>5cid0E3`eOIAz$M@19tv49CFwwhZRkXmW}! zKihNdOC9OUGHBmEE4k0<-g})~k8YKc*I*hc}aYdWJE z2o8<*?CLit`Q#WfJl$G5|F}OwX-)=u5AA51l6@DlaTf;Lm8{yUwF=`5`GRMZ|4-Mjx9-goFAG%rI?`~@%V5QKG#4voeC079Uy%JUXX zKs{=@^DQcP510N&b~NB!I#B)u5e_}iaOX?3LBu7(Q9gr@TwjRR$l@Z@{Uq;m$DMiXLSEaOvR! zhd}eQ>%O~@K>_$-DTJHfjOKgqfdo+O64m)sjWTEuKJ75vYSHqdj9CZq*`|*HbINcG zm{W#h!0cr}`~@3mJEY%_JNbqeq;$p0=F4I>rQ<$XF&(*hOX)Aj@E7XRybKoowjU(? zoaWyHer=wul*(inRuQD=3@e36Yv2#_dJ1I_V`v5nB?~j|Mn&x*uOb+uGd%WEORTa_ zQ58B+ajvFQhGWo@zV*R@c9^h}A{mCT6aGTUeb|Wv4mHuhAy?lEJ6Y1VqIe2B2}cM! zStNsg3_HP?!cM$4_KRUB|BN<$d^%+~2K_l1s=7h$Tp^oo_koi?>w#^|`TpltK`Pr- z*XKvy4rxaj08^m9Dz=}8DdR_aFi{_5Fy6&GfXj{sP7Mh_mYKOzGDM#HP1C&EL1V~p zc90J_qF4ZQq!Bqc?8G)q87IBZO8y?Qvx@XV&hB|1c2J~4J;=bBUPR*$ZHMm`=`2$+ zh=@`KM(Ig?10h>tl@2+g*zvY zB<;)eBF2Zhq)|a8L-XEK+>KEy6;>IoK7g|q=-GL``r!~ z$`Dnz$Uw;H*Y-;VM#1YJm1)Dib+;*!9ma<@S85^6a2`XE;x%2Ln|!Z%vE3Wa^H*-@ zcKjQLwpb{1kqjJ)bY!zhu npZPS$jZ14AU&HoNB(VPjnnKlrc-gP!PxeNn_gNwTVz2v{fQ#6-4VNkT*E!rki6e z_zlEC5YmDmF0G; zjUBU3 zmYC*Qz#0EL@;glvPIp1@2((YvWI! zl_MjYP|FbvttxXC%Oy)AHaiZFej7xG&dvHWVnIaMB7F0ob+T-B5lAsM!PdI$x-pq0 zzGQ3;Pa>Atzqq5mQBNPmqdm-K>ezis0$7-Z6uhk+Alx%~I d7TbWoS?~8oY2?XkDLViF002ovPDHLkV1lc`4J7~o diff --git a/docs/html/img31.png b/docs/html/img31.png deleted file mode 100644 index b0759f28c537a74501498c37eea35679c0b9351c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1090 zcmV-I1ikx-P)#~Z5 zt`>y42XZzM5yTIjJWFRTN>|9( zKJ!37QG4h!QfMrhG@~0=BCIJBskoKhJqB^8f2FFuRQS}h_=?|y?}T6bXdMREuG_eA z-T)dEZ`{{i4ZxZstozryrfex1Y}IcRJu**<94e)A)X}jhjErTaq)Cyi9QlpNqz@B; z^5AJO0-#Jm6vL2-vN;L8r?^}MT$?d%|3u5GA1!UH+@$u(@*jx)a9%!m@ZfET>j&I@ z-&1&r8XtN2HmTzhc#g4pX1-A1{y={#Hc>R3wC*VMQ~=IfdV?KD?QFaYlAUO_xhUj~ zBt8Sr7#9gb*J%)K1bdJ-F&n5kv@=6p;z1Z^6|0KMX&`H)G2G6Fj3OHw@_GsR!Q1JW zT<1Ipf;J_wkjbB=(Wy{!!Gm}heKvy~Y@N2voCj2*h9Viw7Jf3~_{ zWaMAF62CFcW{Ek(Y#9J)#)%-z9Jl1&1PRy6-LOb98+)1vwHZ;{L7aL;x_WljCx>W1D zls8MzB*ZXZLvB6FcA{!&s<9TA-za3s_zDryBDxvsf!!?|NA{8K+K$+@HuAXfs&S2GjT+ehsY5I9A2MHWj<}3j^;}X^PlILKswxntN-ggfK5_maHFn<3;Y!7@ zFN$Cd0`E5T7$r^gjRe2Em^r^3|2^PmU#!0l>97|cJop~`2JAl@?CarSo&W#<07*qo IM6N<$g49C&9RL6T diff --git a/docs/html/img32.png b/docs/html/img32.png deleted file mode 100644 index ed749deb990c719fc90a94603bc7719606b71773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 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 AA^-pY diff --git a/docs/html/img34.png b/docs/html/img34.png deleted file mode 100644 index 75e66a30e60b99898f2d4900a6ec10e6240938d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmV+)1K|9LP)X30000mP)t-s|NsA) znVENYcU4tY?(Xh0Gc(N0%n=b0s;a7ph=^upW&i*HL_|d0-Q6N0BD=f09~~i;00001 zbW%=J06^y0W&i*Jok>JNR7i>KRn3djKotM=D@~fD4XZBbibiy6VJYod5a+7mVQ(HI zA`2qegV%-F#RXAl{R_4zsCWwEp*Q12Jro*5P!J{h7sL;C7ZK{4Nk7~)Ym2Oc;_oo? z=FNM*dGqGY3=oSofE5nl5tq~PCNVg{o2<;J^@O4@*~eTN$yFSt_R6tf76u;|vDZyw zb?Wth2`-pu+YA!lt3$CraT6qp8Hw9Cs^>jJ>WoS{0uzpT?$s2&LnMB0tm9C|a;y!* z(1pxFQ5rnGTdho3T(mVL@faBwDvk1;PDcn8q{ylOCr^G!47psOH8|f97iS8HQbP<< zQ*Fg#Q_^1BRZOqYQE_&VFR`BP?dZ(o7Z2^ zO*d_5OTZ1f1Tdvp%&B-w^8QZ81ynULCu+#2dN6rSkd>2W`*aPRJuuLLog`G7TCr6X(1Hlq$P-1o;&l-c{{xnwe_Ecp5@z>%MgKQMTeuiqGc1PF4B!@4wV(I-|T+1rP3;-ilGH4dz4VTXj7j#IWLgBO5 zc8jR2oXOR=V+n(oH-(Q2%|?OLk|8-+ilOBp%jZuDB)cT z^+?)z^60VJs@pE@DJHu9FIkOJrTLMpBMyF)3I~6feT^v9_E5^7rnH=h%82N)Q6AWR-KDF&tum|_^<0K;PjULXX50w9MR zFzNVii0$kko)*JF7JeWtnLw6dgunru;tyCjsu-F089o>=$ecL?R`&syde#rP%o#l3 zzyT168G~5FnUTc<6j%~2xXfX4U|?{8h&yqB#1%I1Y%o~B%F4;W@CFn<2M+Lo)qhZY zaACtn4j%3X21c;@6FdyFP|fEh(LJL8JK#YIrUN)bj0J~s7R4V53>W`@xNpF)j92Q$ zr~FO@kW3P?a>k|~8c^kW49pD-#qt+!8gK-#aXT<6uoVC$S{sm+CvX9cUn!@qF(ScE3ri0-LgC+y>50ENm wB;_3Eh5H>CH1K&9Gh|jekffY}DAQ2^0AiO|JHEJcWdHyG07*qoM6N<$f;n@sMgRZ+ diff --git a/docs/html/img36.png b/docs/html/img36.png deleted file mode 100644 index 8300ccd3740b771ccbddbedf12790dac56ee015f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmV-x1C;!UP)KR?lnHKotIxO|w6eG}{W&LZ#^}I#SZ7qVA zzGY@IFYkNbn>TMJ3v4B>4dGW6cnK>}X+W?ghD7kOVA%-rRyi_`dT9qxCMtDi3=<); z`L~Z6F+;6h3Z6M+68M-ot*blnw|lXoSYX8SA1|Ip;gz9V{FS5{$kT%yVjeoT%Ezeb zHx#pM3&ya! z0<%)cGB01K!do%7~2ov}FA%u!)ySLB}T$u31rRhaDYK@3?bwth-U zA-l=!gcS|V_%9_B^>2yt_Yhs5Z;~M?miDxeR8R@Ek=p#FOjR2Qz2u7m)GfGSg1F zDIV>31^6l-VYiBm0j5*9Tk%Q@&(bwGk5IxHGFZ}lZb>|S%fMsYmh;wmC}H;oM!=X3 z&?>$3dK3#fp{RXFh-|bTr8RG_9np|{jGSTyC>ZS0$wup8!10M*SFhcKFgP$R+qj3! z2Ej6Eo>?~b)~XnSI?=zzo;&cob-FFl!!bASVWEH60dCcKwv%)nWUOdQgD7u@jg(z; z0S-rlZg70>!|<Q?S;=CW+wyyuR`~hYz(C1D@B-;Q0002ovPDHLkV1la* BlOq5C diff --git a/docs/html/img37.png b/docs/html/img37.png deleted file mode 100644 index 8dc1fd2ccbec2961e7c7634a8930d8b8748d2e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^+8{OyGXn$T*2Z0aK#oCxPl)UP|Nm#soLOF89vT|@ z?%g|MW8*Vt&Ik$$u3ELKqoX4&Ee)v9#l_|B-MdOkO1pROmX}qW3KU{23GxeOaCmkD zB)`?u#W6%;YH|Vt)3bb@gbxk9jBGQ)IJ68*3>Gk^@#UGavGLXSX->YFA|owf?_qc^ z>lbH=d5dXHML|R7?3;|S_GJs!7yLiW&U!Q7*CAU{itD}ojRS{{oI7yf?D-2D9v+Ti zWk1HvlOwPGr$9iYV!;9bITKwPJlIs(4`&n?Zrh{i6#G z8_aC9Z%~}a_$GKC{~0c(eu+H8oP?YAPhUPz(U6$W&CF1guc!Ihc!@jE0}P(7elF{r G5}E)W&vR)2 diff --git a/docs/html/img38.png b/docs/html/img38.png deleted file mode 100644 index 2a6bc064b52ee1584574a7f1463bfcad8a72bae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3960 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 Z@caX3{;yvVZ-AyTc)I$ztaD0e0s!xsJ0bu8 diff --git a/docs/html/img40.png b/docs/html/img40.png deleted file mode 100644 index e7b8816aa53b682551145982cab79469dfa7e3dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmV;819JR{P)KR=;o4KotJ$I(8Daimgi z#yg!3Yj|p6id0#YI`wRoS`%Tk!6v2uwJHI>!tK$r$Xl4jFG{d&uu+p!) zUSWnRQEeI-qc4~JdK5XI8d51i4JTxUp6qmDQD<`=FG?IvRI4>I`Y@(>Zp7D;C6R-> zHhhh&9f_nOwsoTwS{bA}M%nPCm)--KQ}g*ULbDQK4Kl`PKku|-^5aY;d2dHOBD_t7}cHs+_6o-8fH z@=;uvTx4IVrvD0fsZGFq)}@EWUWEARD9$2-qgyV@8y7;F(eaUFrm+6HF@%%6u-EID z#Swl2eI*vYSo2I1Dh2+U?#fV)7@++QXwv*l76+fnbs{5BVtODA8D%ttQ*Lz)zt|`> z5`JpO6Ptadn&Xs+w>v+yodpl4f$0P#aT(XMIMZ}_)poi#gZoRX0Wh%(&L)o2mQka+ zXdhbfp;U63DUEr|w{o&vCel>fEg{`nOEP-7I>0&ET$1+HwY<+s`c!Xs96S{K@u+Ie j<0v8o#~)eO|B!wH`Y6Ogq}q=%00000NkvXXu0mjfq)wwV diff --git a/docs/html/img41.png b/docs/html/img41.png deleted file mode 100644 index ef7452395bbbdbcbcdb1ab162eb358781f9b8529..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)@Qol>XP!Rr_#HLLf8c;#SAryxy)V3hvW_Brb6kMW9 z7s0wXhk_zlXz(v6>Lx-4w=UUSgvP-^99nmW3Jy{Sy_Zzm)L5}N`9bdP-Oumd3ornq z3`mKH&&ScXX4z0m>R>vhaP%M5DoFS z9SN^>7gj)sTH;RX_Y^o!kHI17g~TXvGOZR}$?WyD4P1JaXpO+;?@=GV-*=!zCEx0B zN}m>evM;7u;F;b;jil-NZeu9s^{hp%JUfdr1odDK$`w`f9C$%fXu>1AGr7~ft~T|O zV-O`#YnTYRjVu^8sokh=q@Tb)!qO;3yvAfAnM|s|3EaZ+SLd87o5;Zku6n>4draZe zL1QGxGsCS9XDC%Y#!I7P9Hy&hWCBO@j@bH$Cl-MVN-Mvlz$@gK%9IVXb0}h`1^Fh6 zbxZ=$8in?IOgNj3(xvW3VVrnVb55L+L_Jc77TRGI)KM^doKMqC-lI!Xw&+jc4Xirb zbech2m!7auud^`UtBMojNMpRJxu?q0%5(6I{D^m6X=U@tj<>o10000k}@P)*R69$`iBo_Kqz1Lu+u>oQhmRfo8{IdT$DY3zqH>C9yRpBd%@eC&`ozKBgcRH&i;J9?x?j zKLgic+CZKMCvwKA9Tw;y{eRqdTennU*Z*+&uXEyC1rO20000< KMNUMnLSTX>2L-JF diff --git a/docs/html/img43.png b/docs/html/img43.png deleted file mode 100644 index a6a14a3f5159e944d67e0af26dce5b71344fd744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 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 diff --git a/docs/html/img46.png b/docs/html/img46.png deleted file mode 100644 index dfafa7c95afe8b26bacc5b3694058e50946bb020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmV<20VDp2P)2T;GDq?Ry%-|y4L~(Mn zmrw);p+j-jdkA$D@i+<{oJ6+{jvbPS(9!dg9}^R_LO0*x<2&ccbMkRQfKoi0mua%F z%am*bkE&&5CPJk|IrBp}>WHB7$=U>>2=(@rFVYDd`k)6cZ-%huI_`I2SxI8$L}!vT z2z(b|hm+QL%mir%U{%wo(-tx3V#2bLgyvwS{Gmw#1`<5u%(&8gv3HOFO#(W!U>FUt zHx<{#(A<)scc)?5w)(tXQbtz~OYd+hr>Y(IKlSMpm$te%%}cxQkv|~xlF_1>5$#44 zmumxO{UtuVps8_OG!8YE87CdHXWAZ2%h#ycON{e=!EnPyAiLQFFuKI+esI*r5yh9Lt`mn_4HD?qj?19b+U|7h&{FlN014yX>k{-t60t~7}7l15a8hpgS@Bx2N oAp0D|YEoiZr9nswnjZ220MaE-Rasl8^#A|>07*qoM6N<$f?^ZNq5uE@ diff --git a/docs/html/img48.png b/docs/html/img48.png deleted file mode 100644 index ffc914618dbf09bee8680bcf88cbe53c88d8d5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmV+z0_XjSP)8@o7j?h+;1#MB5lRzP| zpssg-u0NBXtYrRv!~Ye9;XA(h>h#$|S9{Xzs!Ad_sP~EThCL=Xy5!0>A;4N809S2S zG91Hdp=sj~(Sv$S?V8u&oIyVcp+^#ZhDv5OjseBFvBh<05zib#J*DVAk}@P)@Q@u*VP!#?W(>C@dG3X*FcpE2CG~f#a6r@{6$Lb5% z7ZAERI2b!RxmX03AZ{)h#3{pFozy4r>QpMI_vS~_S__rB_(9G+=R5cOTyhTZg|ZYj zgI~fd>M^C{+@HoNz*E15ftbn^4Ys&UQ1*d>IrwrvdUJAD%3a`1@NH4GCGBhILLP}a zjUSI2NLOc*&UXf$~b=6@C0+*uE zNCqw>u;o}ZX`Hs8u^`C(uP?~7b->5ckG;2sJoz7C+HoqsiPOCj(?<_8#0s1Y;NM@o z9^32lYlmWd_VbC7LxFOdC|w+jqe!z0>Oxy)c{fs~+TAAVebGAR@ zY9P;IFTIH{A?g;-RWvzDxO4RyEIuJqSF=FEL8x42HAtEHWZ{jpQ_O%cG26=Qa{Rn( zE{kiO=gQOt#mr?~Nk8v)aus*hrkRL20}gPD5#UR)Xx@wx(~A!mk63^w4#^_`0000< KMNUMnLSTYHy8spd diff --git a/docs/html/img5.png b/docs/html/img5.png deleted file mode 100644 index 8960898839f77c9c621f4c715850fef1cedf1c2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eV!py+HD1B`~4UnT7;1lBd|NsA)GiR2Um%n@W z&e+)a%$YNSf`Y47t?KCLNJ~ots&a90xqJ7nl9JNy-Mcv@X9xm?7)yfuf*Bm1-2lmZ zdb&7C6F^BXe%3G&IP1?QdF@%$Br(H7A1CiQR_R vL*|;7f#?U8LwETES$2PB`Ociw)6B?lr-xJe^3|etprH(&u6{1-oD!MIqP)@R6R?>U=V)VruwEynt&n>4j~0U5&H*(AcD9#x|zk< z4*r1BMG(RI0|XItatJ7{77?d_K?f0$Rwu{cAS(EAN#5A>OVmkxhBx=#-E;Tek<^aJDVoT@_G-e0?CTum_+#DC)1d323p#bz2 z!F)*s5@p~*ffwiWelO9tAhoG7&%Z+D=`zwOpoc(CBkMR0waA8H`+5)OhC!|JG##Ml zyKQn74Dbz1Ih%R*<7EVNkH1iLQ~Dl|AjFJ>5mXtKx$YKjF`q!ht~UdDjq zR8Up5%xD-M#@#sFbc&n{g>W{fMOXq&29v|cc_vAy|GqfL`U+64k&YFJdgto?8bjU?4*A;vS6HscQ@PZBcbm@_UFuZC~nAv27 zD-xxr;TTgh?oiER7v8OMK+`k-8TuINp$pX$ZLY8~dOW8F*}BTp=F561-!K~yRhyW= zCe))ybseq(nLienklbt$iT<&m#Lpouy+7XH3{B!;KU~P{tY_Vgec5OG^VPba8RHd-txAlG5(oyX9pSrvil-OM?7@862M7 z0Ld46x;TbNOifNmNO+Loz`)3sa)2}a?Y+I#%uY59jg9LWk9atQ9cW;bFl_Z;)p;X) zz=VHB%G3Q57&e+HGA4azUF36PAlJe3WM3`K?tS8KdaL<22n@O1TaS?83{1OQ&)SoQz_ diff --git a/docs/html/img52.png b/docs/html/img52.png deleted file mode 100644 index 5c56233153feb66abfe710f060ee0ac0771e4bbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6N!py+H=)|+)ERdrc;1lBd|NsA)GiR2UmxqRi zzI*r1*x2~YnKOcdf~!`o>gec5OG^VPynFYql9JNy-Mft~C5)vM;JYr$vusCqwLjxn*4pD_K@9yq?m}C&i&&J{~t(~cvJE4m;c8}HXl%C#E^9u(wn+DB#hC(*bCm`&4>BokZC7uwZERGO zJ#(?<7Q=Llc?(V)m^WeWguZ~&9$Q)~4(74kU|^`@Q24Fpe^LYJ7zR&QKbLh*2~7ZP CCttGw diff --git a/docs/html/img53.png b/docs/html/img53.png deleted file mode 100644 index be2cba0ea04111fc3d37f3d1edd410c14338073d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 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 H_ z95FDN%X3{&4&hFk{3WHMa0;uSG~wT{gDOwt@;7w-MSz8^JGdYh#l1QVm;G@Wet~arU(Up3 zUt9(_fLVAj6PNvQxzNMwj**GWzPPMzI;-EY#^n`+SzXs-UQHVu)k1q2p0e^>9u4WA zd?j=@$cE8h#B=$1{(?!5iWPX|F))|qr`I3l6bcXgu`6GKS@-(DTy6*^-@_`XHS33P zr+afY)w1+3*w=9>2N~VDksay`GWFl*WH=Y{;TxHDW>M zUrWdi#mZH)QTo#W-?h$n%bL<=1&{R0NC@ivr4i3G-ytb6A`C>V;12Gh9hlz)(Ox6Q z|3m+1h2blPzu9x}ybMAQV5A;o;J9cW;uKclZg{pMO_NNw;PzGc*9>>_05E64VihWw zD4UEB1_D`fx9j@tbj=yTLrY!^8HHWQ6;l1TmAef186Coha5-MYILOU)>;(hX!(10H z4<(?H9-iRj24CQr!u{;ccJjD*-_^#zO8P-9`^18=461H$tkAezw#2$*QK^eF#o$)KgRFodg!e#%BG9AKg#u}Gz zTrA$a`}@XnDm-exPM8Tim-j9$_6r<_+oEg7b6Ks!3GRwXj|EV^#>)@R9#11`s=Hvj0bR1MOD`9aNPhj1GY4-m&*^xfUj*rU^+@+p1a9o<^lkCB{9E{75 zYvU{jg>acB*+azT2fJR9?c*{{vImdL@Hv2=8)00wlkDZ>^5*5`@>-I;hBaI_{103m Vp)@h+I&=U4002ovPDHLkV1j}yuuK2| diff --git a/docs/html/img55.png b/docs/html/img55.png deleted file mode 100644 index 0b94ce1bb965ee459976ac7201259b944a088dd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!py+HxR`CDK9Hjl;1lBd|NsA)GiR2UmxqRi zzI*r1*w}d0s#R%eX+U`w7ni$t@9y5c`vHgkJs_X4B*-tA!Qt5rkffKVi(?4K%;bcG zgd_&WbCEnJ8br@!F(jFZSgvE`V&%!n;o}TQl~HKobmeq@>Z8DLsfSM|m!~H|aT&vk nIqpnT7IH4!F?H6~MiGWz=Q+;qIsK{_XexuJtDnm{r-UW|DilA8 diff --git a/docs/html/img56.png b/docs/html/img56.png deleted file mode 100644 index 38055651c907a81af1dd2df94e83cb4d7434cd85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^f+|NogYXO@?jhlYl} zd-u-R*!awuGlGJGt5&T_OG^W)a&d9Fd-txAlG5(oyW5u?d=C_2ED7=pW^j0R10Eal|F*7;Afx(Q8&CSiAdt!g%^r?-CjB1BZA7B+q4M=og+rz`E;K<6x#@NQd*2b;y zjx|q2m8WO(6qE0cGmIrAEO;Gw=9%*F_;5Suoa5x-iQ`hZwvw60MpWV0!U)x+mJU)3 YF28y92WiT>0c~XPboFyt=akR{00lEfZ~y=R diff --git a/docs/html/img57.png b/docs/html/img57.png deleted file mode 100644 index bbdf4b88347d61afdcb9aacff51854eb80f9813f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 421 zcmV;W0b2fvP)^Q87!zFc^JJORptY6MwW)e(quQF79-!Bk2ks;z+nn)#vltvUWvNyz>uCpzi=t=r zbaV`Pr}GT>QB6iE;nw)}4)c(0J{0?-`;NylHHgA)$7ZK!|MCN` zfvYenhBwiPOJkPnD3#REIxXRq#UU P00000NkvXXu0mjf`jE9( diff --git a/docs/html/img58.png b/docs/html/img58.png deleted file mode 100644 index 2cb46436b5914a26d927f938194313d45c650527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcmV-81IPS{P)KRXu1FK@|RWZ~yn!InERk0ylRcM2_U{Y73X3A}Y9* z^>U41l~zGm6*Ph&ho%r4udva^CDk>-tHjPlG=+^@NGgRjQHg|b&hFmr?PiaFjY!A` zGw;ot_ujmDZ}u&af|hV}EF>NdLMJ8y8~sW99PE7(QufD-uh_)<4%`FJ_*O{}vt}5wi|67SuDvz+y-YHvBK9%8R_tt{{W2 z)q?PbcTAM}=QWXVGFjY!C^CJ6pyxLUUt|i!*o}@r(`UG2h9dc!f$S}=6D29%3Jr^z z9C~(NfQ^!d!;F9>c?2`J8$EZw8O{Zkqlf|NGOGk4oRCCWDn$}5;ZkpND36JBL2)gr z3^U8B$z~ZJ^@38ARo=3kU!3b+3H5b$EOmV&9h45E!1KyYAJnpRbeg^$O68InRIO(C z5!ge`BB-H=yw)c_?)9W8eD%VI6}eDG$oP!igubS&^#U4-YYq zg2UQ=EBgD4M%pE7s6h+Ya1z9oTYF4*bsnv)@nC4AT1O~puRYbCYA?twF2`#Z(T&Xmwt3fi~J&bej0Dv>6eq}lr>xK1|H$MKjY*o^qg zxjHl^mnT)H7r>{9Ta_p-J0}-9IZ+O3-s}j69)AE~-=4T`Fpgec5O9Lr%adEkO_pXwX((c{6OGFGh69CcZOjg{Ca-L0e8|lFc&2f>M1x$S#uJu8Nr@ZcJ_{y$pJ3x#5ySa+ z8JohF1DloxD{&|v-l&xQpYJ8qaZoyk+P zGssx1gf2ujL=h`011uDYtm!$SsBNY>0C5A-Pw-_ugrIF*uqkZ%o9AD{P`Db2fJG6> z?WDz!T7W^7icoc-+xkP=-o81|7g008xG%Od!ckd^p|$by#WZJriB^+-l*BCx@jL>q zfK~>rCpF4q#!i=07=bs7Je{gJzL?|x#B{G6N}(})!bgNVE3<*Rwx4CS;@x*Ti0cLD z-ZgE44vNkU1`B!LA8+DbUFmvQBHv10cb<88Ih>Vv&S|crWc+S3%=84mGe6Vy4%`5s WMg>Z^TKP%<0000MpV0000mP)t-s|NsA) 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 diff --git a/docs/html/img64.png b/docs/html/img64.png deleted file mode 100644 index 63497b0632474f618af81724b6460373bcf449ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRs!py+HxZuL(EkKSzfKQ0)|NsAI&YW3ZULG16 z`tIF3V`JkpXU+%;3a(nUs-vSLEiDbG(8a~&?%lgeN=mzT@0OQUoC*|TED7=pW^j0R z10-MV>Eak7F*P}Xfk{r_U;&4Z(F>yu6$S?w-!lo!d~o2vf&&d~(+ngG3}O>*0C|6| zF~$mU8fY?iGAu~4V_T4v$0o+gmRDD{AVTEak7F*P}%fq_xu>3Yg62JssXYu%b{ss$RYK>h-HvRj+CmU>tbzPof15czi6W zLCTo11SNoqa6sP%9&F5mCICvaz@W%FJtD0A=oKk64b^&vxe36HLzs+M0JydUw|}_= z0aZ=ZxQgHIOKa?87EauO6MIAD?LNx1d~$X;yE+2{Q-@GeEYLHwsIS%T=_-BrgDf<` zmu$#T)PQqx6ISkFRVlz>hfVN3tX5`8FwFVm-L8SDSjx(f) ze;EP}E|xO*2@G_b=E+XHL&jGOxru2S7s^M0dP;|6q9z=iswx#DQqUvqMNjt;Qe6hd9>b!*Oq}qb`R9!MpG^TD*BskfX7IzR<{&+Da^)kN_`LkvU!f;| zPl`%E0H0emP~-2A1=G^m;rg@XPkW~r#?c3$j-kgiI7$XrSK!4;rFt5E)Ayd){#Q33 zHibgedYM?K1G)Lz^Ug;kwKoGDS(IFFrD1AiUxUbQ^>YV7SQb$ z!%;m_itOd|E;JgGGzjOr=omDekp^Y*Dv~_(m(`RLr%;qDHN&aHxWJL?7*wsp0CE7c0dh3!<9j|Ln>t55I;+>!_m5u^!6de4i00)AC zI%ml?om3b68@T1=J4$f7!8lq9r9ED}X?b}b>qRSpmk&1~go~77Xmf7SH!$|NtIAeX zE(on%-|=a$f(?;t!!^M-vlWa}CJYY)x%OAtqkh|ELNnQMzL|N$Rsk*^+VR(En>#|% z@B0H^hJ`h3y&|_hm}%&j;L;Xbg;}@?o8A>ta|tSTl*s7wOz@T|%M8nJaew4qb(oFv zAP}P%#+%UAA2Tz;C$GRiL zDayPNdEWlea1ARm$d5df&!8Q$7aJb7X`>|%3DKwu;`KYTfq3fGFq?iLaOvUn)03oP zKf@%zL_f_Q!0RV!?u0FQ7b8*au0!$o%*2PR)h8uSB%e&u3cXC3UP2Gtgc;rHpoOu^ zKVWL7EYbrq?6DH>A}l+)8yZxYaWn@mlWd?ZdHfERY*tg*1$zqSt+HU4J)Raycn8ka z*~9res)pI`D+11AD;Mm$NN90bbB#TC%w{5w1TI?B!I}%pihs+iY37cAld5bucU?G( z1B6LFK;$8_;LD=Vq3MS%Ij_E&921#WeXrgfM#W&o_Fv48u$6<9rDUmuX_So$4Vfh2 z3BfBxo_3nfQjSB`Qe}_I#N z75hs;MsTnEggW8v_;VE|*nGHd&r~%td%jVALKEyb*0qblhQPe8{3iTV$GlDx$hRRV zc_Zmu4hrs0aPkdRW&%6-_2_L{rXMMR>x>eV=$R^YE7~&$N{mco?$?QH5Ug1FPiXz~ z{VaDI>7xIkmz_#EvKgNkqvM>2N?+Ru3y+Q=_Wy;KzW6l;v%`~V4f{)uM5pw{eaSs2 z=vQ&lp8l^5Ne30yW}d?(@eVH1Usw@}#@Yh3&jl?3&zHZc9P~0$Kkxs|j49mRdkTpw z$3Sc2^sbz+h?u>+oJ?2Vk7v$}_8h?MdLR`e?%uz*JOo~cuLJ(k+a@B&1FZ@FI4buM zE?=%F3nlv=vRR5q@s%G*T6so1k1dEwj0ezR{C|0MuE z8wswoA9?{;Y(QDkz7H8##6xjOp4Rd; z*+Uo9(ZA^!jT+{GIX$)^bqmkg%*6PRvc!){Sp~76{%e5S@Hl*jA}HUyrEFQndZfK% zYnI|+ro7aNP^jnZJm>=Z<$D6Wysfk5>YCld^OsQyQ}8JK5BBj(kgdyZ QX#fBK07*qoM6N<$g6MpRoB#j- diff --git a/docs/html/img68.png b/docs/html/img68.png deleted file mode 100644 index 5fc286046de65c9e8b31ebb08b1ae4882b8d51ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)i!py+HD3-|}4dfUE_=LFr|NnpH%$eoo<)NXW z@7}#LHa0$U=8T}A;Hp)tIyySi($atmU0hu5-o2}&q_lhYZh2Y7sX!sdk|4ie28U-i zK=RF=E{-7*Q%b{sSU;qL}h7Al1tPE&i0)qm&5EwkbDhdUwfS8*>07&vd z1X$UV@TtcHOhqOP4C=}bybza(F)#=)rj;>(&1L8WxfG^Qf;59k1H2O!Ffi~a0f|Fe z3j4DA5GKA(Nm&Jz0Won0IsR|h2t(?=m#F3uJ`x$K4)fTSZK^W(f#XFb)cCHp00i_>zopr0QvhvMgRZ+ diff --git a/docs/html/img70.png b/docs/html/img70.png deleted file mode 100644 index 2539460aa3a028e10010860d8eb06ca22e135e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 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 diff --git a/docs/html/img73.png b/docs/html/img73.png deleted file mode 100644 index 6cc3ae5c543f5728efc2e11ffa2622bae2cc0a60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmV+=1KRwFP)KRnKeGKotHmn`X0{-6V?8DnbVlY!B^v^cYG#NVjDV z9=y4V2fax2=AkfzDhP$9(2HJnDIy*U=Aa^0+~CDa!JrFz5O)6n#cZjtv=p7mc7NGM zr1hfs!OXn(=6i2mX68+RI4tpIfj|X<5OAWIMa7R7HmQ&^@a*O_>(*QA4?=)j5qfKCQ+tp6!v9 zgM7umjc$2F8%B0-mfyPXgcnL1r+L$XOiN32%uMt&B@Sl?47zTlblauKFQ`7=JwcYwb_;piq$KU{m*4b2PQG_Zz++=*b z++j^LTxoa&qaZGn;X7O}omvjwLb$ziOe{7<=%Jh=+!UVqYutyAaiDSnQ(_5x6>)B} zcEk)-oI13PI%a?`${5$#JopcXyJaXU<49S;ZJBcm!frgltZEi3Nc$dEL7{Na j`@y-rj9GS&ka73{Ft4wU+K(q900000NkvXXu0mjf<&<*O diff --git a/docs/html/img74.png b/docs/html/img74.png deleted file mode 100644 index 90e36a4d75b43c20cd37a67b86b8d25fece54d58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)SU;qM67DfhS;Q9%P!^Cg_NOG*$u$AEh19rgAumMOi zGEAGm(E!!~1X?)MVgnzbdVnCHAm9M^f(C|!13-?3gFya-AKtqUP9woEJOJoQ12_k0 zfdZ7N(eS}TVSfTc=O2(mZZItPps;}f6eQf7toIon0M+sFGBB{UbA3=`n8dxi5#(M@ z>NtsNfE!G51fYv6fl1Z|Bq5e~hCr4L46X?r2l^cT0R{5;w@d|6d;x1(D zqGad?h<~6JL5iDBegn@X0I{QdSJ<7_(1vKY_Quy)SSPpN%dC`NJe0j7C@OV$29$JbUm(I&pO32K;gBf7q za{SVxB~s=-Q_p6^V4J`N4I)tJ^HO!2u$tBGtcYG!RuL#aky6!7VZS5M!crP%(Unw< zal$$UWM32RpyHW~!)8i!9;7y{>5wycpcHV*O@Qlru6S^!x+VYAXx|-*gC{wt;M!DN zkuZmm!p@Z*&i^#x-;`OEcis8UH;@+nVfn%s)?I7eZ$R&=^%KhwGpAUK8F!?cUgI2F zcnrQ{WJi$eMfsZLud}Uwll@;(Z%SU;qOFAZB5JflUo?CId5s;@|Xv;R6GHpdi2j)aU?G z4H4iXpaG%_iEVIz|G@-?gaaVgG)P>~_`Un!G$vvU!3}sfV7H6q!VQ7>7Z^JK0NG3o z3Y&oLW@KPxVBo&ba2hDY$NPzaf%SqC%Mb3|jUPCW%;2QVJ(Pg2*o6bJigFY%n+a diff --git a/docs/html/img77.png b/docs/html/img77.png deleted file mode 100644 index 650cef038e8ae6a036b12d2bfd68e2438bb9b9a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?WRP)`6pHR2Y?GU;qKuQbsV%u=2`vAj!kPz{bG9k>KdV?!bTqK0qi= z79er#z=aDO3|N3c1BeU&Vg){i9SjQf4jUL0uqi|V9}a*>Fu}mVU;v_k=1kCHab>s= zpzvTn0|Ore6aOU+27TTSTp$dLO)U9q=>Px# M07*qoM6N<$g7UYPdjJ3c diff --git a/docs/html/img78.png b/docs/html/img78.png deleted file mode 100644 index c3fd2d55f938f626fca0e4773cd6af70e59006c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 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 bo4bDksZCi=<1hS#00000NkvXXu0mjfKtiG0 diff --git a/docs/html/img8.png b/docs/html/img8.png deleted file mode 100644 index d7424dc1e6e7b1be704d0810d1c77cd23d9a6cf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngd!py+HSh_gd3&=4D@CkAK|NsBYnKR4F%R@s$ z-@SWhY;1hy%o#yJ!BwkPb#!#3rKJHCy12O9y?a+lNon`)-SV=EQ-MN^B|(0{3=Yq3 zfaFs>T^vI=W+o>jJV;4MusCqwe`n)K#uG^o{v0^4yRp%=k&$VZMB@>*I<}MzQ)N}y zCPfrZXl(3dJn?k40i&zuCy~9ioC?R@8nIpDS7_VyKWGDkGb?km<&8zGJUo*fcog@( decdR+uq#yPT$0VEX+R4ZJYD@<);T3K0RRzvRNVjo diff --git a/docs/html/img80.png b/docs/html/img80.png deleted file mode 100644 index 5a0d1ca4479d6291cdfd2724c9f8d4233bb7a698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC>KP)Hh-PMH0000)L`2=)-6A3)ySuxWH7^|i z0004WQchC zVCEa$82rnoIsx`pI8tDq+00000NkvXXu0mjfm6M*e diff --git a/docs/html/img81.png b/docs/html/img81.png deleted file mode 100644 index 6619889af70f094701afe63977363ddf4e29e57e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmV+$0_6RPP)ZgKpw7+iJK+C0jP@iC^j>Q2N=%UK!RoMw(LwDbNNH3!ofOgmR%vf&-6X2~5ld zsKfzD4L6($08+C#Qd}0eC@`=B*^C=D dWdadk0|0fDyK1(&+^YZp002ovPDHLkV1nG6$Rq#& diff --git a/docs/html/img82.png b/docs/html/img82.png deleted file mode 100644 index 44cbaea8f64168b21eed31eebc65797d5587e2e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^5P%wJ9C;s zSz%$qv0M{H?u88(kG6&wPiQohcrYQv;hDsQbAl!!OAlnWG#UyqFuZ)u!QOJWb3f2H N22WQ%mvv4FO#pLPH7@`F diff --git a/docs/html/img83.png b/docs/html/img83.png deleted file mode 100644 index 2f1e81d34fe3199e8948fd35c3c87a2d6ba2a515..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmV+*1K<3KP)KRY7RfKootM&8E9evI!!x2a8iJ(u-~n-nOl}OcvUbhBE?15nPfLz+pI0E z7tsfq`SbsOKbiS|etF3);#{Jm4oB$fDQ8)sm!r6c;BUj_nP(^k} zHY-Ow1UY*R5mtk{BvLVW88N16ZXOzNyo4MaOuwr6`2p0AnvP>|vtF8De9BvJwB-Sv zKk!lOgV7_iJ{cJgw+9pAVAG+T1tsKtq{P;_IS-QS>NfR=vPGPUuiJzeIbm0OU$7F5 zp3~GfvXg%S=91X=@;FiTvoN<&wrEtQ5mHN{o9;%k`DKgPa3$@v33ib$ib5k(|M7U! z*A0eKDlBSA+T|d!Q$Ht?=ke#0sDbqJK+VE&)PV4`Q9MuPg`!GK&}1a_g_CFT|q!d(Z#)J3*eTmw6@}r3+%z z_r_|u!EcS1$Ve<9UZMwBccC<*xe|`sd%T)R2O!&aV&A;z^d~3tW09pC`;_OK@@N(1 z$z9~$@XHegl&hu17vF5H1bMhki6i*(gN0I;&p&et#6nA>ip@8{-g3(w{!H0%(1$a4 ziql#{@v#HCg`8P#p7$YI@@}NegCT#AX522H_u^wsHNfFkC&Dc>--vC=@gHhG&Klgm z#Zp7;v!dDWgsWzULGR-SMvH>4B27DdaUeGXrLYN^!n`^=`{?SmuOMN(xD_2*ypBul zFH(K_3htIjm1PQToZ|*!@{@Unyd(HVeFPmovI)P;!I`8SC18&~{pcO~}0000Hh-PMH0000)L`2=)-6A3)ySuxWH7^|i z0004WQchC0r0nxIQ#e95}c9*ISuAP-~h!st$UW*EQ=Loj*Kt!{cw05H4CJDq=hGP)RG%l!+koHajol;;UDylfwP=sP)MbQxpu~j6x)kQ)yAcKT-qCk5Gh#ZZ1 zZ)V5#?%I1xM8orWcjnFe`R1E9<2iuSh0|X>0*5-TR2@Mi22eM`&s6NCQ8a)$2WP~= zvSd&&-~Jxq z)KWea)bE=O<BQ1zjyf0}jl$syNoD0M~J}iOp#YUpFY`4=nClz+9L4eM}Xq zELafaDCJlO9|Oj{?zrpgmLbykSj23KqYeTGzJdV{;eDXB!qKV-S1Jh{`gZ_*g#%FG zjb$NXf`A1sHPKm=w1`ZO@j@UDmpuni6MD{L96^Gw`^)%76xvZj5iK<>W|LSNFbhNz zvaqWDI|)@|R(?e$DkWQ#UPdFPo!!C-DMKk2Ms*s1QRj3R1*MZ#7`Q1Kp@PwAW7^Oq ze1?goEKHgMo#AlV!y+`mb7y-4w}xNGf`f4!&Gk$JeSQSAh}uK==?FOzu!7g1W3iK{h*b3l2g_5FATwnOGv6Vo8iHzO}KKA5_ z=x>I9#lirrx+8;fiTn{vTi@biK^d!cXmoPXa=SGB&U(bdTB`s1XRa9JE#A4b~7Sq!$KGR{KSG#R~xTWqJrBvgPmV#k&H2g8G5lQ3WmN`@&JER%nA zgeeKc-J`VJ;PgAKUno)DO|_gimHoSo3_yNyS;espx~4-T@s}p2oDA zp`V1Vu+C9{y1k`|D&JzwGI12l)Bzm*WemC`Xv4Hi!c|Tqr{1(l8nfZLEBC{mWGenX zOhfo!A%egW`!V6PTAgkc$Kq9nkj+Gf-WrGJKZPHvswg;V@Py5hiMJuc3SzUIg!3t$ z)48RrAKS&-;FUD(Yv#Mgkn3C@6Jd}Dr5S9eJGyRj=m#5N#2DTSQM03T)ygn*!`8U& z;ssa0MMy<=LRQpWn46ty4^0#{dyhB*zGT~Pl9%3es!?MXC~@E{QUe^K@PqAk3yI${ seYHH4Jk!Zdzi-W>5N@3RvMbEu4`Kd9_iPEVw*UYD07*qoM6N<$f|$SKNdN!< diff --git a/docs/html/img87.png b/docs/html/img87.png deleted file mode 100644 index d280160a6ff8a74211c90e54066367fd400fa936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?WRP)`6pHR49?HkUee!F%X5n{n27z1Ka>3(WF6J=0h8TLi3Z{P4Vm zzV@_6#L6i?E73yu*;A>r1l9HBN0os3gU;2ZeidT0si}k}2&1(uV;VM78CjMgZC^IB zYR}VSlgi=2F|l_&#ck`{fH!zye4a}Rf4utGFP6lEgG_TiGx&13Zf7nS5%sLGZAI;G z#+G-!-7Q@x?;m#ioXKuO*dsc?`ZOcRnpW+}tI6~6f&0(ly^a1GKOG|}7$Hr9wEzGB M07*qoM6N<$f~td|0RR91 diff --git a/docs/html/img88.png b/docs/html/img88.png deleted file mode 100644 index 89a30141f4e44021229186d55eba774c3587d7cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz1!py+HxYAnq9FSuW;1lBd|NsA)GiR2UmxqRi zzI*r1*x2~YnKOcdf~!`o>gec5OG^VPba8RHd-txAlG5(oyX9pSrvil-OM?7@862M7 z0Lj;Rx;TbNOifMzf}n(k#??H30>pmTcD#6ZSNg#w`Gg*|9Rgi85;8LuFo-1e;N{;?}8d&19VRy&hzMO9+kNtGWB4ZjaCFepw^5f(qK^b+V222WQ%mvv4FO#nb_ BVHW@Z diff --git a/docs/html/img89.png b/docs/html/img89.png deleted file mode 100644 index 168fcb95157e5a8d71ac20bd4b63beb7f0166f74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W7!py+H7-8Vy4CJT>_=LFr|NnpH%$eoo<)NXW z@7}!=6ck*wYE@cV8c^QF#pUkZyGlw*yLa#2SC>8sD8yJ2zopr04vf{qyPW_ diff --git a/docs/html/img9.png b/docs/html/img9.png deleted file mode 100644 index 2a67babe3b406cb9e514810e31e3e786e3357838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&V!py+Hn6rMd-XuCO>hw#nNJv!d zIJhb9y-0%!yR^rmhRN(pre-p&syeoUmq$mz*n)e8nSlX!18XI>gv&vmzP(;vuNAni m8x-U;>{!;=c>6#fBZI+7Kei>})k* h*0BQ*Qn60MFc5u7TDNIh$ljqYYlW!z0&lE{iP0nKl&Lcd zE6OJnsUKjmbwG4t?t~Cu;lRkk8QTd_J2Wg6Pm1sE<@ug3G2jtm4+LgmB;HH?3n5p| zLn*}P2_@3-gNA*81Y+V+wV~xgh=fRR43ic*#AJNcw~QEk<$Wj4%MOdio=u^B61y1D zVQTI?@O6k3=;}-LQ>Az{M<=Yc-@~S+?nISDR#~ZFUbwyi7 zsU#AasfrJY2aPds@_6c8KG7=-8C3U;e!ti;<9n?dZ3|+#W7j{%H^AgMgfU{iXaE2J M07*qoM6N<$f;^nE!vFvP diff --git a/docs/html/img92.png b/docs/html/img92.png deleted file mode 100644 index 7a1571bee715c24a2bc9cbc0d98ab1ce0dcc993e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmVB2 z;Nl>}4sHeY7Zk@X9_~UW=O7M(OD5-1P*EuLa!nILG8A+W{NTNJ@4I*R?%sPqf=!{v z$iwBbFIE-`kV8<$plun&y)yW*a=3UY_2@2lbQz3m0F9r;=Dtq2>V2rHq`3?XGNg#v z=z-vj>>WpbAV`9z9R%quQo5@D-qV&wR%M%utD(Y8@U`G%h%c@nDQ1jF2Q=al$vG9i zghNO4Q3Z><^k=57#K!Qu(W^TZEs&rZ{g7nY?R2GPWHu7cPk#1CVQm8!+^!FWODL55 zNWKNie5*P4YoRa`E-V*lhEU@@G;t&7; diff --git a/docs/html/img93.png b/docs/html/img93.png deleted file mode 100644 index 79cf58a608ac4cb053e96d889a83c89e734a4a70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&N!py+HxcqY>h@%_e6XN>+|NogYXO@?jzkB!2 z*x2~YnKOcdf~!`o>gec5OG^W)a&d9Fd-txAlG5(oyE!Fi2m*x|OM?7@862M70LjOA zx;Tb#%uG%I0=6W!WPyVRma#6A*dcMFL4}=J#(;4nlRy%?L*X}eKJJD!y!;ATJO-kM zYnwOzFl+GG$+?wBhuP!v5$(+|_82_lG#1QF56=q?tWbaHZzlZ!(B zfFKoII_M-F1Y4&fi1`D>;w<QXg$IbLqnnG>*9?DX8O+l4wzuG6ePmY_=wCrggO&^iu)^;7%UrNlLQ^x zdOT&)e%8p2=1VFvoN<|+TWpw7o!bI4u}u+;8tBz?$#%KnL-elQzWKk>{0~TVwNzE; zW!Sya&E;k_+u#UNu(Ucd;bVoOi z%ac$}T&NZj`@k3?iKc@KORp7U9l9o5k=+Rc=R$C$yLp@4flj1&*N(oPGr-UB4wMpJ UIE(2>82|tP07*qoM6N<$f(PFN>Hq)$ diff --git a/docs/html/img95.png b/docs/html/img95.png deleted file mode 100644 index 48aa78e3f8d4cf21d250e237bfc08d657a632e96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^#y~8`!py+H$g+z&9mp{V@CkAK|NsBYnKR4F%R@s$ z-@SWhY;1hy%o#yJ!BwkPb#!#3rKJHCy12O9y?a+lNon`)-SV=EQ-MN^B|(0{3=Yq3 zfaLdjx;TbtOiWH_U|?o*YUpfi+}Y50kkK>4Tq4II^!V8W2R2^^@;!`qa2quL*ufC? z*C2t(u=^pCGJnVEGYtlvCmC1sbus>DvhZefD%MMQk>*}t&SGH1w9;STUd#Li7k;$l zFbU_%u(9o)$k1nSm_35&g6kBS1f30qI!@yCS|94tUN9H_=#`nU0#w0(@&sjJVPr?@#s*#4 zqV5R9#>OM~4VsB5gBSKZLR29n1VjCk1~*A5AhsSUz9;v7wtO8cfFVzZ4J<0wp~O-J zYV=vY9BFB*c0@cMW=X!>fEcUY|6<{9MMxtNJ*oa!q>a0~&=p{hOtNcieb3U}ai1+eb=EZ3Z zOA1QFhm1pad%jLq-yA8wc6{L~9kzirQbe&cUP+w-XWC6+r%thomsj~hxn~3=CT7j* z-#y@Z@J<{2r*f>tmkBQMRydOeA5^?e!;#5v7D%{FN!H+9<@(V5o{PUs4D3Vng8{!f zJ}~g<(Jt_)Y_Ge)q?L(c9dElQw6ym_Zk;s)(N#XhwM&2O00000NkvXXu0mjf{|d=v diff --git a/docs/html/img97.png b/docs/html/img97.png deleted file mode 100644 index c4a1e7addb4aaced38e2b20c67297361c6e97cc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@X~P)0AY$QjdG6Yr2qf`07*qoM6N<$f*HDxivR!s diff --git a/docs/html/img98.png b/docs/html/img98.png deleted file mode 100644 index df9999c45dc7ea3e7673d9a791d4d58d363d4803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)n!py+Hxc!rIEs$dn;1lBd|NsA)GiR2UmxqRi zzI*r1*x2~YnKOcdf~!`o>gec5OG^VPba8RHd-txAlG5(oyX9pSrvil-OM?7@862M7 z0Ljnxba4!kn3|lBknn&#iIt6m;UW`{!2uE8T#y?J;5>x`8&Z5hi~~T-2z0Li4?RR#qH;kt zDllz876OIF1O^l#h$g7e93}^b2OHRtg;-fRc^ejRgEeme`H+c$gNM79*MWxt;%zu! zV&DamE=VFg{R|7p^~_)aEK3*|Tye^JL8v=G%#GWOSTK1WLlLjkjZgWV3Jh!-LKhhR zfQ2?-C}QJwU{YW!U^v8(2a_tmv`&e^n}J#6{uTy91_ns{&17Ksq^$^yKm`VdAPDt@ zL6d>`2ZLm109YCbm_9II2doWz2@L!S5RNBquQ4#F;FBB{002@YFn@UT8g>8x002ov JPDHLkV1j~;mXQDe diff --git a/docs/html/index.html b/docs/html/index.html deleted file mode 100644 index 45b74cb0..00000000 --- a/docs/html/index.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - -userhtml - - - - - - - - - - - - - - - -

- -language=Fortran - -

-PSBLAS -
-
-User's and Reference - Guide
-
A reference guide for the Parallel Sparse BLAS library -
-
-
-
Salvatore Filippone -
-Alfredo Buttari
-
-Software version: 3.6.1 -
-May 31st, 2019 - -


- - - - - -

- - - diff --git a/docs/html/next.png b/docs/html/next.png deleted file mode 100644 index 1628652aac7cff4b24228abd9908c320c6026a7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmVQ2aP`rsfsL)H8>rF50IrEKQ7U2mrM!9=R9*Dw1X+@W9RTx^a-#5T6$bi^4|h!q3s vo9V3RdqZP$JTTh9!JZ)`voZLAB<&|;0_>J~#QNZkD16SAR=O4@7anKqmC5&ngT;#rH1+qK z20S~FlZynq-MY=T{~%>KNs884sExd44P^%bf!zNDPxW#x21^f><@$FgzM-=J5cLN5 WGDyh~oC>l40000 - - - - -Contents - - - - - - - - - - - - - - - - - - - - -
- -

-Contents -

- - - - -

- -

- -

-


- - - diff --git a/docs/html/node10.html b/docs/html/node10.html deleted file mode 100644 index ce622a01..00000000 --- a/docs/html/node10.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - -Descriptor data structure - - - - - - - - - - - - - - - - - - - - - -

- -
-Descriptor data structure -

-All the general matrix informations and elements to be -exchanged among processes are stored within a data structure of the -type descdatapsb_desc_type. -Every structure of this type is associated with a discretization -pattern and enables data communications and other operations that are -necessary for implementing the various algorithms of interest to us. - -

-The data structure itself psb_desc_type can be treated as an -opaque object handled via the tools routines of -Sec. 6 or the query routines detailed below; -nevertheless we include here a description for the curious -reader. - -

-First we describe the psb_indx_map type. This is a data -structure that keeps track of a certain number of basic issues such -as: - -

    -
  • The value of the communication/MPI context; -
  • -
  • The number of indices in the index space, i.e. global number of - rows and columns of a sparse matrix; -
  • -
  • The local set of indices, including: - -
      -
    • The number of local indices (and local rows); -
    • -
    • The number of halo indices (and therefore local columns); -
    • -
    • The global indices corresponding to the local ones. -
    • -
    -
  • -
-There are many different schemes for storing these data; therefore -there are a number of types extending the base one, and the descriptor -structure holds a polymorphic object whose dynamic type can be any of -the extended types. -The methods associated with this data type answer the following -queries: - -
    -
  • For a given set of local indices, find the corresponding indices - in the global numbering; -
  • -
  • For a given set of global indices, find the corresponding - indices in the local numbering, if any, or return an invalid -
  • -
  • Add a global index to the set of halo indices; -
  • -
  • Find the process owner of each member of a set of global - indices. -
  • -
-All methods but the last are purely local; the last method potentially -requires communication among processes, and thus is a synchronous -method. The choice of a specific dynamic type for the index map is -made at the time the descriptor is initially allocated, according to -the mode of initialization (see also 6). - -

-The descriptor contents are as follows: -

-
indxmap
-
A polymorphic variable of a type that is any - extension of the indx_map type described above. -
-
halo_index
-
A list of the halo and boundary elements for -the current process to be exchanged with other processes; for each -processes with which it is necessary to communicate: - -
    -
  1. Process identifier; -
  2. -
  3. Number of points to be received; -
  4. -
  5. Indices of points to be received; -
  6. -
  7. Number of points to be sent; -
  8. -
  9. Indices of points to be sent; -
  10. -
-Specified as: a vector of integer type, see 3.3. -
-
ext_index
-
A list of element indices to be exchanged to - implement the mapping between a base descriptor and a descriptor - with overlap. -
-Specified as: a vector of integer type, see 3.3. -
-
ovrlap_index
-
A list of the overlap elements for the -current process, organized in groups like the previous vector: - -
    -
  1. Process identifier; -
  2. -
  3. Number of points to be received; -
  4. -
  5. Indices of points to be received; -
  6. -
  7. Number of points to be sent; -
  8. -
  9. Indices of points to be sent; -
  10. -
-Specified as: a vector of integer type, see 3.3. -
-
ovr_mst_idx
-
A list to retrieve the value of each - overlap element from the respective master process. -
-Specified as: a vector of integer type, see 3.3. -
-
ovrlap_elem
-
For all overlap points belonging to th -ecurrent process: - -
    -
  1. Overlap point index; -
  2. -
  3. Number of processes sharing that overlap points; -
  4. -
  5. Index of a “master” process: -
  6. -
-Specified as: an allocatable integer array of rank two. -
-
bnd_elem
-
A list of all boundary points, i.e. points - that have a connection with other processes. -
-
-The Fortran 2003 declaration for psb_desc_type structures is -as follows: - -
- - - -
Figure 3: -The PSBLAS defined data type that - contains the communication descriptor.
-
- -
-
 
-type psb_desc_type 
-    class(psb_indx_map), allocatable :: indxmap
-    type(psb_i_vect_type) :: v_halo_index
-    type(psb_i_vect_type) :: v_ext_index
-    type(psb_i_vect_type) :: v_ovrlap_index
-    type(psb_i_vect_type) :: v_ovr_mst_idx 
-    integer, allocatable  :: ovrlap_elem(:,:)
-    integer, allocatable  :: bnd_elem(:)
-end type psb_desc_type
-
-
-
-
-A communication descriptor associated with a sparse matrix has a -state, which can take the following values: -
-
Build:
-
State entered after the first allocation, and before the - first assembly; in this state it is possible to add communication - requirements among different processes. -
-
Assembled:
-
State entered after the assembly; computations using - the associated sparse matrix, such as matrix-vector products, are - only possible in this state. -
-
- -

-


- -Subsections - - - - - - - - - diff --git a/docs/html/node100.html b/docs/html/node100.html deleted file mode 100644 index 1f5586b7..00000000 --- a/docs/html/node100.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - -psb_init -- Initializes PSBLAS parallel environment - - - - - - - - - - - - - - - - - - - - - -

-psb_init -- Initializes PSBLAS parallel - environment -

- -

-

-call psb_init(icontxt, np, basectxt, ids)
-
- -

-This subroutine initializes the PSBLAS parallel environment, defining -a virtual parallel machine. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
np
-
Number of processes in the PSBLAS virtual parallel machine. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value. Default: use all available processes. -
-
basectxt
-
the initial communication context. The new context - will be defined from the processes participating in the initial one. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value. Default: use MPI_COMM_WORLD. -
-
ids
-
Identities of the processes to use for the new context; the - argument is ignored when np is not specified. This allows the - processes in the new environment to be in an order different from the - original one. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer array. Default: use the indices $(0\dots np-1)$. -
-
- -

-

-
On Return
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. Note that this is always a duplicate of - basectxt, so that library communications are completely - separated from other communication operations. -
-Scope: global. -
-Type: required. -
-Intent: out. -
-Specified as: an integer variable. -
-
- -

-Notes - -

    -
  1. A call to this routine must precede any other PSBLAS call. -
  2. -
  3. It is an error to specify a value for $np$ greater than the - number of processes available in the underlying base parallel - environment. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node101.html b/docs/html/node101.html deleted file mode 100644 index 81e42059..00000000 --- a/docs/html/node101.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - -psb_info -- Return information about PSBLAS parallel environment - - - - - - - - - - - - - - - - - - - - - -

-psb_info -- Return information about PSBLAS parallel - environment -

- -

-

-call psb_info(icontxt, iam, np)
-
- -

-This subroutine returns information about the PSBLAS parallel environment, defining -a virtual parallel machine. -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
- -

-

-
On Return
-
-
-
iam
-
Identifier of current process in the PSBLAS virtual parallel machine. -
-Scope: local. -
-Type: required. -
-Intent: out. -
-Specified as: an integer value. -$-1 \le iam \le np-1$
-
np
-
Number of processes in the PSBLAS virtual parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: out. -
-Specified as: an integer variable.
-
- -

-Notes - -

    -
  1. For processes in the virtual parallel machine the identifier - will satisfy -$0 \le iam \le np-1$; -
  2. -
  3. If the user has requested on psb_init a number of - processes less than the total available in the parallel execution - environment, the remaining processes will have on return $iam=-1$; - the only call involving icontxt that any such process may - execute is to psb_exit. -
  4. -
- -

-


- - - diff --git a/docs/html/node102.html b/docs/html/node102.html deleted file mode 100644 index ef55917c..00000000 --- a/docs/html/node102.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - -psb_exit -- Exit from PSBLAS parallel environment - - - - - - - - - - - - - - - - - - - - - -

-psb_exit -- Exit from PSBLAS parallel - environment -

- -

-

-call psb_exit(icontxt)
-call psb_exit(icontxt,close)
-
- -

-This subroutine exits from the PSBLAS parallel virtual machine. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
close
-
Whether to close all data structures related to the - virtual parallel machine, besides those associated with icontxt. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: a logical variable, default value: true. -
-
- -

-Notes - -

    -
  1. This routine may be called even if a previous call to - psb_info has returned with $iam=-1$; indeed, it it is the only - routine that may be called with argument icontxt in this - situation. -
  2. -
  3. A call to this routine with close=.true. implies a call - to MPI_Finalize, after which no parallel routine may be called. -
  4. -
  5. If the user whishes to use multiple communication contexts in the - same program, or to enter and exit multiple times into the parallel - environment, this routine may be called to - selectively close the contexts with close=.false., while on - the last call it should be called with close=.true. to - shutdown in a clean way the entire parallel environment. -
  6. -
- -

- -

- - - - diff --git a/docs/html/node103.html b/docs/html/node103.html deleted file mode 100644 index 86979e32..00000000 --- a/docs/html/node103.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -psb_get_mpicomm -- Get the MPI communicator - - - - - - - - - - - - - - - - - - - - - -

-psb_get_mpicomm -- Get the MPI communicator -

- -

-

-call psb_get_mpicomm(icontxt, icomm)
-
- -

-This subroutine returns the MPI communicator associated with a PSBLAS context -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
- -

-

-
On Return
-
-
-
icomm
-
The MPI communicator associated with the PSBLAS virtual parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: out. -
-
- -

-


- - - diff --git a/docs/html/node104.html b/docs/html/node104.html deleted file mode 100644 index 2c8cd368..00000000 --- a/docs/html/node104.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -psb_get_rank -- Get the MPI rank - - - - - - - - - - - - - - - - - - - - - -

-psb_get_rank -- Get the MPI rank -

- -

-

-call psb_get_rank(rank, icontxt, id)
-
- -

-This subroutine returns the MPI rank of the PSBLAS process $id$ -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
id
-
Identifier of a process in the PSBLAS virtual parallel machine. -
-Scope: local. -
-Type: required. -
-Intent: in. -
-Specified as: an integer value. -$0 \le id \le np-1$
-
- -

-

-
On Return
-
-
-
rank
-
The MPI rank associated with the PSBLAS process $id$. -
-Scope: local. -
-Type: required. -
-Intent: out. -
-
- -

-


- - - diff --git a/docs/html/node105.html b/docs/html/node105.html deleted file mode 100644 index a93ed542..00000000 --- a/docs/html/node105.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - -psb_wtime -- Wall clock timing - - - - - - - - - - - - - - - - - - - - - -

-psb_wtime -- Wall clock timing -

- -

-

-time = psb_wtime()
-
- -

-This function returns a wall clock timer. The resolution of the timer -is dependent on the underlying parallel environment implementation. -

-
Type:
-
Asynchronous. -
-
On Exit
-
-
-
Function value
-
the elapsed time in seconds. -
-Returned as: a real(psb_dpk_) variable. -
-
- -

-


- - - diff --git a/docs/html/node106.html b/docs/html/node106.html deleted file mode 100644 index 74bd3f51..00000000 --- a/docs/html/node106.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -psb_barrier -- Sinchronization point parallel environment - - - - - - - - - - - - - - - - - - - - - -

-psb_barrier -- Sinchronization point parallel - environment -

- -

-

-call psb_barrier(icontxt)
-
- -

-This subroutine acts as an explicit synchronization point for the PSBLAS -parallel virtual machine. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
- -

-


- - - diff --git a/docs/html/node107.html b/docs/html/node107.html deleted file mode 100644 index 0f37acf3..00000000 --- a/docs/html/node107.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - -psb_abort -- Abort a computation - - - - - - - - - - - - - - - - - - - - - -

-psb_abort -- Abort a computation -

- -

-

-call psb_abort(icontxt)
-
- -

-This subroutine aborts computation on the parallel virtual machine. -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
- -

-


- - - diff --git a/docs/html/node108.html b/docs/html/node108.html deleted file mode 100644 index cada5b11..00000000 --- a/docs/html/node108.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - -psb_bcast -- Broadcast data - - - - - - - - - - - - - - - - - - - - - -

-psb_bcast -- Broadcast data -

- -

-

-call psb_bcast(icontxt, dat, root)
-
- -

-This subroutine implements a broadcast operation based on the -underlying communication library. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
On the root process, the data to be broadcast. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array, or a character or logical variable, -which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Root process holding data to be broadcast. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$0<= root <= np-1$, default 0
-
- -

-

-
On Return
-
-
-
dat
-
On processes other than root, the data to be broadcast. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind, rank and size must agree on all processes. -
-
- -

-


- - - diff --git a/docs/html/node109.html b/docs/html/node109.html deleted file mode 100644 index c023b27a..00000000 --- a/docs/html/node109.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - -psb_sum -- Global sum - - - - - - - - - - - - - - - - - - - - - -

-psb_sum -- Global sum -

- -

-

-call psb_sum(icontxt, dat, root)
-
- -

-This subroutine implements a sum reduction operation based on the -underlying communication library. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
The local contribution to the global sum. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Process to hold the final sum, or $-1$ to make it available - on all processes. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$-1<= root <= np-1$, default -1.
-
- -

-

-
On Return
-
-
-
dat
-
On destination process(es), the result of the sum operation. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. -
-Type, kind, rank and size must agree on all processes. -
-
- -

-Notes - -

    -
  1. The dat argument is both input and output, and its - value may be changed even on processes different from the final - result destination. -
  2. -
  3. The dat argument may also be a long integer scalar. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node11.html b/docs/html/node11.html deleted file mode 100644 index c3adba33..00000000 --- a/docs/html/node11.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Descriptor Methods - - - - - - - - - - - - - - - - - - - - - -

-Descriptor Methods -

- -

-


- - - diff --git a/docs/html/node110.html b/docs/html/node110.html deleted file mode 100644 index 06883b02..00000000 --- a/docs/html/node110.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - -psb_max -- Global maximum - - - - - - - - - - - - - - - - - - - - - -

-psb_max -- Global maximum -

- -

-

-call psb_max(icontxt, dat, root)
-
- -

-This subroutine implements a maximum valuereduction -operation based on the underlying communication library. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
The local contribution to the global maximum. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer or real variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Process to hold the final maximum, or $-1$ to make it available - on all processes. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$-1<= root <= np-1$, default -1. -
-
- -

-

-
On Return
-
-
-
dat
-
On destination process(es), the result of the maximum operation. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer or real variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
- -

-Notes - -

    -
  1. The dat argument is both input and output, and its - value may be changed even on processes different from the final - result destination. -
  2. -
  3. The dat argument may also be a long integer scalar. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node111.html b/docs/html/node111.html deleted file mode 100644 index 76e40bd5..00000000 --- a/docs/html/node111.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - -psb_min -- Global minimum - - - - - - - - - - - - - - - - - - - - - -

-psb_min -- Global minimum -

- -

-

-call psb_min(icontxt, dat, root)
-
- -

-This subroutine implements a minimum value reduction -operation based on the underlying communication library. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
The local contribution to the global minimum. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer or real variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Process to hold the final value, or $-1$ to make it available - on all processes. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$-1<= root <= np-1$, default -1. -
-
- -

-

-
On Return
-
-
-
dat
-
On destination process(es), the result of the minimum operation. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer or real variable, which may be a -scalar, or a rank 1 or 2 array. -
-Type, kind, rank and size must agree on all processes. -
-
- -

-Notes - -

    -
  1. The dat argument is both input and output, and its - value may be changed even on processes different from the final - result destination. -
  2. -
  3. The dat argument may also be a long integer scalar. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node112.html b/docs/html/node112.html deleted file mode 100644 index 36e57ef8..00000000 --- a/docs/html/node112.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - -psb_amx -- Global maximum absolute value - - - - - - - - - - - - - - - - - - - - - -

-psb_amx -- Global maximum absolute value -

- -

-

-call psb_amx(icontxt, dat, root)
-
- -

-This subroutine implements a maximum absolute value reduction -operation based on the underlying communication library. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
The local contribution to the global maximum. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Process to hold the final value, or $-1$ to make it available - on all processes. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$-1<= root <= np-1$, default -1. -
-
- -

-

-
On Return
-
-
-
dat
-
On destination process(es), the result of the maximum operation. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
- -

-Notes - -

    -
  1. The dat argument is both input and output, and its - value may be changed even on processes different from the final - result destination. -
  2. -
  3. The dat argument may also be a long integer scalar. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node113.html b/docs/html/node113.html deleted file mode 100644 index 587b7431..00000000 --- a/docs/html/node113.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - -psb_amn -- Global minimum absolute value - - - - - - - - - - - - - - - - - - - - - -

-psb_amn -- Global minimum absolute value -

- -

-

-call psb_amn(icontxt, dat, root)
-
- -

-This subroutine implements a minimum absolute value reduction -operation based on the underlying communication library. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
The local contribution to the global minimum. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Process to hold the final value, or $-1$ to make it available - on all processes. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$-1<= root <= np-1$, default -1. -
-
- -

-

-
On Return
-
-
-
dat
-
On destination process(es), the result of the minimum operation. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. -
-Type, kind, rank and size must agree on all processes. -
-
- -

-Notes - -

    -
  1. The dat argument is both input and output, and its - value may be changed even on processes different from the final - result destination. -
  2. -
  3. The dat argument may also be a long integer scalar. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node114.html b/docs/html/node114.html deleted file mode 100644 index 0f1bd184..00000000 --- a/docs/html/node114.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - -psb_nrm2 -- Global 2-norm reduction - - - - - - - - - - - - - - - - - - - - - -

-psb_nrm2 -- Global 2-norm reduction -

- -

-

-call psb_nrm2(icontxt, dat, root)
-
- -

-This subroutine implements a 2-norm value reduction -operation based on the underlying communication library. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
The local contribution to the global minimum. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: a real variable, which may be a -scalar, or a rank 1 array. Kind, rank and size must agree on all processes. -
-
root
-
Process to hold the final value, or $-1$ to make it available - on all processes. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$-1<= root <= np-1$, default -1. -
-
- -

-

-
On Return
-
-
-
dat
-
On destination process(es), the result of the 2-norm reduction. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: a real variable, which may be a -scalar, or a rank 1 array. -
-Kind, rank and size must agree on all processes. -
-
- -

-Notes - -

    -
  1. This reduction is appropriate to compute the results of multiple - (local) NRM2 operations at the same time. -
  2. -
  3. Denoting by $dat_i$ the value of the variable $dat$ on process - $i$, the output $res$ is equivalent to the computation of -

    -
    - - -\begin{displaymath}res = \sqrt{\sum_i dat_i^2},\end{displaymath} -
    -
    -

    -with care taken to avoid unnecessary overflow. -
  4. -
  5. The dat argument is both input and output, and its - value may be changed even on processes different from the final - result destination. -
  6. -
- -

- -

- - - - diff --git a/docs/html/node115.html b/docs/html/node115.html deleted file mode 100644 index 2da350d6..00000000 --- a/docs/html/node115.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - -psb_snd -- Send data - - - - - - - - - - - - - - - - - - - - - -

-psb_snd -- Send data -

- -

-

-call psb_snd(icontxt, dat, dst, m)
-
- -

-This subroutine sends a packet of data to a destination. -

-
Type:
-
Synchronous: see usage notes. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
The data to be sent. -
-Scope: local. -
-Type: required. -
-Intent: in. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if $m$ is -not specified, size must agree as well. -
-
dst
-
Destination process. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer value -$0<= dst <= np-1$. -
-
m
-
Number of rows. -
-Scope: global. -
-Type: Optional. -
-Intent: in. -
-Specified as: an integer value -$0<= m <= size(dat,1)$. -
-When $dat$ is a rank 2 array, specifies the number of rows to be sent -independently of the leading dimension $size(dat,1)$; must have the -same value on sending and receiving processes. -
-
- -

-

-
On Return
-
-
-
- -

-Notes - -

    -
  1. This subroutine implies a synchronization, but only between the - calling process and the destination process $dst$. -
  2. -
- -

- -

- - - - diff --git a/docs/html/node116.html b/docs/html/node116.html deleted file mode 100644 index 6f0eaa1e..00000000 --- a/docs/html/node116.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - -psb_rcv -- Receive data - - - - - - - - - - - - - - - - - - - - -

-psb_rcv -- Receive data -

- -

-

-call psb_rcv(icontxt, dat, src, m)
-
- -

-This subroutine receives a packet of data to a destination. -

-
Type:
-
Synchronous: see usage notes. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
src
-
Source process. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer value -$0<= src <= np-1$. -
-
m
-
Number of rows. -
-Scope: global. -
-Type: Optional. -
-Intent: in. -
-Specified as: an integer value -$0<= m <= size(dat,1)$. -
-When $dat$ is a rank 2 array, specifies the number of rows to be sent -independently of the leading dimension $size(dat,1)$; must have the -same value on sending and receiving processes. -
-
- -

-

-
On Return
-
-
-
dat
-
The data to be received. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if $m$ is -not specified, size must agree as well. -
-
- -

-Notes - -

    -
  1. This subroutine implies a synchronization, but only between the - calling process and the source process $src$. -
  2. -
- -

- -

- - - - diff --git a/docs/html/node117.html b/docs/html/node117.html deleted file mode 100644 index 3f350078..00000000 --- a/docs/html/node117.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - -Error handling - - - - - - - - - - - - - - - - - - - - - -

-Error handling -

- -

-The PSBLAS library error handling policy has been completely rewritten -in version 2.0. The idea behind the design of this new error handling -strategy is to keep error messages on a stack allowing the user to -trace back up to the point where the first error message has been -generated. Every routine in the PSBLAS-2.0 library has, as last -non-optional argument, an integer info variable; whenever, -inside the routine, an error is detected, this variable is set to a -value corresponding to a specific error code. Then this error code is -also pushed on the error stack and then either control is returned to -the caller routine or the execution is aborted, depending on the users -choice. At the time when the execution is aborted, an error message is -printed on standard output with a level of verbosity than can be -chosen by the user. If the execution is not aborted, then, the caller -routine checks the value returned in the info variable and, if -not zero, an error condition is raised. This process continues on all the -levels of nested calls until the level where the user decides to abort -the program execution. - -

-Figure 9 shows the layout of a generic psb_foo -routine with respect to the PSBLAS-2.0 error handling policy. It is -possible to see how, whenever an error condition is detected, the -info variable is set to the corresponding error code which is, -then, pushed on top of the stack by means of the -psb_errpush. An error condition may be directly detected inside -a routine or indirectly checking the error code returned returned by a -called routine. Whenever an error is encountered, after it has been -pushed on stack, the program execution skips to a point where the -error condition is handled; the error condition is handled either by -returning control to the caller routine or by calling the -psb\_error routine which prints the content of the error stack -and aborts the program execution, according to the choice made by the -user with psb_set_erraction. The default is to print the error -and terminate the program, but the user may choose to handle the error -explicitly. - -

- -

- - - -
Figure 9: -The layout of a generic psb_foo - routine with respect to PSBLAS-2.0 error handling policy.
-
- -
- -\fbox{\TheSbox} -
-
- -

-Figure 10 reports a sample error message generated by -the PSBLAS-2.0 library. This error has been generated by the fact that -the user has chosen the invalid “FOO” storage format to represent -the sparse matrix. From this error message it is possible to see that -the error has been detected inside the psb_cest subroutine -called by psb_spasb ... by process 0 (i.e. the root process). - -

- -

- - - -
Figure 10: -A sample PSBLAS-2.0 error - message. Process 0 detected an error condition inside the psb_cest subroutine
-
- -
- -\fbox{\TheSbox} -
-
- -

-ifstarsubroutinesubroutinepsb_errpushPushes an error code onto the error - stack - -

-
-\begin{lstlisting}
-call psb_errpush(err_c, r_name, i_err, a_err)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
err_c
-
the error code -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an integer. -
-
r_name
-
the soutine where the error has been caught. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a string. -
-
i_err
-
addional info for error code -
-Scope: local -
-Type: optional -
-Specified as: an integer array -
-
a_err
-
addional info for error code -
-Scope: local -
-Type: optional -
-Specified as: a string. -
-
- -

-ifstarsubroutinesubroutinepsb_errorPrints the error stack content and aborts - execution - -

-
-\begin{lstlisting}
-call psb_error(icontxt)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context. -
-Scope: global -
-Type: optional -
-Intent: in. -
-Specified as: an integer. -
-
- -

-ifstarsubroutinesubroutinepsb_set_errverbositySets the verbosity of error - messages. - -

-
-\begin{lstlisting}
-call psb_set_errverbosity(v)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
v
-
the verbosity level -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: an integer. -
-
- -

-ifstarsubroutinesubroutinepsb_set_erractionSet the type of action to be - taken upon error condition. - -

-
-\begin{lstlisting}
-call psb_set_erraction(err_act)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
err_act
-
the type of action. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: an integer. Possible values: psb_act_ret, -psb_act_abort. -
-
- -

- -

- - - - diff --git a/docs/html/node118.html b/docs/html/node118.html deleted file mode 100644 index 9e19b009..00000000 --- a/docs/html/node118.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -Utilities - - - - - - - - - - - - - - - - - - - - - -

- -
-Utilities -

- -

-We have some utilities available for input and output of -sparse matrices; the interfaces to these routines are available in the -module psb_util_mod. - -

-


- -Subsections - - - -

- - - diff --git a/docs/html/node119.html b/docs/html/node119.html deleted file mode 100644 index 31f1fbaf..00000000 --- a/docs/html/node119.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - -hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format - - - - - - - - - - - - - - - - - - - - - -

- hb_read -- Read a sparse matrix from a file in the - Harwell-Boeing format -

- -

-
-\begin{lstlisting}
-call hb_read(a, iret, iunit, filename, b, mtitle)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
filename
-
The name of the file to be read. -
-Type:optional. -
-Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input -in Unix jargon) is used. Default: -. -
-
iunit
-
The Fortran file unit number. -
-Type:optional. -
-Specified as: an integer value. Only meaningful if filename is not -. -
-
- -

-

-
On Return
-
-
-
a
-
the sparse matrix read from file. -
-Type:required. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
b
-
Rigth hand side(s). -
-Type: Optional -
-An array of type real or complex, rank 2 and having the ALLOCATABLE -attribute; will be allocated and filled in if the input file contains -a right hand side, otherwise will be left in the UNALLOCATED state. -
-
mtitle
-
Matrix title. -
-Type: Optional -
-A charachter variable of length 72 holding a copy of the -matrix title as specified by the Harwell-Boeing format and contained -in the input file. -
-
iret
-
Error code. -
-Type: required -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node12.html b/docs/html/node12.html deleted file mode 100644 index 165f326d..00000000 --- a/docs/html/node12.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -get_local_rows -- Get number of local rows - - - - - - - - - - - - - - - - - - - - - -

-get_local_rows -- Get number of local rows -

- -

-

-nr = desc%get_local_rows()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
Function value
-
The number of local rows, i.e. the number of - rows owned by the current process; as explained in 1, - it is equal to -$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$. The returned value is - specific to the calling process. -
-
- -

-


- - - diff --git a/docs/html/node120.html b/docs/html/node120.html deleted file mode 100644 index 11e1a5b6..00000000 --- a/docs/html/node120.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - -hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format - - - - - - - - - - - - - - - - - - - - - -

-hb_write -- Write a sparse matrix to a file - in the Harwell-Boeing format -

- -

-
-\begin{lstlisting}
-call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix to be written. -
-Type:required. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
b
-
Rigth hand side. -
-Type: Optional -
-An array of type real or complex, rank 1 and having the ALLOCATABLE -attribute; will be allocated and filled in if the input file contains -a right hand side. -
-
filename
-
The name of the file to be written to. -
-Type:optional. -
-Specified as: a character variable containing a valid file name, or --, in which case the default output unit 6 (i.e. standard output -in Unix jargon) is used. Default: -. -
-
iunit
-
The Fortran file unit number. -
-Type:optional. -
-Specified as: an integer value. Only meaningful if filename is not -. -
-
key
-
Matrix key. -
-Type: Optional -
-A charachter variable of length 8 holding the -matrix key as specified by the Harwell-Boeing format and to be -written to file. -
-
mtitle
-
Matrix title. -
-Type: Optional -
-A charachter variable of length 72 holding the -matrix title as specified by the Harwell-Boeing format and to be -written to file. -
-
- -

-

-
On Return
-
-
-
iret
-
Error code. -
-Type: required -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node121.html b/docs/html/node121.html deleted file mode 100644 index 2854dbbe..00000000 --- a/docs/html/node121.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - -mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format - - - - - - - - - - - - - - - - - - - - - -

-mm_mat_read -- Read a sparse matrix from a - file in the MatrixMarket format -

- -

-
-\begin{lstlisting}
-call mm_mat_read(a, iret, iunit, filename)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
filename
-
The name of the file to be read. -
-Type:optional. -
-Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input -in Unix jargon) is used. Default: -. -
-
iunit
-
The Fortran file unit number. -
-Type:optional. -
-Specified as: an integer value. Only meaningful if filename is not -. -
-
- -

-

-
On Return
-
-
-
a
-
the sparse matrix read from file. -
-Type:required. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
iret
-
Error code. -
-Type: required -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node122.html b/docs/html/node122.html deleted file mode 100644 index 5a57cd34..00000000 --- a/docs/html/node122.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - -mm_array_read -- Read a dense array from a file in the MatrixMarket format - - - - - - - - - - - - - - - - - - - - - -

-mm_array_read -- Read a dense array from a - file in the MatrixMarket format -

- -

-
-\begin{lstlisting}
-call mm_array_read(b, iret, iunit, filename)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
filename
-
The name of the file to be read. -
-Type:optional. -
-Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input -in Unix jargon) is used. Default: -. -
-
iunit
-
The Fortran file unit number. -
-Type:optional. -
-Specified as: an integer value. Only meaningful if filename is not -. -
-
- -

-

-
On Return
-
-
-
b
-
Rigth hand side(s). -
-Type: required -
-An array of type real or complex, rank 1 or 2 and having the ALLOCATABLE -attribute; will be allocated and filled in if the input file contains -a right hand side, otherwise will be left in the UNALLOCATED state. -
-
iret
-
Error code. -
-Type: required -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node123.html b/docs/html/node123.html deleted file mode 100644 index 4dd5f34e..00000000 --- a/docs/html/node123.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - -mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format - - - - - - - - - - - - - - - - - - - - - -

-mm_mat_write -- Write a sparse matrix to a - file in the MatrixMarket format -

- -

-
-\begin{lstlisting}
-call mm_mat_write(a, mtitle, iret, iunit, filename)
-\end{lstlisting} -
-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix to be written. -
-Type:required. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
mtitle
-
Matrix title. -
-Type: required -
-A charachter variable holding a descriptive title for the matrix to be - written to file. -
-
filename
-
The name of the file to be written to. -
-Type:optional. -
-Specified as: a character variable containing a valid file name, or --, in which case the default output unit 6 (i.e. standard output -in Unix jargon) is used. Default: -. -
-
iunit
-
The Fortran file unit number. -
-Type:optional. -
-Specified as: an integer value. Only meaningful if filename is not -. -
-
- -

-

-
On Return
-
-
-
iret
-
Error code. -
-Type: required -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node124.html b/docs/html/node124.html deleted file mode 100644 index e7e3f85f..00000000 --- a/docs/html/node124.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -mm_array_write -- Write a dense array from a file in the MatrixMarket format - - - - - - - - - - - - - - - - - - - - -

-mm_array_write -- Write a dense array from a - file in the MatrixMarket format -

- -

-
-\begin{lstlisting}
-call mm_array_write(b, iret, iunit, filename)
-\end{lstlisting} -
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
b
-
Rigth hand side(s). -
-Type: required -
-An array of type real or complex, rank 1 or 2; will be written..
-
filename
-
The name of the file to be written. -
-Type:optional. -
-Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input -in Unix jargon) is used. Default: -. -
-
iunit
-
The Fortran file unit number. -
-Type:optional. -
-Specified as: an integer value. Only meaningful if filename is not -. -
-
- -

-

-
On Return
-
-
-
iret
-
Error code. -
-Type: required -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node125.html b/docs/html/node125.html deleted file mode 100644 index 0b67b710..00000000 --- a/docs/html/node125.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -Preconditioner routines - - - - - - - - - - - - - - - - - - - - - -

- -
-Preconditioner routines -

- -

-The base PSBLAS library contains the implementation of two simple -preconditioning techniques: - -

    -
  • Diagonal Scaling -
  • -
  • Block Jacobi with ILU(0) factorization -
  • -
-The supporting data type and subroutine interfaces are defined in the -module psb_prec_mod. -The old interfaces psb_precinit and psb_precbld are still supported for -backward compatibility - -

-


- -Subsections - - - -

- - - diff --git a/docs/html/node126.html b/docs/html/node126.html deleted file mode 100644 index aa0d47e7..00000000 --- a/docs/html/node126.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - -init -- Initialize a preconditioner - - - - - - - - - - - - - - - - - - - - - -

-init -- Initialize a preconditioner -

- -

-

-call prec%init(icontxt,ptype, info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context. -
-Scope:global. -
-Type:required. -
-Intent: in. -
-Specified as: an integer value. -
-
ptype
-
the type of preconditioner. -Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a character string, see usage notes. -
-
On Exit
-

-

-
prec
-
Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a preconditioner data structure precdatapsb_prec_type. -
-
info
-
Scope: global -
-Type: required -
-Intent: out. -
-Error code: if no error, 0 is returned. -
-
-Notes -Legal inputs to this subroutine are interpreted depending on the -$ptype$ string as follows4: -
-
NONE
-
No preconditioning, i.e. the preconditioner is just a copy - operator. -
-
DIAG
-
Diagonal scaling; each entry of the input vector is - multiplied by the reciprocal of the sum of the absolute values of - the coefficients in the corresponding row of matrix $A$; -
-
BJAC
-
Precondition by a factorization of the - block-diagonal of matrix $A$, where block boundaries are determined - by the data allocation boundaries for each process; requires no - communication. Only the incomplete factorization $ILU(0)$ is - currently implemented. -
-
- -

-


- - - diff --git a/docs/html/node127.html b/docs/html/node127.html deleted file mode 100644 index e6a55901..00000000 --- a/docs/html/node127.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - -build -- Builds a preconditioner - - - - - - - - - - - - - - - - - - - - - -

-build -- Builds a preconditioner -

- -

-

-call prec%build(a, desc_a, info[,amold,vmold,imold])
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
a
-
the system sparse matrix. -Scope: local -
-Type: required -
-Intent: in, target. -
-Specified as: a sparse matrix data structure spdatapsb_Tspmat_type. -
-
prec
-
the preconditioner. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: an already initialized precondtioner data structure precdatapsb_prec_type -
-
desc_a
-
the problem communication descriptor. -Scope: local -
-Type: required -
-Intent: in, target. -
-Specified as: a communication descriptor data structure descdatapsb_desc_type. -
-
amold
-
The desired dynamic type for the internal matrix storage. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. -
-
vmold
-
The desired dynamic type for the internal vector storage. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type. -
-
imold
-
The desired dynamic type for the internal integer vector storage. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: an object of a class derived from (integer) vbasedatapsb_T_base_vect_type. -
-
- -

-

-
On Return
-
-
-
prec
-
the preconditioner. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a precondtioner data structure precdatapsb_prec_type -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
-The amold, vmold and imold arguments may be -employed to interface with special devices, such as GPUs and other -accelerators. - -

- -

- - - - diff --git a/docs/html/node128.html b/docs/html/node128.html deleted file mode 100644 index d6071c08..00000000 --- a/docs/html/node128.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - -apply -- Preconditioner application routine - - - - - - - - - - - - - - - - - - - - - -

-apply -- Preconditioner application - routine -

- -

-

-call prec%apply(x,y,desc_a,info,trans,work)
-call prec%apply(x,desc_a,info,trans)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
prec
-
the preconditioner. -Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a preconditioner data structure precdatapsb_prec_type. -
-
x
-
the source vector. -Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
-
desc_a
-
the problem communication descriptor. -Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a communication data structure descdatapsb_desc_type. -
-
trans
-
Scope: -
-Type: optional -
-Intent: in. -
-Specified as: a character. -
-
work
-
an optional work space -Scope: local -
-Type: optional -
-Intent: inout. -
-Specified as: a double precision array. -
-
- -

-

-
On Return
-
-
-
y
-
the destination vector. -Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node129.html b/docs/html/node129.html deleted file mode 100644 index de6f38ea..00000000 --- a/docs/html/node129.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - -descr -- Prints a description of current preconditioner - - - - - - - - - - - - - - - - - - - - - -

-descr -- Prints a description of current - preconditioner -

- -

-

-call prec%descr()
-call prec%descr(iout, root)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
prec
-
the preconditioner. -Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a preconditioner data structure precdatapsb_prec_type. -
-
iout
-
output unit. -Scope: local -
-Type: optional -
-Intent: in. -
-Specified as: an integer number. Default: default output unit. -
-
root
-
Process from which to print -Scope: local -
-Type: optional -
-Intent: in. -
-Specified as: an integer number between 0 and $np-1$, in which case -the specified process will print the description, or $-1$, in which case -all processes will print. Default: 0. -
-
- -

-


- - - diff --git a/docs/html/node13.html b/docs/html/node13.html deleted file mode 100644 index 0fdc4242..00000000 --- a/docs/html/node13.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - -get_local_cols -- Get number of local cols - - - - - - - - - - - - - - - - - - - - - -

-get_local_cols -- Get number of local cols -

- -

-

-nc = desc%get_local_cols()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
Function value
-
The number of local cols, i.e. the number of - indices used by the current process, including both local and halo - indices; as explained in 1, - it is equal to -$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$. The - returned value is specific to the calling process. -
-
- -

-


- - - diff --git a/docs/html/node130.html b/docs/html/node130.html deleted file mode 100644 index 8cad168c..00000000 --- a/docs/html/node130.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -clone -- clone current preconditioner - - - - - - - - - - - - - - - - - - - - - -

-clone -- clone current - preconditioner -

- -
-call  prec%clone(precout,info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
prec
-
the preconditioner. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
precout
-
A copy of the input object. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node131.html b/docs/html/node131.html deleted file mode 100644 index 2c00d6de..00000000 --- a/docs/html/node131.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - -free -- Free a preconditioner - - - - - - - - - - - - - - - - - - - - -

-free -- Free a preconditioner -

- -

-

-call prec%free(info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
prec
-
the preconditioner. -
-Scope: local. -
-Type: required -
-Intent: inout. -
-Specified as: a preconditioner data structure precdatapsb_prec_type. -
-
On Exit
-

-

-
prec
-
Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a preconditioner data structure precdatapsb_prec_type. -
-
info
-
Scope: global -
-Type: required -
-Intent: out. -
-Error code: if no error, 0 is returned. -
-
-Notes -Releases all internal storage. - -

-


- - - diff --git a/docs/html/node132.html b/docs/html/node132.html deleted file mode 100644 index 9c42bbe2..00000000 --- a/docs/html/node132.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - -Iterative Methods - - - - - - - - - - - - - - - - - - - - - -

- -
-Iterative Methods -

- -

-In this chapter we provide routines for preconditioners and iterative -methods. The interfaces for Krylov subspace methods are available in -the module psb_krylov_mod. - -

-


- -Subsections - - - -

- - - diff --git a/docs/html/node133.html b/docs/html/node133.html deleted file mode 100644 index ba43c36f..00000000 --- a/docs/html/node133.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - - -psb_krylov -- Krylov Methods Driver Routine - - - - - - - - - - - - - - - - - - - - -

-
-psb_krylov -- Krylov Methods Driver - Routine -

- -

-This subroutine is a driver that provides a general interface for all -the Krylov-Subspace family methods implemented in PSBLAS version 2. - -

-The stopping criterion can take the following values: -

-
1
-
normwise backward error in the infinity -norm; the iteration is stopped when -

-
- - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} < eps \end{displaymath} -
-
-

-
-
2
-
Relative residual in the 2-norm; the iteration is stopped -when -

-
- - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} < eps \end{displaymath} -
-
-

-
-
3
-
Relative residual reduction in the 2-norm; the iteration is stopped -when -

-
- - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert r_0\Vert _2} < eps \end{displaymath} -
-
-

-
-
-The behaviour is controlled by the istop argument (see -later). In the above formulae, $x_i$ is the tentative solution and -$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration. - -

-
-\begin{lstlisting}
-call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
-& itmax,iter,err,itrace,irst,istop,cond)
-\end{lstlisting} -
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
method
-
a string that defines the iterative method to be - used. Supported values are: -
-
CG:
-
the Conjugate Gradient method; - -
-
CGS:
-
the Conjugate Gradient Stabilized method; - -

-

-
GCR:
-
the Generalized Conjugate Residual method; - -
-
FCG:
-
the Flexible Conjugate Gradient method5; - -

-

-
BICG:
-
the Bi-Conjugate Gradient method; - -
-
BICGSTAB:
-
the Bi-Conjugate Gradient Stabilized method; - -
-
BICGSTABL:
-
the Bi-Conjugate Gradient Stabilized method with restarting; - -
-
RGMRES:
-
the Generalized Minimal Residual method with restarting. - -
-
-
-
a
-
the local portion of global sparse matrix -$A$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
prec
-
The data structure containing the preconditioner. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type precdatapsb_prec_type. -
-
b
-
The RHS vector. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
-
x
-
The initial guess. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
-
eps
-
The stopping tolerance. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a real number. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
itmax
-
The maximum number of iterations to perform. -
-Scope: global -
-Type: optional -
-Intent: in. -
-Default: $itmax = 1000$. -
-Specified as: an integer variable $itmax \ge 1$. -
-
itrace
-
If $>0$ print out an informational message about - convergence every $itrace$ iterations. If $=0$ print a message in - case of convergence failure. -
-Scope: global -
-Type: optional -
-Intent: in. -
-Default: $itrace = -1$. -
-
irst
-
An integer specifying the restart parameter. -
-Scope: global -
-Type: optional. -
-Intent: in. -
-Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES -methods, otherwise it is ignored. - -

-

-
istop
-
An integer specifying the stopping criterion. -
-Scope: global -
-Type: optional. -
-Intent: in. -
-Values: 1: use the normwise backward error, 2: use the scaled 2-norm -of the residual, 3: use the residual reduction in the 2-norm. Default: 2. -
-
On Return
-
-
-
x
-
The computed solution. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
-
iter
-
The number of iterations performed. -
-Scope: global -
-Type: optional -
-Intent: out. -
-Returned as: an integer variable. -
-
err
-
The convergence estimate on exit. -
-Scope: global -
-Type: optional -
-Intent: out. -
-Returned as: a real number. -
-
cond
-
An estimate of the condition number of matrix $A$; only - available with the $CG$ method on real data. -
-Scope: global -
-Type: optional -
-Intent: out. -
-Returned as: a real number. A correct result will be greater than or -equal to one; if specified for non-real data, or an error occurred, -zero is returned. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- -

- -

- -

- - - - diff --git a/docs/html/node134.html b/docs/html/node134.html deleted file mode 100644 index fa6197a5..00000000 --- a/docs/html/node134.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - -Bibliography - - - - - - - - - - - - - - - - - - - - - -

-Bibliography -

1 -
- D. Barbieri, V. Cardellini, S. Filippone and D. Rouson -Design Patterns for Scientific Computations on Sparse Matrices, - HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011 - -

-

2 -
-G. Bella, S. Filippone, A. De Maio and M. Testa, -A Simulation Model for Forest Fires, -in J. Dongarra, K. Madsen, J. Wasniewski, editors, -Proceedings of PARA 04 Workshop on State of the Art -in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science, -Springer, 2005. -

3 -
A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
-2LEV-D2P4: a package of high-performance preconditioners,
-Applicable Algebra in Engineering, Communications and Computing, -Volume 18, Number 3, May, 2007, pp. 223-239 -

4 -
P. D'Ambra, S. Filippone, D. Di Serafino
-On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners -
-Applied Numerical Mathematics, Elsevier Science, -Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196. - -

-

5 -
- Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., -An Extended Set of Fortran Basic Linear Algebra Subprograms, -ACM Trans. Math. Softw. vol. 14, 1-17, 1988. -

6 -
- Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., -A Set of level 3 Basic Linear Algebra Subprograms, -ACM Trans. Math. Softw. vol. 16, 1-17, 1990. -

7 -
-J. J. Dongarra and R. C. Whaley, -A User's Guide to the BLACS v. 1.1, -Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of -Tennessee, March 1995 (updated May 1997). -

8 -
-I. Duff, M. Marrone, G. Radicati and C. Vittoli, -Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: -a User Level Interface, -ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997. -

9 -
-I. Duff, M. Heroux and R. Pozo, -An Overview of the Sparse Basic Linear -Algebra Subprograms: the New Standard from the BLAS Technical Forum, -ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002. -

10 -
-S. Filippone and M. Colajanni, -PSBLAS: A Library for Parallel Linear Algebra -Computation on Sparse Matrices, -
-ACM Transactions on Mathematical Software, 26(4), pp. 527-550, 2000. -

11 -
-S. Filippone and A. Buttari, -Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003, -
-ACM Transactions on Mathematical Software, 38(4), 2012. -

12 -
-S. Filippone, P. D'Ambra, M. Colajanni, -Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics -Applications Code on Linux Clusters, -in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, -Parallel Computing - Advances & Current Issues, -pp. 441-448, Imperial College Press, 2002. -

13 -
- Gamma, E., Helm, R., Johnson, R., and Vlissides, - J. 1995. - Design Patterns: Elements of Reusable Object-Oriented Software. - Addison-Wesley. - -

-

14 -
-Karypis, G. and Kumar, V., -METIS: Unstructured Graph Partitioning and Sparse Matrix - Ordering System. -Minneapolis, MN 55455: University of Minnesota, Department of - Computer Science, 1995. -Internet Address: http://www.cs.umn.edu/~karypis. -

15 -
-Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., - Basic Linear Algebra Subprograms for Fortran usage, -ACM Trans. Math. Softw. vol. 5, 38-329, 1979. - -

-

16 -
-Machiels, L. and Deville, M. -Fortran 90: An entry to object-oriented programming for the solution - of partial differential equations. -ACM Trans. Math. Softw. vol. 23, 32-49. -

17 -
-Metcalf, M., Reid, J. and Cohen, M. -Fortran 95/2003 explained. -Oxford University Press, 2004. -

18 -
-Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The - Object-Oriented Way. Cambridge University Press (2011) - -

-

19 -
-M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, -MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, -MIT Press, 1998. -
- -

-


- - - diff --git a/docs/html/node135.html b/docs/html/node135.html deleted file mode 100644 index a4e99c8b..00000000 --- a/docs/html/node135.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -About this document ... - - - - - - - - - - - - - - - - - - - -

-About this document ... -

-

-This document was generated using the -LaTeX2HTML translator Version 2018 (Released Feb 1, 2018) -

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

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

-The translation was initiated on 2019-05-31 -


- - - diff --git a/docs/html/node14.html b/docs/html/node14.html deleted file mode 100644 index df52c1c4..00000000 --- a/docs/html/node14.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - -get_global_rows -- Get number of global rows - - - - - - - - - - - - - - - - - - - - - -

-get_global_rows -- Get number of global rows -

- -

-

-nr = desc%get_global_rows()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
Function value
-
The number of global rows, i.e. the size of the - global index space. -
-
- -

-


- - - diff --git a/docs/html/node15.html b/docs/html/node15.html deleted file mode 100644 index 32983a8e..00000000 --- a/docs/html/node15.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - -get_global_cols -- Get number of global cols - - - - - - - - - - - - - - - - - - - - - -

-get_global_cols -- Get number of global cols -

- -

-

-nr = desc%get_global_cols()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
Function value
-
The number of global cols; usually this is equal - to the number of global rows. -
-
- -

-


- - - diff --git a/docs/html/node16.html b/docs/html/node16.html deleted file mode 100644 index d7a1001d..00000000 --- a/docs/html/node16.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - -get_global_indices -- Get vector of global indices - - - - - - - - - - - - - - - - - - - - - -

-get_global_indices -- Get vector of global indices -

- -

-

-myidx = desc%get_global_indices([owned])
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope: local. -
-Type: required. -
-
owned
-
Choose if you only want owned indices - (owned=.true.) or also halo indices (owned=.false.). -Scope: local. -
-Type: optional; default: .true.. -
-
- -

-

-
On Return
-
-
-
Function value
-
The global indices, returned as an allocatable - integer array of rank 1. -
-
- -

-


- - - diff --git a/docs/html/node17.html b/docs/html/node17.html deleted file mode 100644 index c432cd85..00000000 --- a/docs/html/node17.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -get_context -- Get communication context - - - - - - - - - - - - - - - - - - - - - -

-get_context -- Get communication context -

- -

-

-ictxt = desc%get_context()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
Function value
-
The communication context. -
-
- -

-


- - - diff --git a/docs/html/node18.html b/docs/html/node18.html deleted file mode 100644 index 42ebe881..00000000 --- a/docs/html/node18.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -Clone -- clone current object - - - - - - - - - - - - - - - - - - - - - -

-Clone -- clone current object -

- -

-

-call  desc%clone(descout,info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
descout
-
A copy of the input object. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node19.html b/docs/html/node19.html deleted file mode 100644 index 35a0d5cb..00000000 --- a/docs/html/node19.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -CNV -- convert internal storage format - - - - - - - - - - - - - - - - - - - - - -

-CNV -- convert internal storage format -

- -

-

-call  desc%cnv(mold)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope: local. -
-
mold
-
the desred integer storage format. -
-Scope: local. -
-Specified as: a object of type derived from (integer) vbasedatapsb_T_base_vect_type. -
-
-The mold arguments may be -employed to interface with special devices, such as GPUs and other -accelerators. - -

-


- - - diff --git a/docs/html/node2.html b/docs/html/node2.html deleted file mode 100644 index 3f09ef74..00000000 --- a/docs/html/node2.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - -Introduction - - - - - - - - - - - - - - - - - - - - - -

-
-Introduction -

- -

-The PSBLAS library, developed with the aim to facilitate the -parallelization of computationally intensive scientific applications, -is designed to address parallel implementation of iterative solvers -for sparse linear systems through the distributed memory paradigm. It -includes routines for multiplying sparse matrices by dense matrices, -solving block diagonal systems with triangular diagonal entries, -preprocessing sparse matrices, and contains additional routines for -dense matrix operations. The current implementation of PSBLAS -addresses a distributed memory execution model operating with message -passing. - -

-The PSBLAS library version 3 is implemented in - the Fortran 2003 [17] programming language, with reuse and/or - adaptation of existing Fortran 77 and Fortran 95 software, plus a - handful of C routines. - -

-The use of Fortran 2003 offers a number of advantages over Fortran 95, -mostly in the handling of requirements for evolution and adaptation of -the library to new computing architectures and integration of -new algorithms. -For a detailed discussion of our design see [11]; other -works discussing advanced programming in Fortran 2003 -include [1,18]; sufficient support for -Fortran 2003 is now available from many compilers, including the GNU -Fortran compiler from the Free Software Foundation (as of version 4.8). - -

-Previous approaches have been based on mixing Fortran 95, with its -support for object-based design, with other languages; these have -been advocated by a number of authors, -e.g. [16]. Moreover, the Fortran 95 facilities for dynamic -memory management and interface overloading greatly enhance the -usability of the PSBLAS -subroutines. In this way, the library can take care of runtime memory -requirements that are quite difficult or even impossible to predict at -implementation or compilation time. - -

-The presentation of the -PSBLAS library follows the general structure of the proposal for -serial Sparse BLAS [8,9], which in its turn is based on the -proposal for BLAS on dense matrices [15,5,6]. - -

-The applicability of sparse iterative solvers to many different areas -causes some terminology problems because the same concept may be -denoted through different names depending on the application area. The -PSBLAS features presented in this document will be discussed referring -to a finite difference discretization of a Partial Differential -Equation (PDE). However, the scope of the library is wider than -that: for example, it can be applied to finite element discretizations -of PDEs, and even to different classes of problems such as nonlinear -optimization, for example in optimal control problems. - -

-The design of a solver for sparse linear systems is driven by many -conflicting objectives, such as limiting occupation of storage -resources, exploiting regularities in the input data, exploiting -hardware characteristics of the parallel platform. To achieve an -optimal communication to computation ratio on distributed memory -machines it is essential to keep the data locality as high as -possible; this can be done through an appropriate data allocation -strategy. The choice of the preconditioner is another very important -factor that affects efficiency of the implemented application. Optimal -data distribution requirements for a given preconditioner may conflict -with distribution requirements of the rest of the solver. Finding the -optimal trade-off may be very difficult because it is application -dependent. Possible solutions to these problems and other important -inputs to the development of the PSBLAS software package have come from -an established experience in applying the PSBLAS solvers to -computational fluid dynamics applications. - -

- -

- - - - diff --git a/docs/html/node20.html b/docs/html/node20.html deleted file mode 100644 index 905f54a5..00000000 --- a/docs/html/node20.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - -psb_cd_get_large_threshold -- Get threshold for index mapping switch - - - - - - - - - - - - - - - - - - - - - -

-psb_cd_get_large_threshold -- Get threshold for - index mapping switch -

- -

-

-ith = psb_cd_get_large_threshold()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Return
-
-
-
Function value
-
The current value for the size threshold. - -

-

-
- -

-


- - - diff --git a/docs/html/node21.html b/docs/html/node21.html deleted file mode 100644 index 3478b03a..00000000 --- a/docs/html/node21.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -psb_cd_set_large_threshold -- Set threshold for index mapping switch - - - - - - - - - - - - - - - - - - - - - -

-psb_cd_set_large_threshold -- Set threshold for - index mapping switch -

- -

-

-call psb_cd_set_large_threshold(ith)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
ith
-
the new threshold for communication descriptors. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer value greater than zero. -
-
-Note: the threshold value is only queried by the library at the time a -call to psb_cdall is executed, therefore changing the threshold -has no effect on communication descriptors that have already been -initialized. Moreover the threshold must have the same value on all -processes. - -

-


- - - diff --git a/docs/html/node22.html b/docs/html/node22.html deleted file mode 100644 index b733e044..00000000 --- a/docs/html/node22.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -Named Constants - - - - - - - - - - - - - - - - - - - - -

- -
-Named Constants -

-
-
psb_none_
-
Generic no-op; -
-
psb_root_
-
Default root process for broadcast and scatter operations; -
-
psb_nohalo_
-
Do not fetch halo elements; -
-
psb_halo_
-
Fetch halo elements from neighbouring processes; -
-
psb_sum_
-
Sum overlapped elements -
-
psb_avg_
-
Average overlapped elements -
-
psb_comm_halo_
-
Exchange data based on the halo_index - list; -
-
psb_comm_ext_
-
Exchange data based on the ext_index - list; -
-
psb_comm_ovr_
-
Exchange data based on the ovrlap_index - list; -
-
psb_comm_mov_
-
Exchange data based on the ovr_mst_idx - list; - -

-

-
- -

-


- - - diff --git a/docs/html/node23.html b/docs/html/node23.html deleted file mode 100644 index ecc0e565..00000000 --- a/docs/html/node23.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - -Sparse Matrix class - - - - - - - - - - - - - - - - - - - - - -

- -
-Sparse Matrix class -

-The spdatapsb_Tspmat_type class -contains all information about the local portion of the sparse matrix and -its storage mode. Its design is -based on the STATE design pattern [13] as detailed -in [11]; the type declaration is shown in -figure 4 where T is a placeholder for the -data type and precision variants -
-
S
-
Single precision real; -
-
D
-
Double precision real; -
-
C
-
Single precision complex; -
-
Z
-
Double precision complex. -
-
-The actual data is contained in the polymorphic component a%a -of type spbasedatapsb_T_base_sparse_mat; its -specific layout can be chosen dynamically among the predefined types, -or an entirely new storage layout can be implemented and passed to the -library at runtime via the psb_spasb routine. - -
- - - -
Figure 4: - The PSBLAS defined data type that - contains a sparse matrix.
-
- -
-
-  type :: psb_Tspmat_type
-    class(psb_T_base_sparse_mat), allocatable  :: a 
-  end type  psb_Tspmat_type
-
-
-
-
-The following very common formats are precompiled in PSBLAS and thus -are always available: -
-
psb_T_coo_sparse_mat
-
Coordinate storage; -
-
psb_T_csr_sparse_mat
-
Compressed storage by rows; -
-
psb_T_csc_sparse_mat
-
Compressed storage by columns; -
-
-The inner sparse matrix has an associated state, which can take the -following values: -
-
Build:
-
State entered after the first allocation, and before the - first assembly; in this state it is possible to add nonzero entries. -
-
Assembled:
-
State entered after the assembly; computations using - the sparse matrix, such as matrix-vector products, are only possible - in this state; -
-
Update:
-
State entered after a reinitalization; this is used to - handle applications in which the same sparsity pattern is used - multiple times with different coefficients. In this state it is only - possible to enter coefficients for already existing nonzero entries. -
-
-The only storage variant supporting the build state is COO; all other -variants are obtained by conversion to/from it. - -

-


- -Subsections - - - - - - - - - diff --git a/docs/html/node24.html b/docs/html/node24.html deleted file mode 100644 index 660dda42..00000000 --- a/docs/html/node24.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -Sparse Matrix Methods - - - - - - - - - - - - - - - - - - - - - -

-Sparse Matrix Methods -

- -

-


- - - diff --git a/docs/html/node25.html b/docs/html/node25.html deleted file mode 100644 index 4e11b66d..00000000 --- a/docs/html/node25.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -get_nrows -- Get number of rows in a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-get_nrows -- Get number of rows in a sparse matrix -

- -

-

-nr = a%get_nrows()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
The number of rows of sparse matrix a. -
-
- -

-


- - - diff --git a/docs/html/node26.html b/docs/html/node26.html deleted file mode 100644 index c22ddd4c..00000000 --- a/docs/html/node26.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - -get_ncols -- Get number of columns in a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-get_ncols -- Get number of columns in a sparse - matrix -

- -

-

-nc = a%get_ncols()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
The number of columns of sparse matrix a. -
-
- -

-


- - - diff --git a/docs/html/node27.html b/docs/html/node27.html deleted file mode 100644 index a7b464d0..00000000 --- a/docs/html/node27.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - -get_nnzeros -- Get number of nonzero elements in a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-get_nnzeros -- Get number of nonzero elements - in a sparse matrix -

- -

-

-nz = a%get_nnzeros()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
The number of nonzero elements stored in sparse matrix a. -
-
- -

-Notes - -

    -
  1. The function value is specific to the storage format of matrix - a; some storage formats employ padding, thus the returned - value for the same matrix may be different for different storage choices. -
  2. -
- -

-


- - - diff --git a/docs/html/node28.html b/docs/html/node28.html deleted file mode 100644 index c7f4130f..00000000 --- a/docs/html/node28.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -get_size -- Get maximum number of nonzero elements in a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-get_size -- Get maximum number of nonzero elements - in a sparse matrix -

- -

-

-maxnz = a%get_size()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
The maximum number of nonzero elements that can - be stored in sparse matrix a using its current memory allocation. -
-
- -

-


- - - diff --git a/docs/html/node29.html b/docs/html/node29.html deleted file mode 100644 index bd2a7410..00000000 --- a/docs/html/node29.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -sizeof -- Get memory occupation in bytes -of a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-sizeof -- Get memory occupation in bytes -of a sparse matrix -

- -

-

-memory_size = a%sizeof()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
The memory occupation in bytes. -
-
- -

-


- - - diff --git a/docs/html/node3.html b/docs/html/node3.html deleted file mode 100644 index 9d55ff44..00000000 --- a/docs/html/node3.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - -General overview - - - - - - - - - - - - - - - - - - - - - -

- -
-General overview -

-The PSBLAS library is designed to handle the implementation of -iterative solvers for sparse linear systems on distributed memory -parallel computers. The system coefficient matrix $A$ must be square; -it may be real or complex, nonsymmetric, and its sparsity pattern -needs not to be symmetric. The serial computation parts are based on -the serial sparse BLAS, so that any extension made to the data -structures of the serial kernels is available to the parallel -version. The overall design and parallelization strategy have been -influenced by the structure of the ScaLAPACK parallel -library. The layered structure of the PSBLAS library -is shown in figure 1; lower layers of the library -indicate an encapsulation relationship with upper layers. The ongoing -discussion focuses on the Fortran 2003 layer immediately below the -application layer. -The serial parts of the computation on each process are executed through -calls to the serial sparse BLAS subroutines. -In a similar way, the inter-process message exchanges are encapsulated -in an applicaiton layer that has been strongly inspired by the Basic -Linear Algebra Communication Subroutines (BLACS) library [7]. -Usually there is no need to deal directly with MPI; however, in some -cases, MPI routines are used directly to improve efficiency. For -further details on our communication layer see Sec. 7. - -

- -

- - - -
Figure 1: -PSBLAS library components hierarchy.
-
-\includegraphics[scale=0.65]{figures/psblas.eps} - -\includegraphics[scale=0.65]{figures/psblas} - -
-
- -

-The type of linear system matrices that we address typically arise in the -numerical solution of PDEs; in such a context, -it is necessary to pay special attention to the -structure of the problem from which the application originates. -The nonzero pattern of a matrix arising from the -discretization of a PDE is influenced by various factors, such as the -shape of the domain, the discretization strategy, and -the equation/unknown ordering. The matrix itself can be interpreted as -the adjacency matrix of the graph associated with the discretization -mesh. - -

-The distribution of the coefficient matrix for the linear system is -based on the “owner computes” rule: -the variable associated to each mesh point is assigned to a process -that will own the corresponding row in the coefficient matrix and -will carry out all related computations. This allocation strategy -is equivalent to a partition of the discretization mesh into sub-domains. -Our library supports any distribution that keeps together -the coefficients of each matrix row; there are no other constraints on -the variable assignment. -This choice is consistent with simple data distributions -such as CYCLIC(N) and BLOCK, -as well as completely arbitrary assignments of -equation indices to processes. -In particular it is consistent with the -usage of graph partitioning tools commonly available in the -literature, e.g. METIS [14]. -Dense vectors conform to sparse -matrices, that is, the entries of a vector follow the same distribution -of the matrix rows. - -

-We assume that the sparse matrix is built in parallel, where each -process generates its own portion. We never require that the entire -matrix be available on a single node. However, it is possible -to hold the entire matrix in one process and distribute it -explicitly1, even though the resulting memory -bottleneck would make this option unattractive in most cases. - -

-


- -Subsections - - - - - - - - - diff --git a/docs/html/node30.html b/docs/html/node30.html deleted file mode 100644 index abfd6eca..00000000 --- a/docs/html/node30.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -get_fmt -- Short description of the dynamic type - - - - - - - - - - - - - - - - - - - - - -

-get_fmt -- Short description of the dynamic type -

- -

-

-write(*,*) a%get_fmt()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
A short string describing the dynamic type of - the matrix. Predefined values include NULL, COO, - CSR and CSC. -
-
- -

-


- - - diff --git a/docs/html/node31.html b/docs/html/node31.html deleted file mode 100644 index d12946dd..00000000 --- a/docs/html/node31.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -is_bld, is_upd, is_asb -- Status check - - - - - - - - - - - - - - - - - - - - - -

-is_bld, is_upd, is_asb -- Status check -

- -

-

-if (a%is_bld()) then 
-if (a%is_upd()) then 
-if (a%is_asb()) then 
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
A logical value indicating whether the - matrix is in the Build, Update or Assembled state, respectively. -
-
- -

-


- - - diff --git a/docs/html/node32.html b/docs/html/node32.html deleted file mode 100644 index e799406e..00000000 --- a/docs/html/node32.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - -is_lower, is_upper, is_triangle, is_unit -- Format check - - - - - - - - - - - - - - - - - - - - - -

-is_lower, is_upper, is_triangle, is_unit -- - Format check -

- -

-

-if (a%is_triangle()) then 
-if (a%is_upper()) then 
-if (a%is_lower()) then 
-if (a%is_unit()) then 
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
A logical value indicating whether the - matrix is triangular; if is_triangle() returns .true. - check also if it is lower, upper and with a unit (i.e. assumed) - diagonal. -
-
- -

-


- - - diff --git a/docs/html/node33.html b/docs/html/node33.html deleted file mode 100644 index 09fdf104..00000000 --- a/docs/html/node33.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - -cscnv -- Convert to a different storage format - - - - - - - - - - - - - - - - - - - - - -

-cscnv -- Convert to a different storage format -

- -

-

-call  a%cscnv(b,info [, type, mold, dupl])
-call  a%cscnv(info [, type, mold, dupl])
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix. -
-A variable of type psb_Tspmat_type. -
-Scope: local. -
-
type
-
a string requesting a new format. -
-Type: optional. -
-
mold
-
a variable of class(psb_T_base_sparse_mat) requesting a new format. -
-Type: optional. -
-
dupl
-
an integer value specifing how to handle duplicates (see - Named Constants below) -
-
- -

-

-
On Return
-
-
-
b,a
-
A copy of a with a new storage format. -
-A variable of type psb_Tspmat_type. -
-
info
-
Return code. -
-
-The mold arguments may be -employed to interface with special devices, such as GPUs and other -accelerators. - -

-


- - - diff --git a/docs/html/node34.html b/docs/html/node34.html deleted file mode 100644 index c5b9402d..00000000 --- a/docs/html/node34.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - -csclip -- Reduce to a submatrix - - - - - - - - - - - - - - - - - - - - - -

-csclip -- Reduce to a submatrix -

- -
-    call a%csclip(b,info[,&
-       & imin,imax,jmin,jmax,rscale,cscale])
-
- -

-Returns the submatrix A(imin:imax,jmin:jmax), optionally -rescaling row/col indices to the range -1:imax-imin+1,1:jmax-jmin+1. -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix. -
-A variable of type psb_Tspmat_type. -
-Scope: local. -
-
imin,imax,jmin,jmax
-
Minimum and maximum row and column indices. -
-Type: optional. -
-
rscale,cscale
-
Whether to rescale row/column indices. -Type: optional. -
-
-
-
On Return
-
-
-
b
-
A copy of a submatrix of a. -
-A variable of type psb_Tspmat_type. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node35.html b/docs/html/node35.html deleted file mode 100644 index 027817f2..00000000 --- a/docs/html/node35.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -clean_zeros -- Eliminate zero coefficients - - - - - - - - - - - - - - - - - - - - - -

-clean_zeros -- Eliminate zero coefficients -

- -
-    call a%clean_zeros(info)
-
- -

-Eliminates zero coefficients in the input matrix. Note that depending -on the internal storage format, there may still be some amount of -zero padding in the output. - -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix. -
-A variable of type psb_Tspmat_type. -
-Scope: local. -
-
-
-
On Return
-
-
-
a
-
The matrix a without zero coefficients. -
-A variable of type psb_Tspmat_type. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node36.html b/docs/html/node36.html deleted file mode 100644 index 4768938d..00000000 --- a/docs/html/node36.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -get_diag -- Get main diagonal - - - - - - - - - - - - - - - - - - - - - -

-get_diag -- Get main diagonal -

- -
-    call a%get_diag(d,info)
-
- -

-Returns a copy of the main diagonal. -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix. -
-A variable of type psb_Tspmat_type. -
-Scope: local. -
-
-
-
On Return
-
-
-
d
-
A copy of the main diagonal. -
-A one-dimensional array of the appropriate type. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node37.html b/docs/html/node37.html deleted file mode 100644 index 6cc088c9..00000000 --- a/docs/html/node37.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -clip_diag -- Cut out main diagonal - - - - - - - - - - - - - - - - - - - - - -

-clip_diag -- Cut out main diagonal -

- -
-    call a%clip_diag(b,info)
-
- -

-Returns a copy of a without the main diagonal. -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix. -
-A variable of type psb_Tspmat_type. -
-Scope: local. -
-
-
-
On Return
-
-
-
b
-
A copy of a without the main diagonal. -
-A variable of type psb_Tspmat_type. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node38.html b/docs/html/node38.html deleted file mode 100644 index a718ea45..00000000 --- a/docs/html/node38.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - -tril -- Return the lower triangle - - - - - - - - - - - - - - - - - - - - - -

-tril -- Return the lower triangle -

- -
-    call a%tril(l,info[,&
-       & diag,imin,imax,jmin,jmax,rscale,cscale,u])
-
- -

-Returns the lower triangular part of submatrix -A(imin:imax,jmin:jmax), optionally rescaling row/col indices to -the range 1:imax-imin+1,1:jmax-jmin+1 and returing the -complementary upper triangle. -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix. -
-A variable of type psb_Tspmat_type. -
-Scope: local. -
-
diag
-
Include diagonals up to this one; diag=1 means the - first superdiagonal, diag=-1 means the first subdiagonal. -Default 0. -
-
imin,imax,jmin,jmax
-
Minimum and maximum row and column indices. -
-Type: optional. -
-
rscale,cscale
-
Whether to rescale row/column indices. -Type: optional. -
-
-
-
On Return
-
-
-
l
-
A copy of the lower triangle of a. -
-A variable of type psb_Tspmat_type. -
-
u
-
(optional) A copy of the upper triangle of a. -
-A variable of type psb_Tspmat_type. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node39.html b/docs/html/node39.html deleted file mode 100644 index 685de000..00000000 --- a/docs/html/node39.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - -triu -- Return the upper triangle - - - - - - - - - - - - - - - - - - - - - -

-triu -- Return the upper triangle -

- -
-    call a%triu(u,info[,&
-       & diag,imin,imax,jmin,jmax,rscale,cscale,l])
-
- -

-Returns the upper triangular part of submatrix -A(imin:imax,jmin:jmax), optionally rescaling row/col indices to -the range 1:imax-imin+1,1:jmax-jmin+1, and returing the -complementary lower triangle. -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix. -
-A variable of type psb_Tspmat_type. -
-Scope: local. -
-
diag
-
Include diagonals up to this one; diag=1 means the - first superdiagonal, diag=-1 means the first subdiagonal. -Default 0. -
-
imin,imax,jmin,jmax
-
Minimum and maximum row and column indices. -
-Type: optional. -
-
rscale,cscale
-
Whether to rescale row/column indices. -Type: optional. -
-
-
-
On Return
-
-
-
u
-
A copy of the upper triangle of a. -
-A variable of type psb_Tspmat_type. -
-
l
-
(optional) A copy of the lower triangle of a. -
-A variable of type psb_Tspmat_type. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node4.html b/docs/html/node4.html deleted file mode 100644 index 1fd13393..00000000 --- a/docs/html/node4.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - -Basic Nomenclature - - - - - - - - - - - - - - - - - - - - - -

-Basic Nomenclature -

- -

-Our computational model implies that the data allocation on the -parallel distributed memory machine is guided by the structure of the -physical model, and specifically by the discretization mesh of the -PDE. - -

-Each point of the discretization mesh will have (at least) one -associated equation/variable, and therefore one index. We say that -point $i$ depends on point $j$ if the equation for a -variable associated with $i$ contains a term in $j$, or equivalently -if $a_{ij} \ne0$. -After the partition of the discretization mesh into sub-domains -assigned to the parallel processes, -we classify the points of a given sub-domain as following. -

-
Internal.
-
An internal point of - a given domain depends only on points of the -same domain. -If all points of a domain are assigned to one -process, then a computational step (e.g., a -matrix-vector product) of the -equations associated with the internal points requires no data -items from other domains and no communications. - -

-

-
Boundary.
-
A point of -a given domain is a boundary point if it depends on points -belonging to other domains. - -

-

-
Halo.
-
A halo point for a given domain is a point belonging to -another domain such that there is a boundary point which depends -on it. Whenever performing a computational step, such as a -matrix-vector product, the values associated with halo points are -requested from other domains. A boundary point of a given -domain is usually a halo point for some other domain2; therefore -the cardinality of the boundary points set denotes the amount of data - sent to other domains. -
-
Overlap.
-
An overlap point is a boundary point assigned to -multiple domains. Any operation that involves an overlap point -has to be replicated for each assignment. -
-
-Overlap points do not usually exist in the basic data -distributions; however they are a feature of Domain Decomposition -Schwarz preconditioners which are the subject of related research -work [4,3]. - -

-We denote the sets of internal, boundary and halo points for a given -subdomain by $\cal I$, $\cal B$ and $\cal H$. -Each subdomain is assigned to one process; each process usually -owns one subdomain, although the user may choose to assign more than -one subdomain to a process. If each process $i$ owns one -subdomain, the number of rows in the local sparse matrix is - -$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$, and the number of local columns -(i.e. those for which there exists at least one non-zero entry in the -local rows) is -$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$. - -

- -

- - - -
Figure 2: -Point classfication.
-
-\includegraphics[scale=0.65]{figures/points.eps} - -\rotatebox{-90}{\includegraphics[scale=0.65]{figures/points}} - -
-
- -

-This classification of mesh points guides the naming scheme that we -adopted in the library internals and in the data structures. We -explicitly note that “Halo” points are also often called “ghost” -points in the literature. - -

- -

- - - - diff --git a/docs/html/node40.html b/docs/html/node40.html deleted file mode 100644 index 33021ee9..00000000 --- a/docs/html/node40.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - -psb_set_mat_default -- Set default storage format - - - - - - - - - - - - - - - - - - - - - -

-psb_set_mat_default -- Set default storage format -

- -

-

-call  psb_set_mat_default(a)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
a variable of class(psb_T_base_sparse_mat) requesting - a new default storage format. -
-Type: required. -
-
- -

-


- - - diff --git a/docs/html/node41.html b/docs/html/node41.html deleted file mode 100644 index b76f447c..00000000 --- a/docs/html/node41.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -clone -- Clone current object - - - - - - - - - - - - - - - - - - - - - -

-clone -- Clone current object -

- -

-

-call  a%clone(b,info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
the sparse matrix. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
b
-
A copy of the input object. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node42.html b/docs/html/node42.html deleted file mode 100644 index 0810e2ec..00000000 --- a/docs/html/node42.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - -Named Constants - - - - - - - - - - - - - - - - - - - - -

- -
-Named Constants -

-
-
psb_dupl_ovwrt_
-
Duplicate coefficients should be overwritten - (i.e. ignore duplications) -
-
psb_dupl_add_
-
Duplicate coefficients should be added; -
-
psb_dupl_err_
-
Duplicate coefficients should trigger an error conditino -
-
psb_upd_dflt_
-
Default update strategy for matrix coefficients; -
-
psb_upd_srch_
-
Update strategy based on search into the data structure; -
-
psb_upd_perm_
-
Update strategy based on additional - permutation data (see tools routine description). -
-
- -

-


- - - diff --git a/docs/html/node43.html b/docs/html/node43.html deleted file mode 100644 index 74f930ba..00000000 --- a/docs/html/node43.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - -Dense Vector Data Structure - - - - - - - - - - - - - - - - - - - - - -

- -
-Dense Vector Data Structure -

-The vdatapsb_T_vect_type data structure -encapsulates the dense vectors in a way similar to sparse matrices, -i.e. including a base type vbasedata psb_T_base_vect_type. -The user will not, in general, access the vector components directly, -but rather via the routines of sec. 6. Among other -simple things, we define here an extraction method that can be used to -get a full copy of the part of the vector stored on the local -process. - -

-The type declaration is shown in -figure 5 where T is a placeholder for the -data type and precision variants -

-
I
-
Integer; -
-
S
-
Single precision real; -
-
D
-
Double precision real; -
-
C
-
Single precision complex; -
-
Z
-
Double precision complex. -
-
-The actual data is contained in the polymorphic component v%v; -the separation between the application and the actual data is -essential for cases where it is necessary to link to data storage made -available elsewhere outside the direct control of the -compiler/application, e.g. data stored in a graphics accelerator's -private memory. - -
- - - -
Figure 5: - The PSBLAS defined data type that - contains a dense vector.
-
- -
-
-  type psb_T_base_vect_type
-    TYPE(KIND_), allocatable :: v(:)
-  end type psb_T_base_vect_type
-
-  type psb_T_vect_type
-    class(psb_T_base_vect_type), allocatable :: v 
-  end type  psb_T_vect_type
-
-
-
-
- -

-


- -Subsections - - - - - - - - - diff --git a/docs/html/node44.html b/docs/html/node44.html deleted file mode 100644 index d7ea4154..00000000 --- a/docs/html/node44.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -Vector Methods - - - - - - - - - - - - - - - - - - - - - -

-Vector Methods -

-

- - - diff --git a/docs/html/node45.html b/docs/html/node45.html deleted file mode 100644 index 967d15c6..00000000 --- a/docs/html/node45.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -get_nrows -- Get number of rows in a dense vector - - - - - - - - - - - - - - - - - - - - - -

-get_nrows -- Get number of rows in a dense vector -

- -

-

-nr = v%get_nrows()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
v
-
the dense vector -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
The number of rows of dense vector v. -
-
- -

-


- - - diff --git a/docs/html/node46.html b/docs/html/node46.html deleted file mode 100644 index 85e38867..00000000 --- a/docs/html/node46.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -sizeof -- Get memory occupation in bytes -of a dense vector - - - - - - - - - - - - - - - - - - - - - -

-sizeof -- Get memory occupation in bytes -of a dense vector -

- -

-

-memory_size = v%sizeof()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
v
-
the dense vector -
-Scope: local -
-
- -

-

-
On Return
-
-
-
Function value
-
The memory occupation in bytes. -
-
- -

-


- - - diff --git a/docs/html/node47.html b/docs/html/node47.html deleted file mode 100644 index b14e02f9..00000000 --- a/docs/html/node47.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -set -- Set contents of the vector - - - - - - - - - - - - - - - - - - - - - -

-set -- Set contents of the vector -

- -

-

- call  v%set(alpha[,first,last])
- call  v%set(vect[,first,last])
- call  v%zero()
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
v
-
the dense vector -
-Scope: local -
-
alpha
-
A scalar value. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a number of the data -type indicated in Table 1. - -

-

-
first,last
-
Boundaries for setting in the vector. -
-Scope: local -
-Type: optional -
-Intent: in. -
-Specified - as: integers. -
-
vect
-
An array -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a number of the data -type indicated in Table 1. -
-
-Note that a call to v%zero() is provided as a shorthand, but -is equivalent to a call to v%set(zero) with the zero -constant having the appropriate type and kind. - -

-

-
On Return
-
-
-
v
-
the dense vector, with updated entries -
-Scope: local -
-
- -

-


- - - diff --git a/docs/html/node48.html b/docs/html/node48.html deleted file mode 100644 index e8c5cf98..00000000 --- a/docs/html/node48.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - -get_vect -- Get a copy of the vector contents - - - - - - - - - - - - - - - - - - - - - -

-get_vect -- Get a copy of the vector contents -

- -

-

-extv = v%get_vect([n])
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
v
-
the dense vector -
-Scope: local -
-
n
-
Size to be returned -
-Scope: local. -
-Type: optional; default: entire vector. -
-

-

-
- -

-

-
On Return
-
-
-
Function value
-
An allocatable array holding a copy of the dense - vector contents. If the argument $n$ is specified, the size of the - returned array equals the minimum between $n$ and the internal size - of the vector, or 0 if $n$ is negative; otherwise, the size of the - array is the same as the internal size of the vector. -
-
- -

-


- - - diff --git a/docs/html/node49.html b/docs/html/node49.html deleted file mode 100644 index 08d0b52c..00000000 --- a/docs/html/node49.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - -clone -- Clone current object - - - - - - - - - - - - - - - - - - - - -

-clone -- Clone current object -

- -
-call  x%clone(y,info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
x
-
the dense vector. -
-Scope: local. -
-
- -

-

-
On Return
-
-
-
y
-
A copy of the input object. -
-
info
-
Return code. -
-
- -

-


- - - diff --git a/docs/html/node5.html b/docs/html/node5.html deleted file mode 100644 index a2f0e2b8..00000000 --- a/docs/html/node5.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - -Library contents - - - - - - - - - - - - - - - - - - - - - -

-Library contents -

- -

-The PSBLAS library consists of various classes of subroutines: -

-
Computational routines
-
comprising: - -
    -
  • Sparse matrix by dense matrix product; -
  • -
  • Sparse triangular -systems solution for block diagonal matrices; -
  • -
  • Vector and matrix norms; -
  • -
  • Dense matrix sums; -
  • -
  • Dot products. -
  • -
-
-
Communication routines
-
handling halo and overlap - communications; -
-
Data management and auxiliary routines
-
including: - -
    -
  • Parallel environment management -
  • -
  • Communication descriptors allocation; -
  • -
  • Dense and sparse matrix allocation; -
  • -
  • Dense and sparse matrix build and update; -
  • -
  • Sparse matrix and data distribution preprocessing. -
  • -
-
-
Preconditioner routines
-
-
-
Iterative methods
-
a subset of Krylov subspace iterative - methods -
-
-The following naming scheme has been adopted for all the symbols -internally defined in the PSBLAS software package: - -
    -
  • all symbols (i.e. subroutine names, data types...) are - prefixed by psb_ -
  • -
  • all data type names are suffixed by _type -
  • -
  • all constants are suffixed by _ -
  • -
  • all top-level subroutine names follow the rule psb_xxname where - xx can be either: - -
      -
    • ge: the routine is related to dense data, -
    • -
    • sp: the routine is related to sparse data, -
    • -
    • cd: the routine is related to communication descriptor - (see 3). - -
    • -
    - For example the psb_geins, psb_spins and - psb_cdins perform the same action (see 6) on - dense matrices, sparse matrices and communication descriptors - respectively. - Interface overloading allows the usage of the same subroutine - names for both real and complex data. -
  • -
-In the description of the subroutines, arguments or argument entries -are classified as: -
-
global
-
For input arguments, the value must be the same on all processes - participating in the subroutine call; for output arguments the value - is guaranteed to be the same. -
-
local
-
Each process has its own value(s) independently. -
-
-To finish our general description, we define a version string with the -constant -

-
- - -\begin{displaymath}\verb\vert psb_version_string_\vert\end{displaymath} -
-
-

-whose current value is 3.4.0 - -

- -

- - - - diff --git a/docs/html/node50.html b/docs/html/node50.html deleted file mode 100644 index 3b2fcc2e..00000000 --- a/docs/html/node50.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Preconditioner data structure - - - - - - - - - - - - - - - - - - - - - -

- -
-Preconditioner data structure -

-Our base library offers support for simple well known preconditioners -like Diagonal Scaling or Block Jacobi with incomplete -factorization ILU(0). - -

-A preconditioner is held in the precdata psb_prec_type data structure reported in -figure 6. The psb_prec_type -data type may contain a simple preconditioning matrix with the -associated communication descriptor.The internal preconditioner is allocated appropriately with the -dynamic type corresponding to the desired preconditioner. - -

- - - -
Figure 6: -The PSBLAS defined data type that contains a preconditioner.
-
- -
-
-  type psb_Tprec_type
-    class(psb_T_base_prec_type), allocatable :: prec
-  end type psb_Tprec_type
-
-
-
- -

-


- - - diff --git a/docs/html/node51.html b/docs/html/node51.html deleted file mode 100644 index d7f55d82..00000000 --- a/docs/html/node51.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - -Heap data structure - - - - - - - - - - - - - - - - - - - - -

-Heap data structure -

- -

-Among the tools routines of sec. 6, we have a number -of sorting utilities; the heap sort is implemented in terms of heaps -having the following signatures: -

-
psb_T_heap
-
: a heap containing elements of type T, where T - can be i,s,c,d,z for integer, real and complex data; -
-
psb_T_idx_heap
-
: a heap containing elements of type T, as - above, together with an integer index. -
-
-Given a heap object, the following methods are defined on it: -
-
init
-
Initialize memory; also choose ascending or descending - order; -
-
howmany
-
Current heap occupancy; -
-
insert
-
Add an item (or an item and its index); -
-
get_first
-
Remove and return the first element; -
-
dump
-
Print on file; -
-
free
-
Release memory. -
-
-These objects are used in MLD2P4 to implement the factorization -algorithms. - -

-


- - - diff --git a/docs/html/node52.html b/docs/html/node52.html deleted file mode 100644 index deb3c842..00000000 --- a/docs/html/node52.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - -Computational routines - - - - - - - - - - - - - - - - - - - - - -

-Computational routines -

- -

-


- -Subsections - - - -

- - - diff --git a/docs/html/node53.html b/docs/html/node53.html deleted file mode 100644 index 6df5a187..00000000 --- a/docs/html/node53.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - -psb_geaxpby -- General Dense Matrix Sum - - - - - - - - - - - - - - - - - - - - - -

-psb_geaxpby -- General Dense Matrix Sum -

- -

-This subroutine is an interface to the computational kernel for -dense matrix sum: -

-
- - -\begin{displaymath}y \leftarrow \alpha\> x+ \beta y \end{displaymath} -
-
-

- -

-

-call psb_geaxpby(alpha, x, beta, y, desc_a, info)
-
- -

-

-
- - - -
Table 1: -Data types
-
- - - - - - - - - - - - - - - - -
$x$, $y$, $\alpha$, $\beta$Subroutine
Short Precision Realpsb_geaxpby
Long Precision Realpsb_geaxpby
Short Precision Complexpsb_geaxpby
Long Precision Complexpsb_geaxpby
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
alpha
-
the scalar $\alpha$. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a number of the data -type indicated in Table 1. -
-
x
-
the local portion of global dense matrix -$x$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type -specified in Table 1. The rank of $x$ must be the same of $y$. -
-
beta
-
the scalar $\beta$. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a number of the data type indicated in Table 1. -
-
y
-
the local portion of the global dense matrix -$y$. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type -indicated in Table 1. The rank of $y$ must be the same of $x$. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. - -

-

-
- -

-

-
On Return
-
-
-
y
-
the local portion of result submatrix $y$. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type -indicated in Table 1. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node54.html b/docs/html/node54.html deleted file mode 100644 index 1cfefa4f..00000000 --- a/docs/html/node54.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - -psb_gedot -- Dot Product - - - - - - - - - - - - - - - - - - - - - -

-psb_gedot -- Dot Product -

- -

-This function computes dot product between two vectors $x$ and -$y$. -
-If $x$ and $y$ are real vectors -it computes dot-product as: -

-
- - -\begin{displaymath}dot \leftarrow x^T y\end{displaymath} -
-
-

-Else if $x$ and $y$ are complex vectors then it computes dot-product as: -

-
- - -\begin{displaymath}dot \leftarrow x^H y\end{displaymath} -
-
-

- -

-

-psb_gedot(x, y, desc_a, info [,global])
-
-

-
- - - -
Table 2: -Data types
-
- - - - - - - - - - - - - - - - -
$dot$, $x$, $y$Function
Short Precision Realpsb_gedot
Long Precision Realpsb_gedot
Short Precision Complexpsb_gedot
Long Precision Complexpsb_gedot
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
the local portion of global dense matrix -$x$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 2. The rank of $x$ must be the same of $y$. -
-
y
-
the local portion of global dense matrix -$y$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 2. The rank of $y$ must be the same of $x$. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
global
-
Specifies whether the computation should include the - global reduction across all processes. -
-Scope: global -
-Type: optional. -
-Intent: in. -
-Specified as: a logical scalar. -Default: global=.true. -
-

-

-
On Return
-
-
-
Function value
-
is the dot product of vectors $x$ and $y$. -
-Scope: global unless the optional variable -global=.false. has been specified -
-Specified as: a number of the data type indicated in Table 2. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. The computation of a global result requires a global - communication, which entails a significant overhead. It may be - necessary and/or advisable to compute multiple dot products at the same - time; in this case, it is possible to improve the runtime efficiency - by using the following scheme: -
    -\begin{lstlisting}
-vres(1) = psb_gedot(x1,y1,desc_a,info,global=.false.)
-vres(...
-...,y3,desc_a,info,global=.false.)
-call psb_sum(ictxt,vres(1:3))
-\end{lstlisting} -
    -In this way the global communication, which for small sizes is a - latency-bound operation, is invoked only once. -
  2. -
- -

- -

- - - - diff --git a/docs/html/node55.html b/docs/html/node55.html deleted file mode 100644 index f14e7e64..00000000 --- a/docs/html/node55.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - -psb_gedots -- Generalized Dot Product - - - - - - - - - - - - - - - - - - - - - -

-psb_gedots -- Generalized Dot Product -

- -

-This subroutine computes a series of dot products among the columns of -two dense matrices $x$ and $y$: -

-
- - -\begin{displaymath}res(i) \leftarrow x(:,i)^T y(:,i)\end{displaymath} -
-
-

-If the matrices are complex, then the -usual convention applies, i.e. the conjugate transpose of $x$ is -used. If $x$ and $y$ are of rank one, then $res$ is a scalar, else it -is a rank one array. - -

-

-call psb_gedots(res, x, y, desc_a, info)
-
-

-
- - - -
Table 3: -Data types
-
- - - - - - - - - - - - - - - - -
$res$, $x$, $y$Subroutine
Short Precision Realpsb_gedots
Long Precision Realpsb_gedots
Short Precision Complexpsb_gedots
Long Precision Complexpsb_gedots
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
the local portion of global dense matrix -$x$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 3. The rank of $x$ must be the same of $y$. -
-
y
-
the local portion of global dense matrix -$y$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 3. The rank of $y$ must be the same of $x$. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
On Return
-
-
-
res
-
is the dot product of vectors $x$ and $y$. -
-Scope: global -
-Intent: out. -
-Specified as: a number or a rank-one array of the data type indicated -in Table 2. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node56.html b/docs/html/node56.html deleted file mode 100644 index d626f7f6..00000000 --- a/docs/html/node56.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - -psb_normi -- Infinity-Norm of Vector - - - - - - - - - - - - - - - - - - - - - -

-psb_normi -- Infinity-Norm of Vector -

- -

-This function computes - the infinity-norm of a vector $x$. -
-If $x$ is a real vector -it computes infinity norm as: -

-
- - -\begin{displaymath}amax \leftarrow \max_i \vert x_i\vert\end{displaymath} -
-
-

-else if $x$ is a complex vector then it computes the infinity-norm as: -

-
- - -\begin{displaymath}amax \leftarrow \max_i {(\vert re(x_i)\vert + \vert im(x_i)\vert)}\end{displaymath} -
-
-

- -

-

-psb_geamax(x, desc_a, info [,global])
-psb_normi(x, desc_a, info [,global])
-
- -

-

-
- - - -
Table 4: -Data types
-
- - - - - - - - - - - - - - - - - - - - - -
$amax$$x$Function
Short Precision RealShort Precision Realpsb_geamax
Long Precision RealLong Precision Realpsb_geamax
Short Precision RealShort Precision Complexpsb_geamax
Long Precision RealLong Precision Complexpsb_geamax
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
the local portion of global dense matrix -$x$. - -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 4. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
global
-
Specifies whether the computation should include the - global reduction across all processes. -
-Scope: global -
-Type: optional. -
-Intent: in. -
-Specified as: a logical scalar. -Default: global=.true. -
- -

-

-
On Return
-
-
-
Function value
-
is the infinity norm of vector $x$. -
-Scope: global unless the optional variable -global=.false. has been specified -
-Specified as: a long precision real number. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. The computation of a global result requires a global - communication, which entails a significant overhead. It may be - necessary and/or advisable to compute multiple norms at the same - time; in this case, it is possible to improve the runtime efficiency - by using the following scheme: -
    -\begin{lstlisting}
-vres(1) = psb_geamax(x1,desc_a,info,global=.false.)
-vres(2)...
-...(x3,desc_a,info,global=.false.)
-call psb_amx(ictxt,vres(1:3))
-\end{lstlisting} -
    -In this way the global communication, which for small sizes is a - latency-bound operation, is invoked only once. -
  2. -
- -

- -

- - - - diff --git a/docs/html/node57.html b/docs/html/node57.html deleted file mode 100644 index fdd2f842..00000000 --- a/docs/html/node57.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - -psb_geamaxs -- Generalized Infinity Norm - - - - - - - - - - - - - - - - - - - - - -

-psb_geamaxs -- Generalized Infinity Norm -

- -

-This subroutine computes a series of infinity norms on the columns of -a dense matrix $x$: -

-
- - -\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath} -
-
-

- -

-

-call psb_geamaxs(res, x, desc_a, info)
-
- -

-

-
- - - -
Table 5: -Data types
-
- - - - - - - - - - - - - - - - - - - - - -
$res$$x$Subroutine
Short Precision RealShort Precision Realpsb_geamaxs
Long Precision RealLong Precision Realpsb_geamaxs
Short Precision RealShort Precision Complexpsb_geamaxs
Long Precision RealLong Precision Complexpsb_geamaxs
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
the local portion of global dense matrix -$x$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 5. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
On Return
-
-
-
res
-
is the infinity norm of the columns of $x$. -
-Scope: global -
-Intent: out. -
-Specified as: a number or a rank-one array of long precision real numbers. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node58.html b/docs/html/node58.html deleted file mode 100644 index c4fd28f7..00000000 --- a/docs/html/node58.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - -psb_norm1 -- 1-Norm of Vector - - - - - - - - - - - - - - - - - - - - - -

-psb_norm1 -- 1-Norm of Vector -

- -

-This function computes the 1-norm of a vector $x$. -
-If $x$ is a real vector -it computes 1-norm as: -

-
- - -\begin{displaymath}asum \leftarrow \Vert x_i\Vert\end{displaymath} -
-
-

-else if $x$ is a complex vector then it computes 1-norm as: -

-
- - -\begin{displaymath}asum \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath} -
-
-

- -

-

-psb_geasum(x, desc_a, info [,global])
-psb_norm1(x, desc_a, info [,global])
-
- -

-

-
- - - -
Table 6: -Data types
-
- - - - - - - - - - - - - - - - - - - - - -
$asum$$x$Function
Short Precision RealShort Precision Realpsb_geasum
Long Precision RealLong Precision Realpsb_geasum
Short Precision RealShort Precision Complexpsb_geasum
Long Precision RealLong Precision Complexpsb_geasum
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
the local portion of global dense matrix -$x$. - -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 6. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
global
-
Specifies whether the computation should include the - global reduction across all processes. -
-Scope: global -
-Type: optional. -
-Intent: in. -
-Specified as: a logical scalar. -Default: global=.true. -
-

-

-
On Return
-
-
-
Function value
-
is the 1-norm of vector $x$. -
-Scope: global unless the optional variable -global=.false. has been specified -
-Specified as: a long precision real number. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. The computation of a global result requires a global - communication, which entails a significant overhead. It may be - necessary and/or advisable to compute multiple norms at the same - time; in this case, it is possible to improve the runtime efficiency - by using the following scheme: -
    -\begin{lstlisting}
-vres(1) = psb_geasum(x1,desc_a,info,global=.false.)
-vres(2)...
-...(x3,desc_a,info,global=.false.)
-call psb_sum(ictxt,vres(1:3))
-\end{lstlisting} -
    -In this way the global communication, which for small sizes is a - latency-bound operation, is invoked only once. -
  2. -
- -

- -

- - - - diff --git a/docs/html/node59.html b/docs/html/node59.html deleted file mode 100644 index 4ab320ea..00000000 --- a/docs/html/node59.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - -psb_geasums -- Generalized 1-Norm of Vector - - - - - - - - - - - - - - - - - - - - - -

-psb_geasums -- Generalized 1-Norm of Vector -

- -

-This subroutine computes a series of 1-norms on the columns of -a dense matrix $x$: -

-
- - -\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath} -
-
-

-This function computes the 1-norm of a vector $x$. -
-If $x$ is a real vector -it computes 1-norm as: -

-
- - -\begin{displaymath}res(i) \leftarrow \Vert x_i\Vert\end{displaymath} -
-
-

-else if $x$ is a complex vector then it computes 1-norm as: -

-
- - -\begin{displaymath}res(i) \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath} -
-
-

- -

-

-call psb_geasums(res, x, desc_a, info)
-
- -

-

-
- - - -
Table 7: -Data types
-
- - - - - - - - - - - - - - - - - - - - - -
$res$$x$Subroutine
Short Precision RealShort Precision Realpsb_geasums
Long Precision RealLong Precision Realpsb_geasums
Short Precision RealShort Precision Complexpsb_geasums
Long Precision RealLong Precision Complexpsb_geasums
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
the local portion of global dense matrix -$x$. - -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 7. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. - -

-

-
On Return
-
-
-
res
-
contains the 1-norm of (the columns of) $x$. -
-Scope: global -
-Intent: out. -
-Short as: a long precision real number. -Specified as: a long precision real number. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node6.html b/docs/html/node6.html deleted file mode 100644 index caab0136..00000000 --- a/docs/html/node6.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - -Application structure - - - - - - - - - - - - - - - - - - - - - -

- -
-Application structure -

- -

-The main underlying principle of the PSBLAS library is that the -library objects are created and exist with reference to a discretized -space to which there corresponds an index space and a matrix sparsity -pattern. As an example, consider a cell-centered finite-volume -discretization of the Navier-Stokes equations on a simulation domain; -the index space $1\dots n$ is isomorphic to the set of cell centers, -whereas the pattern of the associated linear system matrix is -isomorphic to the adjacency graph imposed on the discretization mesh -by the discretization stencil. - -

-Thus the first order of business is to establish an index space, and -this is done with a call to psb_cdall in which we specify the -size of the index space $n$ and the allocation of the elements of the -index space to the various processes making up the MPI (virtual) -parallel machine. - -

-The index space is partitioned among processes, and this creates a -mapping from the “global” numbering $1\dots n$ to a numbering -“local” to each process; each process $i$ will own a certain subset - -$1\dots n_{\hbox{row}_i}$, each element of which corresponds to a certain -element of $1\dots n$. The user does not set explicitly this mapping; -when the application needs to indicate to which element of the index -space a certain item is related, such as the row and column index of a -matrix coefficient, it does so in the “global” numbering, and the -library will translate into the appropriate “local” numbering. - -

-For a given index space $1\dots n$ there are many possible associated -topologies, i.e. many different discretization stencils; thus the -description of the index space is not completed until the user has -defined a sparsity pattern, either explicitly through psb_cdins -or implicitly through psb_spins. The descriptor is finalized -with a call to psb_cdasb and a sparse matrix with a call to -psb_spasb. After psb_cdasb each process $i$ will have -defined a set of “halo” (or “ghost”) indices - -$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$, denoting elements of the index -space that are not assigned to process $i$; however the -variables associated with them are needed to complete computations -associated with the sparse matrix $A$, and thus they have to be -fetched from (neighbouring) processes. The descriptor of the index -space is built exactly for the purpose of properly sequencing the -communication steps required to achieve this objective. - -

-A simple application structure will walk through the index space -allocation, matrix/vector creation and linear system solution as -follows: - -

    -
  1. Initialize parallel environment with psb_init -
  2. -
  3. Initialize index space with psb_cdall -
  4. -
  5. Allocate sparse matrix and dense vectors with psb_spall - and psb_geall -
  6. -
  7. Loop over all local rows, generate matrix and vector entries, - and insert them with psb_spins and psb_geins -
  8. -
  9. Assemble the various entities: - -
      -
    1. psb_cdasb -
    2. -
    3. psb_spasb -
    4. -
    5. psb_geasb -
    6. -
    -
  10. -
  11. Choose the preconditioner to be used with prec%init and - build it with prec%build3. -
  12. -
  13. Call the iterative method of choice, e.g. psb_bicgstab -
  14. -
-This is the structure of the sample program -test/pargen/psb_d_pde3d.f90. - -

-For a simulation in which the same discretization mesh is used over -multiple time steps, the following structure may be more appropriate: - -

    -
  1. Initialize parallel environment with psb_init -
  2. -
  3. Initialize index space with psb_cdall -
  4. -
  5. Loop over the topology of the discretization mesh and build the - descriptor with psb_cdins -
  6. -
  7. Assemble the descriptor with psb_cdasb -
  8. -
  9. Allocate the sparse matrices and dense vectors with - psb_spall and psb_geall -
  10. -
  11. Loop over the time steps: - -
      -
    1. If after first time step, - reinitialize the sparse matrix with psb_sprn; also zero out - the dense vectors; -
    2. -
    3. Loop over the mesh, generate the coefficients and insert/update - them with psb_spins and psb_geins -
    4. -
    5. Assemble with psb_spasb and psb_geasb -
    6. -
    7. Choose and build preconditioner with prec%init and - prec%build -
    8. -
    9. Call the iterative method of choice, e.g. psb_bicgstab - -
    10. -
    -
  12. -
-The insertion routines will be called as many times as needed; -they only need to be called on the data that is actually -allocated to the current process, i.e. each process generates its own -data. - -

-In principle there is no specific order in the calls to -psb_spins, nor is there a requirement to build a matrix row in -its entirety before calling the routine; this allows the application -programmer to walk through the discretization mesh element by element, -generating the main part of a given matrix row but also contributions -to the rows corresponding to neighbouring elements. - -

-From a functional point of view it is even possible to execute one -call for each nonzero coefficient; however this would have a -substantial computational overhead. It is therefore advisable to pack -a certain amount of data into each call to the insertion routine, say -touching on a few tens of rows; the best performng value would depend -on both the architecture of the computer being used and on the problem -structure. -At the opposite extreme, it would be possible to generate the entire -part of a coefficient matrix residing on a process and pass it in a -single call to psb_spins; this, however, would entail a -doubling of memory occupation, and thus would be almost always far -from optimal. - -

-


- -Subsections - - - - - - - - - diff --git a/docs/html/node60.html b/docs/html/node60.html deleted file mode 100644 index f663ca4c..00000000 --- a/docs/html/node60.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - -psb_norm2 -- 2-Norm of Vector - - - - - - - - - - - - - - - - - - - - - -

-psb_norm2 -- 2-Norm of Vector -

- -

-This function computes the 2-norm of a vector $x$. -
-If $x$ is a real vector -it computes 2-norm as: -

-
- - -\begin{displaymath}nrm2 \leftarrow \sqrt{x^T x}\end{displaymath} -
-
-

-else if $x$ is a complex vector then it computes 2-norm as: -

-
- - -\begin{displaymath}nrm2 \leftarrow \sqrt{x^H x}\end{displaymath} -
-
-

- -

-

-
- - - -
Table 8: -Data types
-
- - - - - - - - - - - - - - - - - - - - - -
$nrm2$$x$Function
Short Precision RealShort Precision Realpsb_genrm2
Long Precision RealLong Precision Realpsb_genrm2
Short Precision RealShort Precision Complexpsb_genrm2
Long Precision RealLong Precision Complexpsb_genrm2
-
-
-

-
- -

-

-psb_genrm2(x, desc_a, info [,global])
-psb_norm2(x, desc_a, info [,global])
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
the local portion of global dense matrix -$x$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 8. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
global
-
Specifies whether the computation should include the - global reduction across all processes. -
-Scope: global -
-Type: optional. -
-Intent: in. -
-Specified as: a logical scalar. -Default: global=.true. -
- -

-

-
On Return
-
-
-
Function Value
-
is the 2-norm of vector $x$. -
-Scope: global unless the optional variable -global=.false. has been specified -
-Type: required -
-Specified as: a long precision real number. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. The computation of a global result requires a global - communication, which entails a significant overhead. It may be - necessary and/or advisable to compute multiple norms at the same - time; in this case, it is possible to improve the runtime efficiency - by using the following scheme: -
    -\begin{lstlisting}
-vres(1) = psb_genrm2(x1,desc_a,info,global=.false.)
-vres(2)...
-...x3,desc_a,info,global=.false.)
-call psb_nrm2(ictxt,vres(1:3))
-\end{lstlisting} -
    -In this way the global communication, which for small sizes is a - latency-bound operation, is invoked only once. -
  2. -
- -

- -

- - - - diff --git a/docs/html/node61.html b/docs/html/node61.html deleted file mode 100644 index 867d4545..00000000 --- a/docs/html/node61.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - -psb_genrm2s -- Generalized 2-Norm of Vector - - - - - - - - - - - - - - - - - - - - - -

-psb_genrm2s -- Generalized 2-Norm of Vector -

- -

-This subroutine computes a series of 2-norms on the columns of -a dense matrix $x$: -

-
- - -\begin{displaymath}res(i) \leftarrow \Vert x(:,i)\Vert _2 \end{displaymath} -
-
-

- -

-

-call psb_genrm2s(res, x, desc_a, info)
-
- -

-

-
- - - -
Table 9: -Data types
-
- - - - - - - - - - - - - - - - - - - - - -
$res$$x$Subroutine
Short Precision RealShort Precision Realpsb_genrm2s
Long Precision RealLong Precision Realpsb_genrm2s
Short Precision RealShort Precision Complexpsb_genrm2s
Long Precision RealLong Precision Complexpsb_genrm2s
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
the local portion of global dense matrix -$x$. - -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 9. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. - -

-

-
On Return
-
-
-
res
-
contains the 1-norm of (the columns of) $x$. -
-Scope: global -
-Intent: out. -
-Specified as: a long precision real number. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node62.html b/docs/html/node62.html deleted file mode 100644 index 6ef4e36d..00000000 --- a/docs/html/node62.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - -psb_norm1 -- 1-Norm of Sparse Matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_norm1 -- 1-Norm of Sparse Matrix -

- -

-This function computes the 1-norm of a matrix $A$: -
-

-

-
- - -\begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath} -
-
-

-where: -
-
$A$
-
represents the global matrix $A$ -
-
- -

-

-
- - - -
Table 10: -Data types
-
- - - - - - - - - - - - - - - - -
$A$Function
Short Precision Realpsb_spnrm1
Long Precision Realpsb_spnrm1
Short Precision Complexpsb_spnrm1
Long Precision Complexpsb_spnrm1
-
-
-

-
- -

-

-psb_spnrm1(A, desc_a, info)
-psb_norm1(A, desc_a, info)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
a
-
the local portion of the global sparse matrix -$A$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type spdatapsb_Tspmat_type. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
On Return
-
-
-
Function value
-
is the 1-norm of sparse submatrix $A$. -
-Scope: global -
-Specified as: a long precision real number. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node63.html b/docs/html/node63.html deleted file mode 100644 index d084adad..00000000 --- a/docs/html/node63.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - -psb_normi -- Infinity Norm of Sparse Matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_normi -- Infinity Norm of Sparse Matrix -

- -

-This function computes the infinity-norm of a matrix $A$: -
-

-

-
- - -\begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath} -
-
-

-where: -
-
$A$
-
represents the global matrix $A$ -
-
- -

-

-
- - - -
Table 11: -Data types
-
- - - - - - - - - - - - - - - - -
$A$Function
Short Precision Realpsb_spnrmi
Long Precision Realpsb_spnrmi
Short Precision Complexpsb_spnrmi
Long Precision Complexpsb_spnrmi
-
-
-

-
- -

-

-psb_spnrmi(A, desc_a, info)
-psb_normi(A, desc_a, info)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
a
-
the local portion of the global sparse matrix -$A$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type spdatapsb_Tspmat_type. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
On Return
-
-
-
Function value
-
is the infinity-norm of sparse submatrix $A$. -
-Scope: global -
-Specified as: a long precision real number. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node64.html b/docs/html/node64.html deleted file mode 100644 index 9f15d14c..00000000 --- a/docs/html/node64.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - - -psb_spmm -- Sparse Matrix by Dense Matrix Product - - - - - - - - - - - - - - - - - - - - - -

-psb_spmm -- Sparse Matrix by Dense Matrix - Product -

- -

-This subroutine computes the Sparse Matrix by Dense Matrix Product: - -

-
-

- - - - - - -
\begin{displaymath}
-y \leftarrow \alpha A x + \beta y
-\end{displaymath} -(1)
-

-
-
- - - - - - -
\begin{displaymath}
-y \leftarrow \alpha A^T x + \beta y
-\end{displaymath} -(2)
-

-
-
- - - - - - -
\begin{displaymath}
-y \leftarrow \alpha A^H x + \beta y
-\end{displaymath} -(3)
-

- -

-where: -

-
$x$
-
is the global dense matrix $x_{:, :}$ -
-
$y$
-
is the global dense matrix $y_{:, :}$ -
-
$A$
-
is the global sparse matrix $A$ -
-
- -

-

-
- - - -
Table 12: -Data types
-
- - - - - - - - - - - - - - - - -
$A$, $x$, $y$, $\alpha$, $\beta$Subroutine
Short Precision Realpsb_spmm
Long Precision Realpsb_spmm
Short Precision Complexpsb_spmm
Long Precision Complexpsb_spmm
-
-
-

-
- -

-

-call psb_spmm(alpha, a, x, beta, y, desc_a, info)
-call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
-             & trans, work)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
alpha
-
the scalar $\alpha$. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a number of the data type indicated in -Table 12. -
-
a
-
the local portion of the sparse matrix -$A$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type spdatapsb_Tspmat_type. -
-
x
-
the local portion of global dense matrix -$x$. - -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 12. The rank of $x$ must be the same of $y$. -
-
beta
-
the scalar $\beta$. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a number of the data type indicated in Table 12. -
-
y
-
the local portion of global dense matrix -$y$. - -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 12. The rank of $y$ must be the same of $x$. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
trans
-
indicates what kind of operation to perform. -
-
trans = N
-
the operation is specified by equation 1 -
-
trans = T
-
the operation is specified by equation -2 -
-
trans = C
-
the operation is specified by equation -3 -
-
-Scope: global -
-Type: optional -
-Intent: in. -
-Default: $trans = N$ -
-Specified as: a character variable. - -

-

-
work
-
work array. -
-Scope: local -
-Type: optional -
-Intent: inout. -
-Specified as: a rank one array of the same type of $x$ and $y$ with -the TARGET attribute. - -

-

-
On Return
-
-
-
y
-
the local portion of result matrix $y$. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: an array of rank one or two -containing numbers of type specified in -Table 12. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node65.html b/docs/html/node65.html deleted file mode 100644 index 7617d650..00000000 --- a/docs/html/node65.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - - -psb_spsm -- Triangular System Solve - - - - - - - - - - - - - - - - - - - - -

-psb_spsm -- Triangular System Solve -

- -

-This subroutine computes the Triangular System Solve: - -

-

-
- -\begin{eqnarray*}
-y &\leftarrow& \alpha T^{-1} x + \beta y\\
-y &\leftarrow& \al...
-...-H} x + \beta y\\
-y &\leftarrow& \alpha T^{-H} D x + \beta y\\
-\end{eqnarray*}
-

-

- -

-where: -

-
$x$
-
is the global dense matrix $x_{:, :}$ -
-
$y$
-
is the global dense matrix $y_{:, :}$ -
-
$T$
-
is the global sparse block triangular submatrix $T$ -
-
$D$
-
is the scaling diagonal matrix. -
-
- -

-

-call psb_spsm(alpha, t, x, beta, y, desc_a, info)
-call psb_spsm(alpha, t, x, beta, y, desc_a, info,&
-             & trans, unit, choice, diag, work)
-
- -

-

-
- - - -
Table 13: -Data types
-
- - - - - - - - - - - - - - - - -
$T$, $x$, $y$, $D$, $\alpha$, $\beta$Subroutine
Short Precision Realpsb_spsm
Long Precision Realpsb_spsm
Short Precision Complexpsb_spsm
Long Precision Complexpsb_spsm
-
-
-

-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
alpha
-
the scalar $\alpha$. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a number of the data type indicated in -Table 13. -
-
t
-
the global portion of the sparse matrix -$T$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object type specified in -§ 3. -
-
x
-
the local portion of global dense matrix -$x$. - -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 13. The rank of $x$ must be the same of $y$. -
-
beta
-
the scalar $\beta$. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a number of the data type indicated in Table 13. -
-
y
-
the local portion of global dense matrix -$y$. - -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 13. The rank of $y$ must be the same of $x$. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an object of type descdatapsb_desc_type. -
-
trans
-
specify with unitd the operation to perform. -
-
trans = 'N'
-
the operation is with no transposed matrix -
-
trans = 'T'
-
the operation is with transposed matrix. -
-
trans = 'C'
-
the operation is with conjugate transposed matrix. -
-
-Scope: global -
-Type: optional -
-Intent: in. -
-Default: $trans = N$ -
-Specified as: a character variable. -
-
unitd
-
specify with trans the operation to perform. -
-
unitd = 'U'
-
the operation is with no scaling -
-
unitd = 'L'
-
the operation is with left scaling -
-
unitd = 'R'
-
the operation is with right scaling. -
-
-Scope: global -
-Type: optional -
-Intent: in. -
-Default: $unitd = U$ -
-Specified as: a character variable. -
-
choice
-
specifies the update of overlap elements to be performed - on exit: -
-
-
psb_none_ -
-
-
psb_sum_ -
-
-
psb_avg_ -
-
-
psb_square_root_ -
-
-Scope: global -
-Type: optional -
-Intent: in. -
-Default: psb_avg_ -
-Specified as: an integer variable. -
-
diag
-
the diagonal scaling matrix. -
-Scope: local -
-Type: optional -
-Intent: in. -
-Default: -$diag(1) = 1 (no scaling)$ -
-Specified as: a rank one array containing numbers of the type -indicated in Table 13. -
-
work
-
a work array. -
-Scope: local -
-Type: optional -
-Intent: inout. -
-Specified as: a rank one array of the same type of $x$ with the -TARGET attribute. - -

-

-
On Return
-
-
-
y
-
the local portion of global dense matrix -$y$. - -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: an array of rank one or two -containing numbers of type specified in -Table 13. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node66.html b/docs/html/node66.html deleted file mode 100644 index e73a47eb..00000000 --- a/docs/html/node66.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - -Communication routines - - - - - - - - - - - - - - - - - - - - - -

-Communication routines -

-The routines in this chapter implement various global communication operators -on vectors associated with a discretization mesh. For auxiliary communication -routines not tied to a discretization space see 6. - -

-


- -Subsections - - - -

- - - diff --git a/docs/html/node67.html b/docs/html/node67.html deleted file mode 100644 index 1ab4ea30..00000000 --- a/docs/html/node67.html +++ /dev/null @@ -1,633 +0,0 @@ - - - - - -psb_halo -- Halo Data Communication - - - - - - - - - - - - - - - - - - - - - -

-psb_halo -- Halo Data Communication -

- -

-These subroutines gathers the values of the halo -elements: - -

-

-
- - -\begin{displaymath}x \leftarrow x \end{displaymath} -
-
-

-where: -
-
$x$
-
is a global dense submatrix. -
-
- -

-

-
- - - -
Table 14: -Data types
-
- - - - - - - - - - - - - - - - - - - -
$\alpha$, $x$Subroutine
Integerpsb_halo
Short Precision Realpsb_halo
Long Precision Realpsb_halo
Short Precision Complexpsb_halo
Long Precision Complexpsb_halo
-
-
-

-
- -

-
-\begin{lstlisting}
-call psb_halo(x, desc_a, info)
-call psb_halo(x, desc_a, info, work, data)
-\end{lstlisting} -
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
global dense matrix $x$. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 14. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
work
-
the work array. -
-Scope: local -
-Type: optional -
-Intent: inout. -
-Specified as: a rank one array of the same type of $x$. -
-
data
-
index list selector. -
-Scope: global -
-Type: optional -
-Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_, -psb_comm_ext_, default: psb_comm_halo_. Chooses the -index list on which to base the data exchange. - -

-

-
On Return
-
-
-
x
-
global dense result matrix $x$. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Returned as: a rank one or two array -containing numbers of type specified in -Table 14. -
-
info
-
the local portion of result submatrix $y$. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value that contains an error code. -
-
- -
- - - -
Figure 7: -Sample discretization mesh.
-
-\includegraphics[scale=0.45]{figures/try8x8.eps} - -\includegraphics[scale=0.45]{figures/try8x8} - -
-
- -

-Usage Example -Consider the discretization mesh depicted in fig. 7, -partitioned among two processes as shown by the dashed line; the data -distribution is such that each process will own 32 entries in the -index space, with a halo made of 8 entries placed at local indices 33 -through 40. If process 0 assigns an initial value of 1 to its entries -in the $x$ vector, and process 1 assigns a value of 2, then after a -call to psb_halo the contents of the local vectors will be the -following: -
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Process 0  -Process 1
- I GLOB(I) X(I)   I GLOB(I) X(I)
- 1 1 1.0   1 33 2.0
- 2 2 1.0   2 34 2.0
- 3 3 1.0   3 35 2.0
- 4 4 1.0   4 36 2.0
- 5 5 1.0   5 37 2.0
- 6 6 1.0   6 38 2.0
- 7 7 1.0   7 39 2.0
- 8 8 1.0   8 40 2.0
- 9 9 1.0   9 41 2.0
- 10 10 1.0   10 42 2.0
- 11 11 1.0   11 43 2.0
- 12 12 1.0   12 44 2.0
- 13 13 1.0   13 45 2.0
- 14 14 1.0   14 46 2.0
- 15 15 1.0   15 47 2.0
- 16 16 1.0   16 48 2.0
- 17 17 1.0   17 49 2.0
- 18 18 1.0   18 50 2.0
- 19 19 1.0   19 51 2.0
- 20 20 1.0   20 52 2.0
-21 21 1.0   21 53 2.0
-22 22 1.0   22 54 2.0
-23 23 1.0   23 55 2.0
-24 24 1.0   24 56 2.0
-25 25 1.0   25 57 2.0
-26 26 1.0   26 58 2.0
-27 27 1.0   27 59 2.0
-28 28 1.0   28 60 2.0
-29 29 1.0   29 61 2.0
-30 30 1.0   30 62 2.0
-31 31 1.0   31 63 2.0
-32 32 1.0   32 64 2.0
-33 33 2.0   33 25 1.0
-34 34 2.0   34 26 1.0
-35 35 2.0   35 27 1.0
-36 36 2.0   36 28 1.0
-37 37 2.0   37 29 1.0
-38 38 2.0   38 30 1.0
-39 39 2.0   39 31 1.0
-40 40 2.0   40 32 1.0
-
- -

- -

- - - - diff --git a/docs/html/node68.html b/docs/html/node68.html deleted file mode 100644 index eff574f4..00000000 --- a/docs/html/node68.html +++ /dev/null @@ -1,761 +0,0 @@ - - - - - -psb_ovrl -- Overlap Update - - - - - - - - - - - - - - - - - - - - - -

-psb_ovrl -- Overlap Update -

- -

-These subroutines applies an overlap operator to the input vector: - -

-

-
- - -\begin{displaymath}x \leftarrow Q x \end{displaymath} -
-
-

-where: -
-
$x$
-
is the global dense submatrix $x$ -
-
$Q$
-
is the overlap operator; it is the composition of two -operators $P_a$ and $P^{T}$. -
-
- -

-

-
- - - -
Table 15: -Data types
-
- - - - - - - - - - - - - - - - -
$x$Subroutine
Short Precision Realpsb_ovrl
Long Precision Realpsb_ovrl
Short Precision Complexpsb_ovrl
Long Precision Complexpsb_ovrl
-
-
-

-
- -

-
-\begin{lstlisting}
-call psb_ovrl(x, desc_a, info)
-call psb_ovrl(x, desc_a, info, update=update_type, work=work)
-\end{lstlisting} -
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
global dense matrix $x$. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 15. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
update
-
Update operator. -
-
update = psb_none_
-
Do nothing; -
-
update = psb_add_
-
Sum overlap entries, i.e. apply $P^T$; -
-
update = psb_avg_
-
Average overlap entries, i.e. apply $P_aP^T$; -
-
-Scope: global -
-Intent: in. -
-Default: -$update\_type = psb\_avg\_ $ -
-Scope: global -
-Specified as: a integer variable. -
-
work
-
the work array. -
-Scope: local -
-Type: optional -
-Intent: inout. -
-Specified as: a one dimensional array of the same type of $x$. - -

-

-
On Return
-
-
-
x
-
global dense result matrix $x$. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: an array of rank one or two -containing numbers of type specified in -Table 15. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. If there is no overlap in the data distribution associated with - the descriptor, no operations are performed; -
  2. -
  3. The operator $P^{T}$ performs the reduction sum of overlap -elements; it is a “prolongation” operator $P^T$ that -replicates overlap elements, accounting for the physical replication -of data; -
  4. -
  5. The operator $P_a$ performs a scaling on the overlap elements by -the amount of replication; thus, when combined with the reduction -operator, it implements the average of replicated elements over all of -their instances. -
  6. -
- -

- -

- - - -
Figure 8: -Sample discretization mesh.
-
-\includegraphics[scale=0.65]{figures/try8x8_ov.eps} - -\includegraphics[scale=0.65]{figures/try8x8_ov} - -
-
- -Example of use -Consider the discretization mesh depicted in fig. 8, -partitioned among two processes as shown by the dashed lines, with an -overlap of 1 extra layer with respect to the partition of -fig. 7; the data -distribution is such that each process will own 40 entries in the -index space, with an overlap of 16 entries placed at local indices 25 -through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries -in the $x$ vector, and process 1 assigns a value of 2, then after a -call to psb_ovrl with psb_avg_ and a call to -psb_halo_ the contents of the local vectors will be the -following (showing a transition among the two subdomains) - -

-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Process 0  -Process 1
- I GLOB(I) X(I)   I GLOB(I) X(I)
- 1 1 1.0   1 33 1.5
- 2 2 1.0   2 34 1.5
- 3 3 1.0   3 35 1.5
- 4 4 1.0   4 36 1.5
- 5 5 1.0   5 37 1.5
- 6 6 1.0   6 38 1.5
- 7 7 1.0   7 39 1.5
- 8 8 1.0   8 40 1.5
- 9 9 1.0   9 41 2.0
- 10 10 1.0   10 42 2.0
- 11 11 1.0   11 43 2.0
- 12 12 1.0   12 44 2.0
- 13 13 1.0   13 45 2.0
- 14 14 1.0   14 46 2.0
- 15 15 1.0   15 47 2.0
- 16 16 1.0   16 48 2.0
- 17 17 1.0   17 49 2.0
- 18 18 1.0   18 50 2.0
- 19 19 1.0   19 51 2.0
- 20 20 1.0   20 52 2.0
- 21 21 1.0   21 53 2.0
- 22 22 1.0   22 54 2.0
- 23 23 1.0   23 55 2.0
- 24 24 1.0   24 56 2.0
- 25 25 1.5   25 57 2.0
- 26 26 1.5   26 58 2.0
- 27 27 1.5   27 59 2.0
- 28 28 1.5   28 60 2.0
- 29 29 1.5   29 61 2.0
- 30 30 1.5   30 62 2.0
- 31 31 1.5   31 63 2.0
- 32 32 1.5   32 64 2.0
- 33 33 1.5   33 25 1.5
- 34 34 1.5   34 26 1.5
- 35 35 1.5   35 27 1.5
- 36 36 1.5   36 28 1.5
- 37 37 1.5   37 29 1.5
- 38 38 1.5   38 30 1.5
- 39 39 1.5   39 31 1.5
- 40 40 1.5   40 32 1.5
- 41 41 2.0   41 17 1.0
- 42 42 2.0   42 18 1.0
- 43 43 2.0   43 19 1.0
- 44 44 2.0   44 20 1.0
- 45 45 2.0   45 21 1.0
- 46 46 2.0   46 22 1.0
- 47 47 2.0   47 23 1.0
- 48 48 2.0   48 24 1.0
-
- -

- -

- - - - diff --git a/docs/html/node69.html b/docs/html/node69.html deleted file mode 100644 index 79a9d84c..00000000 --- a/docs/html/node69.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - - -psb_gather -- Gather Global Dense Matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_gather -- Gather Global Dense Matrix -

- -

-These subroutines collect the portions of global dense matrix -distributed over all process into one single array stored on one -process. - -

-

-
- - -\begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath} -
-
-

-where: -
-
$glob\_x$
-
is the global submatrix -$glob\_x_{1:m,1:n}$ -
-
$loc\_x_i$
-
is the local portion of global dense matrix on -process $i$. -
-
$collect$
-
is the collect function. -
-
- -

-

-
- - - -
Table 16: -Data types
-
- - - - - - - - - - - - - - - - - - - -
$x_i, y$Subroutine
Integerpsb_gather
Short Precision Realpsb_gather
Long Precision Realpsb_gather
Short Precision Complexpsb_gather
Long Precision Complexpsb_gather
-
-
-

-
- -

-
-\begin{lstlisting}
-call psb_gather(glob_x, loc_x, desc_a, info, root)
-call psb_gather(glob_x, loc_x, desc_a, info, root)
-\end{lstlisting} -
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
loc_x
-
the local portion of global dense matrix -$glob\_x$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -indicated in Table 16. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
root
-
The process that holds the global copy. If $root=-1$ all - the processes will have a copy of the global vector. -
-Scope: global -
-Type: optional -
-Intent: in. -
-Specified as: an integer variable -$-1\le root\le np-1$, default $-1$. -
-
On Return
-
-
-
glob_x
-
The array where the local parts must be gathered. -
-Scope: global -
-Type: required -
-Intent: out. -
-Specified as: a rank one or two array with the ALLOCATABLE attribute. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node7.html b/docs/html/node7.html deleted file mode 100644 index 155a14f7..00000000 --- a/docs/html/node7.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - -User-defined index mappings - - - - - - - - - - - - - - - - - - - - -

- -
-User-defined index mappings -

-PSBLAS supports user-defined global to local index mappings, subject -to the constraints outlined in sec. 2.3: - -
    -
  1. The set of indices owned locally must be mapped to the set - -$1\dots n_{\hbox{row}_i}$; -
  2. -
  3. The set of halo points must be mapped to the set - -$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$; -
  4. -
-but otherwise the mapping is arbitrary. The user application is -responsible to ensure consistency of this mapping; some errors may be -caught by the library, but this is not guaranteed. -The application structure to -support this usage is as follows: - -
    -
  1. Initialize index space with - psb_cdall(ictx,desc,info,vl=vl,lidx=lidx) passing the vectors - vl(:) containing the set of global indices owned by the - current process and lidx(:) containing the corresponding - local indices; -
  2. -
  3. Add the halo points ja(:) and their associated local - indices lidx(:) with a(some) call(s) to - psb_cdins(nz,ja,desc,info,lidx=lidx); -
  4. -
  5. Assemble the descriptor with psb_cdasb; -
  6. -
  7. Build the sparse matrices and vectors, optionally making use in - psb_spins and psb_geins of the local argument - specifying that the indices in ia, ja and irw, - respectively, are already local indices. -
  8. -
- -

-


- - - diff --git a/docs/html/node70.html b/docs/html/node70.html deleted file mode 100644 index d16ab510..00000000 --- a/docs/html/node70.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - - -psb_scatter -- Scatter Global Dense Matrix - - - - - - - - - - - - - - - - - - - - -

-psb_scatter -- Scatter Global Dense Matrix -

- -

-These subroutines scatters the portions of global dense matrix owned -by a process to all the processes in the processes grid. - -

-

-
- - -\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath} -
-
-

-where: -
-
$glob\_x$
-
is the global matrix -$glob\_x_{1:m,1:n}$ -
-
$loc\_x_i$
-
is the local portion of global dense matrix on -process $i$. -
-
$scatter$
-
is the scatter function. -
-
- -

-

-
- - - -
Table 17: -Data types
-
- - - - - - - - - - - - - - - - - - - -
$x_i, y$Subroutine
Integerpsb_scatter
Short Precision Realpsb_scatter
Long Precision Realpsb_scatter
Short Precision Complexpsb_scatter
Long Precision Complexpsb_scatter
-
-
-

-
- -

-
-\begin{lstlisting}
-call psb_scatter(glob_x, loc_x, desc_a, info, root, mold)
-\end{lstlisting} -
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
glob_x
-
The array that must be scattered into local pieces. -
-Scope: global -
-Type: required -
-Intent: in. -
-Specified as: a rank one or two array. -
-
desc_a
-
contains data structures for communications. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
root
-
The process that holds the global copy. If $root=-1$ all - the processes have a copy of the global vector. -
-Scope: global -
-Type: optional -
-Intent: in. -
-Specified as: an integer variable -$-1\le root\le np-1$, default -psb_root_, i.e. process 0. -
-
mold
-
The desired dynamic type for the internal vector storage. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is -only allowed when loc_x is of type vdatapsb_T_vect_type. -
-
On Return
-
-
-
loc_x
-
the local portion of global dense matrix -$glob\_x$. -
-Scope: local -
-Type: required -
-Intent: out. -
-Specified as: a rank one or two ALLOCATABLE array or an object of type vdatapsb_T_vect_type containing numbers of the type -indicated in Table 17. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

- -

- - - - diff --git a/docs/html/node71.html b/docs/html/node71.html deleted file mode 100644 index ae405046..00000000 --- a/docs/html/node71.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Data management routines - - - - - - - - - - - - - - - - - - - - - -

- -
-Data management routines -

- -

-


- -Subsections - - - -

- - - diff --git a/docs/html/node72.html b/docs/html/node72.html deleted file mode 100644 index 6277372e..00000000 --- a/docs/html/node72.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - - -psb_cdall -- Allocates a communication descriptor - - - - - - - - - - - - - - - - - - - - - -

-psb_cdall -- Allocates a communication descriptor -

- -

-

-call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
-call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
-call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.false.,lidx=lidx])
-call psb_cdall(icontxt, desc_a, info,nl=nl)
-call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
-
- -

-This subroutine initializes the communication descriptor associated -with an index space. One of the optional arguments -parts, vg, vl, nl or repl -must be specified, thereby choosing -the specific initialization strategy. -

-
On Entry
-
-
-
Type:
-
Synchronous. -
-
icontxt
-
the communication context. -
-Scope:global. -
-Type:required. -
-Intent: in. -
-Specified as: an integer value. -
-
vg
-
Data allocation: each index -$i\in \{1\dots mg\}$ is allocated - to process $vg(i)$. -
-Scope:global. -
-Type:optional. -
-Intent: in. -
-Specified as: an integer array. -
-
flag
-
Specifies whether entries in $vg$ are zero- or one-based. -
-Scope:global. -
-Type:optional. -
-Intent: in. -
-Specified as: an integer value $0,1$, default $0$. - -

-

-
mg
-
the (global) number of rows of the problem. -
-Scope:global. -
-Type:optional. -
-Intent: in. -
-Specified as: an integer value. It is required if parts or -repl is specified, it is optional if vg is specified. -
-
parts
-
the subroutine that defines the partitioning scheme. -
-Scope:global. -
-Type:required. -
-Specified as: a subroutine. -
-
vl
-
Data allocation: the set of global indices - $vl(1:nl)$ belonging to the calling process. -
-Scope:local. -
-Type:optional. -
-Intent: in. -
-Specified as: an integer array. -
-
nl
-
Data allocation: in a generalized block-row distribution the - number of indices belonging to the current process. -
-Scope:local. -
-Type:optional. -
-Intent: in. -
-Specified as: an integer value. May be specified together with -vl. -
-
repl
-
Data allocation: build a replicated index space - (i.e. all processes own all indices). -
-Scope:global. -
-Type:optional. -
-Intent: in. -
-Specified as: the logical value .true. -
-
globalcheck
-
Data allocation: do global checks on the local - index lists vl -
-Scope:global. -
-Type:optional. -
-Intent: in. -
-Specified as: a logical value, default: .false. -
-
lidx
-
Data allocation: the set of local indices - $lidx(1:nl)$ to be assigned to the global indices $vl$. -
-Scope:local. -
-Type:optional. -
-Intent: in. -
-Specified as: an integer array. -
-
- -

-

-
On Return
-
-
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: out. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. One of the optional arguments parts, vg, - vl, nl or repl must be specified, thereby choosing the - initialization strategy as follows: -
    -
    parts
    -
    In this case we have a subroutine specifying the mapping - between global indices and process/local index pairs. If this - optional argument is specified, then it is mandatory to - specify the argument mg as well. - The subroutine must conform to the following interface: -
    -  interface 
    -     subroutine psb_parts(glob_index,mg,np,pv,nv)
    -       integer, intent (in)  :: glob_index,np,mg
    -       integer, intent (out) :: nv, pv(*)
    -     end subroutine psb_parts
    -  end interface
    -
    - The input arguments are: -
    -
    glob_index
    -
    The global index to be mapped; - -
    -
    np
    -
    The number of processes in the mapping; - -
    -
    mg
    -
    The total number of global rows in the mapping; - -
    -
    - The output arguments are: -
    -
    nv
    -
    The number of entries in pv; - -
    -
    pv
    -
    A vector containing the indices of the processes to - which the global index should be assigend; each entry must satisfy - -$0\le pv(i) < np$; if $nv>1$ we have an index assigned to multiple - processes, i.e. we have an overlap among the subdomains. - -
    -
    -
    -
    vg
    -
    In this case the association between an index and a process - is specified via an integer vector vg(1:mg); - each index -$i\in \{1\dots mg\}$ is assigned to process $vg(i)$. - The vector vg must be identical on all - calling processes; its entries may have the ranges $(0\dots np-1)$ - or $(1\dots np)$ according to the value of flag. - The size $mg$ may be specified via the optional argument mg; - the default is to use the entire vector vg, thus having - mg=size(vg). -
    -
    vl
    -
    In this case we are specifying the list of indices - vl(1:nl) assigned to the current process; thus, the global - problem size $mg$ is given by - the range of the aggregate of the individual vectors vl specified - in the calling processes. The size may be specified via the optional - argument nl; the default is to use the entire vector - vl, thus having nl=size(vl). - If globalcheck=.true. the subroutine will check how many - times each entry in the global index space $(1\dots mg)$ is - specified in the input lists vl, thus allowing for the - presence of overlap in the input, and checking for “orphan” - indices. If globalcheck=.false., the subroutine will not - check for overlap, and may be significantly faster, but the user - is implicitly guaranteeing that there are neither orphan nor - overlap indices. -
    -
    lidx
    -
    The optional argument lidx is available for - those cases in which the user has already established a - global-to-local mapping; if it is specified, each index in - vl(i) will be mapped to the corresponding local index - lidx(i). When specifying the argument lidx the user - would also likely employ lidx in calls to psb_cdins - and local in calls to psb_spins and psb_geins; - see also sec. 2.3.1. -
    -
    nl
    -
    If this argument is specified alone (i.e. without vl) - the result is a generalized row-block distribution in which each - process $I$ gets assigned a consecutive chunk of $N_I=nl$ global - indices. -
    -
    repl
    -
    This arguments specifies to replicate all indices on - all processes. This is a special purpose data allocation that is - useful in the construction of some multilevel preconditioners. -
    -
    -
  2. -
  3. On exit from this routine the descriptor is in the build - state. -
  4. -
  5. Calling the routine with vg or parts implies that - every process will scan the entire index space to figure out the - local indices. -
  6. -
  7. Overlapped indices are possible with both parts and - vl invocations. -
  8. -
  9. When the subroutine is invoked with vl in - conjunction with globalcheck=.true., it will perform a scan - of the index space to search for overlap or orphan indices. -
  10. -
  11. When the subroutine is invoked with vl in - conjunction with globalcheck=.false., no index space scan - will take place. Thus it is the responsibility of the user to make - sure that the indices specified in vl have neither orphans nor - overlaps; if this assumption fails, results will be - unpredictable. -
  12. -
  13. Orphan and overlap indices are - impossible by construction when the subroutine is invoked with - nl (alone), or vg. -
  14. -
- -

- -

- - - - diff --git a/docs/html/node73.html b/docs/html/node73.html deleted file mode 100644 index 364e18a0..00000000 --- a/docs/html/node73.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - -psb_cdins -- Communication descriptor insert routine - - - - - - - - - - - - - - - - - - - - - -

-psb_cdins -- Communication descriptor insert - routine -

- -

-

-call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
-call psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
-
- -

-This subroutine examines the edges of the graph associated with the -discretization mesh (and isomorphic to the sparsity pattern of a -linear system coefficient matrix), storing them as necessary into the -communication descriptor. In the first form the edges are specified as -pairs of indices $ia(i),ja(i)$; the starting index $ia(i)$ should -belong to the current process. -In the second form only the remote indices $ja(i)$ are specified. - -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
nz
-
the number of points being inserted. -
-Scope: local. -
-Type: required. -
-Intent: in. -
-Specified as: an integer value. -
-
ia
-
the indices of the starting vertex of the edges being inserted. -
-Scope: local. -
-Type: required. -
-Intent: in. -
-Specified as: an integer array of length $nz$. -
-
ja
-
the indices of the end vertex of the edges being inserted. -
-Scope: local. -
-Type: required. -
-Intent: in. -
-Specified as: an integer array of length $nz$. -
-
mask
-
Mask entries in ja, they are inserted only when the - corresponding mask entries are .true. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: a logical array of length $nz$, default .true.. -
-
lidx
-
User defined local indices for ja. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer array of length $nz$. -
-
- -

-

-
On Return
-
-
-
desc_a
-
the updated communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: inout. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
ila
-
the local indices of the starting vertex of the edges being inserted. -
-Scope: local. -
-Type: optional. -
-Intent: out. -
-Specified as: an integer array of length $nz$. -
-
jla
-
the local indices of the end vertex of the edges being inserted. -
-Scope: local. -
-Type: optional. -
-Intent: out. -
-Specified as: an integer array of length $nz$. - -

-

-
-Notes - -
    -
  1. This routine may only be called if the descriptor is in the - build state; -
  2. -
  3. This routine automatically ignores edges that do not -insist on the current process, i.e. edges for which neither the starting -nor the end vertex belong to the current process. -
  4. -
  5. The second form of this routine will be useful when dealing with - user-specified index mappings; see also 2.3.1. -
  6. -
- -

- -

- - - - diff --git a/docs/html/node74.html b/docs/html/node74.html deleted file mode 100644 index dce0fc24..00000000 --- a/docs/html/node74.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -psb_cdasb -- Communication descriptor assembly routine - - - - - - - - - - - - - - - - - - - - - -

-psb_cdasb -- Communication descriptor assembly - routine -

- -

-

-call psb_cdasb(desc_a, info [, mold])
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: inout. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
mold
-
The desired dynamic type for the internal index storage. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: a object of type derived from (integer) vbasedatapsb_T_base_vect_type. -
-
- -

-

-
On Return
-
-
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: inout. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
-Notes - -
    -
  1. On exit from this routine the descriptor is in the assembled - state. -
  2. -
- -

-


- - - diff --git a/docs/html/node75.html b/docs/html/node75.html deleted file mode 100644 index 508603a4..00000000 --- a/docs/html/node75.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - -psb_cdcpy -- Copies a communication descriptor - - - - - - - - - - - - - - - - - - - - - -

-psb_cdcpy -- Copies a communication descriptor -

- -

-

-call psb_cdcpy(desc_in, desc_out, info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc_in
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. - -

-

-
- -

-

-
On Return
-
-
-
desc_out
-
the communication descriptor copy. -
-Scope:local. -
-Type:required. -
-Intent: out. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node76.html b/docs/html/node76.html deleted file mode 100644 index 6a43fb9f..00000000 --- a/docs/html/node76.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -psb_cdfree -- Frees a communication descriptor - - - - - - - - - - - - - - - - - - - - - -

-psb_cdfree -- Frees a communication descriptor -

- -

-

-call psb_cdfree(desc_a, info)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
desc_a
-
the communication descriptor to be freed. -
-Scope:local. -
-Type:required. -
-Intent: inout. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
- -

-

-
On Return
-
-
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node77.html b/docs/html/node77.html deleted file mode 100644 index 9716704a..00000000 --- a/docs/html/node77.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - -psb_cdbldext -- Build an extended communication descriptor - - - - - - - - - - - - - - - - - - - - - -

-psb_cdbldext -- Build an extended communication - descriptor -

- -

-

-call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
-
- -

-This subroutine builds an extended communication descriptor, based on -the input descriptor desc_a and on the stencil specified -through the input sparse matrix a. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
a
-
A sparse matrix -Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data type. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
nl
-
the number of additional layers desired. -
-Scope:global. -
-Type:required. -
-Intent: in. -
-Specified as: an integer value $nl\ge 0$. -
-
extype
-
the kind of estension required. -
-Scope:global. -
-Type:optional . -
-Intent: in. -
-Specified as: an integer value -psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_ - -

-

-
- -

-

-
On Return
-
-
-
desc_out
-
the extended communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: inout. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. Specifying psb_ovt_xhal_ for the extype argument - the user will obtain a descriptor for a domain partition in which - the additional layers are fetched as part of an (extended) halo; - however the index-to-process mapping is identical to that of the - base descriptor; -
  2. -
  3. Specifying psb_ovt_asov_ for the extype argument - the user will obtain a descriptor with an overlapped decomposition: - the additional layer is aggregated to the local subdomain (and thus - is an overlap), and a new halo extending beyond the last additional - layer is formed. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node78.html b/docs/html/node78.html deleted file mode 100644 index 42ebd801..00000000 --- a/docs/html/node78.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - -psb_spall -- Allocates a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_spall -- Allocates a sparse matrix -

- -

-

-call psb_spall(a, desc_a, info, nnz)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
nnz
-
An estimate of the number of nonzeroes in the local - part of the assembled matrix. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value. -
-
- -

-

-
On Return
-
-
-
a
-
the matrix to be allocated. -
-Scope:local -
-Type:required -
-Intent: out. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
-Notes - -
    -
  1. On exit from this routine the sparse matrix is in the build - state. -
  2. -
  3. The descriptor may be in either the build or assembled state. -
  4. -
  5. Providing a good estimate for the number of nonzeroes $nnz$ in - the assembled matrix may substantially improve performance in the - matrix build phase, as it will reduce or eliminate the need for - (potentially multiple) data reallocations. -
  6. -
- -

-


- - - diff --git a/docs/html/node79.html b/docs/html/node79.html deleted file mode 100644 index 0f1a9706..00000000 --- a/docs/html/node79.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - -psb_spins -- Insert a set of coefficients into a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_spins -- Insert a set of coefficients into a sparse - matrix -

- -

-

-call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
-call psb_spins(nr, irp, ja, val, irw, a, desc_a, info [,local])
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
nz
-
the number of coefficients to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an integer scalar. -
-
nr
-
the number of rows to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an integer scalar. -
-
ia
-
the row indices of the coefficients to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an integer array of size $nz$. -
-
irp
-
the row pointers of the coefficients to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an integer array of size . -
-
ja
-
the column indices of the coefficients to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an integer array of size $nz$. -
-
val
-
the coefficients to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an array of size $nz$. Must be of the same type and kind -of the coefficients of the sparse matrix $a$. -
-
irw
-
the row index displacement. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an integer scalar. -
-
desc_a
-
The communication descriptor. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: a variable of type descdatapsb_desc_type. -
-
local
-
Whether the entries in the indices vectors ia, - ja are already in local numbering. -
-Scope:local. -
-Type:optional. -
-Specified as: a logical value; default: .false.. - -

-

-
- -

-

-
On Return
-
-
-
a
-
the matrix into which coefficients will be inserted. -
-Scope:local -
-Type:required -
-Intent: inout. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
desc_a
-
The communication descriptor. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: a variable of type descdatapsb_desc_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. On entry to this routine the descriptor may be in either the - build or assembled state. -
  2. -
  3. On entry to this routine the sparse matrix may be in either the - build or update state. -
  4. -
  5. If the descriptor is in the build state, then the sparse matrix - must also be in the build state; the action of the routine is to - (implicitly) call psb_cdins to add entries to the sparsity - pattern; each sparse matrix entry implicitly defines a graph edge, - that is passed to the descriptor routine for the appropriate - processing; -
  6. -
  7. The input data can be passed in either COO or CSR formats; -
  8. -
  9. In COO format the coefficients to be inserted are represented by - the ordered triples -$ia(i),ja(i),val(i)$, for $i=1,\dots,nz$; - these triples should belong to the current process, i.e. $ia(i)$ - should be one of the local indices, but are otherwise arbitrary; -
  10. -
  11. In CSR format the coefficients to be inserted for each input row - are represented by the ordered triples -, for - -; - these triples should belong to the current process, i.e. - should be one of the local indices, but are otherwise arbitrary; -
  12. -
  13. There is no requirement that a given row must be passed in its - entirety to a single call to this routine: the buildup of a row - may be split into as many calls as desired (even in the CSR format); -
  14. -
  15. Coefficients from different rows may also be mixed up freely - in a single call, according to the application needs; -
  16. -
  17. Any coefficients from matrix rows not owned by the calling - process are silently ignored; -
  18. -
  19. If the descriptor is in the assembled state, then any entries in - the sparse matrix that would generate additional communication - requirements are ignored; -
  20. -
  21. If the matrix is in the update state, any entries in positions - that were not present in the original matrix are ignored. -
  22. -
- -

- -

- - - - diff --git a/docs/html/node8.html b/docs/html/node8.html deleted file mode 100644 index df750f2a..00000000 --- a/docs/html/node8.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - -Programming model - - - - - - - - - - - - - - - - - - - - -

-Programming model -

- -

-The PSBLAS librarary is based on the Single Program Multiple Data -(SPMD) programming model: each process participating in the -computation performs the same actions on a chunk of data. Parallelism -is thus data-driven. - -

-Because of this structure, many subroutines coordinate their action -across the various processes, thus providing an implicit -synchronization point, and therefore must be -called simultaneously by all processes participating in the -computation. This is certainly true for the data allocation and -assembly routines, for all the computational routines and for some of -the tools routines. - -

-However there are many cases where no synchronization, and indeed no -communication among processes, is implied; for instance, all the routines in -sec. 3 are only acting on the local data structures, -and thus may be called independently. The most important case is that -of the coefficient insertion routines: since the number of -coefficients in the sparse and dense matrices varies among the -processors, and since the user is free to choose an arbitrary order in -builiding the matrix entries, these routines cannot imply a -synchronization. - -

-Throughout this user's guide each subroutine will be clearly indicated -as: -

-
Synchronous:
-
must be called simultaneously by all the - processes in the relevant communication context; -
-
Asynchronous:
-
may be called in a totally independent manner. -
-
- -

- -

- - - - diff --git a/docs/html/node80.html b/docs/html/node80.html deleted file mode 100644 index 295e944c..00000000 --- a/docs/html/node80.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - -psb_spasb -- Sparse matrix assembly routine - - - - - - - - - - - - - - - - - - - - - -

-psb_spasb -- Sparse matrix assembly routine -

- -

-

-call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
afmt
-
the storage format for the sparse matrix. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: an array of characters. Defalt: 'CSR'. -
-
upd
-
Provide for updates to the matrix coefficients. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_ -
-
dupl
-
How to handle duplicate coefficients. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: integer, possible values: psb_dupl_ovwrt_, -psb_dupl_add_, psb_dupl_err_. -
-
mold
-
The desired dynamic type for the internal matrix storage. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. -
-
- -

-

-
On Return
-
-
-
a
-
the matrix to be assembled. -
-Scope:local -
-Type:required -
-Intent: inout. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. On entry to this routine the descriptor must be in the - assembled state, i.e. psb_cdasb must already have been called. -
  2. -
  3. The sparse matrix may be in either the build or update state; -
  4. -
  5. Duplicate entries are detected and handled in both build and - update state, with the exception of the error action that is only - taken in the build state, i.e. on the first assembly; -
  6. -
  7. If the update choice is psb_upd_perm_, then subsequent - calls to psb_spins to update the matrix must be arranged in - such a way as to produce exactly the same sequence of coefficient - values as encountered at the first assembly; -
  8. -
  9. The output storage format need not be the same on all - processes; -
  10. -
  11. On exit from this routine the matrix is in the assembled state, - and thus is suitable for the computational routines. -
  12. -
- -

- -

- - - - diff --git a/docs/html/node81.html b/docs/html/node81.html deleted file mode 100644 index 7320ea14..00000000 --- a/docs/html/node81.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - -psb_spfree -- Frees a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_spfree -- Frees a sparse matrix -

- -

-

-call psb_spfree(a, desc_a, info)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
a
-
the matrix to be freed. -
-Scope:local -
-Type:required -
-Intent: inout. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
- -

-

-
On Return
-
-
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node82.html b/docs/html/node82.html deleted file mode 100644 index e966ada4..00000000 --- a/docs/html/node82.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -psb_sprn -- Reinit sparse matrix structure for psblas routines. - - - - - - - - - - - - - - - - - - - - - -

-psb_sprn -- Reinit sparse matrix structure for psblas - routines. -

- -

-

-call psb_sprn(a, decsc_a, info, clear)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
a
-
the matrix to be reinitialized. -
-Scope:local -
-Type:required -
-Intent: inout. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
clear
-
Choose whether to zero out matrix coefficients -
-Scope:local. -
-Type:optional. -
-Intent: in. -
-Default: true. -
-
- -

-

-
On Return
-
-
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
-Notes - -
    -
  1. On exit from this routine the sparse matrix is in the update - state. -
  2. -
- -

-


- - - diff --git a/docs/html/node83.html b/docs/html/node83.html deleted file mode 100644 index 65e4c10e..00000000 --- a/docs/html/node83.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - -psb_geall -- Allocates a dense matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_geall -- Allocates a dense matrix -

- -

-

-call psb_geall(x, desc_a, info, n, lb)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
desc_a
-
The communication descriptor. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a variable of type descdatapsb_desc_type. -
-
n
-
The number of columns of the dense matrix to be allocated. -
-Scope: local -
-Type: optional -
-Intent: in. -
-Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a -rank-1 array. -
-
lb
-
The lower bound for the column index range of the dense matrix to be allocated. -
-Scope: local -
-Type: optional -
-Intent: in. -
-Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a -rank-1 array. -
-
- -

-

-
On Return
-
-
-
x
-
The dense matrix to be allocated. -
-Scope: local -
-Type: required -
-Intent: out. -
-Specified as: a rank one or two array with the ALLOCATABLE attribute -or an object of type vdatapsb_T_vect_type, of type real, complex or integer. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node84.html b/docs/html/node84.html deleted file mode 100644 index 26821fda..00000000 --- a/docs/html/node84.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - -psb_geins -- Dense matrix insertion routine - - - - - - - - - - - - - - - - - - - - - -

-psb_geins -- Dense matrix insertion routine -

- -

-

-call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
m
-
Number of rows in $val$ to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an integer value. -
-
irw
-
Indices of the rows to be inserted. Specifically, row $i$ - of $val$ will be inserted into the local row corresponding to the - global row index $irw(i)$. -Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: an integer array. -
-
val
-
the dense submatrix to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a rank 1 or 2 array. -Specified as: an integer value. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
dupl
-
How to handle duplicate coefficients. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: integer, possible values: psb_dupl_ovwrt_, -psb_dupl_add_. -
-
local
-
Whether the entries in the index vector irw, - are already in local numbering. -
-Scope:local. -
-Type:optional. -
-Specified as: a logical value; default: .false.. - -

-

-
- -

-

-
On Return
-
-
-
x
-
the output dense matrix. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type, of -type real, complex or integer. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. Dense vectors/matrices do not have an associated state; -
  2. -
  3. Duplicate entries are either overwritten or added, there is no - provision for raising an error condition. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node85.html b/docs/html/node85.html deleted file mode 100644 index 3a23b931..00000000 --- a/docs/html/node85.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - -psb_geasb -- Assembly a dense matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_geasb -- Assembly a dense matrix -

- -

-

-call psb_geasb(x, desc_a, info, mold)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
desc_a
-
The communication descriptor. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a variable of type descdatapsb_desc_type. -
-
mold
-
The desired dynamic type for the internal vector storage. -
-Scope: local. -
-Type: optional. -
-Intent: in. -
-Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is -only allowed when $x$ is of type vdatapsb_T_vect_type. -
-
- -

-

-
On Return
-
-
-
x
-
The dense matrix to be assembled. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array with the ALLOCATABLE or an -object of type vdatapsb_T_vect_type, of type real, complex or integer. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
-

- - - diff --git a/docs/html/node86.html b/docs/html/node86.html deleted file mode 100644 index e1744ccb..00000000 --- a/docs/html/node86.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - -psb_gefree -- Frees a dense matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_gefree -- Frees a dense matrix -

- -

-

-call psb_gefree(x, desc_a, info)
-
- -

-

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
x
-
The dense matrix to - be freed. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a rank one or two array with the ALLOCATABLE or an -object of type vdatapsb_T_vect_type, of type real, complex or integer. -
-

-

-
desc_a
-
The communication descriptor. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a variable of type descdatapsb_desc_type. -
-
- -

-

-
On Return
-
-
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node87.html b/docs/html/node87.html deleted file mode 100644 index dbb80998..00000000 --- a/docs/html/node87.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - -psb_gelp -- Applies a left permutation to a dense matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_gelp -- Applies a left permutation to a dense - matrix -

- -

-

-call psb_gelp(trans, iperm, x, info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
trans
-
A character that specifies whether to permute $A$ or $A^T$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$. -
-
iperm
-
An integer array containing permutation information. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: an integer one-dimensional array. -
-
x
-
The dense matrix to be permuted. -
-Scope: local -
-Type: required -
-Intent: inout. -
-Specified as: a one or two dimensional array. -
-
- -

-

-
On Return
-
-
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node88.html b/docs/html/node88.html deleted file mode 100644 index 56205478..00000000 --- a/docs/html/node88.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - -psb_glob_to_loc -- Global to local indices convertion - - - - - - - - - - - - - - - - - - - - - -

-psb_glob_to_loc -- Global to local indices - convertion -

- -

-

-call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
-call psb_glob_to_loc(x, desc_a, info, iact,owned)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
x
-
An integer vector of indices to be converted. -
-Scope: local -
-Type: required -
-Intent: in, inout. -
-Specified as: a rank one integer array. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
iact
-
specifies action to be taken in case of range errors. -Scope: global -
-Type: optional -
-Intent: in. -
-Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -
-
owned
-
Specfies valid range of input -Scope: global -
-Type: optional -
-Intent: in. -
-If true, then only indices strictly owned by the current process are -considered valid, if false then halo indices are also -accepted. Default: false. -
-
- -

-

-
On Return
-
-
-
x
-
If $y$ is not present, - then $x$ is overwritten with the translated integer indices. -Scope: global -
-Type: required -
-Intent: inout. -
-Specified as: a rank one integer array. -
-
y
-
If $y$ is present, - then $y$ is overwritten with the translated integer indices, and $x$ - is left unchanged. -Scope: global -
-Type: optional -
-Intent: out. -
-Specified as: a rank one integer array. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. If an input index is out of range, then the corresponding output - index is set to a negative number; -
  2. -
  3. The default Ignore means that the negative output is the - only action taken on an out-of-range input. -
  4. -
- -

- -

- - - - diff --git a/docs/html/node89.html b/docs/html/node89.html deleted file mode 100644 index ac275095..00000000 --- a/docs/html/node89.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - -psb_loc_to_glob -- Local to global indices conversion - - - - - - - - - - - - - - - - - - - - - -

-psb_loc_to_glob -- Local to global indices - conversion -

- -

-

-call psb_loc_to_glob(x, y, desc_a, info, iact)
-call psb_loc_to_glob(x, desc_a, info, iact)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
x
-
An integer vector of indices to be converted. -
-Scope: local -
-Type: required -
-Intent: in, inout. -
-Specified as: a rank one integer array. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
iact
-
specifies action to be taken in case of range errors. -Scope: global -
-Type: optional -
-Intent: in. -
-Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -
-
- -

-

-
On Return
-
-
-
x
-
If $y$ is not present, - then $x$ is overwritten with the translated integer indices. -Scope: global -
-Type: required -
-Intent: inout. -
-Specified as: a rank one integer array. -
-
y
-
If $y$ is not present, - then $y$ is overwritten with the translated integer indices, and $x$ - is left unchanged. -Scope: global -
-Type: optional -
-Intent: out. -
-Specified as: a rank one integer array. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-


- - - diff --git a/docs/html/node9.html b/docs/html/node9.html deleted file mode 100644 index 754b8bef..00000000 --- a/docs/html/node9.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - -Data Structures and Classes - - - - - - - - - - - - - - - - - - - - - -

- -
-Data Structures and Classes -

- -

-In this chapter we illustrate the data structures used for definition of -routines interfaces. They include data structures for sparse matrices, -communication descriptors and preconditioners. -

-All the data types and the basic subroutine interfaces related to -descriptors and sparse matrices are defined in -the module psb_base_mod; this will have to be included by every -user subroutine that makes use of the library. The preconditioners are -defined in the module psb_prec_mod - -

-Integer, real and complex data types are parametrized with a kind type -defined in the library as follows: -

-
psb_spk_
-
Kind parameter for short precision real and complex - data; corresponds to a REAL declaration and is - normally 4 bytes; -
-
psb_dpk_
-
Kind parameter for long precision real and complex - data; corresponds to a DOUBLE PRECISION declaration and is - normally 8 bytes; -
-
psb_ipk_
-
Kind parameter for integer data; - with default build options this is a 4 bytes integer, but there is - (highly) experimental support for 8-bytes integers; -
-
psb_mpik_
-
Kind parameter for 4-bytes integer data, as is - always used by MPI; -
-
psb_long_int_k_
-
Kind parameter for long (8 bytes) integers, - which are always used by the sizeof methods. -
-
-Together with the classes attributes we also discuss their -methods. Most methods detailed here only act on the local variable, -i.e. their action is purely local and asynchronous unless otherwise -stated. -The list of methods here is not completely exhaustive; many methods, -especially those that alter the contents of the various objects, are -usually not needed by the end-user, and therefore are described in the -developer's documentation. - -

-


- -Subsections - - - - - - - - - diff --git a/docs/html/node90.html b/docs/html/node90.html deleted file mode 100644 index aaf6d3e3..00000000 --- a/docs/html/node90.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -psb_is_owned -- - - - - - - - - - - - - - - - - - - - - - -

-psb_is_owned -- -

- -

-

-call psb_is_owned(x, desc_a)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
x
-
Integer index. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a scalar integer. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
- -

-

-
On Return
-
-
-
Function value
-
A logical mask which is true if - $x$ is owned by the current process -Scope: local -
-Type: required -
-Intent: out. -
-
- -

-Notes - -

    -
  1. This routine returns a .true. value for an index - that is strictly owned by the current process, excluding the halo - indices -
  2. -
- -

-


- - - diff --git a/docs/html/node91.html b/docs/html/node91.html deleted file mode 100644 index d2bd979c..00000000 --- a/docs/html/node91.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - -psb_owned_index -- - - - - - - - - - - - - - - - - - - - - - -

-psb_owned_index -- -

- -

-

-call psb_owned_index(y, x, desc_a, info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
x
-
Integer indices. -
-Scope: local -
-Type: required -
-Intent: in, inout. -
-Specified as: a scalar or a rank one integer array. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
iact
-
specifies action to be taken in case of range errors. -Scope: global -
-Type: optional -
-Intent: in. -
-Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -
-
- -

-

-
On Return
-
-
-
y
-
A logical mask which is true for all corresponding entries of - $x$ that are owned by the current process -Scope: local -
-Type: required -
-Intent: out. -
-Specified as: a scalar or rank one logical array. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. This routine returns a .true. value for those indices - that are strictly owned by the current process, excluding the halo - indices -
  2. -
- -

-


- - - diff --git a/docs/html/node92.html b/docs/html/node92.html deleted file mode 100644 index a3c4d4b6..00000000 --- a/docs/html/node92.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -psb_is_local -- - - - - - - - - - - - - - - - - - - - - - -

-psb_is_local -- -

- -

-

-call psb_is_local(x, desc_a)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
x
-
Integer index. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a scalar integer. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
- -

-

-
On Return
-
-
-
Function value
-
A logical mask which is true if - $x$ is local to the current process -Scope: local -
-Type: required -
-Intent: out. -
-
- -

-Notes - -

    -
  1. This routine returns a .true. value for an index - that is local to the current process, including the halo - indices -
  2. -
- -

-


- - - diff --git a/docs/html/node93.html b/docs/html/node93.html deleted file mode 100644 index 3a12cab9..00000000 --- a/docs/html/node93.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - -psb_local_index -- - - - - - - - - - - - - - - - - - - - - - -

-psb_local_index -- -

- -

-

-call psb_local_index(y, x, desc_a, info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
x
-
Integer indices. -
-Scope: local -
-Type: required -
-Intent: in, inout. -
-Specified as: a scalar or a rank one integer array. -
-
desc_a
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
iact
-
specifies action to be taken in case of range errors. -Scope: global -
-Type: optional -
-Intent: in. -
-Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -
-
- -

-

-
On Return
-
-
-
y
-
A logical mask which is true for all corresponding entries of - $x$ that are local to the current process -Scope: local -
-Type: required -
-Intent: out. -
-Specified as: a scalar or rank one logical array. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. This routine returns a .true. value for those indices - that are local to the current process, including the halo - indices. -
  2. -
- -

-


- - - diff --git a/docs/html/node94.html b/docs/html/node94.html deleted file mode 100644 index 41a1b858..00000000 --- a/docs/html/node94.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - -psb_get_boundary -- Extract list of boundary elements - - - - - - - - - - - - - - - - - - - - - -

-psb_get_boundary -- Extract list of boundary - elements -

- -

-

-call psb_get_boundary(bndel, desc, info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
- -

-

-
On Return
-
-
-
bndel
-
The list of boundary elements on the calling process, in - local numbering. -
-Scope: local -
-Type: required -
-Intent: out. -
-Specified as: a rank one array with the ALLOCATABLE -attribute, of type integer. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. If there are no boundary elements (i.e., if the local part of - the connectivity graph is self-contained) the output vector is set - to the “not allocated” state. -
  2. -
  3. Otherwise the size of bndel will be exactly equal to the - number of boundary elements. -
  4. -
- -

-


- - - diff --git a/docs/html/node95.html b/docs/html/node95.html deleted file mode 100644 index 07d57981..00000000 --- a/docs/html/node95.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - -psb_get_overlap -- Extract list of overlap elements - - - - - - - - - - - - - - - - - - - - - -

-psb_get_overlap -- Extract list of overlap - elements -

- -

-

-call psb_get_overlap(ovrel, desc, info)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
desc
-
the communication descriptor. -
-Scope:local. -
-Type:required. -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
- -

-

-
On Return
-
-
-
ovrel
-
The list of overlap elements on the calling process, in - local numbering. -
-Scope: local -
-Type: required -
-Intent: out. -
-Specified as: a rank one array with the ALLOCATABLE -attribute, of type integer. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. If there are no overlap elements the output vector is set - to the “not allocated” state. -
  2. -
  3. Otherwise the size of ovrel will be exactly equal to the - number of overlap elements. -
  4. -
- -

-


- - - diff --git a/docs/html/node96.html b/docs/html/node96.html deleted file mode 100644 index 2736fbfb..00000000 --- a/docs/html/node96.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - -psb_sp_getrow -- Extract row(s) from a sparse matrix - - - - - - - - - - - - - - - - - - - - - -

-psb_sp_getrow -- Extract row(s) from a sparse - matrix -

- -

-

-call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
-              & append, nzin, lrw)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
row
-
The (first) row to be extracted. -
-Scope:local -
-Type:required -
-Intent: in. -
-Specified as: an integer $>0$. -
-
a
-
the matrix from which to get rows. -
-Scope:local -
-Type:required -
-Intent: in. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
append
-
Whether to append or overwrite existing output. -
-Scope:local -
-Type:optional -
-Intent: in. -
-Specified as: a logical value default: false (overwrite). -
-
nzin
-
Input size to be appended to. -
-Scope:local -
-Type:optional -
-Intent: in. -
-Specified as: an integer $>0$. When append is true, specifies how many -entries in the output vectors are already filled. -
-
lrw
-
The last row to be extracted. -
-Scope:local -
-Type:optional -
-Intent: in. -
-Specified as: an integer $>0$, default: $row$. - -

-

-
- -

-

-
On Return
-
-
-
nz
-
the number of elements returned by this call. -
-Scope:local. -
-Type:required. -
-Intent: out. -
-Returned as: an integer scalar. -
-
ia
-
the row indices. -
-Scope:local. -
-Type:required. -
-Intent: inout. -
-Specified as: an integer array with the ALLOCATABLE attribute. -
-
ja
-
the column indices of the elements to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: inout. -
-Specified as: an integer array with the ALLOCATABLE attribute. -
-
val
-
the elements to be inserted. -
-Scope:local. -
-Type:required. -
-Intent: inout. -
-Specified as: a real array with the ALLOCATABLE attribute. -
-
info
-
Error code. -
-Scope: local -
-Type: required -
-Intent: out. -
-An integer value; 0 means no error has been detected. -
-
- -

-Notes - -

    -
  1. The output $nz$ is always the size of the output generated by - the current call; thus, if append=.true., the total output - size will be $nzin+nz$, with the newly extracted coefficients stored in - entries nzin+1:nzin+nz of the array arguments; -
  2. -
  3. When append=.true. the output arrays are reallocated as - necessary; -
  4. -
  5. The row and column indices are returned in the local numbering - scheme; if the global numbering is desired, the user may employ the - psb_loc_to_glob routine on the output. -
  6. -
- -

- -

- - - - diff --git a/docs/html/node97.html b/docs/html/node97.html deleted file mode 100644 index 9a446831..00000000 --- a/docs/html/node97.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -psb_sizeof -- Memory occupation - - - - - - - - - - - - - - - - - - - - - -

-psb_sizeof -- Memory occupation -

- -

-This function computes the memory occupation of a PSBLAS object. - -

-

-isz = psb_sizeof(a)
-isz = psb_sizeof(desc_a)
-isz = psb_sizeof(prec)
-
- -

-

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
a
-
A sparse matrix -$A$. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type spdatapsb_Tspmat_type. -
-
desc_a
-
Communication descriptor. -
-Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a structured data of type descdatapsb_desc_type. -
-
prec
-
Scope: local -
-Type: required -
-Intent: in. -
-Specified as: a preconditioner data structure precdatapsb_prec_type. -
-
On Return
-
-
-
Function value
-
The memory occupation of the object specified in - the calling sequence, in bytes. -
-Scope: local -
-Returned as: an integer(psb_long_int_k_) number. -
-
- -

-


- - - diff --git a/docs/html/node98.html b/docs/html/node98.html deleted file mode 100644 index 5625baef..00000000 --- a/docs/html/node98.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - -Sorting utilities -- - - - - - - - - - - - - - - - - - - - - -

-Sorting utilities -- -

- -

-psb_msort -- Sorting by the Merge-sort - algorithm - -

-psb_qsort -- Sorting by the Quicksort - algorithm - -

-psb_hsort -- Sorting by the Heapsort algorithm -

-call psb_msort(x,ix,dir,flag)
-call psb_qsort(x,ix,dir,flag)
-call psb_hsort(x,ix,dir,flag)
-
- -

-These serial routines sort a sequence $X$ into ascending or -descending order. The argument meaning is identical for the three -calls; the only difference is the algorithm used to accomplish the -task (see Usage Notes below). -

-
Type:
-
Asynchronous. -
-
On Entry
-
-
-
x
-
The sequence to be sorted. -
-Type:required. -
-Specified as: an integer, real or complex array of rank 1. -
-
ix
-
A vector of indices. -
-Type:optional. -
-Specified as: an integer array of (at least) the same size as $X$. -
-
dir
-
The desired ordering. -
-Type:optional. -
-Specified as: an integer value:
-
Integer and real data:
-
psb_sort_up_, -psb_sort_down_, psb_asort_up_, psb_asort_down_; -default psb_sort_up_. -
-
Complex data:
-
psb_lsort_up_, -psb_lsort_down_, psb_asort_up_, psb_asort_down_; -default psb_lsort_up_. -
-
-
-
flag
-
Whether to keep the original values in $IX$. -
-Type:optional. -
-Specified as: an integer value psb_sort_ovw_idx_ or -psb_sort_keep_idx_; default psb_sort_ovw_idx_. - -

-

-
- -

-

-
On Return
-
-
-
x
-
The sequence of values, in the chosen ordering. -
-Type:required. -
-Specified as: an integer, real or complex array of rank 1. -
-
ix
-
A vector of indices. -
-Type: Optional -
-An integer array of rank 1, whose entries are moved to the same -position as the corresponding entries in $x$. -
-
- -

- -

-Notes - -

    -
  1. For integer or real data the sorting can be performed in the up/down direction, on the - natural or absolute values; -
  2. -
  3. For complex data the sorting can be done in a lexicographic - order (i.e.: sort on the real part with ties broken according to - the imaginary part) or on the absolute values; -
  4. -
  5. The routines return the items in the chosen ordering; the - output difference is the handling of ties (i.e. items with an - equal value) in the original input. With the merge-sort algorithm - ties are preserved in the same relative order as they had in the - original sequence, while this is not guaranteed for quicksort or - heapsort; -
  6. -
  7. If -$flag = psb\_sort\_ovw\_idx\_$ then the entries in $ix(1:n)$ - where $n$ is the size of $x$ are initialized to -$ix(i) \leftarrow
-i$; thus, upon return from the subroutine, for each - index $i$ we have in $ix(i)$ the position that the item $x(i)$ - occupied in the original data sequence; -
  8. -
  9. If -$flag = psb\_sort\_keep\_idx\_$ the routine will assume that - the entries in $ix(:)$ have already been initialized by the user; -
  10. -
  11. The three sorting algorithms have a similar $O(n \log n)$ expected - running time; in the average case quicksort will be the - fastest and merge-sort the slowest. However note that: - -
      -
    1. The worst case running time for quicksort is $O(n^2)$; the algorithm - implemented here follows the well-known median-of-three heuristics, - but the worst case may still apply; -
    2. -
    3. The worst case running time for merge-sort and heap-sort is - $O(n \log n)$ as the average case; -
    4. -
    5. The merge-sort algorithm is implemented to take advantage of - subsequences that may be already in the desired ordering prior to - the subroutine call; this situation is relatively common when - dealing with groups of indices of sparse matrix entries, thus - merge-sort is the preferred choice when a sorting is needed - by other routines in the library. -
    6. -
    -
  12. -
- -

- -

- -

- - - - diff --git a/docs/html/node99.html b/docs/html/node99.html deleted file mode 100644 index 24fa37b8..00000000 --- a/docs/html/node99.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - -Parallel environment routines - - - - - - - - - - - - - - - - - - - - - -

- -
-Parallel environment routines -

- -

-


- -Subsections - - - -

- - - diff --git a/docs/html/prev.png b/docs/html/prev.png deleted file mode 100644 index e60b8b4073572dcd83b07c60b082ea6e2ba394c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmV+y0qFjTP)fWJ4@hJr9=)Yx5|PDs2VC9?nk002ovPDHLkV1i^Ya=-up diff --git a/docs/html/prev_g.png b/docs/html/prev_g.png deleted file mode 100644 index 476d9568c900e2ada6c2019b67eeee166a5f1288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5B&P)18~ zIpil5yY|hg&aw;rvXQ~olHp&x|G5Aw{ug* Z|8M28X+2RX!WaMm002ovPDHLkV1gF^iYx#C diff --git a/docs/html/up.png b/docs/html/up.png deleted file mode 100644 index 3937e168f44bc997766dbe3b9383bd1db44f094d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)h#LU3J`0lmo0U(Dbz$e6Y|Ni~?`T5VEKaXZ$ zILr2UCs3TRB*-tA!Qt7BG$5zc)5S5QVoq$YAz!lrkL&!DV=`*aVJGv=2TrrsUKR?`=XF~0x$5q(BOL&qeQ?X^G$FnGH9 KxvX2RVNRAoooEaAn8>@(e1sRI!V#<^f)p#-WVQt^!{}{R!<_yH~7!&%|GmpxjXG& eckJV{U(78Bbom$-1qlM(%HZkh=d#Wzp$Pz8Iac=o diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css deleted file mode 100644 index d1824aff..00000000 --- a/docs/html/userhtml.css +++ /dev/null @@ -1,30 +0,0 @@ -/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ -.MATH { font-family: "Century Schoolbook", serif; } -.MATH I { font-family: "Century Schoolbook", serif; font-style: italic } -.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } - -/* implement both fixed-size and relative sizes */ -SMALL.XTINY { font-size : xx-small } -SMALL.TINY { font-size : x-small } -SMALL.SCRIPTSIZE { font-size : smaller } -SMALL.FOOTNOTESIZE { font-size : small } -SMALL.SMALL { } -BIG.LARGE { } -BIG.XLARGE { font-size : large } -BIG.XXLARGE { font-size : x-large } -BIG.HUGE { font-size : larger } -BIG.XHUGE { font-size : xx-large } - -/* heading styles */ -H1 { } -H2 { } -H3 { } -H4 { } -H5 { } - -/* mathematics styles */ -DIV.displaymath { } /* math displays */ -TD.eqno { } /* equation-number cells */ - - -/* document-specific styles come next */ diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html deleted file mode 100644 index 45b74cb0..00000000 --- a/docs/html/userhtml.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - -userhtml - - - - - - - - - - - - - - - - - -language=Fortran - -

-PSBLAS -
-
-User's and Reference - Guide
-
A reference guide for the Parallel Sparse BLAS library -
-
-
-
Salvatore Filippone -
-Alfredo Buttari
-
-Software version: 3.6.1 -
-May 31st, 2019 - -


- - - - - -

- - - diff --git a/docs/src/Makefile b/docs/src/Makefile index 65574507..9f08cb4c 100644 --- a/docs/src/Makefile +++ b/docs/src/Makefile @@ -113,6 +113,7 @@ DATE = $(shell date +%Y-%m-%d) # LATEX = latex LTX2HTML = latex2html -local_icons +LTX2HTML = htlatex PDFLATEX = pdflatex ACRO = evince XPDF = xpdf @@ -140,9 +141,10 @@ GXS = $(join $(BASEFILE),.gxs) GLX = $(join $(BASEFILE),.glx) TARGETPDF= ../psblas-3.6.pdf BASEHTML = $(patsubst %.tex,%,$(HTMLFILE)) -HTML = $(join $(HTMLFILE),.html) +HTML = $(join $(BASEHTML),.html) HTMLDIR = ../html HTMLFLAGS = -noaddress +HTMLFLAGS = "html,3" FIGURES = $(sort $(wildcard $(FIGDIR)/*)) GLOFILES:= $(sort $(wildcard lib/*.gdf)) @@ -159,9 +161,9 @@ TEXLNFIL = $(addprefix $(PWD)/,$(TEXFILES)) #============================================================================ all: pdf html - + pdf: $(PDF) copypdf -html: $(HTML) +html: $(HTML) copyhtml $(PDF): $(TEXFILES) $(LIBFILES) $(FIGURES) Makefile $(header) @@ -184,19 +186,21 @@ copypdf: $(HTML): $(TEXFILES) $(LIBFILES) $(FIGURES) Makefile $(header) $(initialize) - $(latex-filter) + $(pdflatex-filter) ifneq ($(BIBFILES),) $(bibtex) - $(latex-filter) + $(pdflatex-filter) endif ifneq ($(GLOFILES),) $(glosstex) - $(latex-filter) + $(pdflatex-filter) endif # $(makeindex) - $(latex-filter) $(ltx2html-filter) +copyhtml: + $(ltx2html-cpy) + $(PS): $(PDF) $(PDF2PS) $< $(PS) @@ -328,7 +332,16 @@ define ltx2html-filter @echo "----- latex -------------------------------------------------------" @echo -n "Starting: "; date @echo - cd tmp; ($(LTX2HTML) $(HTMLFLAGS) -dir ../$(HTMLDIR) $(HTMLFILE) 2>&1) | $(FILTER) +# cd tmp; ($(LTX2HTML) $(HTMLFLAGS) -dir ../$(HTMLDIR) $(HTMLFILE) 2>&1) | $(FILTER) + cd tmp; ($(LTX2HTML) $(HTMLFILE) $(HTMLFLAGS) 2>&1) | $(FILTER) +endef + +define ltx2html-cpy + @echo + @echo "----- latex -------------------------------------------------------" + @echo -n "Starting: "; date + @echo + cd tmp; (cp *.css *.html *.png ../$(HTMLDIR)); (cp $(HTML) ../$(HTMLDIR)/index.html) endef #---------------------------------------------------------------------------- diff --git a/docs/src/commrout.tex b/docs/src/commrout.tex index 1c66b2fb..75b321e3 100644 --- a/docs/src/commrout.tex +++ b/docs/src/commrout.tex @@ -8,8 +8,7 @@ The routines in this chapter implement various global communication operators on vectors associated with a discretization mesh. For auxiliary communication routines not tied to a discretization space see~\ref{sec:toolsrout}. -\clearpage\subsection*{psb\_halo --- Halo Data Communication} -\addcontentsline{toc}{subsection}{psb\_halo} +\clearpage\subsection{psb\_halo --- Halo Data Communication} These subroutines gathers the values of the halo @@ -162,8 +161,7 @@ following: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_ovrl --- Overlap Update} -\addcontentsline{toc}{subsection}{psb\_ovrl} +\clearpage\subsection{psb\_ovrl --- Overlap Update} These subroutines applies an overlap operator to the input vector: @@ -354,8 +352,7 @@ following (showing a transition among the two subdomains) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_gather --- Gather Global Dense Matrix} -\addcontentsline{toc}{subsection}{psb\_gather} +\clearpage\subsection{psb\_gather --- Gather Global Dense Matrix} These subroutines collect the portions of global dense matrix distributed over all process into one single array stored on one @@ -456,8 +453,7 @@ An integer value; 0 means no error has been detected. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_scatter --- Scatter Global Dense Matrix} -\addcontentsline{toc}{subsection}{psb\_scatter} +\clearpage\subsection{psb\_scatter --- Scatter Global Dense Matrix} These subroutines scatters the portions of global dense matrix owned by a process to all the processes in the processes grid. diff --git a/docs/src/datastruct.tex b/docs/src/datastruct.tex index 3868514a..a211893f 100644 --- a/docs/src/datastruct.tex +++ b/docs/src/datastruct.tex @@ -178,8 +178,7 @@ state, which can take the following values: \subsubsection{Descriptor Methods} -\subsubsection*{get\_local\_rows --- Get number of local rows} -\addcontentsline{toc}{paragraph}{get\_local\_rows} +\subsubsection{get\_local\_rows --- Get number of local rows} \begin{verbatim} nr = desc%get_local_rows() @@ -204,8 +203,7 @@ Scope: {\bf local}.\\ \end{description} -\subsubsection*{get\_local\_cols --- Get number of local cols} -\addcontentsline{toc}{paragraph}{get\_local\_cols} +\subsubsection{get\_local\_cols --- Get number of local cols} \begin{verbatim} nc = desc%get_local_cols() @@ -231,8 +229,7 @@ Scope: {\bf local}.\\ \end{description} -\subsubsection*{get\_global\_rows --- Get number of global rows} -\addcontentsline{toc}{paragraph}{get\_global\_rows} +\subsubsection{get\_global\_rows --- Get number of global rows} \begin{verbatim} nr = desc%get_global_rows() @@ -254,8 +251,7 @@ Scope: {\bf local}.\\ global index space. \end{description} -\subsubsection*{get\_global\_cols --- Get number of global cols} -\addcontentsline{toc}{paragraph}{get\_global\_cols} +\subsubsection{get\_global\_cols --- Get number of global cols} \begin{verbatim} nr = desc%get_global_cols() @@ -278,8 +274,7 @@ Scope: {\bf local}.\\ \end{description} -\subsubsection*{get\_global\_indices --- Get vector of global indices} -\addcontentsline{toc}{paragraph}{get\_global\_indices} +\subsubsection{get\_global\_indices --- Get vector of global indices} \begin{verbatim} myidx = desc%get_global_indices([owned]) @@ -307,8 +302,7 @@ Type: {\bf optional}; default: \verb|.true.|.\\ -\subsubsection*{get\_context --- Get communication context} -\addcontentsline{toc}{paragraph}{get\_context} +\subsubsection{get\_context --- Get communication context} \begin{verbatim} ictxt = desc%get_context() @@ -329,8 +323,7 @@ Scope: {\bf local}.\\ \item[Function value] The communication context. \end{description} -\subsubsection*{Clone --- clone current object} -\addcontentsline{toc}{paragraph}{Clone} +\subsubsection{Clone --- clone current object} \begin{verbatim} call desc%clone(descout,info) @@ -353,8 +346,7 @@ Scope: {\bf local}.\\ \end{description} -\subsubsection*{CNV --- convert internal storage format} -\addcontentsline{toc}{paragraph}{CNV} +\subsubsection{CNV --- convert internal storage format} \begin{verbatim} call desc%cnv(mold) @@ -377,9 +369,8 @@ accelerators. -\subsubsection*{psb\_cd\_get\_large\_threshold --- Get threshold for +\subsubsection{psb\_cd\_get\_large\_threshold --- Get threshold for index mapping switch} -\addcontentsline{toc}{paragraph}{psb\_cd\_get\_large\_threshold} \begin{verbatim} ith = psb_cd_get_large_threshold() @@ -394,9 +385,8 @@ ith = psb_cd_get_large_threshold() -\subsubsection*{psb\_cd\_set\_large\_threshold --- Set threshold for +\subsubsection{psb\_cd\_set\_large\_threshold --- Set threshold for index mapping switch} -\addcontentsline{toc}{paragraph}{psb\_cd\_set\_large\_threshold} \begin{verbatim} call psb_cd_set_large_threshold(ith) @@ -517,8 +507,7 @@ variants are obtained by conversion to/from it. \subsubsection{Sparse Matrix Methods} -\subsubsection*{get\_nrows --- Get number of rows in a sparse matrix} -\addcontentsline{toc}{paragraph}{get\_nrows} +\subsubsection{get\_nrows --- Get number of rows in a sparse matrix} \begin{verbatim} nr = a%get_nrows() @@ -540,9 +529,8 @@ Scope: {\bf local}\\ \end{description} -\subsubsection*{get\_ncols --- Get number of columns in a sparse +\subsubsection{get\_ncols --- Get number of columns in a sparse matrix} -\addcontentsline{toc}{paragraph}{get\_ncols} \begin{verbatim} nc = a%get_ncols() @@ -564,9 +552,8 @@ Scope: {\bf local}\\ \end{description} -\subsubsection*{get\_nnzeros --- Get number of nonzero elements +\subsubsection{get\_nnzeros --- Get number of nonzero elements in a sparse matrix} -\addcontentsline{toc}{paragraph}{get\_nnzeros} \begin{verbatim} nz = a%get_nnzeros() @@ -594,9 +581,8 @@ Scope: {\bf local}\\ value for the same matrix may be different for different storage choices. \end{enumerate} -\subsubsection*{get\_size --- Get maximum number of nonzero elements +\subsubsection{get\_size --- Get maximum number of nonzero elements in a sparse matrix} -\addcontentsline{toc}{paragraph}{get\_size } \begin{verbatim} maxnz = a%get_size() @@ -618,9 +604,8 @@ Scope: {\bf local}\\ be stored in sparse matrix \verb|a| using its current memory allocation. \end{description} -\subsubsection*{sizeof --- Get memory occupation in bytes +\subsubsection{sizeof --- Get memory occupation in bytes of a sparse matrix} -\addcontentsline{toc}{paragraph}{sizeof } \begin{verbatim} memory_size = a%sizeof() @@ -642,8 +627,7 @@ Scope: {\bf local}\\ \end{description} -\subsubsection*{get\_fmt --- Short description of the dynamic type} -\addcontentsline{toc}{paragraph}{get\_fmt } +\subsubsection{get\_fmt --- Short description of the dynamic type} \begin{verbatim} write(*,*) a%get_fmt() @@ -666,8 +650,7 @@ Scope: {\bf local}\\ \verb|CSR| and \verb|CSC|. \end{description} -\subsubsection*{is\_bld, is\_upd, is\_asb --- Status check} -\addcontentsline{toc}{paragraph}{is\_bld, is\_upd, is\_asb } +\subsubsection{is\_bld, is\_upd, is\_asb --- Status check} \begin{verbatim} if (a%is_bld()) then @@ -691,9 +674,8 @@ Scope: {\bf local}\\ matrix is in the Build, Update or Assembled state, respectively. \end{description} -\subsubsection*{is\_lower, is\_upper, is\_triangle, is\_unit --- +\subsubsection{is\_lower, is\_upper, is\_triangle, is\_unit --- Format check} -\addcontentsline{toc}{paragraph}{is\_lower, is\_upper, is\_triangle, is\_unit} \begin{verbatim} if (a%is_triangle()) then @@ -721,8 +703,7 @@ Scope: {\bf local}\\ \end{description} -\subsubsection*{cscnv --- Convert to a different storage format} -\addcontentsline{toc}{paragraph}{cscnv} +\subsubsection{cscnv --- Convert to a different storage format} \begin{verbatim} call a%cscnv(b,info [, type, mold, dupl]) @@ -754,8 +735,7 @@ employed to interface with special devices, such as GPUs and other accelerators. -\subsubsection*{csclip --- Reduce to a submatrix} -\addcontentsline{toc}{paragraph}{csclip} +\subsubsection{csclip --- Reduce to a submatrix} \begin{verbatim} call a%csclip(b,info[,& & imin,imax,jmin,jmax,rscale,cscale]) @@ -782,8 +762,7 @@ A variable of type \verb|psb_Tspmat_type|. \item[info] Return code. \end{description} -\subsubsection*{clean\_zeros --- Eliminate zero coefficients} -\addcontentsline{toc}{paragraph}{clean\_zeros} +\subsubsection{clean\_zeros --- Eliminate zero coefficients} \begin{verbatim} call a%clean_zeros(info) \end{verbatim} @@ -806,8 +785,7 @@ A variable of type \verb|psb_Tspmat_type|. \item[info] Return code. \end{description} -\subsubsection*{get\_diag --- Get main diagonal} -\addcontentsline{toc}{paragraph}{get\_diag} +\subsubsection{get\_diag --- Get main diagonal} \begin{verbatim} call a%get_diag(d,info) \end{verbatim} @@ -828,8 +806,7 @@ A one-dimensional array of the appropriate type. \end{description} -\subsubsection*{clip\_diag --- Cut out main diagonal} -\addcontentsline{toc}{paragraph}{clip\_diag} +\subsubsection{clip\_diag --- Cut out main diagonal} \begin{verbatim} call a%clip_diag(b,info) \end{verbatim} @@ -850,8 +827,7 @@ A variable of type \verb|psb_Tspmat_type|. \end{description} -\subsubsection*{tril --- Return the lower triangle} -\addcontentsline{toc}{paragraph}{tril} +\subsubsection{tril --- Return the lower triangle} \begin{verbatim} call a%tril(l,info[,& & diag,imin,imax,jmin,jmax,rscale,cscale,u]) @@ -884,8 +860,7 @@ A variable of type \verb|psb_Tspmat_type|. \item[info] Return code. \end{description} -\subsubsection*{triu --- Return the upper triangle} -\addcontentsline{toc}{paragraph}{triu} +\subsubsection{triu --- Return the upper triangle} \begin{verbatim} call a%triu(u,info[,& & diag,imin,imax,jmin,jmax,rscale,cscale,l]) @@ -921,8 +896,7 @@ A variable of type \verb|psb_Tspmat_type|. -\subsubsection*{psb\_set\_mat\_default --- Set default storage format} -\addcontentsline{toc}{paragraph}{psb\_set\_mat\_default} +\subsubsection{psb\_set\_mat\_default --- Set default storage format} \begin{verbatim} @@ -941,8 +915,7 @@ Type: required. -\subsubsection*{clone --- Clone current object} -\addcontentsline{toc}{paragraph}{clone} +\subsubsection{clone --- Clone current object} \begin{verbatim} call a%clone(b,info) @@ -1038,8 +1011,7 @@ private memory. \end{figure} \subsubsection{Vector Methods} -\subsubsection*{get\_nrows --- Get number of rows in a dense vector} -\addcontentsline{toc}{paragraph}{get\_nrows} +\subsubsection{get\_nrows --- Get number of rows in a dense vector} \begin{verbatim} nr = v%get_nrows() @@ -1061,9 +1033,8 @@ Scope: {\bf local}\\ \end{description} -\subsubsection*{sizeof --- Get memory occupation in bytes +\subsubsection{sizeof --- Get memory occupation in bytes of a dense vector} -\addcontentsline{toc}{paragraph}{sizeof } \begin{verbatim} memory_size = v%sizeof() @@ -1085,8 +1056,7 @@ Scope: {\bf local}\\ \end{description} -\subsubsection*{set --- Set contents of the vector} -\addcontentsline{toc}{paragraph}{set } +\subsubsection{set --- Set contents of the vector} \begin{verbatim} call v%set(alpha[,first,last]) @@ -1123,8 +1093,7 @@ constant having the appropriate type and kind. Scope: {\bf local}\\ \end{description} -\subsubsection*{get\_vect --- Get a copy of the vector contents} -\addcontentsline{toc}{paragraph}{get\_vect } +\subsubsection{get\_vect --- Get a copy of the vector contents} \begin{verbatim} extv = v%get_vect([n]) @@ -1153,8 +1122,7 @@ Type: {\bf optional}; default: entire vector.\\ array is the same as the internal size of the vector. \end{description} -\subsubsection*{clone --- Clone current object} -\addcontentsline{toc}{paragraph}{clone} +\subsubsection{clone --- Clone current object} \begin{verbatim} call x%clone(y,info) \end{verbatim} diff --git a/docs/src/methods.tex b/docs/src/methods.tex index 6a80f92c..4b2f8b66 100644 --- a/docs/src/methods.tex +++ b/docs/src/methods.tex @@ -11,9 +11,8 @@ the module \verb|psb_krylov_mod|. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_krylov \label{krylov} --- Krylov Methods Driver +\clearpage\subsection{psb\_krylov \label{krylov} --- Krylov Methods Driver Routine} -\addcontentsline{toc}{subsection}{psb\_krylov} This subroutine is a driver that provides a general interface for all the Krylov-Subspace family methods implemented in PSBLAS version 2. diff --git a/docs/src/penv.tex b/docs/src/penv.tex index 91f010ef..05f9d84d 100644 --- a/docs/src/penv.tex +++ b/docs/src/penv.tex @@ -2,9 +2,8 @@ \section{Parallel environment routines} \label{sec:parenv} -\clearpage\subsection*{psb\_init --- Initializes PSBLAS parallel +\clearpage\subsection{psb\_init --- Initializes PSBLAS parallel environment} -\addcontentsline{toc}{subsection}{psb\_init} \begin{verbatim} call psb_init(icontxt, np, basectxt, ids) @@ -61,9 +60,8 @@ Specified as: an integer variable. \end{enumerate} -\clearpage\subsection*{psb\_info --- Return information about PSBLAS parallel +\clearpage\subsection{psb\_info --- Return information about PSBLAS parallel environment} -\addcontentsline{toc}{subsection}{psb\_info} \begin{verbatim} call psb_info(icontxt, iam, np) @@ -109,9 +107,8 @@ Specified as: an integer variable. \ \end{enumerate} -\clearpage\subsection*{psb\_exit --- Exit from PSBLAS parallel +\clearpage\subsection{psb\_exit --- Exit from PSBLAS parallel environment} -\addcontentsline{toc}{subsection}{psb\_exit} \begin{verbatim} call psb_exit(icontxt) @@ -153,8 +150,7 @@ Specified as: a logical variable, default value: true. \end{enumerate} -\clearpage\subsection*{psb\_get\_mpicomm --- Get the MPI communicator} -\addcontentsline{toc}{subsection}{psb\_get\_mpicomm} +\clearpage\subsection{psb\_get\_mpicomm --- Get the MPI communicator} \begin{verbatim} call psb_get_mpicomm(icontxt, icomm) @@ -181,8 +177,7 @@ Intent: {\bf out}.\\ \end{description} -\clearpage\subsection*{psb\_get\_rank --- Get the MPI rank} -\addcontentsline{toc}{subsection}{psb\_get\_rank} +\clearpage\subsection{psb\_get\_rank --- Get the MPI rank} \begin{verbatim} call psb_get_rank(rank, icontxt, id) @@ -216,8 +211,7 @@ Intent: {\bf out}.\\ -\clearpage\subsection*{psb\_wtime --- Wall clock timing} -\addcontentsline{toc}{subsection}{psb\_wtime} +\clearpage\subsection{psb\_wtime --- Wall clock timing} \begin{verbatim} time = psb_wtime() @@ -233,9 +227,8 @@ Returned as: a \verb|real(psb_dpk_)| variable. \end{description} -\clearpage\subsection*{psb\_barrier --- Sinchronization point parallel +\clearpage\subsection{psb\_barrier --- Sinchronization point parallel environment} -\addcontentsline{toc}{subsection}{psb\_barrier} \begin{verbatim} call psb_barrier(icontxt) @@ -255,8 +248,7 @@ Specified as: an integer variable. \end{description} -\clearpage\subsection*{psb\_abort --- Abort a computation} -\addcontentsline{toc}{subsection}{psb\_abort} +\clearpage\subsection{psb\_abort --- Abort a computation} \begin{verbatim} call psb_abort(icontxt) @@ -278,8 +270,7 @@ Specified as: an integer variable. -\clearpage\subsection*{psb\_bcast --- Broadcast data} -\addcontentsline{toc}{subsection}{psb\_bcast} +\clearpage\subsection{psb\_bcast --- Broadcast data} \begin{verbatim} call psb_bcast(icontxt, dat, root) @@ -324,8 +315,7 @@ Type, kind, rank and size must agree on all processes. \end{description} -\clearpage\subsection*{psb\_sum --- Global sum} -\addcontentsline{toc}{subsection}{psb\_sum} +\clearpage\subsection{psb\_sum --- Global sum} \begin{verbatim} call psb_sum(icontxt, dat, root) @@ -379,8 +369,7 @@ Type, kind, rank and size must agree on all processes. -\clearpage\subsection*{psb\_max --- Global maximum} -\addcontentsline{toc}{subsection}{psb\_max} +\clearpage\subsection{psb\_max --- Global maximum} \begin{verbatim} call psb_max(icontxt, dat, root) @@ -433,8 +422,7 @@ Type, kind, rank and size must agree on all processes. \item The \verb|dat| argument may also be a long integer scalar. \end{enumerate} -\clearpage\subsection*{psb\_min --- Global minimum} -\addcontentsline{toc}{subsection}{psb\_min} +\clearpage\subsection{psb\_min --- Global minimum} \begin{verbatim} call psb_min(icontxt, dat, root) @@ -487,8 +475,7 @@ Type, kind, rank and size must agree on all processes. \item The \verb|dat| argument may also be a long integer scalar. \end{enumerate} -\clearpage\subsection*{psb\_amx --- Global maximum absolute value} -\addcontentsline{toc}{subsection}{psb\_amx} +\clearpage\subsection{psb\_amx --- Global maximum absolute value} \begin{verbatim} call psb_amx(icontxt, dat, root) @@ -541,8 +528,7 @@ Type, kind, rank and size must agree on all processes. \item The \verb|dat| argument may also be a long integer scalar. \end{enumerate} -\clearpage\subsection*{psb\_amn --- Global minimum absolute value} -\addcontentsline{toc}{subsection}{psb\_amn} +\clearpage\subsection{psb\_amn --- Global minimum absolute value} \begin{verbatim} call psb_amn(icontxt, dat, root) @@ -595,8 +581,7 @@ Type, kind, rank and size must agree on all processes. \item The \verb|dat| argument may also be a long integer scalar. \end{enumerate} -\clearpage\subsection*{psb\_nrm2 --- Global 2-norm reduction} -\addcontentsline{toc}{subsection}{psb\_nrm2} +\clearpage\subsection{psb\_nrm2 --- Global 2-norm reduction} \begin{verbatim} call psb_nrm2(icontxt, dat, root) @@ -656,8 +641,7 @@ Kind, rank and size must agree on all processes. -\clearpage\subsection*{psb\_snd --- Send data} -\addcontentsline{toc}{subsection}{psb\_snd} +\clearpage\subsection{psb\_snd --- Send data} \begin{verbatim} call psb_snd(icontxt, dat, dst, m) @@ -708,8 +692,7 @@ same value on sending and receiving processes. \end{enumerate} -\clearpage\subsection*{psb\_rcv --- Receive data} -\addcontentsline{toc}{subsection}{psb\_rcv} +\clearpage\subsection{psb\_rcv --- Receive data} \begin{verbatim} call psb_rcv(icontxt, dat, src, m) diff --git a/docs/src/precs.tex b/docs/src/precs.tex index 6c58bbc0..4cb6d6f5 100644 --- a/docs/src/precs.tex +++ b/docs/src/precs.tex @@ -24,8 +24,7 @@ backward compatibility -\clearpage\subsection*{init --- Initialize a preconditioner} -\addcontentsline{toc}{subsection}{prec\%init} +\clearpage\subsection{init --- Initialize a preconditioner} \begin{verbatim} call prec%init(icontxt,ptype, info) @@ -86,8 +85,7 @@ $ptype$ string as follows\footnote{The string is case-insensitive}: \end{description} -\clearpage\subsection*{build --- Builds a preconditioner} -\addcontentsline{toc}{subsection}{prec\%build} +\clearpage\subsection{build --- Builds a preconditioner} \begin{verbatim} call prec%build(a, desc_a, info[,amold,vmold,imold]) @@ -152,9 +150,8 @@ accelerators. -\clearpage\subsection*{apply --- Preconditioner application +\clearpage\subsection{apply --- Preconditioner application routine} -\addcontentsline{toc}{subsection}{prec\%apply} \begin{verbatim} call prec%apply(x,y,desc_a,info,trans,work) @@ -207,9 +204,8 @@ An integer value; 0 means no error has been detected. -\clearpage\subsection*{descr --- Prints a description of current +\clearpage\subsection{descr --- Prints a description of current preconditioner} -\addcontentsline{toc}{subsection}{prec\%descr} \begin{verbatim} call prec%descr() @@ -240,9 +236,8 @@ all processes will print. Default: 0. -\clearpage\subsection*{clone --- clone current +\clearpage\subsection{clone --- clone current preconditioner} -\addcontentsline{toc}{subsection}{clone} \begin{verbatim} call prec%clone(precout,info) \end{verbatim} @@ -264,8 +259,7 @@ Scope: {\bf local}.\\ \end{description} -\clearpage\subsection*{free --- Free a preconditioner} -\addcontentsline{toc}{subsection}{prec\%free} +\clearpage\subsection{free --- Free a preconditioner} \begin{verbatim} call prec%free(info) diff --git a/docs/src/psbrout.tex b/docs/src/psbrout.tex index d8288093..e5a44c49 100644 --- a/docs/src/psbrout.tex +++ b/docs/src/psbrout.tex @@ -5,8 +5,7 @@ % DENSE MATRIX SUM % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_geaxpby --- General Dense Matrix Sum} -\addcontentsline{toc}{subsection}{psb\_geaxpby} +\clearpage\subsection{psb\_geaxpby --- General Dense Matrix Sum} This subroutine is an interface to the computational kernel for dense matrix sum: @@ -111,8 +110,7 @@ An integer value; 0 means no error has been detected. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_gedot --- Dot Product} -\addcontentsline{toc}{subsection}{psb\_gedot} +\clearpage\subsection{psb\_gedot --- Dot Product} This function computes dot product between two vectors $x$ and $y$.\\ @@ -229,8 +227,7 @@ An integer value; 0 means no error has been detected. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_gedots --- Generalized Dot Product} -\addcontentsline{toc}{subsection}{psb\_gedots} +\clearpage\subsection{psb\_gedots --- Generalized Dot Product} This subroutine computes a series of dot products among the columns of two dense matrices $x$ and $y$: @@ -303,8 +300,7 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_normi --- Infinity-Norm of Vector} -\addcontentsline{toc}{subsection}{psb\_normi} +\clearpage\subsection{psb\_normi --- Infinity-Norm of Vector} This function computes the infinity-norm of a vector $x$.\\ @@ -407,8 +403,7 @@ An integer value; 0 means no error has been detected. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_geamaxs --- Generalized Infinity Norm} -\addcontentsline{toc}{subsection}{psb\_geamaxs} +\clearpage\subsection{psb\_geamaxs --- Generalized Infinity Norm} This subroutine computes a series of infinity norms on the columns of a dense matrix $x$: @@ -469,8 +464,7 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_norm1 --- 1-Norm of Vector} -\addcontentsline{toc}{subsection}{psb\_norm1} +\clearpage\subsection{psb\_norm1 --- 1-Norm of Vector} This function computes the 1-norm of a vector $x$.\\ If $x$ is a real vector @@ -557,8 +551,7 @@ An integer value; 0 means no error has been detected. \end{enumerate} -\clearpage\subsection*{psb\_geasums --- Generalized 1-Norm of Vector} -\addcontentsline{toc}{subsection}{psb\_geasums} +\clearpage\subsection{psb\_geasums --- Generalized 1-Norm of Vector} This subroutine computes a series of 1-norms on the columns of a dense matrix $x$: @@ -631,8 +624,7 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_norm2 --- 2-Norm of Vector} -\addcontentsline{toc}{subsection}{psb\_norm2} +\clearpage\subsection{psb\_norm2 --- 2-Norm of Vector} This function computes the 2-norm of a vector $x$.\\ If $x$ is a real vector @@ -730,8 +722,7 @@ An integer value; 0 means no error has been detected. -\clearpage\subsection*{psb\_genrm2s --- Generalized 2-Norm of Vector} -\addcontentsline{toc}{subsection}{psb\_genrm2s} +\clearpage\subsection{psb\_genrm2s --- Generalized 2-Norm of Vector} This subroutine computes a series of 2-norms on the columns of a dense matrix $x$: @@ -798,8 +789,7 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_norm1 --- 1-Norm of Sparse Matrix} -\addcontentsline{toc}{subsection}{psb\_norm1} +\clearpage\subsection{psb\_norm1 --- 1-Norm of Sparse Matrix} This function computes the 1-norm of a matrix $A$:\\ @@ -863,8 +853,7 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_normi --- Infinity Norm of Sparse Matrix} -\addcontentsline{toc}{subsection}{psb\_normi} +\clearpage\subsection{psb\_normi --- Infinity Norm of Sparse Matrix} This function computes the infinity-norm of a matrix $A$:\\ @@ -928,9 +917,8 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_spmm --- Sparse Matrix by Dense Matrix +\clearpage\subsection{psb\_spmm --- Sparse Matrix by Dense Matrix Product} -\addcontentsline{toc}{subsection}{psb\_spmm} This subroutine computes the Sparse Matrix by Dense Matrix Product: @@ -1081,8 +1069,7 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\clearpage\subsection*{psb\_spsm --- Triangular System Solve} -\addcontentsline{toc}{subsection}{psb\_spsm} +\clearpage\subsection{psb\_spsm --- Triangular System Solve} This subroutine computes the Triangular System Solve: diff --git a/docs/src/toolsrout.tex b/docs/src/toolsrout.tex index 81e354cd..7d81370d 100644 --- a/docs/src/toolsrout.tex +++ b/docs/src/toolsrout.tex @@ -5,8 +5,7 @@ % %% psb_cdall %% % -\subsection*{psb\_cdall --- Allocates a communication descriptor} -\addcontentsline{toc}{subsection}{psb\_cdall} +\subsection{psb\_cdall --- Allocates a communication descriptor} \begin{verbatim} call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts) @@ -196,9 +195,8 @@ An integer value; 0 means no error has been detected. % %% psb_cdins %% % -\clearpage\subsection*{psb\_cdins --- Communication descriptor insert +\clearpage\subsection{psb\_cdins --- Communication descriptor insert routine} -\addcontentsline{toc}{subsection}{psb\_cdins} \begin{verbatim} call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla]) @@ -292,9 +290,8 @@ nor the end vertex belong to the current process. % %% psb_cdasb %% % -\clearpage\subsection*{psb\_cdasb --- Communication descriptor assembly +\clearpage\subsection{psb\_cdasb --- Communication descriptor assembly routine} -\addcontentsline{toc}{subsection}{psb\_cdasb} \begin{verbatim} call psb_cdasb(desc_a, info [, mold]) @@ -340,8 +337,7 @@ An integer value; 0 means no error has been detected. % %% psb_cdcpy %% % -\clearpage\subsection*{psb\_cdcpy --- Copies a communication descriptor} -\addcontentsline{toc}{subsection}{psb\_cdcpy} +\clearpage\subsection{psb\_cdcpy --- Copies a communication descriptor} \begin{verbatim} call psb_cdcpy(desc_in, desc_out, info) @@ -376,8 +372,7 @@ An integer value; 0 means no error has been detected. % %% psb_cdfree %% % -\clearpage\subsection*{psb\_cdfree --- Frees a communication descriptor} -\addcontentsline{toc}{subsection}{psb\_cdfree} +\clearpage\subsection{psb\_cdfree --- Frees a communication descriptor} \begin{verbatim} call psb_cdfree(desc_a, info) @@ -407,9 +402,8 @@ An integer value; 0 means no error has been detected. % %% psb_cdcpy %% % -\clearpage\subsection*{psb\_cdbldext --- Build an extended communication +\clearpage\subsection{psb\_cdbldext --- Build an extended communication descriptor} -\addcontentsline{toc}{subsection}{psb\_cdbldext} \begin{verbatim} call psb_cdbldext(a,desc_a,nl,desc_out, info, extype) @@ -477,9 +471,8 @@ An integer value; 0 means no error has been detected. %% % %% %% psb_cdren %% %% % -%% \subsection*{psb\_cdren --- Applies a renumeration to a +%% \subsection{psb\_cdren --- Applies a renumeration to a %% communication descriptor} -%% \addcontentsline{toc}{subsection}{psb\_cdren} %% \syntax{call psb\_cdren}{trans, iperm, desc\_a, info} @@ -514,8 +507,7 @@ An integer value; 0 means no error has been detected. % %% psb_descprt %% % -%% \subsection*{psb\_cdprt --- Prints a descriptor} -%%\addcontentsline{toc}{subsection}{psb\_cdprt} +%% \subsection{psb\_cdprt --- Prints a descriptor} %% \syntax{call psb\_cdprt}{iout, desc\_a, glob, short} @@ -544,8 +536,7 @@ An integer value; 0 means no error has been detected. % %% psb_spalloc %% % -\clearpage\subsection*{psb\_spall --- Allocates a sparse matrix} -\addcontentsline{toc}{subsection}{psb\_spall} +\clearpage\subsection{psb\_spall --- Allocates a sparse matrix} \begin{verbatim} call psb_spall(a, desc_a, info, nnz) @@ -596,9 +587,8 @@ An integer value; 0 means no error has been detected. % %% psb_spins %% % -\clearpage\subsection*{psb\_spins --- Insert a set of coefficients into a sparse +\clearpage\subsection{psb\_spins --- Insert a set of coefficients into a sparse matrix} -\addcontentsline{toc}{subsection}{psb\_spins} \begin{verbatim} call psb_spins(nz, ia, ja, val, a, desc_a, info [,local]) @@ -723,8 +713,7 @@ An integer value; 0 means no error has been detected. % %% psb_spasb %% % -\clearpage\subsection*{psb\_spasb --- Sparse matrix assembly routine} -\addcontentsline{toc}{subsection}{psb\_spasb} +\clearpage\subsection{psb\_spasb --- Sparse matrix assembly routine} \begin{verbatim} call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold) @@ -798,9 +787,8 @@ An integer value; 0 means no error has been detected. %% % %% %% psb_spcnv %% %% % -%% \subsection*{psb\_spcnv --- Converts a sparse matrix storage +%% \subsection{psb\_spcnv --- Converts a sparse matrix storage %% format} -%%\addcontentsline{toc}{subsection}{psb\_spcnv} %% \syntax{call psb\_spcnv}{a, b, desc\_a, info} @@ -833,8 +821,7 @@ An integer value; 0 means no error has been detected. % %% psb_spfree %% % -\clearpage\subsection*{psb\_spfree --- Frees a sparse matrix} -\addcontentsline{toc}{subsection}{psb\_spfree} +\clearpage\subsection{psb\_spfree --- Frees a sparse matrix} \begin{verbatim} call psb_spfree(a, desc_a, info) @@ -870,9 +857,8 @@ An integer value; 0 means no error has been detected. % %% psb_sprn %% % -\clearpage\subsection*{psb\_sprn --- Reinit sparse matrix structure for psblas +\clearpage\subsection{psb\_sprn --- Reinit sparse matrix structure for psblas routines.} -\addcontentsline{toc}{subsection}{psb\_sprn} \begin{verbatim} call psb_sprn(a, decsc_a, info, clear) @@ -914,8 +900,7 @@ An integer value; 0 means no error has been detected. % %% psb_spupdate %% % -%% \subsection*{psb\_spupdate --- Updates a sparse matrix.} -%%\addcontentsline{toc}{subsection}{psb\_spupdate} +%% \subsection{psb\_spupdate --- Updates a sparse matrix.} %% \syntax{call psb\_spupdate}{a, ia, ja, blck, desc\_a, info, ix, jx, updflag} @@ -929,9 +914,8 @@ An integer value; 0 means no error has been detected. %% % %% %% psb_csrp %% %% % -%% \subsection*{psb\_csrp --- Applies a right permutation to a sparse +%% \subsection{psb\_csrp --- Applies a right permutation to a sparse %% matrix} -%%\addcontentsline{toc}{subsection}{psb\_csrp} %% \syntax{call psb\_csrp}{trans, iperm, a, info} @@ -961,8 +945,7 @@ An integer value; 0 means no error has been detected. % %% psb_alloc %% % -\clearpage\subsection*{psb\_geall --- Allocates a dense matrix} -\addcontentsline{toc}{subsection}{psb\_geall} +\clearpage\subsection{psb\_geall --- Allocates a dense matrix} \begin{verbatim} call psb_geall(x, desc_a, info, n, lb) @@ -1009,8 +992,7 @@ An integer value; 0 means no error has been detected. % %% psb_ins %% % -\clearpage\subsection*{psb\_geins --- Dense matrix insertion routine} -\addcontentsline{toc}{subsection}{psb\_geins} +\clearpage\subsection{psb\_geins --- Dense matrix insertion routine} \begin{verbatim} call psb_geins(m, irw, val, x, desc_a, info [,dupl,local]) @@ -1082,8 +1064,7 @@ An integer value; 0 means no error has been detected. % %% psb_asb %% % -\clearpage\subsection*{psb\_geasb --- Assembly a dense matrix} -\addcontentsline{toc}{subsection}{psb\_geasb} +\clearpage\subsection{psb\_geasb --- Assembly a dense matrix} \begin{verbatim} call psb_geasb(x, desc_a, info, mold) @@ -1122,8 +1103,7 @@ An integer value; 0 means no error has been detected. % %% psb_free %% % -\clearpage\subsection*{psb\_gefree --- Frees a dense matrix} -\addcontentsline{toc}{subsection}{psb\_gefree} +\clearpage\subsection{psb\_gefree --- Frees a dense matrix} \begin{verbatim} call psb_gefree(x, desc_a, info) @@ -1160,9 +1140,8 @@ An integer value; 0 means no error has been detected. % %% psb_gelp %% % -\clearpage\subsection*{psb\_gelp --- Applies a left permutation to a dense +\clearpage\subsection{psb\_gelp --- Applies a left permutation to a dense matrix} -\addcontentsline{toc}{subsection}{psb\_gelp} \begin{verbatim} call psb_gelp(trans, iperm, x, info) @@ -1201,9 +1180,8 @@ An integer value; 0 means no error has been detected. % %% psb_glob_to_loc %% % -\clearpage\subsection*{psb\_glob\_to\_loc --- Global to local indices +\clearpage\subsection{psb\_glob\_to\_loc --- Global to local indices convertion} -\addcontentsline{toc}{subsection}{psb\_glob\_to\_loc} \begin{verbatim} call psb_glob_to_loc(x, y, desc_a, info, iact,owned) @@ -1269,9 +1247,8 @@ An integer value; 0 means no error has been detected. \end{enumerate} -\clearpage\subsection*{psb\_loc\_to\_glob --- Local to global indices +\clearpage\subsection{psb\_loc\_to\_glob --- Local to global indices conversion} -\addcontentsline{toc}{subsection}{psb\_loc\_to\_glob} \begin{verbatim} call psb_loc_to_glob(x, y, desc_a, info, iact) @@ -1326,8 +1303,7 @@ An integer value; 0 means no error has been detected. % %% psb_loc_to_glob %% % -\clearpage\subsection*{psb\_is\_owned --- } -\addcontentsline{toc}{subsection}{psb\_is\_owned } +\clearpage\subsection{psb\_is\_owned --- } \begin{verbatim} call psb_is_owned(x, desc_a) @@ -1366,8 +1342,7 @@ Intent: {\bf out}.\\ \end{enumerate} -\clearpage\subsection*{psb\_owned\_index --- } -\addcontentsline{toc}{subsection}{psb\_owned\_index } +\clearpage\subsection{psb\_owned\_index --- } \begin{verbatim} call psb_owned_index(y, x, desc_a, info) @@ -1418,8 +1393,7 @@ An integer value; 0 means no error has been detected. \end{enumerate} -\clearpage\subsection*{psb\_is\_local --- } -\addcontentsline{toc}{subsection}{psb\_is\_local } +\clearpage\subsection{psb\_is\_local --- } \begin{verbatim} call psb_is_local(x, desc_a) @@ -1457,8 +1431,7 @@ Intent: {\bf out}.\\ indices \end{enumerate} -\clearpage\subsection*{psb\_local\_index --- } -\addcontentsline{toc}{subsection}{psb\_local\_index } +\clearpage\subsection{psb\_local\_index --- } \begin{verbatim} call psb_local_index(y, x, desc_a, info) @@ -1513,9 +1486,8 @@ An integer value; 0 means no error has been detected. % %% psb_ins %% % -\clearpage\subsection*{psb\_get\_boundary --- Extract list of boundary +\clearpage\subsection{psb\_get\_boundary --- Extract list of boundary elements} -\addcontentsline{toc}{subsection}{psb\_get\_boundary} \begin{verbatim} call psb_get_boundary(bndel, desc, info) @@ -1556,9 +1528,8 @@ An integer value; 0 means no error has been detected. number of boundary elements. \end{enumerate} -\clearpage\subsection*{psb\_get\_overlap --- Extract list of overlap +\clearpage\subsection{psb\_get\_overlap --- Extract list of overlap elements} -\addcontentsline{toc}{subsection}{psb\_get\_overlap} \begin{verbatim} call psb_get_overlap(ovrel, desc, info) @@ -1600,9 +1571,8 @@ An integer value; 0 means no error has been detected. -\clearpage\subsection*{psb\_sp\_getrow --- Extract row(s) from a sparse +\clearpage\subsection{psb\_sp\_getrow --- Extract row(s) from a sparse matrix} -\addcontentsline{toc}{subsection}{psb\_sp\_getrow} \begin{verbatim} call psb_sp_getrow(row, a, nz, ia, ja, val, info, & @@ -1694,8 +1664,7 @@ An integer value; 0 means no error has been detected. -\clearpage\subsection*{psb\_sizeof --- Memory occupation} -\addcontentsline{toc}{subsection}{psb\_sizeof} +\clearpage\subsection{psb\_sizeof --- Memory occupation} This function computes the memory occupation of a PSBLAS object. @@ -1733,8 +1702,7 @@ Returned as: an \verb|integer(psb_long_int_k_)| number. \end{description} -\clearpage\subsection*{Sorting utilities --- } -\addcontentsline{toc}{subsection}{Sorting utilities} +\clearpage\subsection{Sorting utilities --- } {\par\noindent\large\bfseries psb\_msort --- Sorting by the Merge-sort algorithm} diff --git a/docs/src/util.tex b/docs/src/util.tex index 4d1ba295..fdd7d01d 100644 --- a/docs/src/util.tex +++ b/docs/src/util.tex @@ -9,9 +9,8 @@ module \verb|psb_util_mod|. %\subroutine{PSB\_HBIO\_MOD}{Input/Output in Harwell-Boeing format} -\clearpage\subsection*{ hb\_read --- Read a sparse matrix from a file in the +\clearpage\subsection{ hb\_read --- Read a sparse matrix from a file in the Harwell--Boeing format} -\addcontentsline{toc}{subsection}{hb\_read} \begin{lstlisting} @@ -53,9 +52,8 @@ An integer value; 0 means no error has been detected. -\clearpage\subsection*{hb\_write --- Write a sparse matrix to a file +\clearpage\subsection{hb\_write --- Write a sparse matrix to a file in the Harwell--Boeing format} -\addcontentsline{toc}{subsection}{hb\_write} \begin{lstlisting} @@ -107,9 +105,8 @@ An integer value; 0 means no error has been detected. %\subroutine{PSB\_MMIO\_MOD}{Input/Output in MatrixMarket format} -\clearpage\subsection*{mm\_mat\_read --- Read a sparse matrix from a +\clearpage\subsection{mm\_mat\_read --- Read a sparse matrix from a file in the MatrixMarket format} -\addcontentsline{toc}{subsection}{mm\_mat\_read} \begin{lstlisting} call mm_mat_read(a, iret, iunit, filename) @@ -139,9 +136,8 @@ An integer value; 0 means no error has been detected. \end{description} -\clearpage\subsection*{mm\_array\_read --- Read a dense array from a +\clearpage\subsection{mm\_array\_read --- Read a dense array from a file in the MatrixMarket format} -\addcontentsline{toc}{subsection}{mm\_array\_read} \begin{lstlisting} call mm_array_read(b, iret, iunit, filename) @@ -174,9 +170,8 @@ An integer value; 0 means no error has been detected. -\clearpage\subsection*{mm\_mat\_write --- Write a sparse matrix to a +\clearpage\subsection{mm\_mat\_write --- Write a sparse matrix to a file in the MatrixMarket format} -\addcontentsline{toc}{subsection}{mm\_mat\_write} \begin{lstlisting} @@ -210,9 +205,8 @@ An integer value; 0 means no error has been detected. \end{description} -\clearpage\subsection*{mm\_array\_write --- Write a dense array from a +\clearpage\subsection{mm\_array\_write --- Write a dense array from a file in the MatrixMarket format} -\addcontentsline{toc}{subsection}{mm\_array\_write} \begin{lstlisting} call mm_array_write(b, iret, iunit, filename)