From 7b824975d46859d80f8417077f80c28d630c6c98 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Thu, 24 Jul 2008 12:32:14 +0000 Subject: [PATCH] psblas2: docs/html docs/html/footnode.html docs/html/img1.png docs/html/img10.png docs/html/img100.png docs/html/img101.png docs/html/img102.png docs/html/img103.png docs/html/img104.png docs/html/img105.png docs/html/img106.png docs/html/img107.png docs/html/img108.png docs/html/img109.png docs/html/img11.png docs/html/img110.png docs/html/img111.png docs/html/img112.png docs/html/img113.png docs/html/img114.png docs/html/img115.png docs/html/img116.png docs/html/img117.png docs/html/img118.png docs/html/img119.png docs/html/img12.png docs/html/img120.png docs/html/img121.png docs/html/img122.png docs/html/img123.png docs/html/img124.png docs/html/img125.png docs/html/img126.png docs/html/img127.png docs/html/img128.png docs/html/img129.png docs/html/img13.png docs/html/img130.png docs/html/img131.png docs/html/img132.png docs/html/img133.png docs/html/img134.png docs/html/img135.png docs/html/img136.png docs/html/img137.png docs/html/img138.png docs/html/img139.png docs/html/img14.png docs/html/img140.png docs/html/img141.png docs/html/img142.png docs/html/img143.png docs/html/img144.png docs/html/img145.png docs/html/img15.png docs/html/img16.png docs/html/img17.png docs/html/img18.png docs/html/img19.png docs/html/img2.png docs/html/img20.png docs/html/img21.png docs/html/img22.png docs/html/img23.png docs/html/img24.png docs/html/img25.png docs/html/img26.png docs/html/img27.png docs/html/img28.png docs/html/img29.png docs/html/img3.png docs/html/img30.png docs/html/img31.png docs/html/img32.png docs/html/img33.png docs/html/img34.png docs/html/img35.png docs/html/img36.png docs/html/img37.png docs/html/img38.png docs/html/img39.png docs/html/img4.png docs/html/img40.png docs/html/img41.png docs/html/img42.png docs/html/img43.png docs/html/img44.png docs/html/img45.png docs/html/img46.png docs/html/img47.png docs/html/img48.png docs/html/img49.png docs/html/img5.png docs/html/img50.png docs/html/img51.png docs/html/img52.png docs/html/img53.png docs/html/img54.png docs/html/img55.png docs/html/img56.png docs/html/img57.png docs/html/img58.png docs/html/img59.png docs/html/img6.png docs/html/img60.png docs/html/img61.png docs/html/img62.png docs/html/img63.png docs/html/img64.png docs/html/img65.png docs/html/img66.png docs/html/img67.png docs/html/img68.png docs/html/img69.png docs/html/img7.png docs/html/img70.png docs/html/img71.png docs/html/img72.png docs/html/img73.png docs/html/img74.png docs/html/img75.png docs/html/img76.png docs/html/img77.png docs/html/img78.png docs/html/img79.png docs/html/img8.png docs/html/img80.png docs/html/img81.png docs/html/img82.png docs/html/img83.png docs/html/img84.png docs/html/img85.png docs/html/img86.png docs/html/img87.png docs/html/img88.png docs/html/img89.png docs/html/img9.png docs/html/img90.png docs/html/img91.png docs/html/img92.png docs/html/img93.png docs/html/img94.png docs/html/img95.png docs/html/img96.png docs/html/img97.png docs/html/img98.png docs/html/img99.png docs/html/index.html docs/html/node1.html docs/html/node10.html docs/html/node100.html docs/html/node101.html docs/html/node102.html docs/html/node103.html docs/html/node104.html docs/html/node105.html docs/html/node106.html docs/html/node107.html docs/html/node108.html docs/html/node109.html docs/html/node11.html docs/html/node110.html docs/html/node111.html docs/html/node112.html docs/html/node113.html docs/html/node114.html docs/html/node115.html docs/html/node116.html docs/html/node117.html docs/html/node118.html docs/html/node119.html docs/html/node12.html docs/html/node13.html docs/html/node14.html docs/html/node15.html docs/html/node16.html docs/html/node17.html docs/html/node18.html docs/html/node19.html docs/html/node2.html docs/html/node20.html docs/html/node21.html docs/html/node22.html docs/html/node23.html docs/html/node24.html docs/html/node25.html docs/html/node26.html docs/html/node27.html docs/html/node28.html docs/html/node29.html docs/html/node3.html docs/html/node30.html docs/html/node31.html docs/html/node32.html docs/html/node33.html docs/html/node34.html docs/html/node35.html docs/html/node36.html docs/html/node37.html docs/html/node38.html docs/html/node39.html docs/html/node4.html docs/html/node40.html docs/html/node41.html docs/html/node42.html docs/html/node43.html docs/html/node44.html docs/html/node45.html docs/html/node46.html docs/html/node47.html docs/html/node48.html docs/html/node49.html docs/html/node5.html docs/html/node50.html docs/html/node51.html docs/html/node52.html docs/html/node53.html docs/html/node54.html docs/html/node55.html docs/html/node56.html docs/html/node57.html docs/html/node58.html docs/html/node59.html docs/html/node6.html docs/html/node60.html docs/html/node61.html docs/html/node62.html docs/html/node63.html docs/html/node64.html docs/html/node65.html docs/html/node66.html docs/html/node67.html docs/html/node68.html docs/html/node69.html docs/html/node7.html docs/html/node70.html docs/html/node71.html docs/html/node72.html docs/html/node73.html docs/html/node74.html docs/html/node75.html docs/html/node76.html docs/html/node77.html docs/html/node78.html docs/html/node79.html docs/html/node8.html docs/html/node80.html docs/html/node81.html docs/html/node82.html docs/html/node83.html docs/html/node84.html docs/html/node85.html docs/html/node86.html docs/html/node87.html docs/html/node88.html docs/html/node89.html docs/html/node9.html docs/html/node90.html docs/html/node91.html docs/html/node92.html docs/html/node93.html docs/html/node94.html docs/html/node95.html docs/html/node96.html docs/html/node97.html docs/html/node98.html docs/html/node99.html docs/html/userhtml.css docs/html/userhtml.html docs/pdf/Makefile docs/pdf/commrout.tex docs/pdf/datastruct.tex docs/pdf/error.tex docs/pdf/methods.tex docs/pdf/penv.tex docs/pdf/precs.tex docs/pdf/psbrout.tex docs/pdf/toolsrout.tex docs/pdf/userguide.tex docs/pdf/userhtml.tex docs/pdf/util.tex Added HTML version of manual. --- docs/html/footnode.html | 145 ++++++++ docs/html/img1.png | Bin 0 -> 200 bytes docs/html/img10.png | Bin 0 -> 544 bytes docs/html/img100.png | Bin 0 -> 255 bytes docs/html/img101.png | Bin 0 -> 387 bytes docs/html/img102.png | Bin 0 -> 250 bytes docs/html/img103.png | Bin 0 -> 244 bytes docs/html/img104.png | Bin 0 -> 276 bytes docs/html/img105.png | Bin 0 -> 374 bytes docs/html/img106.png | Bin 0 -> 222 bytes docs/html/img107.png | Bin 0 -> 259 bytes docs/html/img108.png | Bin 0 -> 804 bytes docs/html/img109.png | Bin 0 -> 408 bytes docs/html/img11.png | Bin 0 -> 131 bytes docs/html/img110.png | Bin 0 -> 419 bytes docs/html/img111.png | Bin 0 -> 354 bytes docs/html/img112.png | Bin 0 -> 310 bytes docs/html/img113.png | Bin 0 -> 835 bytes docs/html/img114.png | Bin 0 -> 335 bytes docs/html/img115.png | Bin 0 -> 497 bytes docs/html/img116.png | Bin 0 -> 403 bytes docs/html/img117.png | Bin 0 -> 266 bytes docs/html/img118.png | Bin 0 -> 533 bytes docs/html/img119.png | Bin 0 -> 544 bytes docs/html/img12.png | Bin 0 -> 240 bytes docs/html/img120.png | Bin 0 -> 334 bytes docs/html/img121.png | Bin 0 -> 231 bytes docs/html/img122.png | Bin 0 -> 519 bytes docs/html/img123.png | Bin 0 -> 604 bytes docs/html/img124.png | Bin 0 -> 577 bytes docs/html/img125.png | Bin 0 -> 210 bytes docs/html/img126.png | Bin 0 -> 568 bytes docs/html/img127.png | Bin 0 -> 743 bytes docs/html/img128.png | Bin 0 -> 276 bytes docs/html/img129.png | Bin 0 -> 521 bytes docs/html/img13.png | Bin 0 -> 192 bytes docs/html/img130.png | Bin 0 -> 267 bytes docs/html/img131.png | Bin 0 -> 568 bytes docs/html/img132.png | Bin 0 -> 239 bytes docs/html/img133.png | 0 docs/html/img134.png | 0 docs/html/img135.png | Bin 0 -> 371 bytes docs/html/img136.png | Bin 0 -> 431 bytes docs/html/img137.png | Bin 0 -> 916 bytes docs/html/img138.png | Bin 0 -> 677 bytes docs/html/img139.png | Bin 0 -> 234 bytes docs/html/img14.png | Bin 0 -> 368 bytes docs/html/img140.png | Bin 0 -> 430 bytes docs/html/img141.png | Bin 0 -> 500 bytes docs/html/img142.png | Bin 0 -> 412 bytes docs/html/img143.png | Bin 0 -> 356 bytes docs/html/img144.png | Bin 0 -> 379 bytes docs/html/img145.png | Bin 0 -> 288 bytes docs/html/img15.png | Bin 0 -> 520 bytes docs/html/img16.png | 0 docs/html/img17.png | Bin 0 -> 6852 bytes docs/html/img18.png | 0 docs/html/img19.png | Bin 0 -> 517 bytes docs/html/img2.png | Bin 0 -> 112 bytes docs/html/img20.png | Bin 0 -> 771 bytes docs/html/img21.png | Bin 0 -> 618 bytes docs/html/img22.png | 0 docs/html/img23.png | Bin 0 -> 480 bytes docs/html/img24.png | Bin 0 -> 184 bytes docs/html/img25.png | Bin 0 -> 232 bytes docs/html/img26.png | Bin 0 -> 201 bytes docs/html/img27.png | Bin 0 -> 226 bytes docs/html/img28.png | Bin 0 -> 449 bytes docs/html/img29.png | Bin 0 -> 464 bytes docs/html/img3.png | Bin 0 -> 191 bytes docs/html/img30.png | Bin 0 -> 266 bytes docs/html/img31.png | Bin 0 -> 780 bytes docs/html/img32.png | Bin 0 -> 247 bytes docs/html/img33.png | Bin 0 -> 567 bytes docs/html/img34.png | Bin 0 -> 1050 bytes docs/html/img35.png | Bin 0 -> 310 bytes docs/html/img36.png | Bin 0 -> 791 bytes docs/html/img37.png | Bin 0 -> 436 bytes docs/html/img38.png | Bin 0 -> 868 bytes docs/html/img39.png | Bin 0 -> 309 bytes docs/html/img4.png | Bin 0 -> 206 bytes docs/html/img40.png | Bin 0 -> 508 bytes docs/html/img41.png | Bin 0 -> 907 bytes docs/html/img42.png | Bin 0 -> 562 bytes docs/html/img43.png | Bin 0 -> 564 bytes docs/html/img44.png | Bin 0 -> 325 bytes docs/html/img45.png | Bin 0 -> 596 bytes docs/html/img46.png | Bin 0 -> 594 bytes docs/html/img47.png | Bin 0 -> 486 bytes docs/html/img48.png | Bin 0 -> 670 bytes docs/html/img49.png | Bin 0 -> 721 bytes docs/html/img5.png | Bin 0 -> 371 bytes docs/html/img50.png | Bin 0 -> 729 bytes docs/html/img51.png | Bin 0 -> 242 bytes docs/html/img52.png | Bin 0 -> 255 bytes docs/html/img53.png | Bin 0 -> 350 bytes docs/html/img54.png | Bin 0 -> 416 bytes docs/html/img55.png | Bin 0 -> 3612 bytes docs/html/img56.png | Bin 0 -> 199 bytes docs/html/img57.png | Bin 0 -> 228 bytes docs/html/img58.png | Bin 0 -> 426 bytes docs/html/img59.png | Bin 0 -> 804 bytes docs/html/img6.png | Bin 0 -> 206 bytes docs/html/img60.png | Bin 0 -> 282 bytes docs/html/img61.png | Bin 0 -> 404 bytes docs/html/img62.png | Bin 0 -> 97 bytes docs/html/img63.png | Bin 0 -> 356 bytes docs/html/img64.png | Bin 0 -> 254 bytes docs/html/img65.png | Bin 0 -> 247 bytes docs/html/img66.png | Bin 0 -> 248 bytes docs/html/img67.png | Bin 0 -> 253 bytes docs/html/img68.png | Bin 0 -> 336 bytes docs/html/img69.png | Bin 0 -> 792 bytes docs/html/img7.png | Bin 0 -> 235 bytes docs/html/img70.png | Bin 0 -> 117 bytes docs/html/img71.png | Bin 0 -> 794 bytes docs/html/img72.png | Bin 0 -> 366 bytes docs/html/img73.png | Bin 0 -> 498 bytes docs/html/img74.png | Bin 0 -> 325 bytes docs/html/img75.png | Bin 0 -> 362 bytes docs/html/img76.png | Bin 0 -> 301 bytes docs/html/img77.png | Bin 0 -> 350 bytes docs/html/img78.png | Bin 0 -> 534 bytes docs/html/img79.png | Bin 0 -> 172 bytes docs/html/img8.png | Bin 0 -> 249 bytes docs/html/img80.png | Bin 0 -> 828 bytes docs/html/img81.png | Bin 0 -> 357 bytes docs/html/img82.png | Bin 0 -> 501 bytes docs/html/img83.png | Bin 0 -> 366 bytes docs/html/img84.png | Bin 0 -> 255 bytes docs/html/img85.png | Bin 0 -> 243 bytes docs/html/img86.png | Bin 0 -> 186 bytes docs/html/img87.png | Bin 0 -> 571 bytes docs/html/img88.png | Bin 0 -> 318 bytes docs/html/img89.png | Bin 0 -> 459 bytes docs/html/img9.png | Bin 0 -> 393 bytes docs/html/img90.png | Bin 0 -> 395 bytes docs/html/img91.png | Bin 0 -> 286 bytes docs/html/img92.png | Bin 0 -> 415 bytes docs/html/img93.png | Bin 0 -> 186 bytes docs/html/img94.png | Bin 0 -> 375 bytes docs/html/img95.png | Bin 0 -> 227 bytes docs/html/img96.png | Bin 0 -> 341 bytes docs/html/img97.png | Bin 0 -> 258 bytes docs/html/img98.png | Bin 0 -> 193 bytes docs/html/img99.png | Bin 0 -> 134 bytes docs/html/index.html | 354 +++++++++++++++++++ docs/html/node1.html | 115 ++++++ docs/html/node10.html | 102 ++++++ docs/html/node100.html | 141 ++++++++ docs/html/node101.html | 159 +++++++++ docs/html/node102.html | 102 ++++++ docs/html/node103.html | 83 +++++ docs/html/node104.html | 395 +++++++++++++++++++++ docs/html/node105.html | 162 +++++++++ docs/html/node106.html | 74 ++++ docs/html/node107.html | 144 ++++++++ docs/html/node108.html | 139 ++++++++ docs/html/node109.html | 157 +++++++++ docs/html/node11.html | 264 ++++++++++++++ docs/html/node110.html | 101 ++++++ docs/html/node111.html | 73 ++++ docs/html/node112.html | 393 +++++++++++++++++++++ docs/html/node113.html | 162 +++++++++ docs/html/node114.html | 74 ++++ docs/html/node115.html | 100 ++++++ docs/html/node116.html | 83 +++++ docs/html/node117.html | 392 +++++++++++++++++++++ docs/html/node118.html | 162 +++++++++ docs/html/node119.html | 74 ++++ docs/html/node12.html | 89 +++++ docs/html/node13.html | 103 ++++++ docs/html/node14.html | 81 +++++ docs/html/node15.html | 111 ++++++ docs/html/node16.html | 112 ++++++ docs/html/node17.html | 102 ++++++ docs/html/node18.html | 101 ++++++ docs/html/node19.html | 123 +++++++ docs/html/node2.html | 165 +++++++++ docs/html/node20.html | 86 +++++ docs/html/node21.html | 95 +++++ docs/html/node22.html | 103 ++++++ docs/html/node23.html | 103 ++++++ docs/html/node24.html | 112 ++++++ docs/html/node25.html | 95 +++++ docs/html/node26.html | 289 +++++++++++++++ docs/html/node27.html | 288 +++++++++++++++ docs/html/node28.html | 274 +++++++++++++++ docs/html/node29.html | 252 +++++++++++++ docs/html/node3.html | 202 +++++++++++ docs/html/node30.html | 226 ++++++++++++ docs/html/node31.html | 251 +++++++++++++ docs/html/node32.html | 436 +++++++++++++++++++++++ docs/html/node33.html | 273 ++++++++++++++ docs/html/node34.html | 227 ++++++++++++ docs/html/node35.html | 439 +++++++++++++++++++++++ docs/html/node36.html | 484 +++++++++++++++++++++++++ docs/html/node37.html | 84 +++++ docs/html/node38.html | 655 ++++++++++++++++++++++++++++++++++ docs/html/node39.html | 763 ++++++++++++++++++++++++++++++++++++++++ docs/html/node4.html | 227 ++++++++++++ docs/html/node40.html | 275 +++++++++++++++ docs/html/node41.html | 273 ++++++++++++++ docs/html/node42.html | 135 +++++++ docs/html/node43.html | 368 +++++++++++++++++++ docs/html/node44.html | 193 ++++++++++ docs/html/node45.html | 128 +++++++ docs/html/node46.html | 123 +++++++ docs/html/node47.html | 110 ++++++ docs/html/node48.html | 208 +++++++++++ docs/html/node49.html | 177 ++++++++++ docs/html/node5.html | 186 ++++++++++ docs/html/node50.html | 246 +++++++++++++ docs/html/node51.html | 205 +++++++++++ docs/html/node52.html | 121 +++++++ docs/html/node53.html | 140 ++++++++ docs/html/node54.html | 158 +++++++++ docs/html/node55.html | 219 ++++++++++++ docs/html/node56.html | 120 +++++++ docs/html/node57.html | 125 +++++++ docs/html/node58.html | 145 ++++++++ docs/html/node59.html | 223 ++++++++++++ docs/html/node6.html | 279 +++++++++++++++ docs/html/node60.html | 199 +++++++++++ docs/html/node61.html | 132 +++++++ docs/html/node62.html | 156 ++++++++ docs/html/node63.html | 132 +++++++ docs/html/node64.html | 156 ++++++++ docs/html/node65.html | 136 +++++++ docs/html/node66.html | 135 +++++++ docs/html/node67.html | 265 ++++++++++++++ docs/html/node68.html | 132 +++++++ docs/html/node69.html | 283 +++++++++++++++ docs/html/node7.html | 131 +++++++ docs/html/node70.html | 109 ++++++ docs/html/node71.html | 129 +++++++ docs/html/node72.html | 180 ++++++++++ docs/html/node73.html | 158 +++++++++ docs/html/node74.html | 110 ++++++ docs/html/node75.html | 132 +++++++ docs/html/node76.html | 88 +++++ docs/html/node77.html | 96 +++++ docs/html/node78.html | 94 +++++ docs/html/node79.html | 170 +++++++++ docs/html/node8.html | 150 ++++++++ docs/html/node80.html | 185 ++++++++++ docs/html/node81.html | 184 ++++++++++ docs/html/node82.html | 186 ++++++++++ docs/html/node83.html | 184 ++++++++++ docs/html/node84.html | 186 ++++++++++ docs/html/node85.html | 200 +++++++++++ docs/html/node86.html | 199 +++++++++++ docs/html/node87.html | 201 +++++++++++ docs/html/node88.html | 122 +++++++ docs/html/node89.html | 93 +++++ docs/html/node9.html | 257 ++++++++++++++ docs/html/node90.html | 93 +++++ docs/html/node91.html | 98 ++++++ docs/html/node92.html | 95 +++++ docs/html/node93.html | 164 +++++++++ docs/html/node94.html | 173 +++++++++ docs/html/node95.html | 119 +++++++ docs/html/node96.html | 120 +++++++ docs/html/node97.html | 123 +++++++ docs/html/node98.html | 97 +++++ docs/html/node99.html | 146 ++++++++ docs/html/userhtml.css | 30 ++ docs/html/userhtml.html | 354 +++++++++++++++++++ docs/pdf/Makefile | 65 +++- docs/pdf/commrout.tex | 43 ++- docs/pdf/datastruct.tex | 72 ++-- docs/pdf/error.tex | 41 ++- docs/pdf/methods.tex | 484 +------------------------ docs/pdf/penv.tex | 136 ++++--- docs/pdf/precs.tex | 35 +- docs/pdf/psbrout.tex | 91 +++-- docs/pdf/toolsrout.tex | 282 ++++++++++----- docs/pdf/userguide.tex | 34 +- docs/pdf/userhtml.tex | 270 ++++++++++++++ docs/pdf/util.tex | 44 ++- 280 files changed, 23025 insertions(+), 712 deletions(-) create mode 100644 docs/html/footnode.html create mode 100644 docs/html/img1.png create mode 100644 docs/html/img10.png create mode 100644 docs/html/img100.png create mode 100644 docs/html/img101.png create mode 100644 docs/html/img102.png create mode 100644 docs/html/img103.png create mode 100644 docs/html/img104.png create mode 100644 docs/html/img105.png create mode 100644 docs/html/img106.png create mode 100644 docs/html/img107.png create mode 100644 docs/html/img108.png create mode 100644 docs/html/img109.png create mode 100644 docs/html/img11.png create mode 100644 docs/html/img110.png create mode 100644 docs/html/img111.png create mode 100644 docs/html/img112.png create mode 100644 docs/html/img113.png create mode 100644 docs/html/img114.png create mode 100644 docs/html/img115.png create mode 100644 docs/html/img116.png create mode 100644 docs/html/img117.png create mode 100644 docs/html/img118.png create mode 100644 docs/html/img119.png create mode 100644 docs/html/img12.png create mode 100644 docs/html/img120.png create mode 100644 docs/html/img121.png create mode 100644 docs/html/img122.png create mode 100644 docs/html/img123.png create mode 100644 docs/html/img124.png create mode 100644 docs/html/img125.png create mode 100644 docs/html/img126.png create mode 100644 docs/html/img127.png create mode 100644 docs/html/img128.png create mode 100644 docs/html/img129.png create mode 100644 docs/html/img13.png create mode 100644 docs/html/img130.png create mode 100644 docs/html/img131.png create mode 100644 docs/html/img132.png create mode 100644 docs/html/img133.png create mode 100644 docs/html/img134.png create mode 100644 docs/html/img135.png create mode 100644 docs/html/img136.png create mode 100644 docs/html/img137.png create mode 100644 docs/html/img138.png create mode 100644 docs/html/img139.png create mode 100644 docs/html/img14.png create mode 100644 docs/html/img140.png create mode 100644 docs/html/img141.png create mode 100644 docs/html/img142.png create mode 100644 docs/html/img143.png create mode 100644 docs/html/img144.png create mode 100644 docs/html/img145.png create mode 100644 docs/html/img15.png create mode 100644 docs/html/img16.png create mode 100644 docs/html/img17.png create mode 100644 docs/html/img18.png create mode 100644 docs/html/img19.png create mode 100644 docs/html/img2.png create mode 100644 docs/html/img20.png create mode 100644 docs/html/img21.png create mode 100644 docs/html/img22.png create mode 100644 docs/html/img23.png create mode 100644 docs/html/img24.png create mode 100644 docs/html/img25.png create mode 100644 docs/html/img26.png create mode 100644 docs/html/img27.png create mode 100644 docs/html/img28.png create mode 100644 docs/html/img29.png create mode 100644 docs/html/img3.png create mode 100644 docs/html/img30.png create mode 100644 docs/html/img31.png create mode 100644 docs/html/img32.png create mode 100644 docs/html/img33.png create mode 100644 docs/html/img34.png create mode 100644 docs/html/img35.png create mode 100644 docs/html/img36.png create mode 100644 docs/html/img37.png create mode 100644 docs/html/img38.png create mode 100644 docs/html/img39.png create mode 100644 docs/html/img4.png create mode 100644 docs/html/img40.png create mode 100644 docs/html/img41.png create mode 100644 docs/html/img42.png create mode 100644 docs/html/img43.png create mode 100644 docs/html/img44.png create mode 100644 docs/html/img45.png create mode 100644 docs/html/img46.png create mode 100644 docs/html/img47.png create mode 100644 docs/html/img48.png create mode 100644 docs/html/img49.png create mode 100644 docs/html/img5.png create mode 100644 docs/html/img50.png create mode 100644 docs/html/img51.png create mode 100644 docs/html/img52.png create mode 100644 docs/html/img53.png create mode 100644 docs/html/img54.png create mode 100644 docs/html/img55.png create mode 100644 docs/html/img56.png create mode 100644 docs/html/img57.png create mode 100644 docs/html/img58.png create mode 100644 docs/html/img59.png create mode 100644 docs/html/img6.png create mode 100644 docs/html/img60.png create mode 100644 docs/html/img61.png create mode 100644 docs/html/img62.png create mode 100644 docs/html/img63.png create mode 100644 docs/html/img64.png create mode 100644 docs/html/img65.png create mode 100644 docs/html/img66.png create mode 100644 docs/html/img67.png create mode 100644 docs/html/img68.png create mode 100644 docs/html/img69.png create mode 100644 docs/html/img7.png create mode 100644 docs/html/img70.png create mode 100644 docs/html/img71.png create mode 100644 docs/html/img72.png create mode 100644 docs/html/img73.png create mode 100644 docs/html/img74.png create mode 100644 docs/html/img75.png create mode 100644 docs/html/img76.png create mode 100644 docs/html/img77.png create mode 100644 docs/html/img78.png create mode 100644 docs/html/img79.png create mode 100644 docs/html/img8.png create mode 100644 docs/html/img80.png create mode 100644 docs/html/img81.png create mode 100644 docs/html/img82.png create mode 100644 docs/html/img83.png create mode 100644 docs/html/img84.png create mode 100644 docs/html/img85.png create mode 100644 docs/html/img86.png create mode 100644 docs/html/img87.png create mode 100644 docs/html/img88.png create mode 100644 docs/html/img89.png create mode 100644 docs/html/img9.png create mode 100644 docs/html/img90.png create mode 100644 docs/html/img91.png create mode 100644 docs/html/img92.png create mode 100644 docs/html/img93.png create mode 100644 docs/html/img94.png create mode 100644 docs/html/img95.png create mode 100644 docs/html/img96.png create mode 100644 docs/html/img97.png create mode 100644 docs/html/img98.png create mode 100644 docs/html/img99.png create mode 100644 docs/html/index.html create mode 100644 docs/html/node1.html create mode 100644 docs/html/node10.html create mode 100644 docs/html/node100.html create mode 100644 docs/html/node101.html create mode 100644 docs/html/node102.html create mode 100644 docs/html/node103.html create mode 100644 docs/html/node104.html create mode 100644 docs/html/node105.html create mode 100644 docs/html/node106.html create mode 100644 docs/html/node107.html create mode 100644 docs/html/node108.html create mode 100644 docs/html/node109.html create mode 100644 docs/html/node11.html create mode 100644 docs/html/node110.html create mode 100644 docs/html/node111.html create mode 100644 docs/html/node112.html create mode 100644 docs/html/node113.html create mode 100644 docs/html/node114.html create mode 100644 docs/html/node115.html create mode 100644 docs/html/node116.html create mode 100644 docs/html/node117.html create mode 100644 docs/html/node118.html create mode 100644 docs/html/node119.html create mode 100644 docs/html/node12.html create mode 100644 docs/html/node13.html create mode 100644 docs/html/node14.html create mode 100644 docs/html/node15.html create mode 100644 docs/html/node16.html create mode 100644 docs/html/node17.html create mode 100644 docs/html/node18.html create mode 100644 docs/html/node19.html create mode 100644 docs/html/node2.html create mode 100644 docs/html/node20.html create mode 100644 docs/html/node21.html create mode 100644 docs/html/node22.html create mode 100644 docs/html/node23.html create mode 100644 docs/html/node24.html create mode 100644 docs/html/node25.html create mode 100644 docs/html/node26.html create mode 100644 docs/html/node27.html create mode 100644 docs/html/node28.html create mode 100644 docs/html/node29.html create mode 100644 docs/html/node3.html create mode 100644 docs/html/node30.html create mode 100644 docs/html/node31.html create mode 100644 docs/html/node32.html create mode 100644 docs/html/node33.html create mode 100644 docs/html/node34.html create mode 100644 docs/html/node35.html create mode 100644 docs/html/node36.html create mode 100644 docs/html/node37.html create mode 100644 docs/html/node38.html create mode 100644 docs/html/node39.html create mode 100644 docs/html/node4.html create mode 100644 docs/html/node40.html create mode 100644 docs/html/node41.html create mode 100644 docs/html/node42.html create mode 100644 docs/html/node43.html create mode 100644 docs/html/node44.html create mode 100644 docs/html/node45.html create mode 100644 docs/html/node46.html create mode 100644 docs/html/node47.html create mode 100644 docs/html/node48.html create mode 100644 docs/html/node49.html create mode 100644 docs/html/node5.html create mode 100644 docs/html/node50.html create mode 100644 docs/html/node51.html create mode 100644 docs/html/node52.html create mode 100644 docs/html/node53.html create mode 100644 docs/html/node54.html create mode 100644 docs/html/node55.html create mode 100644 docs/html/node56.html create mode 100644 docs/html/node57.html create mode 100644 docs/html/node58.html create mode 100644 docs/html/node59.html create mode 100644 docs/html/node6.html create mode 100644 docs/html/node60.html create mode 100644 docs/html/node61.html create mode 100644 docs/html/node62.html create mode 100644 docs/html/node63.html create mode 100644 docs/html/node64.html create mode 100644 docs/html/node65.html create mode 100644 docs/html/node66.html create mode 100644 docs/html/node67.html create mode 100644 docs/html/node68.html create mode 100644 docs/html/node69.html create mode 100644 docs/html/node7.html create mode 100644 docs/html/node70.html create mode 100644 docs/html/node71.html create mode 100644 docs/html/node72.html create mode 100644 docs/html/node73.html create mode 100644 docs/html/node74.html create mode 100644 docs/html/node75.html create mode 100644 docs/html/node76.html create mode 100644 docs/html/node77.html create mode 100644 docs/html/node78.html create mode 100644 docs/html/node79.html create mode 100644 docs/html/node8.html create mode 100644 docs/html/node80.html create mode 100644 docs/html/node81.html create mode 100644 docs/html/node82.html create mode 100644 docs/html/node83.html create mode 100644 docs/html/node84.html create mode 100644 docs/html/node85.html create mode 100644 docs/html/node86.html create mode 100644 docs/html/node87.html create mode 100644 docs/html/node88.html create mode 100644 docs/html/node89.html create mode 100644 docs/html/node9.html create mode 100644 docs/html/node90.html create mode 100644 docs/html/node91.html create mode 100644 docs/html/node92.html create mode 100644 docs/html/node93.html create mode 100644 docs/html/node94.html create mode 100644 docs/html/node95.html create mode 100644 docs/html/node96.html create mode 100644 docs/html/node97.html create mode 100644 docs/html/node98.html create mode 100644 docs/html/node99.html create mode 100644 docs/html/userhtml.css create mode 100644 docs/html/userhtml.html create mode 100644 docs/pdf/userhtml.tex diff --git a/docs/html/footnode.html b/docs/html/footnode.html new file mode 100644 index 00000000..930b8349 --- /dev/null +++ b/docs/html/footnode.html @@ -0,0 +1,145 @@ + + + + + +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. + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
... follows3
+
The string is case-insensitive + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
+ + diff --git a/docs/html/img1.png b/docs/html/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..2bcd8b2c6eb4f57b5457d47249c8c88579088bf8 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!py+HxR`CDK9Hjx;1lAydGqEKD^|>zGpD7c zrJ|xDCnqN%At59r#K6EnMMXtILV|~f2dMT$;i~sQim@cfFPOpM*^M+H$KTV%F@$4g zGEhSz5T`OQ@)<-jC`m{rG~8rZv1CsJqvVH%4he-crj0jNJM6k4d7(k&OoN1m^2Fl| tKAVjToZo09Jjh^(yeE4gU}r2NL!<)x`FUw=`9Px?JYD@<);T3K0RZwQK5+m5 literal 0 HcmV?d00001 diff --git a/docs/html/img10.png b/docs/html/img10.png new file mode 100644 index 0000000000000000000000000000000000000000..d23e25a7f6b3df0f40d5706a1c4449047308757f GIT binary patch literal 544 zcmV+*0^j|KP)RHR400001 zbW%=J06^y0W&i*Io=HSOR5*?8R6R?>P!v6Bn>5XnCWwoRWKtA_;t$X)Lftw^!KH|U zICXI8A`w)IAi6l)$@$fxt^xmmlOL1mAF#zul*X5jm*%5X>Q?aZlAL$$J-l}>mjDq6 zz$W`#xm?5u+yi}&P@n)vkq}9wy8EU}WHazg3gRv5Eq_l5O6>9X7Li{_-KG~NRXt(H zjf?ELD++%)a4e`vgBpqOrE*H<@aTtg{K5o#osixP0=Fo0tyrsv;hLK9noYqQND!w} z3s#b(8+@1FJ>+z)58W$R33Fw`}5UwXB}= zqpedb$X}Wb=?siT(;uDE@S2=vuv#$aZx#Jx0#IzdIfF{PaTMaia<7e~I{&T%Rq&~& z1x>OLX7RW5tqI+vs#H`RVr%GSBU4Iy2|Z}1RU82ehzGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XemvE{-7_Gn0YZ9{gZXktmUtIMCqlIDwJthNO(c6eDS7E&+x|ysnJA!V()8R~U** zMA(^dYBBJ7Oh`{>;o9)wbGk;tRYoQ|=?Rs06k2uSc#ccx9GWGeRHR400001 zbW%=J06^y0W&i*I0ZBwbR49>SU?2h%I502)DSm53CGq6Bs@)DS!gP$N?zOuz^p38?HxzfdS!AP6mbs>N%7GP>95q z6aadOLjgk#(*`g#8BC^3U@J>o!0O4+#(IItCI!WIz0xB*jw h5tNXe$?`Ql003YVCdFKD+D!le002ovPDHLkV1mL`havy~ literal 0 HcmV?d00001 diff --git a/docs/html/img102.png b/docs/html/img102.png new file mode 100644 index 0000000000000000000000000000000000000000..2628dcf172ed5e3e98d46d859968a3316032a4fa GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoL!py+Hn0EdrACRLP;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1`-kyJUl!=9i8XvE&?gWk|4ie28U-i(tw<5 zPZ!4!j+x0oJqgJUjJyVHuS40|*tvM-NGsgwGZQ#@`~c^(LT47?h(J^04W$iVjg1;T z#M_tzjvg#v^w{KVl2y{I$!^CM;}Db}seDFowuHnC{sSs5^9>9NR2?jJ_^c%&KFwLM s$Eocq2eXBQ#IFZ3=f!z)UPme9FtqUt1&P$;k-`3Gwjou(7c*Fffpikl^9r0jdpUHGB!A7)yfuf*Bm1-ADs+sy$sCLnNjq zCpa*(Y3$)NI3}skurZRyL5RIUCoJTuKq>o#9djJk9AGu&I+NjW-BHEEBO!r<^%A>7 zSesL37`wq)DTXQfKp}2*nWx}bp#-9u!U8P)H@{1ax m8@DogTHdkw)nu&kfPvwWnWkHxV00$X84RATelF{r5}E+&<4R5d literal 0 HcmV?d00001 diff --git a/docs/html/img104.png b/docs/html/img104.png new file mode 100644 index 0000000000000000000000000000000000000000..60d8dfe127b74eea9de665f15698294aaf919d60 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^@*p+`GXn#oU}h;VkYg6$6XLpg^X9p8=N1TKr3s`MOM?7@ z862M7NCR?uJY5_^B&N;{xXpJ|f#Y?b-;|ZJ|Nq~t9XHALP3rPv4gxvc1{X?>H1)7E z^=rj#aDM3aO61`FuMSHU*e0G?Bd#^G=g8Wd{T>tlyL>AAx5cUDXnfOEgZGY;u6@4a zYSE?fQ2)?+f%TG|X8lKw#>}qxwX{Aw-2L@A|LCj?xmG@(+mp<<$G#|DpR@Oe@9gvD YlOvcbE7Endf$n1PboFyt=akR{01zH*1^@s6 literal 0 HcmV?d00001 diff --git a/docs/html/img105.png b/docs/html/img105.png new file mode 100644 index 0000000000000000000000000000000000000000..0f14d83063bc869df21a39da4d669b5578105118 GIT binary patch literal 374 zcmV-+0g3*JP)RHR400001 zbW%=J06^y0W&i*H^hrcPR5*=eV1NN825f)>i`W4u&GmpG@&f}y16GZ=0Qa|zfk5hf zHUoonKSKi0-W??ACkiOAF-+iKcu>I5(b2-d#Kkay`c{wx*m25ifGe56z-$=Lbl?L> zjI|NS0SbONz$n1Mps;|U<3yBdAx5AeSnq^yqC(is8`6NWfJ6=47$#(> zxi>Iyev@GGVqj|xsX$Vd5ekt3GFf;X*bXo-NE$FjGdL_`utTU~;YwhB0FnW5su*gR z86*W*7`7@hUtn0KfH2FJfh!3t0|b{DrX;W{-wj|`;=lzYkW?*Y;Bo@Xi~<+{0Ngh- UIcZQmTL1t607*qoM6N<$fh+`1o6XLpg^X3&RR?L|*XTpRD zEiEk-6%{!-ISB~~At50i9v(I}HU@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIWe9tjv*W~lY!bEBs4Vev9YCbbPIOyN=T>~95@gzaPZ9W2DTp(A`L3RMl(J$x@<6S zI>EUogX`wC{KQ-4tY@C=IgrR8dY3!d;JM@4q`ZV*Y-tty!V;|SA3DImV7Qs@d5e2| QG0+|cPgg&ebxsLQ0O?OkK>z>% literal 0 HcmV?d00001 diff --git a/docs/html/img107.png b/docs/html/img107.png new file mode 100644 index 0000000000000000000000000000000000000000..04caf6e508c156c184859bb47356c8137e2220d3 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^(m>3|!py+H82!xa29RSA;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XdDHE{-7_Gm{e>*o5U8JmM_ocQ!V5KV)WRR#)GomBz|u%B*nq{DA<)0}Y%zBqXGz z6h6f})+~6ICXjpNz!~;M;sz20Nf(bDxbRu2LGktW=5OBY2GjK!J+0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*JqDe$SR7i>KRZU0~Q5^rx%$wOayE8k}hXzr&bVv_@6WAdrc#)bO zjIj_ZNtaOEOE8BBk1x>N4$&U!?m?`hT1H)JgR)~A7SrFh6NG+ z4)6W`AMgME@9Y17Bq-ceJ?YYP(jLh&evJYsJNg_7RCt^DtQh<%J%xiJ|J)1JpAKak zFWJO4=G-n`#9d+;Zdo*X>VO*ZGaez$Ll~MdK;JSTD_veDMZhYFOsB{@_DSRyk01Gi zS?w4syH+l(kTv_8i8~70%u?h+E_?1mgT%1VfTfC9l|kx(aiMp)ib_0afEJXVc<8j< zvaiz$TK2RlplB}X5j9S2$iDno8w+@nX z27xqD8Fg6XfeXH;>Yzn&r*p$Zq^1(0i#7+J%CN$B;kr{=^gdj;C;Dk;6gxGjwx)RS zt(A5P@4BFgryOl0ANXwe)_rFAFrrt=7%!l zbqlPhJ+;dFA&aok1sm(mCHhM@$T z1NlnDq=TW=ucXB?`=9SZ*?|R>r)X6Cau{MQJX&vv{QS=pykLH1SuH6@CDJE13gYZ)v{(0000RHR400001 zbW%=J06^y0W&i*I7D+@wR49>SV896yK*RzxK?4RRUJ%WOTOSy(qwpFSm_QU0!v~m% z0s;MKfDec#a3JZGV{8Zjv4LV6K7eGO1Z-e%01I&O32;MI3c&PFAk8|`fB}>S``HNO zz)43!YU4-5|c5EcA9U;(3N?A#C)>?{Qi5JgOI>lUCI zj^xWB016?LBm)B%s>DQO4$}e#c#uH>mjZ}PnZS_R5)r`d0F~!Bz`($mq2}Jez_J0z zW#OE_%rFBY2iMQS>%ew^0h07)GBYrJU;-y6g!xqrHOveQ4?xVN2GMRy9T_+h7&!Vn z6d>j^TxOV(z`$03?3zg!9@9kOF*l$|vl}oBc>n;i$|=JF3}mbT0000RHR400001 zbW%=J06^y0W&i*IAxT6*R5*=eV1R-KFsZrmk0VeQ4fnoOs z4kGNr3RpoJ`Iw+QE(Qh`1B35;3~~$)AU4GVvDqP3ZiXie8yMI@B8*VA6Bszjv5+iK z0E7tefB|T=5zKZD2*n0QFu?M_MTUXZfB_Oti~wQVoTtMSFo}XRa86KQ;B{aE#okP2a3nIY3BZ(a z2ZL0&F>FmMF<@w8U|4Fvz=j;RHR400001 zbW%=J06^y0W&i*H;7LS5R49>SU;u*xAU?nV2MIvDfB^|G@iO25>>O}43=9ppRG|Vs zAfCVuRxQWa5Wo-*7JU-1fx&^1!2zmBfPs-X({KO-uzn*TR^VZQ2!Whhz`$ydu#XRD z`~wDt4-5|cKxcdas(Z%H&G40B1I#B33J@(57&s|%1u38qLP;_(h=T|uz_b8N9Rian z6BtrkA_BM_7*v45-XI|s&I!y6GZ+~785mSIfGHrD$;`m?fe94Y+(821FlS&`Y7p(V z)RBQBfq~0~fuS75l1X5b8c@WTLEJ{_c#kXq0ALFtGnwJ+S^xk507*qoM6N<$g6_U~ A761SM literal 0 HcmV?d00001 diff --git a/docs/html/img112.png b/docs/html/img112.png new file mode 100644 index 0000000000000000000000000000000000000000..be0d5a7db388b829ff81feba73b7ab1677dd867b GIT binary patch literal 310 zcmV-60m=S}P)x^v0000jP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdY7#J7~3=9AO0Ey3j(EtDd0d!JM zQvg8b*k%9#0Jlj*K~yM_wUE6H!Y~kpKavRHR400001 zbW%=J06^y0W&i*J!AV3xR7i>KRY7ReP#FHw{u0d&h)T(iZ97xTiT6Y1|s_o zdEfiq|Ni`W@BjY*^-zc-Xu{)EhlR2~PoWJ=Lm0vh>1OX$pt`r2NyBlm?rDb-XO|r0 z6*BNr07oIo^n}sQo7+Yyis7#km)JuZA%qPRHWfu-7`in?<#TyJAlsDfNe7mE%oSq5 zF-B$JV}swe&gUTE3XO9oB32z|-w+WqDZy|m0q@Zg)NzrZ6@mKKy@;pdrwrSLEGKtw zMux~=u_nX4lTO~A(!9JqtCx}Uc4RuE&&mbOdmX<_ikf#IANWsWR%@8X+#2Vr5#yjm zL}}bU7m*cUye6yRpg00|8;^`&^1$itXV=h8i}`njXNZZ`494OGfJ(Q>Sh&klQ%ZQz zv2klN%?fEVjb9a(;j$@Pq0KFx^G5yv(9LB zbY?5@5dRt0en8uAy{}0LJL*BX0EEH^2k`C4o9hYhoY4bDZ9CT)J5 z`w72L7+4h-zX}ya?<4DADj358x;i!U2N#sT_?EFXIKm<~-CGt|t0f)P7<0kX(ax2~ z`$_imaj=2&$XM~YhSy3J^8UAK5#PJd9E=*Jz??yS;vhBCk8II|YDj(~<=FTYOP- zG6iUz_{@Ddo52~q&U+Rk`UZMboc2}56pLTQ7BdeT{#|V46bs{BdW_yfQ0?C@WRN|c zyzdeta@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIcGgx978lFCMO)=o^exB;)msj)tL#*6Xg%&u1h^fq6>=$@&S*U8s?c<_yV2A}bygxb^I=Xlw)_bb z4*Re%Z{yuy@SI(6jRHR400001 zbW%=J06^y0W&i*IZ%IT!R5*>@Qaw+@Fc5uBOo`Jf4jUgsGqBeSBT|J*kq|?dN(fXb zVnSlc(22=H3}K6ym{1tl`xE#n9T^P+Vgk-?Xw#}oJN8L__u=#T>^ooabYv``pg7c;W@?|x!3ihFs zp`_cRT2W7NY@mqLDg~^D@>`i9j?5_s|(iU-yQ}7Pm@`W_*dcQv}z$^SCR8^_S$C;9S nV7E~B%6?a2A(&k3UpM>#4cP)RHR400001 zbW%=J06^y0W&i*I5lKWrR49?vkReaRKoo?(UXQkWl(r6J1quP{2*Dh|Lc&it2eJm= zgoFe|6U@mvYz6-SB!*y+m%tCGN5Fe~mr~5-9AT2qn@)G9I}3{3V9J0#4&<@FEeeRz z_Jk#5xRCXVkTfGdX*h(T=yy*FWWdDT9L3z#VTy0;AaKVx|QXUt5+g(DnA_;Tq>|=C85u zII+7N&kg?x{}q!jzF*?iI=wfcTdo)OkrcR45$k>R}v~RZ5cX(0${@%f(JLDKRZ!+`n$Z*)czh|4^z|6HKM~6#+ zjeQr7VZ+)+#eRMd`x^%s7YW^oXgTRHR400001 zbW%=J06^y0W&i*IlSxEDR7ibSPj~?a_q87=BD+ z*tS79Dhn8xTPhh`HoGhesQ?LNCxFEnGt}H0Sjt11i8DrZ1H%qrT6Mm_u$;jT$ru)1 z2et!Bl??ItjR7j00rC`gkjO`dM+RI8%oiAzL44^6_EZ%^4Ku?dh7-7q>G*-{cPdNnqa|A%GBJ>+f)2Km)shURHR400001 zbW%=J06^y0W&i*Io=HSOR5*?8Q$0@tK@ff1EpU7ujkOnTG&VFQSYS4UNTP|-fZAQG z2$ikfnkYfhgs2VO6=+RiW3IWMz)w(q!8Jxp@Af!Yk&l893w_1y%$v6}v$K1E55n>c zDyG6lh{E!{m>5zRSkN_6++|RjU?KU&c8CoNbHeDC2Po1($+5Js<`F=)>#zp%6$9w= zR-Fu+0(XMHB?i@@KuyT7JExvNGiVN`*_kqBYXQA35=9CG3?v5x8^%ZzkkEzP6gG%M z<09wE+)LY!$0eg{a@mDSWT9Zi59s@@S=ZY`6jA+DP@Z(gxt#hf{FCQO*n z($bQXlar8;5E2sN;o)IpV`E@oprWE8AtAxT!voauv2T(!kYX$e@(X5gcy=QV$SL%6 zaSV}|nw-GE9L909fWgan1G__(Ju5O+U|b<|>=Fx0d*Y!qwh)B_ z4dNSCi6~g`Nk8y0Gh<_$R>W4;#>>NMBg43ZH(_N(gL9k3#}>UAw*!yPlrzY2?U>$l jnBApN?Sqw?0Ruz+Wx=VHllMIZTF&6<>gTe~DWM4fb}36g literal 0 HcmV?d00001 diff --git a/docs/html/img120.png b/docs/html/img120.png new file mode 100644 index 0000000000000000000000000000000000000000..5186253063ff3dddad7e68aad606234ce92bbb3e GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^ob8~YvH?uo)$Jt|dJ~w*2 zUDCua&humEO~p6w?n-B*a2q~g)Y>i|%xcffe7c#LeM`kpNee40nFUThT)gZO5jz#U z%HH2&5P1|_z>{Z?VB~Pg;tJzx#<)zqMLdly%-!P5$c eTz1x{FfdrHQBPS^d-@m9UkskEelF{r5}E)`XLlw5 literal 0 HcmV?d00001 diff --git a/docs/html/img121.png b/docs/html/img121.png new file mode 100644 index 0000000000000000000000000000000000000000..d677cf778c7d14cd6f321833f95b7325e4cd68ae GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&N!py+HxcqY>h+`1o6XLpg^X3&RR?L|*XTpRD zEiEk-6%{!-ISB~~At50i9v(I}HU@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIjNp5jv*W~lM@=47!|@29t5)$|7dt&$IPwFEVF@m<0LJ1W-SAzl`KqtY;0l7u8In; z54ST-_|cx9p~c;}!=CZjW>!H>VF{f>+ZZKv<_PalH;`xOJe%@O`~er!&eWBR(U~b6 a%nb2%0<4KF^GtviGI+ZBxvXRHR400001 zbW%=J06^y0W&i*Ig-Jv~R5*?8Q$0@tK@fd+-oXK0?h3WhL`piZuy;!fj8JGOFMhVv zRvV*XLUL+lzqtUQbWNSyFv9v4rkroc@pYP_Yb^hH}&+t%BRQb@%SA5@~G zI@Gt%rM1Aio@7;(6Gh5qB5?!2zd8S(g5@W;V*0&UpG7Q?0qu5jNvyVwW1WZqOvE4IRHR400001 zbW%=J06^y0W&i*I+DSw~R7i>KRliHaKp1_oF+E#r+O6nd5fR7uAH<^QA{G>>D40n^ zMcqUZJbytP#16W5@DIo$3SHtLI2QZ|)Wt~%*uhONy~ZRqhCp2kK1eS2zVF_>kIR<; zE<{iTX(}KBtYZognsyoLPar?$oGeM~F7zq61dw2E%Gole4Z?A7C6Pm24 zoM&6hf|7>qx!(*h7pfn@VD!Znvm|NmTxM5qa9+_dHz-$SR%Dsab5epJS-JHjYyPzY z<)akcR-2%p`sV=$w+VEh3M4&ThF!=0G}(UXEp(@$>lFK)Bbic$+F3-`)p!XTDJRWV zyK}a)@-%ONG;CO=ltQIq)K5`kq*dXuDKy`VeAsaMGec7h0~9EAbaJ8 zg_WTRDsImn{ie2f;N2)T#Tta7b_Uc)nGxj58x~WlWDe|LsYwklyux)`Zc^9n<^it3 z_8>+LT}Db(9Baf5+ikaty%<~g(5&`-3TtkuF@t@%P7aYBKS0+E=e(sp;zEnx6g~eR q>0DRQ0(x?-to}#4Alj!U8mupg#rqZ;eyF|x00001r;P)RHR400001 zbW%=J06^y0W&i*Izez+vR7i>KR544#Kp1^j+j!KLbQT9)M4UP}2!b3U(yrha^@zh!l6?G9D1B!E|qGXBS-u?tP*9Z=7dTCN~sWEM#i^T`Wec!wHz56~64hW%e zLUOcPQkW*OkJsATjlyQTSEu`1^~}qGTxqJ1;MQCI!hgzO~G2 zLz63Y9O=hmI_te(r+Zl#y4$&Ow>!mFgwC=|DXq4Pnpr2yk>Xx%Rx&!qtcP$352u>H zGYmg?cgbZCj(1d=VWqALh2WU27)84%pZW<@2xv`bG|^U4%R*p5z>gT`$mG1dXs{*s zDHTs*`1cl{a#!+=GOaX;Dbwz_9i(Hdw7=Wkr}dzj-8Fv}k>5vOU&=sW48&z3l(l~q zA|k~p+Yh#5J@ruLd6H8WP@}aq6SYE~>=))PZYEu7rxYA(wdDg$->xfEl;;^!seBzc zN78weYr`cr57px-fkous$a}n}*QRhGgQN|-BU5#d<lw}$V&@C?Wb|6! P00000NkvXXu0mjf-_`&U literal 0 HcmV?d00001 diff --git a/docs/html/img125.png b/docs/html/img125.png new file mode 100644 index 0000000000000000000000000000000000000000..69a41dd72c3c1fd9146a1c18fe961f2d2e8b5bb1 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^LLfE^GXn#oV!H4iAjcrUC&YF0=FKZste7)r&V&gQ zT3T8vDk^evauN~}LPA13JUnb{YzzzxR8&+XBqVrvcz~K-MV_7qq!>$r{DK)Ap4~_T zasoVE978x}CMP&B?%_2MOO|J5=I)vNM21mCn&pOwgaPB_E7O?R*q-t8vMHF#i!pgN zHZ6@1S;SQKj;*hkN8Z6lo=uMZ8>_;#u(lkwx===jv_*VkAC(UZ1I=deboFyt=akR{ E0OI61<^TWy literal 0 HcmV?d00001 diff --git a/docs/html/img126.png b/docs/html/img126.png new file mode 100644 index 0000000000000000000000000000000000000000..fad10afc5f4101bec7f166fd0f4be953d917b125 GIT binary patch literal 568 zcmV-80>}M{P)RHR400001 zbW%=J06^y0W&i*Iwn;=mR7i>KR6R?>P!v6B)B5aJB1kDt83gInf;j0A5V4CI#lbNs z4nl`IDNYZq8U(2zIA;+5giE_Qc2IE4PpHMs#k`lMO-LIeet^(J@^bHchnsUh5?}xc z*jAC$5CIe<1%1RJ8L}6%L}EyXi;7H)j2Yz>p-Ax6@@}aR?N{FxAp_zB?dc@kFe?D0(bwq*OWG zew+$BvehR`WeNFpc`XpBr^zP>uUG=AA2{aX{emuW!g9X`(vLQ1KayJ~UvkgF%X}3@ zypce1f`#sEyd$;(nmin1bR`PZ=ce@0)Gr|x{w?P)RHR400001 zbW%=J06^y0W&i*JWl2OqR7i>KRXuOhP!v73Uv0-?QTwNQfXp0;xyxdnecT z9^dQhcLU_WOu7{N3=p@KQO6|2>0Y1c@e_=6ukt3XdRIsplVNu+Kpanwn-!W|OhxU) zLQjq|W&xb;+Y@u}{$6TRAjEjPrB+WCWU_L3$w7@iv~)l~6)=P* zMqGZ4-_`mnXvrou-D$oD_*Y@C`@a`3pD|4ikL^zGo)#rWU>{dg+wJi(S~%$e$K+D+ zl+(w=M1#E~4J^iGW!TCk%`Tm|xOiSD|A#y$bgEHb=)(ALm>caiyasBwUZ8e!L*ISQ zhqA0UlD&36p9Wik6Bq+xkMg3x*Hw3sqG(vZGaitJ-N!y%FL4}Mw#nb?`=t0SsY`=h zo^{|ANccvUtTcy2EO!~jRoC_cB?T&ZuQ~MsLB0@D$Ej{P-5w zxw~*0da(Bd8x4*f812or(OQ4zwy)qZ2MfRWutwAG&rtC4zvj|?Wkyxt^cb6cFl-Kx Z;TxrAfqb8X{%rsN002ovPDHLkV1oUsR=EHG literal 0 HcmV?d00001 diff --git a/docs/html/img128.png b/docs/html/img128.png new file mode 100644 index 0000000000000000000000000000000000000000..0417d2c413403277f667a455f92e107b6191db37 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5ed!py+HxJ5zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XdUAT^vI=W+nr*J^0I@BJs}3z(Auxg69)YzyV&h&?%CV0trma%-YP%lbwSc4zsZ7 zJYZsOX6*1wNU%6?;DF94l@%Wv8XM<#&!4-H(c|;e&*~eJE*`tGzTwPSmdP@_3YQN3 z6>4^k5RR^AKjF#yMtFz1L43jrHqW2jA2fe+7pQW|B(in&-@0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*Ihem|q zrD$0mD4Ta=5s=)Whkt;>Lk>_G)hdbZ^PrA;>j1nyWA~I)@Q2&>XYO^bU%82YEXaAhz-esYycI8aRiwCA2=yNFSS|V9&+YVq~rE>bNnsr(Pkq ztDp|dokQEK9UarUPG5l4t_Pf^z3b}RYS5Xin`Tw46tR`&{CD^OV2nRF@CVTO00000 LNkvXXu0mjfpfu~h literal 0 HcmV?d00001 diff --git a/docs/html/img13.png b/docs/html/img13.png new file mode 100644 index 0000000000000000000000000000000000000000..5328d7ff4e710c780d672fc9b9febae0e8bddb2f GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^d>}RpGXn#o%-5n@K#p#JPl)U0&6`)OSTSeLoCy;q zw6wJ3%FwA4qXijBjc4n9&`-D$LNJ!!WW3pyI&r=4En=NM@4jo{0=49GXsFP5^ mko3Z^pqY2xu>#i~Mh5X(F1ZY;bzGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XdzXE{-7_Gn0YZ9@H|ZNaQhlvZg6CCo?f~1tcc8K4Mhm2byB3a>O?y;Q)iUgoGKx zN*1;@2DY?7wnQ;DwmQAGzjGYA^rv^mGX%2-?`JYH7xpP@@Z|pP&6B0aCu#2>R%pJ# zKcQmkq62(J^AE;1_|G(Lc*@-0%sAnA*rTV1UJ0okkUVyPfg#IFf_?MSz*L~47(8A5 KT-G@yGywo)08zyN literal 0 HcmV?d00001 diff --git a/docs/html/img131.png b/docs/html/img131.png new file mode 100644 index 0000000000000000000000000000000000000000..dd7c81bb048991571a12099fdd6a260dd7e079fa GIT binary patch literal 568 zcmV-80>}M{P)RHR400001 zbW%=J06^y0W&i*Iwn;=mR7i>KR69?@Fc`cvQR2QkBZf>&3>_F)KoLcv8yTts5<^A= z9heZK5dnpVL3atH#7v`(I?9YGS&Viu15$r4%*vX9BPfdVZV#S)fbC&k)}L+Ei| z_uYKeZoze-)w>amWzzi-CF-gVjmm#~%CsadBC&n}#xKmQcRMOb+55J}e7AhYPA}dM zr)t5MN?B1D44d7kqFU2^Z{c>&#Zl1~I+xC%$vi6^W2v#B(p9D1li@*X`TQ$z4U4~S zSB~1`G_i_8M|&Gp!i$_$MMxEcK->rDp3cO(E!onNXbN~m@1SWXJklCd>aY00z^`7~ z%B8uR<@Gg1OCsT-VXye7ics<99J8W1bI*VLKty>lBH;t&lI`j>c#7}<0000$r{DK)Ap4~_T za&kRg978x}CIhu4q%bt@=Mgx-)KYLDYs1XOy9zvt2}zq&7w~#;8?$^ce!!@@W?s)b zhbkd%W_E36W@~%%X66$g9P-%s*lVN=54wG0Wu5<%sf6{Duj!NAhVfBs_5f*C-I89ZJ6T-G@yGywo@{7Ml3 literal 0 HcmV?d00001 diff --git a/docs/html/img133.png b/docs/html/img133.png new file mode 100644 index 00000000..e69de29b diff --git a/docs/html/img134.png b/docs/html/img134.png new file mode 100644 index 00000000..e69de29b diff --git a/docs/html/img135.png b/docs/html/img135.png new file mode 100644 index 0000000000000000000000000000000000000000..12936326fb443e4a706aa2368f291f6bc6b0f606 GIT binary patch literal 371 zcmV-(0gV2MP)RHR400001 zbW%=J06^y0W&i*H@kvBMR49>SU;qKe3k(b_3~<20Ex@p$fdLtCpGW5X2Z0Z8IS|3F zplIL#H0gipLxu!~f(t0RAsQIa04tp3;531YgF)dw&;W)5Aj5dk)sh1Ykk|)c47LLw z9>nvTvG8($L_ajJaqx1OfmAjcurere^9Zs*gQ9^MtezL>rWAn{6g%cW9DE?G7z1!L zpb0Q#nYOX@cQAP|a2lkCdKfUb1_MQz`32-1su`H77-CpB6Ief7V{QT|?quj@IKs^E ziQy`PE(321)B)e!4H%{-Fr-BuV3--&$PnS;fUt;Tfwlni1F}3yBk&&^0014gS4j4! RW(5EM002ovPDHLkV1n|5h+hBz literal 0 HcmV?d00001 diff --git a/docs/html/img136.png b/docs/html/img136.png new file mode 100644 index 0000000000000000000000000000000000000000..38263b79972c46241af7266427f26fdf72eded6b GIT binary patch literal 431 zcmV;g0Z{&lP)RHR400001 zbW%=J06^y0W&i*IElET{R49?nQL#?LFc5vDuAMll6E@hg@B=V1;E|1vj1dD8TYsRE zg+Np+K`Tvz4QQ?}pC? zC<>zyV=#o&88G-{+~&lU8lpfW;rc>@D`ZrURN5>^I}!;>SSfl-NxOjf@e98~4h%aP ziey;l_*5c+VXdu=y{bdHQ5xE^$_8~r4P@Q+1#J>bq;OUGRhW%mZlUUY|BsNvoi&K>r1++IT2z&=roDRj+qj%F}HyQcf9Eb+k5jz Z_yB!DGJU)U;uHV?002ovPDHLkV1h-3vZ4S0 literal 0 HcmV?d00001 diff --git a/docs/html/img137.png b/docs/html/img137.png new file mode 100644 index 0000000000000000000000000000000000000000..98984bad543c7378567eb5e2bbb1ca3fb63243cf GIT binary patch literal 916 zcmV;F18e+=P)RHR400001 zbW%=J06^y0W&i*K5=lfsR9J=Wm(Od|KorN{Hk;XLXV>JUJqYGdq4Z)9!C#k=wt6bA zSY$n!Q(JnFfC?2n1Z*XjO8jx~81Ww%p?dMM2a(=Xyn3*p;K9QRMFbBzGf8%{*(AH! z)?&d&Hj{nH_kG^Hnau10^fer|+sp~Cs$pA4r1O{w5c@W$VJG4E^$MWW{zh2wkZ~*D zx|-&8XoU5F5T3TcR1*)GP$lG(F^s1H%;%R$2eN9ZNuFan1PP4oO*vp9$GrJ<;%S$2l#PkjiDozz&-#UX2LW1~JuoCN^o@|p7r zh4(j@@@^1GgMZNRIZdncN#Ep|mtEKCqd|^XBoHx8ST(59PFN0Q_{xRLjyyAwJhA}O zQ_cyyE0oSPq(`I12iH%~u_)JMTq6&@Z?VjGP7|65Lukg;j;2-vrsZj{ONFK;Ie6XW z=W?EgcZKQTaE(e}sm1>wScx@Mm3`b&*1BfE{C-{xb}NU<61SOC_knFZo@?by=CwMR6`)X@3ar`?z|D_(iR+q z&!rEe{)m_P=*eg#%AVZrNNj)W8W?e7swJHj+6MVSTge7UQ@jYX#Ii8anaRIL!nv9Z zbN^vJhL|A+^IzBz1~q2aQZYwv-j&X?`9XV43#V_%R<_$1bChR2m4bN!*Q7IZYwm}c z1^C%1+A%OHjTB4^HiyGtOJdev!{j$7#Hbs~^SZi~g1OMprL$2K15ab`e0&PvD=9Ng qm~i@qF^HyPqKIjjqlGEEY<~c|7Y8p;BTu^k0000RHR400001 zbW%=J06^y0W&i*JBS}O-R7i={RXuFeKotHG`y9iO#tVq44L<{dC4x#!h?6J`NJSos zKU6&3?iNyPh~5FFS}2&*_!%5MWh(ERQ+e75RzBX+fF9~~X-Fnw-YPakV1^z=j9?poMa6_y7qFK=|Z82Q3bSw<|*oekr+ zh$-0)5CndPe*n7UfOs(TU`!P z2UwziV#I42yJCI`#;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XZ3-E{-7*QgwQSuDC`wSN8o&))Kdk&W%11e-{M5Q@mpTXk4toxUI0~Mg144$rjF6*2UngBT;Ol1H7 literal 0 HcmV?d00001 diff --git a/docs/html/img14.png b/docs/html/img14.png new file mode 100644 index 0000000000000000000000000000000000000000..9245dd3ec99df955293d27cfe642a72268110503 GIT binary patch literal 368 zcmV-$0gwKPP)RHR400001 zbW%=J06^y0W&i*H?ny*JR5*=eU?2b{pz%3SdF&1hpHLP2hk*~sqWq}L0w|M%4aok$ zjMIFA=3=!0L+rx=_Ev^S9(FWoR)&BJ2XNU(Wx#?Skc7YnOn)*lBz&;oV21@48$$y_ z0vDga2No8-+yqpmAGo-fLk+N*%Sxg<$OQi}0r8p{4-lsgM^eDAOspxTf(T^}R~T{_ z=BGSmO-beWrSXIPC3a=(3)l}B@Cz^;VPH8B!+3)!03yuN@gsqO;RFK%PXn0ZHQ;mu zCC94_tQR=ixWX71#Bn;ezm0))##9D|13<_UNt_pt5T|Ug11zZq3jhEuPRHR400001 zbW%=J06^y0W&i*IEJ;K`R5*=eV1NK_26hGp2L`O5fkA-5oq>T3!bSp2Fa{3?M+g4| z5Q`nV5!eAg*kT3-R;Wg9&Hx660*)4t90xbDZ7if1iyLr4X?Y06yn$f>n9(2trr5a{ zc)<>FU=;uhn1U&m4_vL00Rhx;0!3gklx9K`Z-CMv5Q;q&%Kwr8rdT)_ox!n_0M*#= z0ZcJ+GqW%xfI=4-105YeQ#L@P`56)vff~3N_#o;lz$9lwzNZVsE>=vpIgsO_;RKi; zpz>M1;8V?=fXYw!fy4>wVm|<8bbx>Z14FC;zXFmxJHt*O-oXb=lONH{zRD1RHR400001 zbW%=J06^y0W&i*Ia!Eu%R49?1P(4e-P!v6F^3oVT5^!+M;3(8ZaD0AI9BPXcCy@tQ z(JiQx(;HfePQee*ErW|&py*ui52(K&*gx7^12oR+Rit3`AG3FlJVN)9pHf9>g~}fxDq`uRZ6T#& zfH1;pQh$GjUp1JrN{)h9T2Mi$6!M52g#JPvPc~ea%S^~Z<~Zq@{)XHS=0u*|uWi0> z=~*|Bo6*zKT#f4vsmBQw(liLDo(;;wz?ltF8C(R@u(m}96uRrmHDLSpU8GiRj%uJg zw-1N?5|<_uWTBgd|9POi!k|O)dvg9J8d2muoX70uP)&inKskzWin1igWQZ56pP_7< zP@YMs(8^RBksGet=$EJhl_*S#O2icH0+0B69HU4L23-Hr1)W9H;yPE_cv~uBO&dE9 q#2ze>?p{Wr_-Osnp+RKYpNS8<<;SBJMx*%v00000012X0{{R4XRy4b0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*I8c9S!R5*=eV1R%R@(kF3L6ZSiaV7>11_ov(4*x$uCNY4u07N!0 z@G~$tTw`QZC}3y+GTE3J5|RSIqLc$9L)Zf#+z;#w1s^Va09wYtz!AVe9ec;gV zP9SEP0AdLuFUcM5yCa_{_)2C&VmJ&jdDa zSOHe-sSXYp55QPQvB)xYI6zq+Km>~yL+6i#(58@yAr%bFtr-fe;VID&`K$zlGKZNA z91ED#766URVc5xF%V5B^0cuP(k}}Q-3cL;md4|eYc0{mex9033xojujUM*Q*s0000RHR400001 zbW%=J06^y0W&i*H;z>k7R2Y?GU;u#)4GjPP{|7S}SOXwzMlg?y(ZRjJfdK{tz$E8k z4hG%^2Ic_f1Xl-;>i_>gFfgz)Ac0JshSm)&4I%}tK+XhKg#-L7EDZb%cmX2{4_UE8 zr+X@6DnlD{Farb21O;M2C{!}Y$$*h$C00000fhdEP)RHR400001 zbW%=J06^y0W&i*H`AI}UR49>SU;qJj4sL!1G+7y49pC#K7gdL$-)3D149Ey zErY{X0U#Hso=t$kfE&LiLO_s#VFLpLFT(|(fgB7x8-N@JZU`R=xF|6mA9w&FAmPEu z2^0Llz?Q(kz`_E=511cpSO9bfPyobdQfOev2dhs7^Z67$Fex!GF)*Y7-N=nFmW@{K zr4+DYk0{oZR5THu03fjp%9+N%HUUVncrmzc@eE)tapsuc1`=o62A2N9zyeA*4l@}{ zfI-DSRgs|!s*!CgLYi}e0yogmLgo()SC|zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0Xg$LT^vI=W+o>vG%+hYViwTeY-~_qpb?Y6z|6+>`fn^o*OU)k# zJ~T24e=x9lkT`=OXv0IMW@hGWh9g1~=CQRgv9+=0@bFt~e36`xFzaIAjROZJ+`Kr4 z=}{5W)Y2RM4c0VmXlTfF j-OU`3kyfo7AjNPwS4n|g@a_emOBp;}{an^LB{Ts5=qFw_ literal 0 HcmV?d00001 diff --git a/docs/html/img15.png b/docs/html/img15.png new file mode 100644 index 0000000000000000000000000000000000000000..a674f6be44b096e85a2cd520ac9352eda70e4e91 GIT binary patch literal 520 zcmV+j0{8uiP)RHR400001 zbW%=J06^y0W&i*IhDk(0R5*=eV89AkK==c8Il{mJ&f42+unH^cIFuHkAHVblkk`=x`vj~ikcB@SU~gsUKtOoE64 zccAD8C4?Cqz({WZ3ByzX0V_kpg#%C(2+(jLpaCWBIRwyL_<@DN0e|WM+O*+A0A3{^ zaFC!1DgpGgO{26<0LW0Fmm5N1CKn9An4#w0K(rB9RkQFqupQw1<`)p^QqaGszo8D6 z_OKcORt;q{t%r$LG1M?Kd}QEpVBi-$Alsmd-y>kv3}{l98Kxuv6Dw~3gS=U3@*V5?lv&E6Wkp#A-LNF5AGIVaCZ+5L4yYOW%s@P z_WjxV(^6HZyQ^;B>T^0uRaq7rlN1vH0Rda?qm&u~0usqf{}(zk0s>3S1TWzg zZxz)n-`vtLouFJjv7Dov2N$y-OC2#PyVXr@A`G@F(ML7&vxR-M@-iKn_eB}j+QbFPlG$5w)VV)T_3@t+XTe3xQhpfayBA6Fmlcl1ytkiAI`&!s zyVwR9st9QPAAs1eEM{Q0qQj|IONdKGh?X|$KRpnNOS6CHvFmH$N)`qFmfVvSFwrQl zIMkNWk8N+B2uQ{g9f3iq-0H!`5# z!urkKX!uT7nM)fnUON*y5ZI647+@6buTcn)7HvkXhYs?8OSyw1yw0p&-u*=4Fc6&= zX1e+qw-NNt{^9KRFR8z40yrs&0G^;PgOt-@FYe9E#iz*r%z=jo&I6h3OP*X(69_S6V@ZUmm*-~nm9!78U_ z8rn_)dIlyXM;@QtoM`jce)!d(LOIa~2d#=uQhycAd^P!Lv{bZY?7x|55jSFUD*kV3 z508B&zvqARf1i%_YIN1Cfcu$9Yfwl1*dvA!s(_#JMCz&wRDZ35$)~mr*{8G~UF%up zlpg2z0WE1{)|&XRk=A}R)fKJ69i2k!PjsoZW8dhyogosNt+Prf6V%g=iWpKXO^YXY z^!obnxf2L{Ci9m%<*MCI@TgGeLM>)k5LVOSpw@hZQiLvI$9?Hy+V?UC3PqBwd;Jy`f zS4_>O{?3slNvA$Ru(~%*If_D;_KSEj5%6Is!K%2s)E;G2iwu+fE$dsctDlB+pV5Fp zWaqiTk${J#18{5fvXpbVXh>HK4L`-2O}tV6#I;#JTS02Bt~}=S;;y=VeqbW zVw9-7H$$kZckJP#UwhUaj{(hhnM`*bMrFcJdMEwttwI;-(uqHn>cgq@m6odd72bcb zg5nQG)NtODf!h`7KN?O@;q_#S>ykPxF_*m%b+8j(g#5w$JRGs9C zEWW0*gY~JiL?N|ky+z+JFMuuZYm|Re(YU%Vrgdbpj;|GCYTb{4&%@@DK%!|#;w~d+ z%&7X*G}hyB%lqasj z?VD6ZU89zyv)`@j+HK$IBloUj2L}cQ79y4nXv`r}10#{KX>UxKx!;`~jhm|R>cQ-X zwGERXL#VxQ8?IT>gn`l-^=a5^0-f^@zq{%w%GJNKpA+wk5^{1kah)5R%h=nk^}OQY z7lNQ)@RMDz6wcQBJKIKRd5@_9`3_`p7c^u0q_}$Aiu!hB5JgXrT4O|)kq`UvxR(w5 zR@|JZh5Av0t^3A`(`c<{mepYe^^pXQ0M(Npn^5ls-gJA4URrS!5wVtYlClzI;^!_F zMZzI-LQM2(!+T%s3K@eXmB&}YowXjhnYktcKyW+F1JXEI+g-SHQdU}4$Wv*K< zDjn6r#OHSvND_-%)RZ5V=T&PFQG+-I-Qap*J|;oDCdS&oEpb>`^@lORU>u#|8Q6se z!>q}Z2=hV8XSEp3hOz<+=@J5eSQqk@pCtwMPr zW!!)8+-1_D7gL6-!hkaz&L<*pfgmW-1HUz~v7i)@`^O3ruu02h5F-Hp7Ja^PdepDa zs&x1k^ZG)d65T!Xwu@7~c|7uz76K)Fn!mLbz#4gHFTW>99P`{%Y%Eq;WT}^-DrrT7 zN6k922Mk8CPV8Tdt}+aB8uL6;t)!d+io=y6xYTnc}-%<9|k9*%+FegCWP zQDbb$=B1Y7ESTK~m{xI{H-D-nFV-4h0%_-QqfLUOr*73M@Y@Qrp6t+Uyp=Tk7^QY? z$rkJe?`@jj;2w%qc2D0y6{>rnquhv@>MYr=!5g!P{>&*DU3}R7Q;aZ-pLuoLBP|@4 zcO5VoFMhFvw#a&_qib>Lk3x%-P9`MJNJ`tIzr*VWVp})_$U~y zy>C3@!&O(m2p;K+gLxh8kc1S9yLwhQkrhqCEJx=cR4AMRk}HwGffB1O@w5$Z=wAq^ zRkgd?b8z_#L))|z-~knNx3}VUK_lHLnp0Y(%(`@6p^YhvhmnSr&ITLbmj9s}+0)79 zsam`-CQuExBl`47yBB|P0VT<_yv8v*0KAgVW&8FnqmJq;mmcVi%-d>s@fK^Jd|8G` z*-&{JgJ(faH5QXv*wi1Cf-}o`CB20yQ``(Qd+B2_nunp5sPXM1u0gv_H=_O6+~sD6 zO*7&ZF>)T;O%Uu;YqGQuY%Yn<3{*p?5-~YHlBx2TbI50B*8%#(|Asr{K`ok! z?DIr2dzgRhs(Lws3p@{gGvo81EX&k%PM95)3iQ;>(6_znl=%CJr|L^D4S{E3u$hjm_ z$DBRo?@Xz#rJ_U9JON*Uz?UFpcLAmg0)Eb0EQMFla$nguWJ6$^r<#y^n1E(+z+Q~Z zMqH!phd;DOwoko|E>ebw?zQd zs|^^X-!5{vf6-s7QZ0rb(oZsSGXJ8L_1Rc13|=U~=7}mlZ@l!cl67x67o!#5v_WyOey1XVCAonZH3Us;_mRZwvBjF?z;Qk zw;Uy8gwMHx<^qUSCb`>#Umzg|v8$JxXlgL;%+2BzVhcH2?2$WM!Roz0@3VCZHdm}A z(Z$m~51`!mb#$W6asUkTQa2yK_kJkKYT?==t*3ttUBtyzC=eT|Ve@v4W?0B-3ANHs zUTeonkT^pm{P6R;##(3klytbTxW_&;134n@l@9ZdrI27DxlD6f-0bi0Nl<;mgbAqU z5#NE}am@6UW7;RpzSs!tc}M-^<2;;d=M)!1&G#rwe`(OzfpyyHujNotHjQ>XL%0q7 zG_DFKD$Ldv_Q=2rIaD(CR}ba4o!$cd1ra5R)nP!;GZ8O8%^%>K7tjlb0r91`(v?CQ zGaegYnZF{~(uCH`uV`w?9L&#)4CNS@3YOonY^avD6TeP-G~i2Npzuh09JxiKriK@! z66tw%uWvUEAJU(h&Z8jtVrnydcVo`3#Xn&eM0%#H&8ar}!-#uul!&c&4bQsI#Ud<@ z+L!RbIM^QbcZ=J|aHSlx?7J5rPJf(>vSwd-f3E=Pz-$LM==7*xKr7#I({v@IPC`Z4 z;Ep!AlxxGz0MU}5mTBF60#sq&Agz4AgW*aYsAB9N@{;@{b^+FJ(b8P4^ZL1TV*a80$JGm`Q11b3Hlw{NBOXb2Zs(sOXRH za{VdGg`{$HB&dp%*MRpuS|g`h7--jf`b|-U(^41rQ)ewUxXq>ETd&Ip8;TUR!L=6$ z`A2C!Fl0g`nMrR%dJxVGwvLyPIa^{iG&c53=9m`1xr=d>H1dpzz5E}l$?k&U-vOrC z+ggK;_-fa78pYnI-z!~NY{~B0c!{-)9?If|imJ`#6vi+lY6_?p6xpfWEA181soCUr z1Xw42-9RK?V#>4KPu5Io9r5207o;dzS?S4USf<;kNt?t9SC%yM4G-|`b#4+^_e)C2 z@$Edcq*xy_b3DLrCn|5%%Mya*@6gp@4RUrHvl3c>_hli88D-%wY28EQ3rtzkDOf5< zIMHh4(({zr;BS0Aa-A`OjY$^(RC3I-`>szAs#{87eYKQ&CNf5Rl>ygp@pRGL&UcwV zJ9?xGi+{WGZr7Opi~zL7{PHq$N?F8>Ut8g|p7v*K=b<(j2P(H3 z=8XDdE>O-_|0Y46?slZmKz3=+5F%R346NL61%AJ2^2u}(+4)`KWZoAq-e}jnP~QeR zsM_jdPkp3bxUbmH(tkeH=84K)KsFTp1E%OX$#`rzA#Yz2RLInM0xR%2A*}l{D@#vWvFZffl zG{M6(5)U~;Emhzwa`AxNg6KMOU_R?liIOz=u%d$}@QCe(q8dr$FK!xFHH z5ic0f7~ZOj!5$sd=Jj;k*?$_glQvcENl((n6tQv<3yA1NLtDp038X*rdvqOe|9AYV z)j5nTamkZhg^sRq6uNq^bu**4)A>q6qbJY!eMPusHEQivt4x%YS_v9~oA|`h8{NaI zI9DW=Ki{PKE$Wc4hzN@H91ol)9$g&L$2E+2DyAibhx(PTJuVO=$Kj^3GHoF+JMl^@be7 z449-Zry`&9^mH{giJm&vR^kS3RE?)-Ar|~YDog@q{q%v&hRJRS18cJ>k02Yf|5|Kk zu511jX42%y2dlQ+n*7i;Gx=yVl0JO98pa@t-bqELh-8vJK-^-4r4DB~kz&t3aF$P2 z25Np({>mooXBAy4nfG8K0O_nV$mx;}QMHiWsj5EZB_jZ6#&y6Of3g{evh@lodzn!=55f>a z2~lxN;|9PounnfW#(11YnYhaLT{yRYe@{}`MeGPO4E`jz^r~fr*Dblq@YUyI4{yBL zYftnam%kHoZxApn$ci2fIoXz#U%wyt<=>g4MLa#S$jqc^x*A6b8|@+@H8pLq0o&Af z^aoI#$SE;vPp{`$+5U+7kuSH&g4PbjWku@VC=aFR z5K?LHEhD`1ufRh62L9FMD|Si)2=3(jyd?q=jGWkoS}tz=%axT6Z589{a z<@B&Oc%i2MEWGPKA9A!?PM-sSQ1LQ_{z(m?@F?@}lw-8kiH^W~2=?D5Uzvbl# zIRBB|t91&K(IJ&rR5Z+K;GxU+&YYPesC5A73fP%aH59g(S=g3B=DF>Gy-qhziN^5e zT09azDBO}69oPX)C@Pg`+}U8i$bS~DA^$f;9TGrAkAF3Sn9pJi&YmExcNhnAofKP8 z{+h+Vf`0ym+vg!=MBp)l`yEbyW9<8hm@}t&5hZXCqnG8AwE2e|N_{H^u-ddWY>$~C zI?i#*Eyj0YVTfY{|C32SR*QugQRemGDorg+3X=)uysRi)amHoKjqeC3+H9_k@7VpdD{$UynlNFJ06Ghwbt)x&N<-&}jP{QXWBBfx(EZzxJ-Jiwx-gd{VXnJ==i{(-UHAY4C}^zSQNuB3RxR|VM5=SIXuNO6uC20%(^hL? zVeCGfw4tXi)ObU=`$4?Zv)IUggAq#&VPhFFYYOmp)fwq0k4TDA7FJw7(2V2zOP zn%*E6GRAY*^4?vd*R2<_t9;;U`Ci52NWYz`r}=7wb*k64oGIg&*{i?o>&#DS*1YYY z6`_)GLg)+P_@&p9$_|y|&ekAW|ADd6^_rM~%oZYnA)j!eN|8lIl7OCiN6x1QaTr~E z)p2oSQ=c$)+BS&&p@CJt_0`sR(^XJgSdXOz=w=!DMP(=jM$YiGSJId4#($Ho!M|0B0VN0;_|RcnsF>IEIqwmC(jW0(oy z(YiUJL`1ShG2Yuv66NJyxu^gyoQ(V^3d;*PVE2}-QJ1vi}W~aq}{cZeh-w2z4ZhgcE z_n2|rp-Am@7VY_hf`wnz{9>*8vn9w5knr2wDH6t{kt(A2+IJ!Q_>>!jDbW z<%H?ZWD&0<1N9%5SV?lgk}zO@+|mF0T!UV6(14>`-*eOaBU?HB&nm`4WCH-{u9tr$ O1UYGCsR{{`;Qs=oen~I@ literal 0 HcmV?d00001 diff --git a/docs/html/img18.png b/docs/html/img18.png new file mode 100644 index 00000000..e69de29b diff --git a/docs/html/img19.png b/docs/html/img19.png new file mode 100644 index 0000000000000000000000000000000000000000..49d1ccae147ec91ae1c9a1c664ffcf6fe4d936c9 GIT binary patch literal 517 zcmV+g0{Z=lP)0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*IgGod|R5*?8lP^!hKp4iK{-M3K*{;DrLVzMjAegcskV}AM4g>+_ z2EpKpAlQPT2?08Z!{94$Gm|73_y!YvfHRPx#?jrnwyPnj+%M_f+vn|b@4e|A@DF-o zmeaD7h-KSE4aB3=Z2xEJ6pol*UBHYY%2z%DQ=jfUE`>A_?P0c1DgY_-9t4DmZXfuw zP^PFZUn87S|-yu$^BTEtVj8Jj4Os`jYtTE>Yr=V*U-)yE=?V>@H(j@zCc?V_~DN%FJNw9VBo>PV5`IWFNI(84Nwh(r>mdK II;Vst0KC#31poj5 literal 0 HcmV?d00001 diff --git a/docs/html/img20.png b/docs/html/img20.png new file mode 100644 index 0000000000000000000000000000000000000000..cf820eabca16e489570d00a7506cde5ae1cb904a GIT binary patch literal 771 zcmV+e1N{7nP)RHR400001 zbW%=J06^y0W&i*Jfk{L`R7i>KRlkeWKotIx%@$0 zHHlF!3U;_7N>-}4xk~Y6Qq>(8AB^X@RLioNUxANIm>K;9OIsRUr1G>`-A}-o7OWK3 zV4iU42sZ0fC!!%{=U zU=u5Rj~>>`B7Rk*IS78>iGxjayqU;Ut@^dR=v?)$vG<~RHZdvXZ+PpJM7#wew{T^v z+dg%8IBdkU4+kAIVv}~ybPP7O;fD1DZ=ynk_h}!y27jZ!gOWYfBjPb8qY|>?FT#5+ z+!EWxLbFDT@qApSz+1m(<#vA|dgGYUOIzCCuwPI#lO1L?MK%Bc002ovPDHLkV1gj$ BWpw}m literal 0 HcmV?d00001 diff --git a/docs/html/img21.png b/docs/html/img21.png new file mode 100644 index 0000000000000000000000000000000000000000..309dc6000c028859dd810d44ca60e5f9d8dcff27 GIT binary patch literal 618 zcmV-w0+s!VP)RHR400001 zbW%=J06^y0W&i*I=t)FDR5*?8Qawu?K^T7a!*$m4c26XM2;vG?C^p;0N>&sJNpp}w z3keGf+IbcM?M_|fh=r$Cb}Oj$flb6FWvUQJet`N5HbuZP@67Do&f*c`N348c-j8|b zc|T?bP~f9trDn-SCp6ktwPU;mlM5S+QjS%V;$P4HD*{?BbfpWcy+Oit3~4nDi4VHc7s>z9$HK zyNZrWaYx}(olSn*l~_ZWl`S53(}YxCTqV^nW4IfAwigsATFAQX$;@7v6uI{~$jm*d zs&ckxJPdK(wLH~ZO|?<4wD(?%$71QZL@NDLpz=ndT+*S;Kivxvjo~OxP&T;v6 zLwbu1YkPW)N?k)yOVH|@r79TQ~z0M211pRq2et)(=7D4YK& z-O(*B4-E>R>M)zcMKSt?YrjR6|9<%K57y%V3+a2&u6f$^CtmZpyb7J}{8JuEBd zb}k5{7Y6wdjC)F+53kgmM?z}3I(L92rkuJb`x%dcKde7nCGdgSG5`Po07*qoM6N<$ Eg6_u>BLDyZ literal 0 HcmV?d00001 diff --git a/docs/html/img22.png b/docs/html/img22.png new file mode 100644 index 00000000..e69de29b diff --git a/docs/html/img23.png b/docs/html/img23.png new file mode 100644 index 0000000000000000000000000000000000000000..e98a26a453bfd13131192e1023fdf6ff45ebfb1b GIT binary patch literal 480 zcmV<60U!Q}P)RHR400001 zbW%=J06^y0W&i*IUP(kjR5*=eU_b#52Al~D{0sshHY)=+-{tX>QnAi4pjfUz}F0GP_n!crF?sSl{!!4R?l7;6qy z3`>EEro#=~!NBrafq_XtAK83hA;RkL;cHKmj&b#$ovYR1adzU{FA)XJ=r@ zW#Cuf2dZlK2|#ghgp2c41qSZ23TGtq6H_7-7}!#GFfiyDv=QNJaC$n7_KpBG|z5S6jFUI7jOGdH5eJ#groLpFA%FPh dfpZ5K7&zNlKcDY+J_a<0!PC{xWt~$(695~!IeY*B literal 0 HcmV?d00001 diff --git a/docs/html/img25.png b/docs/html/img25.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2bea65ce98054618297ee530b1a345b83b783a GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp@KrF|?%)r1{)UfjnkYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIcc6Qjv*W~lM@=48Qa)6n%^^a{P{1hbxxc?>1N`ofAt9tOuVcLMU2df2c8u)HYOfs zWMgw%khzA3=gheqSO2z0ck?dsN$_U~(%HlLi%H?1Xq#xl$1NTG3SD0rw=+6UPuMEV cVaLF5w?yi|i+e`}fHpFCy85}Sb4q9e06AYx&;S4c literal 0 HcmV?d00001 diff --git a/docs/html/img26.png b/docs/html/img26.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c723d5eb0f50a06c0c5ddc897f7184ac18afd7 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^d>}RpGXn#o%-5n@K#o>`Pl)U0&6`)OSTSeLoCy;q zw6wHTR8-{TEP z6IxnYDk>^+a&i(95<)^kJUl#XY-|h+3{+H9BqStwczA%CUPYds2c#HFg8YIR9G=}s z19B2PT^vI=W+o>jJVx_n|Ryu~)5 zQAZ(RHR400001 zbW%=J06^y0W&i*IKS@MER5*=eV1NM*0}$!J&wvJaftZy+-~*WBfG!IKDgtakvVeg> z0EYq?V1iIUyY3zZ8R^3iz`!6068Z#_1A;^Xrr-n#V3HH)8@Q0R1K5FVDjYzu+q-vf z07(N?Hel-Jz!aiAaAwC8c^>`4@o8yOvYeQRS9QVxL;xr4{7#z*~EYxKcQu=8^8>e1q_oJxEt6fa8F?HX9bC| zFMugxX2^!J)EBTGVDJ~0WbcEP)RHR400001 zbW%=J06^y0W&i*IPDw;TR5*=eV1R=H5Fr3zGcuq64hDt*Fe8BhJGdpt3SlVVPyhu9 zV8aYR%;P{@aqj_;Y-Qm8z`!63WU+35y8sAS@SBAj@IWYjI130o0isS2C<_-m=msJWG#CmxFn|M>jr#$R zR1jon`0&AL0t4sn-MgW|xuAi;q3ywikC5o*O8}7{K45WA0j5v|8QvNQz*y&~xrGRI z9SqzKFgD9soThzosYdX&L3LsPjs}LMFdc2~2N*OW5;A@?Fo5$86r{F9Kynd-$^wST z4806o0o)A?U)X_(o3s6Ufww|KAs0000+T6bLK(@myGZ4cnea`bU*M3d&sKb j70u|PSJuS&o{fzGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XZF>E{-7_Gn0YZ9`G^<@s!&c7-%#|^ax7?G;}dY3-N2*JaFK^lL=2QTsY9csAphc z!w|%&;Cg0J51X{4#E+dnB=Z)zS~bQ6Q8 LtDnm{r-UW|V^v!J literal 0 HcmV?d00001 diff --git a/docs/html/img31.png b/docs/html/img31.png new file mode 100644 index 0000000000000000000000000000000000000000..7dfb344707592206da4b0d195a68749336ac3c1f GIT binary patch literal 780 zcmV+n1M~ceP)RHR400001 zbW%=J06^y0W&i*Jib+I4R7i>KRljQ#K@|S>c5i>h>}_EwG9DHt77hp@b_-|3D40Vd zih?W{QMB-aB8bfvCR`!7A|mMyL9kpfh;Se&Q(9RcVr6xLe}M1J&h72xE(DE*g&*wO zZ{C|X^WMyRyTDGkl0-A;$pDxhvyLLSw}6_3r7H839uXnj)#a;xUsG}h2)}0$Enz3V3JJej4AA8;%ZCv9uLk?aC9 zk1U7H!s4(1b%f5qlF((KG$6#sqajBPbMipeuZSAFZnw+J^vO_D=4@-o83L#jgM9l` zZ5b)v*>6(+HX6>D%0Wq|uG)mpuS(7}Qd6YGv<^Lik=K33yg1T0zrkWaNETT(bB@_o z6lNVn;v%!RguDD|!6W8gsD7F7swZ|ng7IBQ9 zG^sg^*Tr_yOO#3>+9mvQ<^h;`ttgxx|3)y=!h%Ce15$r{DK)Ap4~_T za!Ng2978x}CMPg3u?lR=WMY=sP_V)1KqI5EFf;RNWv2zD&7F>%6YLHgI&kiMgYbss zMoWyWnI$>*$oy$^aF+ZbDZwitu|wiUOaxcK>%&Y8ab%23EV7plfev8sboFyt=akR{016LI`~Uy| literal 0 HcmV?d00001 diff --git a/docs/html/img33.png b/docs/html/img33.png new file mode 100644 index 0000000000000000000000000000000000000000..e341cc9524eecb9a70504d0177f54826254be223 GIT binary patch literal 567 zcmV-70?7S|P)RHR400001 zbW%=J06^y0W&i*IwMj%lR7i9@_`p>VRu#Xi}JsdDm)hPr3H&N0T82P!` znH&;0fibgt_ihG$eg=jV1}>nq0wLW77nnw?kWl0h2vnjzR!LH&B{^ zzY&=00vZU|%^5(M%dvu5{L+kM7&!{)4&X6Qpim*8m$A*Yfqimlt4jt0gN6G9hR`xs zkSqsGh1MsJO)hN=;-O6pJ&$;gf%J-dnoI@j?PcH!FxbM-!C=S0-M~J9nIRjbgM9(q zo)16>EWAKCCJ}6}0j~oCLpo6JR|X$umJJLK8J02o3-Bp3FkAtbZq8_Wr!nv|F_;~L zxH+3aL3{#GuZ3%7A-4fr1H%#rwh}KF?yz)(HW1MGq4p!CzbV7Trnzr|?hT+`)~TMZ z46F_0hZTnl@p?Jor7+2H#1u)aC0IZ^1$w6{P@tL0002-;T?O8%M$`ZR002ovPDHLk FV1lNn;$Z*) literal 0 HcmV?d00001 diff --git a/docs/html/img34.png b/docs/html/img34.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c0218c1a16892d364509b6550e3acb39d7961b GIT binary patch literal 1050 zcmV+#1m*jQP)1Z%40000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*Km`OxIR9J=WR!xW$M-=|Lt7m$qd#8Im$mV8)B*-p8A5=CFk``yo zY6Kh1MuUN@WOY}Q!z@Z7B!O}@>q7jQ5H{pEge2!ems|#9PM%H3A>=gikn^xa@DzQo zdZxD>9bGqT7G%F+s$SKr_rCY4UspBo4CHo3K*^oW@j!arSr@1Q#b+5m30|3+{9y@n z>~yl8bjDg7rZ81ca)3xj_a`h4lyMPD-so{1vhj=IZ< zc7Qf*c^Mtj#$W%7HZQoc94%A#zz+hQLQQGg(c%}6d$zNlGtbL>F^T-I2zB;(ZsKI7 znh2Tbscf|5NXZvlgH^2wYSr}HgbuBY=4EKU<$V&w z-B3v5UnueZw2X2T{%s3{T~%+*Ocx@U$Wna!1jMFeVSplSCQ(eG@O zeK-c6GexNKK-0D1%e9;Sw+nO=n|O&~)H9!aqSlkn;gKVkmh4U~zUfKDGA%OdYhWEg zhV}JSDnwmYx5t`dbVdAu)k6V{`Kq+Po%pIU1B|_0$Hb>qwn)$Rk>&9lm3a(L%;C!2 z(rsXgT~41m12J_3H-VFvj`4SZP<^cLHq6tnj_*1u*<$#>u0@`Hht-zCRXB0Dgay0_ zSK4)fk6CLs((pR;<3pSNADqx*DDxHCrQgIH4FtZY$rjH)!fI|+!Y>!3XtPCFihyZ$ z;%XQ7a7YmOU-(%ZE_>U7-}Oh)zCPCP;G5V(sq#m$f?tN!NkT9?CMxnVR=7tfm2GfN z1Y|+E1j7`mr`2tYRZq{lVP4|LD1Yu?#eHvjg^;o1{%iNAuFuU>-ne+JzVi=Yo?V_N z%}h0-!SVe+?L{F*PWH3z!>_mur;5*zTRc$Z6_hTi?HZmN#UN8EPIB`UXZd>TtKk$> zXu7Mwtn;Gr)pLcZIF@xe)$PrAFe`?8!dZRGulkNO-(Pin>xs)7!nzo22<=ONhq|7- Uv#T)PmH+?%07*qoM6N<$f;GkXNB{r; literal 0 HcmV?d00001 diff --git a/docs/html/img35.png b/docs/html/img35.png new file mode 100644 index 0000000000000000000000000000000000000000..9528520c2707125e7b4dd637fbfe17b56f253683 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^Iv_R+GXn!-c$r{DK)Ap4~_T za<+K7IEF|}O-^87(qrS;afE?g=CVY@T^@-G4A(cF{l&wxhDmLv^@WrpOiD_JC2xsb zVv>+x;xqpI;YYD%!Gi4Lj8RfeGPX06XB-wYC@^4A-SDa4laZEz!H3NTHXIrSDZ(=r z960bM%pmcw$+v)SLP}>0V>4Ag4VUI;x%zaTmxTp+n3idp1oZo-cf2SN}0nD|iY za(EjT8{0Nsg`<1;Vt6^rc;@id^m)q9uve3LUK)_fz!1WyYV>TSt_#rp44$rjF6*2U FngDyoX|4bO literal 0 HcmV?d00001 diff --git a/docs/html/img36.png b/docs/html/img36.png new file mode 100644 index 0000000000000000000000000000000000000000..d18c1037cb2f62860f72b73c52f67a3ee34667b2 GIT binary patch literal 791 zcmV+y1L*vTP)X30000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*Jl}SWFR7i>KRnKb^K@|RWXE&Qc2e(x=?RXHHA;DlvG;2Sc@JEC`0Ozm0c&NVo8i#!s)D<M7q<(L#lh7t|tVdzU zg65zo%ad9jY)-m5()fy;50hs3PNyS?Dzc=dAjr2s3Xw0`ZFABW_vDaE9Wlrz+DgGn zr1o#Z3JYxv;n}Lu+%e*svBedJIo80Bb^_&`_>qM5x?Xo03+N#uRxu1CFCV8)_gv`H zz%43xcx)N#CXNw3-|4&tOjBB?76rOg4<4@x(h4N&j;v#c$|4NYB;2RgaDCY2-K=P% z5Y$^?!HuF{O!jb|9tvj$ge}sb#q2)bYYbj=lW1+aiJbk%UyH*QR6AYxxl+GqSq0~M zebUvOk-MHMI-EUD z`E72JD$O-O&3IB;<%Oz}&3Vp0O~w6z)nGoc>GF1-LEPcW`)I*{7@S4l%_R|)o$)vu z&%^dPdP4|(=q?muvoZ?|ilJG6!R1q9u5`zgab`Q*;3;}E1IWE27ewrD?9dg3hSIFV ziq|Zyg3Lu=btEnRHR400001 zbW%=J06^y0W&i*IGD$>1R5*=eU_b={8yMKQAxv&GDF%)Ym|_@U1H&x_CLjcY2S5%v zpkm*D1_pK@gAc^(WZ1?C;-njpWf&oV%ZVEpE-LniNq7TDrU6+w zTZC&XRCzB0R{+DS6b1DKtOuC+1vna*9{?q)P)s-A1nTAiEC0&i!^|4M@_}E0*NLHn zL7sstQGtPh#Q<43gFb@-iw9V_g==OZt4o*wTS|5)!$pR61};~0x3g}^3K3vvCC#hT e1;_{)(f|NitxNs;<^ah60000RHR400001 zbW%=J06^y0W&i*J;z>k7R7i>KR?TbFKotMwW0UNr-9%3oFRA!(%|WOh)NSi3v+MiU(9$d@RISVSHA$2UTTm{J|*ZLS3t6`7Qay&qefn{ zHAh*8F47eX>mmI=!c(CDa(zi@c2pMi%~Qpd9z7L39Vd1!f7oEvRw6}HVfnbdyv!_e z_)1}zPcmD5?~$F?(V->|1EUoaWg7F%Osoqx2kprAB#x|1RlJ_}q$#jz`4#x<+q3^+7qeEB6_F)mkbeZO5JG&pl zgv?Ovc?S!{ct1vS++Nz6Cq!7>O$Nw&bmWRK&g uepr9SgE8LrZ*aRoA;c%(Ui)?ZkK{Mt)xyX!>Q{^a0000@*cccXsHmt&NJ#MT@BlTviab3JNHLZK`2{mLJiCzw za_oA*!t*T}#}~py-34!H3NTEHwohSpo^c z2?=G|1)?6_J1!h>nlsU*;W3Xa&mE?+93}n=S*|jJ67CPpE|t;}c19cC{XTi&Y{1b2 zMGX%*m~SlK!xzKLX)a+RX=hN!`G_y!_JI$Y6Brq;y;8ru*flE0ALl;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XaUNE{-7_Gm{e+k)@#)};Xrd4JYD@<);T3K0RUY7 BIHLdn literal 0 HcmV?d00001 diff --git a/docs/html/img40.png b/docs/html/img40.png new file mode 100644 index 0000000000000000000000000000000000000000..51da0ffda3e489d3ee26db5b1ce57a5b717f6657 GIT binary patch literal 508 zcmVRHR400001 zbW%=J06^y0W&i*IdPzhP!v6B^U)eiBM7d~Q5}3!aeRo~1PfN_Bo>N; zg2YA9DT5Af>FCzQ;+UaZ7k`5I3!=Xuf1UYP{0GsYxP2E2x)8}#O{-;Inp^J=Xn{9EuDyk+2)Dtx6pveN$ku> zP|1}U!bY9jaa>|GSfkNM2J~D814_A!PDcDqSagk%7CLF7UuJ=lpq3oZ5a*t7!wCE2 z7-K^7o02f_iK75DiY>}sQN~M>ArLV?5M?GNOEp8&&-S2af4WCiWW*AUlCr9Q6rlBh z3-pRXJJ+qSIF}oVU0~no&C8QM>J47%?qCRX1Lz6w=k;d0ahK{>@9C?vE#?fi5ks%i zIK{-=6xQceN?#w>^8xHp_<(E#Jd~0Ac66TCV-w73CwhxA&D$1QjSjAWM-J1Qt=|}) ywp`RHR400001 zbW%=J06^y0W&i*K2}wjjR7i>KR!eIXK@k3CcIUMdX9oo_2(k+1;=u;N2VO=)k{=*&bMh^1q=+I3yw zFzPvEj)g;@Am)FYOp#IaqLG2c{Xo>PNVX+AI(c8QPzu=uVyFYurN#$r^LIyC62DRw>fLt$4Mh@%F!W8 zb8PuWs4Y&SP``rLFwOy|h09t7N1vNq#J+0H4WQkBF%{zca2#_A7Z$3|tB>Fkn6nd$ zC{m?Kz5pxQb(CLL*jaM$lDxk3ciH_E$`v@xy-}IpN1p+4l~GKr58wnV`dAC^ahv-f zP7MA7!{fZePAWG0%FfEDknme>jmTrd%Hp8GTn7L@RZXgMMnstm;5bd<5u;;u0`B7| zKa9FUlTCNA(w!VXqm9q_SOQiFW;fU86Wd6A+_xfJtS+-F|KV_)(lq8+%A85qHDmQ= z)rT1?oGg_@yRMR hB7`Ct+Sh-Oz5@_Espq_0uE+oY002ovPDHLkV1ibsre^>E literal 0 HcmV?d00001 diff --git a/docs/html/img42.png b/docs/html/img42.png new file mode 100644 index 0000000000000000000000000000000000000000..e1a29cbd050eb7a6f48a2a24071e3b774973c2f7 GIT binary patch literal 562 zcmV-20?qx2P)RHR400001 zbW%=J06^y0W&i*Iut`KgR5*>*RL@HSK@|SnU3FJ8_ZkLm5MJ{Sh%i*>mV}14wv$l= zdkVX4L1l+RqEj8R61y(sA@Cyo1A2(g(qFK3>1c0et+Y1#0Ui2a=Dq#qy*Ka8yjkEK z)EuBlLw%e~BVt?7+wu4247)vgRyds?AtH~k=4Lzq9yXaM198Jp*{-V3D$Sq?c#|xR zVZiudOw4sSY?mdGM#A6AG-O8x!Ez5dx*rXc+J+Yxt=F%C2S8#ArJttqC+K`$pESUY z3Y9}*FQc_zH5$G?YqJ|Z%8QP1eJzXw=nb1F9%op9$DFSr_C(hekl=?_R)CXw-GVR+ zw0I!8TOoolE!K26XKy2Ik+|`GyXJq5v)?!cR5lC6VsXpeK;FCfNN)1khYh6Nz3wp9 z|Db3aMeXYMFQjiLSwQq?Ii0*po@WZgEXLvd6*#1Q;E>F6scraKgJjoJ7RHO1M(mNE zSPPe=I!hyO`^lD~Q8Ou~^C@DL2^&>GCMuwdEmSqpgih?zTZ+g01SWZxGTf3z4wZO_ z5}$&iqoOrC9Swa5Qqy{CD;cM_;6gs(ej;Du8P#rJLUvO&k^lez07*qoM6N<$f|z;p AFaQ7m literal 0 HcmV?d00001 diff --git a/docs/html/img43.png b/docs/html/img43.png new file mode 100644 index 0000000000000000000000000000000000000000..262d8531324ddf0574514c2b76cae33a73e34d89 GIT binary patch literal 564 zcmV-40?Yl0P)RHR400001 zbW%=J06^y0W&i*IvPnciR5*>*R69??P!#?suRgRi3_8-mut;JDHxp75K%MM>2?+yr zFh=9R=vW9u9Zb~8=paUA?m%2vSezVWa%SKM)L($-LRCNzHF5Au&bjA(&$+#~zz~cK zAWRL~c%q17!)z#lct7~%2~NqoPh;c608;(Aw;gVa{uY5IZrdi@@F0es9c{o`K#0-f>m`MyYFqnW{e zi`sgZh#CXYmeX6KIAOj#lVc&o!&=25Q}^4+96VOK&Z2q0qnpphg6p$T8&mihk-?*< zjRg0-M-nTxYYmjs`$*Q-jE!RYltduM`iQ<|`Hq1z3dB1CVHEe{DDI4wy~dEsr^uiFgG`qhXBoo$ki~0000RHR400001 zbW%=J06^y0W&i*H!%0LzR2Y?GU;qMU1_)TJ0A&;~ur6j};D>R+;35Nq125MxP9Rf( z!Q?!WOcxNh7I?cxM20i4IxsL?Sj5V}%){f*kidWqa7;$9+4zAtq#@G}&A z<_k>v%+MtOvU(?2`Vm7F0|!t6R{`TkhHDHAkq|deVEB~44>Zn>fwO_nF+tnK&4B>` X;j1WHFryX)00000NkvXXu0mjf1oU-= literal 0 HcmV?d00001 diff --git a/docs/html/img45.png b/docs/html/img45.png new file mode 100644 index 0000000000000000000000000000000000000000..e1bcb045ca0de09f8a073a9f123567a2ad42652e GIT binary patch literal 596 zcmV-a0;~OrP)RHR400001 zbW%=J06^y0W&i*I(n&-?R5*>@R69$kL2-)s z#z7GW-Ga2@C`bo45f`_BfK#Cp65L$=bn3k8tmo( zP0rS;1zI_|0D>LP7SE$VX;F>n2~<3z-3zIA$oRfbAqLvG!HDB5(luY;A0qno zu%1o-C`y%<3utr@ooZt9vZ;5TbD63*TeJ;A%bSoEJSzuoU}B1nPvf!*Bdy#m(^fWI zwuCL98zClr{|dN`+D>JLDSbnN`2>#+isKwD0j03rI3F=)qu;flHZuKxj5ie}yJA^C zIy$Upb)cB4@!8NTsG?^LrC}*2AC)vXk{j{+@7mGpyv>R;UEd!hY literal 0 HcmV?d00001 diff --git a/docs/html/img46.png b/docs/html/img46.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e0dda885a101b88321247bb2ffa4e155e6e7a3 GIT binary patch literal 594 zcmV-Y0RHR400001 zbW%=J06^y0W&i*I&`Cr=R5*?0R69$wF{AwTcFAB5JrpjAvo&dt$S+`d6ymR<^L1%cqjBj1qYtWwKX)61F}@eN+uNA z4vc>D(=2TU$CD*iiNOREs3BQr9B(Lu%1Kv{@tR9p4jo;_wryb4WGx1%G&lH9!W%$4 z&Sr*1o{XmhfqZg0uvy7~r;`{;1+wmEO1Udxx@m;wli5(Q4hM9Y;Ea=m+;TRMl8Ac+ z+cc4bdE0&f-oTcL%+-Ou&qL*4dF>Q2ctRFI@^_aM>-uY9Xh`%j{R<>>{l(q7l)u&{ z4q~jL0YOh_Uk$QXuFh^m6tga^gq0lmP8loJr!G6{>Bo}J9nL_g7U+~F_a6Yex&9oK^K!T@P)RHR400001 zbW%=J06^y0W&i*IWJyFpR5*=eU_b*2JOb!KD1a-U5wAQHaDWH_2L`4OtRMyhgCa4y zkiY>T-oU^OB>$^JL^gzhcuWo783I5&ZtiS^YKThe0B$&eP09r-#m>bbz|Nqspn-vB z_wL;wsfZ5Tx_|@=R|5W!9c%zgI20gcK4A4LP>>BOqs$P&Q_ms5`hkH9Dx(0EX(-@l z;N)XxXkgIZy?Yx-rsD!c=D{Zp1}0Aa009Ojh#n4x25ts{=`1+hCSZe0W)zSL7zx*Lq%#di?@lFs(S;I7f6sP0aZ^SzXP%!(*?{An7I=e zSZo=%3YZ@-MT4{)Mzx27fv*8s503#?f`Jc^v5WzzD~Vw%sKjAM(ZdMTumQ}X14(R@2+n2!5^Fjg00;aSZ3=F6WaE1Yl716;svz5qj cLuHWz0210qVzXbmNB{r;07*qoM6N<$f@Z$98~^|S literal 0 HcmV?d00001 diff --git a/docs/html/img48.png b/docs/html/img48.png new file mode 100644 index 0000000000000000000000000000000000000000..dcd7f10853f7fee414a75c65a564070f88a67075 GIT binary patch literal 670 zcmV;P0%84$P)RHR400001 zbW%=J06^y0W&i*J97#k$R5*?8Rn2SEKotKaW+zG4Y*HwA>0ywCdeZq18t}74Y>;B> zLCHlFJ-7!2@iYgkv8B2o*o%i;Jb0@hvXaXl>uo&<9z5)y5bULRY2PH-Y`bi<9xMp{ zAn$A5d-LWcZvu>gFYGpCp9Sy=OE}JrAlg?l9u&G);RmFs!zi_uGK4T~M$)`q8Fd)A z0OLxy3CyS(u1cJ=f_o(DyVxPtci9(!3iLVJD<>u z@e2N9yrsyEa+eN_ZI1hc$vJ^pAIG+HMc8tGB_ZnmOkC>%KlHBJV-Q3WW>CmC5^q10 zFamXsiI~)-i@+K1VGf!c?= zi{3B^yR{^Uya7&&r&Z0JJD{-#*GASuMOO9qRq=m@J;SMK>d_g%=l}o!07*qoM6N<$ Ef-?>?*Z=?k literal 0 HcmV?d00001 diff --git a/docs/html/img49.png b/docs/html/img49.png new file mode 100644 index 0000000000000000000000000000000000000000..3d693307ea71dd0228d9f4c972efc5db0263385a GIT binary patch literal 721 zcmV;?0xtcDP)RHR400001 zbW%=J06^y0W&i*JPf0{UR5*?8RXvE*KotIxO|sda>;x^Y5F~|yVzY=~A!txVUY5_1^Cso<<+rGSPG;KS3P zqcLOG40r{-Mol*+%5`cR=Q;H(2Avmlq;uUy>7xO|u7toblN>03|CuZEBb~h*&?U?v z#k7L%bk3As)#|7xNdg;O#_O5LR-Kv-T#F)#s84qkQO#iB00On=A3_|@!}4Y=mPO_3 zoQj%ZZ#r2jkQx|KjE5JSlo~}El5W#@+(cFAmeXOYE)b4MIlW3LGbIVm5d%ELnIw6O zG4tie6A2r_bw=_oM~78wNK=tb+Qbmz0{JCKdk8++>bTKSM%f$WysBhU>P>u-zCS%Q zB4&6fZ@(6iHZPT#OKDU{(6x`WHcR=;& z@96tv=zV5r1l9sxPW7vJGLfu(H8veT=ToVP`sIaz&Efb};c@maV!pUS=?jUE>8P@Y z8)_pQ!MnKx+*1#MvSf=}Gmp8jmiul#K&6$%R!?8wC9(sY`s^9~Ew$y<3cUm#%+2;< z&ZjHOOHDFD!Mugn_yu|gr>uwF!b~8#59VBN+MM_XDpqik0000sP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJvCPL_9n^FfcGEC@3T(Bp4VN3=9ka002fc zHC+Gz00DGTPE!Ct=GbNc008SrL_t(IjqOwI5`rKQJP`1R41NEX?G{k6u(6u@Q#->A z%6;rD2hj{m520X;EZ%YOL=I^#J)DL;w?ja%%iADplGU*kXE7Ro$ekCDk3yj@q6i*g zZeAyAGBIN7l~qMQGj~vvi{D`S3T%s5(s#`Lu&M7c&44sr#=t^|lEGI;$;#m+WjHZ& zN(j%+xL&ro#xhDP4O5P)RHR400001 zbW%=J06^y0W&i*JS4l)cR5*?8RljT0a1{R}O>#+dcS%8TDH7$t(abK5*s2GLL5i(| z5`?4T;tf?g$#?KDZK*vFbaBY)cB071EjQNf925tK{0WhQ6er&|zwVm0*HSw;_<_9l zzVG{a@B7~O2LTFjW9ivi8`apfvl+9%G*WH19kq%^PE?91M-V|5`f$>bfF^f&WH#GN zfD~9`VvmZruKQfbA#j6Nev9E8&{8@yxDY`m6&lJHm2}dinb(xTlTM(N@nD^?(`{-* zWLk}(DLa|d<~8eOXuV#KI*l~$^q+AV(kDUmeFjTX)a)qtB0WgnAp5HZ{zZrgj=)m) zocHb|c8z4mnBey$_ZA<3hI!h>=%Q|7kg#<6Y)0aY3^jI?V64(oZp26300MJk7W&o{ zSQFE|UKcgVD|4UEStV`_pl+I7@CzDFWVim zl`;T!5^Ei}juInt#)83y96eDbh+)F4;|bR}MQGhIO;kKgx8pIpna93`@R^4!&b3BT zc@I9J7T_hEZ{kmif1UHYkhU#6%AVh8%s8nzv7KmJW204h(4F&v+(*TkY^oZ}muqrN;#^&z#zc_pOtF^X6rRWyaACCB9E8V`$ zSM=^|$R8fgo5NH}W5Fiz2Dpd!H~{s1e9H3eg2&@xO?-DymgC?L){J%&C`YFY00000 LNkvXXu0mjf&Ky^m literal 0 HcmV?d00001 diff --git a/docs/html/img51.png b/docs/html/img51.png new file mode 100644 index 0000000000000000000000000000000000000000..15dbb2d12c354cb75dba2c9510da2e03b4d89b54 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoS!py+H7;|(+9gt%X;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XYSpE{-7*Qg!+SlChy@TLF#|NlR;(;o(A=6r^Z#D+BujLaJnxh8T+{Ny@d zVm{+ZVxU1oL{8igQu&X%Q~loCIDN)QH1~i literal 0 HcmV?d00001 diff --git a/docs/html/img52.png b/docs/html/img52.png new file mode 100644 index 0000000000000000000000000000000000000000..9849391fdf1f170a95fe48440f2d24130b790d62 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6N!py+H=)|+)ERdrc;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHa03MDiRVBJUl!=9ou%>bpk2Ik|4ie28U-i(tw-> zPZ!4!iK)pzJqhed%xoM12?+%W4UGHPIR3u7YrR9lCu|BM9xI0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*H+(|@1R49>SU;u*zAZB5J0X7B!IGf=W1H%sx?Eq1Q1#mPnu(Seo zF*7i5GBEJ7ZQx~SU|`^8Wngo_t^o}s@Po(;V3HT&0EqoPKsWI*^gHkoWek46-7x{= z)D;`RmNbAYVc-C>AArdNAX%_Veu$$Oqyj)9tN{!xFM$4PVOYVy1eSr2>;Y786xo1t z0R!g-D4Xds1Jf5MTVH{J2PV!rfq@k!KDVQ*5vEsvM&}fm)~`rr&OtIBXa*}VWLOt4 wK+MiyxB!=IV?d;p2Mh|x&SG*P!!Ps#0A2RHR400001 zbW%=J06^y0W&i*I9!W$&R49>SU;qPlb%qu;2$SK1fItHS9PogM{|p5{vOs_V3usVa zVAv`&ftjO&frEj8Er6}$5>S){n^LfHR4)4gupke^hXQ^chW$`c{sLUuv4RJvTuz1r zOp6#M0L^4%;COK112;c69|K262hc|kfL`KYa9|2(P+((y2~k*}3UUF%1}0{K1rIqm zVNN2+Mfd^R`~-%a8z5E;euX7p7}!Cy$IB+QDH#FGtr-epO(_)&OerqN%9tJU1wf8w zVBNrA@QHz8Cxb16!xe@c2EJuZ$m-Y`I4*!gmdC+>qk)0tBf~O9_66(*3_=yWx)RS}o0000< KMNUMnLSTYX&y#Wh literal 0 HcmV?d00001 diff --git a/docs/html/img55.png b/docs/html/img55.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8263accd7d88e1fd66ac64ea37b8259211d145 GIT binary patch literal 3612 zcmV+%4&(8OP)RHR400001 zbW%=J06^y0W&i*Unn^@KRCt{2Tz#w@RTcm3?C$LB+fS21AR+BiYf?e%hC+fGVMt#; zumTH|QiRw+UJJ$|8+{TH(P`7dytb6pR8l0y#fS;UKc0M;#+R5CHNM1XHUyg{nm9nf zCi=&=RxSSJx%bZZ&g{&-eGgylp5)Ekx%b?A&OP_s-#vHc?gIvpMt?ghm?$Dcsk)P& zcUiJ7XJdjc)ma}Wl&CfbaMpdCN(EBa%c;3_Bym%zwv~HzL|5t_&LUN;MsiktoFx<@ z_#ASiXOQVcvUuB+_D6CirLvn$0bLaxpE1LT?5#8I5Vk;Te~Dm&k4>pFw{Y1qVQlp( zdV|%9qf#(qI<5v2N_tI%l~n@I5o`;jd|ovwVs;2ON{Rg0T$%0W_cI_ajNXZxnpT3XTBll;Vxtz}I%2(w|Wp`+iA*^H_uYRqy#9X0-7 z`g$t!o+7UT84sE?bgKnhgV4=9H$-diAL$`^Iba1jd&|kVS-8(b6`rM3Z)CS~ zaMqj(3M|zsHhE<@FzY96Bu(WEdUI=aW?SLowpOL0!ma&t9H8rKRadLJxre8+%wKNk zg==MLoPhN3%G_3RP%GP3=+nxw6<%E&t-chkmAhd2waV*g7SPlX9KnJjH41o)^&?cP z^+}Z?dbBSmKY`vVMYsHlAeC0PHWQww1xzS%4gF<)g8Kx^rnRl!9_j~i9i{w+HiY<4 z3bPfhI+DRGAO*A%%TWoE64a`|AhoDe^u^ICj4Z80+a`iq(UQcx=Vrn}zg7wgGzl|u zbrEzp)R)6YkenuMFAu>H6pMPj<{d${a3U`a0rW%Cga|*~WhQ7V)T#lkO2Sq{Ek73= zB@GwL6!O+Olu&x;6`gENw^Q6RQJR~ZWA|=F<=`fYC5B5a$cCY%V9HkT5)!V24H83L zGohBtgGw|-x)p1p81yKNOq1D~Q+>9Qv6q|6vPhFR0^{U9sFexDQxc$>n>4GIjM@s)SVW>*41;WChr-HJ6!}A) z?TFmLwkk`OjH(kw{7)!v%t|MpK%RGumhXe^vL$U|*Nkr%l?~L}3R;(18>7u+j3QDS zL{zf7a|QJ=!(GMRMfWOL4U?}Wx|PN5T1})iiF)6d4b`m{l1G@OhjTAI<&8GB&ixF` zuar~ILpo{LMUl2L#e^lll5sylb!zWmTd^21rHV)9S9!8?oUQu(O3?DKRY%8>gHAw| z+GHi7ZIxR;3r((LdxIm%9W9G>psj?J!E2~>!5U{Pm^E>acEM3;<)vyYkADuX*a~Id zRc4KbxH$+G!*#IYV>~JEk=m_@IhZ-%%)tp{8?xmqGHQ(^2FTfvra_5)n>Zx>YEwK9 zBiFBvcDP?%W$1QUl&ws6(PVy=$0dVpwH}J<@hh1EtWKP*d~YVEJo|?wu+^B(b6Ua$ zzeE72^>kxDrQ5FKHOA)UfVpu)h!|_bX-S;aN76PxMy$;Te@}whDabB_VU}fK!y!!rMhF zT~nZ4B-1+B1gybf>x0;)f1d9IY^RZ1)z#41_KZ*I^xMRCDRM^}yoS7Yu;Z*SWRe{3Ru6rt`S+f$+ zesz^nL${3Vv_O?B+JbekUx}ByR(e*j4)!bFXqT&#g(+AE`W0@`aX33ADsQ$~llqku z1#RaAOl>Y@Yd$)M;e623u8|5s% z!+cY!lbpCb)LP4$()yVpYor_l$B=_p%B0Hi>hK{4(4+i{;}yXJ4J*T|)y`+j2)}ah ziV@)zbDP0_)kXlXdN5=B3SVh^@ah0s3I_Yt>vZ$rRZTh8iuEhq`>@MbbUymkn8q}w zrKY6EL6VXDePiZ%x^JB$(i{oOFN}lV>gP^v+daI97iqT%hR27IsW}pGLS)-yZ8V$s zXi&qO@QCveJmvkwP4yJgXCS}L)%&NfVpn9}`N+muS3>rKFSfC*E$J?!dO|vFr*mz; zfWs6XX_&Bcm5#TtBpONM3*J8DfLAiP_Jrp=NJ*V=LP*$#w24aXBi_#LdOC9Fblv2(2eq}o-v|Cy!T5vWDckaQQmkAB&a$kTc89PB$U-B##6g*)GoDk6cLRG%#M0pFU~iRo@nVR#T(n6WRzyE8rTN*TlE$JO zm&8=aK{EXsE)hi3&4^0$QZ=(yxCCJP| z$}ZM~2a>WXuJ<>(P+UUh$UI%&0$$xcU3VqOlbcn4qa)!Gq1(oQezzxYbWDpw8N+Z7 zK`#ldA@FF#vn3#!yVtA0yO3ytNH5_yJ}e3Zc&w{qo!VC^-5BC`YA5(EE7wK#Ec>FE zJ#8Ofo6y*mqM4l@3D$e2+r;n8iSD~aLST+Jh!O(n56fN zXPJOzL4U_1K|`r}doM-cq0HtwHgoPz44~(n&nW~v=TruvI8wzo?A)CJHSFr^*k!Hp zlws`ShxAsd6B_GB87tk<3j7S~RdyJY4Z|l$$X{XY91$i|TnFIza72W1u050Xu8P9UR z&Yt!cf6q9$m)#kx>}-sHOJ(~bY7p}50F7WJb!rq`VvxtmCVB6l>mA7miCVFy&c+Vi+gcx|GsTR=uq*9G4tm z`t3Tg^AUZ>HL0Gj)zNUt2TWYT#lcob#HD^<(vr72ro|z7c8J6I3!-9UkzRm@?Bm2X z^wY@cR9@Cb-N;4l<1+IfxJ3g;#z7mok@s=H-;9H70!IZ*Bk$voGp$5Kz%E-OFK#jhF*3YR;;P(Kbg~ah+`1o6XLpg^X3&RR?L|*XTpRD zEiEk-6%{!-ISB~~At50i9v(I}HU@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIZ2)_jv*W~lM@^o*c6_%8SIqY@k7$$q0t$pKMs@TJ2o+j78v?4bQd#t`mu#8WFGmz z;Gvfw?ht&lc5$-0OOJj-<4fZip{EZV_`!Up>ezt;9|evi>_2ee0&~#uOWPMGOHN>8 Y*y+g6s6ScfBG5JlPgg&ebxsLQ04D=ZbN~PV literal 0 HcmV?d00001 diff --git a/docs/html/img58.png b/docs/html/img58.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8a4e168069c7f4f76ebe528c2f750f87ce51b4 GIT binary patch literal 426 zcmV;b0agBqP)RHR400001 zbW%=J06^y0W&i*IC`m*?R49>SU;qO)K8A({2$MmHmjS|j03tRpF!1kSa8v;@-5JmT z3loHP;Q7dKm!pG$1ISL$<3Lx22?7{6A&d{KAS*5~aWN@0sIWl{RbV1)019AMSiryw zVKyKvKfnMrPkU%$Ip-eB-t1yd}G#U z`0xxY#>*%`qFW%K5KJ=lDCU!S>!7NgE)w0^wSa0S4{{_6bPJ_!Afy3&5;TOb--n8Mu-d zW-@aJDESNUDFXwg0|bDQ{tOJza7%YvCa{!&%ZXvB0Y|6+TZxwol4;B{IzY|^0I_>H Uh#D5_i2wiq07*qoM6N<$f*u^4XaE2J literal 0 HcmV?d00001 diff --git a/docs/html/img59.png b/docs/html/img59.png new file mode 100644 index 0000000000000000000000000000000000000000..b5b74989d946386515ba4ce2cc265bdaaf733221 GIT binary patch literal 804 zcmV+<1Ka$GP)RHR400001 zbW%=J06^y0W&i*JqDe$SR7i>KR6TFgKp1`!U*dCY$7ZNnBnAr*s>EW3(k=)KN`V3* z;(NnG3)vck00A9ba7%_rH4+P(L1IMmzz>KzA+cD>9|-({2vG?(?#>@g(iC;*fT}*y z-Mx43^St+-?_L9aDCAb7Z?%n`;r3Ajz}kt|7@E^wW*Mljv7v`O0}*|G7Rs8*4VP~w zV5Xi{Cr!bE5w`;Qvn}Qt5cUUb?_F-Ygi;YhI0+?LSV~WopivTo$6DLFuW1FxO&rap z$4=8l)C+4-=(aRU>?I?0J8K0pc1DApeIiDUDpj+#aa6_eu~Y78vv^H|lkGx1PR+lg zGL$3r3fS*(0XwthZC-JHj|$sd&mO-g?j;3fmx1(q_tF&uG;{Zrg}$}aSTRXi(+tL} zf;O8DUw_WBiN+P3lnLn`gQl^_Oyk8i)j8A1BN>{G_!~uRn?=iOP@V0pSFjm(NJ(Wp zH6uDQd0DPjN~O5-s%mwAk`kiaC$X-W&GO~kotL`r@|1(jacGF>yTkA10RJtn#+cfg zO#??**_#8DkUjgiqs0+Qd9mPdW~go-M+%aE@W%lqD~yw)6H={#>4xYh7M5`<#Khtg z6xQz6R6B`zWjN*+6zV4~dY}uhF+FSJ=_QM6?t#o>&Y$yyI+4*BpNeA<8-AdLs>S1F zZ6Ib3M0d(<+QxPKxnZ^-PjF2H=RKxEsVmfp%&3vbQg0eHIj}cb`DXE|e7`1xpT_J0 zFR&~b4!+9fS^VNsIhb;7C9pKR;tI8pLGtgsG1c?Z>Vs9x-2M*gVsgC+JnT=i{@ceh zpo4d=mgkdP1$4-Xp~8v_Fa6%`c;2?-t^9-yXIk*DVYDaMi@zhDN3XE)M- z93M{?#}JO0$q5Zi(|CE#a4EDgFf*ICFfpeI96a5?a7V|XiNE7!qXk0;zl?*2QP}_g z|D`>a8+~ANaM`uMXuhIII^&HCzyJUDPfB25xKhHi?9(*2D4@9vp00i_>zopr0I(=Q AasU7T literal 0 HcmV?d00001 diff --git a/docs/html/img60.png b/docs/html/img60.png new file mode 100644 index 0000000000000000000000000000000000000000..e121e0d8de429f896eae2f718635f41e63ae627a GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^ra&yg!py+Hc>nJVTOh|Ez$e6Y^XAPfR;-vaXU>EP z6IxnYDk>^+a&i(95<)^kJUl#XY-|h+3{+H9BqStwczA%CUPYds2c#HFg8YIR9G=}s z19E0~x;TbtOiWH_V7|uojg6&$VPm2*1G7~JThg&>yb_OII54;vC~eea6qk_je}C`p zfhP~xQus_fZX7?5z_3J;cUj{MKAt(d%ipIxNdLi*VwaqrpuuqJqhSq$VY|FXZYRT1 zPQD!tE-zf%Iy8(A^Gs++Vf5+R-FPsbN9)v=Mot&iLr?xRo?ujxdb{n4;8DJ7V&N|Z dcmhip7&5*nE`Mrqh9Brg22WQ%mvv4FO#o8uV`cyV literal 0 HcmV?d00001 diff --git a/docs/html/img61.png b/docs/html/img61.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a5b6cd1ded765b4454d0491e1446bbf4c4e487 GIT binary patch literal 404 zcmV;F0c-w=P)RHR400001 zbW%=J06^y0W&i*I5=lfsR5*=eU;qPFAjAd)LK`pzd7(7x83qOeh7K$$FabY<1K2zU zHkJx^s9i>Hc712)05cVcF#{Li2I2%1kqZj~)LD6$Igrh5oj8R%keN$4EC9^)XrRPO z5|0d0LWAm9U-qDBSRI#4F(%5X7M_3H6(m2VE({z ykh6i|Q@|C*tHxMtgaEDtBK*kI-#~<_;S2zy_%px@b%V740000&jv*W~lM@mWfIJok#>HHskAW-(Pgg&ebxsLQ0AtYRHR400001 zbW%=J06^y0W&i*H;z>k7R49>SV1NVG1q=>Aih}_OY+%S2V88^N3=9zr3Jh!k1z02z zfE!8&F!+FJmII$40u6Yz;Q=3j5KJ-c-n}~k=+p*IROb!|XyiiXu`7W6SJ216017*P z29{+00tO}q1|FcBfm~it5Wi#x1q(1F1s!=50+4m18vTLBPNx;{=$L_1ZVm$j^JfT? zv1GC*$oFb6Ilcuz;s--$nd=4yW`-*uAsqvlWWNG1d46PO$OduPHZXxGcnY)^5MihR z2KW_V!i)@=f*htmP~Ndakbyfa-5I-+e&BX30ssIb4k`MmNrQv{0000IyZl=B9^v4K6?r8V&lF7^V))fqbX y2Jqc>RyY_b5U_)HRgGdXQ;T5zOqtsb3=9d}qSyE3m+b+%gTd3)&t;ucLK6TU8B}Bd literal 0 HcmV?d00001 diff --git a/docs/html/img65.png b/docs/html/img65.png new file mode 100644 index 0000000000000000000000000000000000000000..d71bd926a21f79c588e4d6ad4b917dbff1abb1be GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g%!py+Hxc1!P&p?hrfKQ0)=FOW|tXMH;&YTGo zCbYD)R8&;t;M1& literal 0 HcmV?d00001 diff --git a/docs/html/img66.png b/docs/html/img66.png new file mode 100644 index 0000000000000000000000000000000000000000..063bfee09a2139c26f6f1f5b55139b30503a4f64 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)g!py+H*!#nY7sxRP@Ck9J@xtpgU}lu;U5k%|NIy?BrvwAE$dS=ID3p! zsZ!F+ps|ui`hb_VmEtNng9VpvFtj)8IvYlO{?m7^m51l_f=Akt62By8=sQ@PnJ;le t&bZRQ@xu-=1?hzRh9eg(ZnLB_GpsiiW!V?`{|e9r44$rjF6*2UngG}iQx05>~XV xJe`_w!q}iPkKyS(2g8=P%trl7-?KC^Gkjek%s#~^;t0?g44$rjF6*2Ung9cfRs;Y5 literal 0 HcmV?d00001 diff --git a/docs/html/img68.png b/docs/html/img68.png new file mode 100644 index 0000000000000000000000000000000000000000..5148810196cb8e4313613ff0a1c6adb37de25bb2 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^IzX(zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XgS9T^vI+CMG8^FzPA1OK@P6;SrYL(^$~8(Vt-=x5Nhq)(wd=0mh9E%`@5OSMeOU z$!JpVCVrS%VYa+W-GgLJhE2Va7F;uU6IR_2o1CKYF@fns_s_XZJURAiO*V%QoczG3 zaq2wZB$FiLgoH4UZOoR;FT7@mH)=&l|4{Vl^XB0fsuE2&HkIYViMc6E)B5`Q*nAR2 z+fsQ1re8BMIOAq8L*GHvCON^PH=#h)!R2Os$r%xc#0JKAMk{8XR}C{39~3_1!1{-$ gUFO8ca|z50YUed)9h2&t4D=a;r>mdKI;Vst0AhV{O#lD@ literal 0 HcmV?d00001 diff --git a/docs/html/img69.png b/docs/html/img69.png new file mode 100644 index 0000000000000000000000000000000000000000..84c02e7b834d7c9b1801b1a1fcd44c0679842693 GIT binary patch literal 792 zcmV+z1LypSP)RHR400001 zbW%=J06^y0W&i*JmPtfGR7i>KRZVCUK@|RWclIxvbRyPxDYC^wy+{^B@FHDlEER0o z7K;@X7iqLm!B7;7r-ddpP>KPo6ucBE9t0sC^c<1W>&71tyetY{U5i#c#mOesZPTSF ziX#0EGxNST@6CI&^WFksoERBwQ6`l0 zmz_CaotKtP- zCv?Ss=iejUOmHbxn3~l}kv-}Hfd(4W4a*AN!Ug-bGrE|a6Zs6S-I7LVkCX|#%9CQR z?9^6InPVsFL+z~yc3LZt0{6Hx7e@Q zoAXk;moN{EqhF|sE??zVFaT~jXmX0n4f&*EFJpx)aE$3IGO#%{knG1J!8@CzIx7=q zB({4U=rH5WLuPOtc#he$8MD)t>|h>k`6EFXtRdQ(MJi;advslK-^VOYe<;1eIp#Ak znqfbI*ErnN``o7?sVr8~7?9HFPQl-$Sr}p(D(DnvpgA4Jo+NMna4GoYX~N-4EHBi1 z3^VdrW-qZ6IyceUV%G2s$6L5q#66NqX#LQM@K`tr>5aL8JMz)RrAKw53 W{F!SN)(*)400009?i71PP zHTty?evOb`G7 literal 0 HcmV?d00001 diff --git a/docs/html/img70.png b/docs/html/img70.png new file mode 100644 index 0000000000000000000000000000000000000000..90c11f26412e65ed866b41106f088c21a4aaf266 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^K0wUG$jrdNxSwanBOr$@z$e6Y^XAPA{S0@T&MN># z7)yfuf*Bm1-ADs+WIbIRLpWw8udqL0Fu(C({#E9-w_nT4|0iZ7G%zwue#FtRzOh>n PsF1RHR400001 zbW%=J06^y0W&i*Jm`OxIR7i>KRn2SEKotLF^RctLO_S}#!djYzRm6(KgL)FuVoM7` zQ!E(hB|_`RrKGS_yp3gxUMedp6nfc<_Z&oo1zAB)UKa5W2tBCBi0eUA>P+^#njTg? zDE?qR-sJb*yv)2e4~WAWYdQ#I!00S`F=TxgNYw;@wkhRU!$>0N3Q~Kb2+<(O&wW8d zHixBDyoo^|`510{cbdw`*cGUuUKk4l^&Qm_;%n|)-C=(#xQW%g>t8l4cs}gk>&Bqa zyHoBFKP|VPVW)Xdl08%cEuB*FO*Wtb6V>Vy6hNn_tyyf;P%db7Mq`bAmg6^1^vuOy z{gZze-SmhKjQn_5ely+)OO!S$tf@d|AF~q09ZmAfX~Bl7N-1GXLy`nh1R(Evfl*77 zyc+`6scg9h_Zk0CP;??4(W2yiRjv96ReS;8~M@zRKA3O$i*#nb-dFT@3(_s2gTNLr=J`yNra z*HY_8u{CB4-jf6B3BxeDHASvrqOH~sVzGoQU55i)nYG7@>wNd({W+d#M?0+18BbZ> z#BC4{;_^i%7w>KxkHOWBIWE?xx#^XX!_`FQ`BU74k1e2a2jhGTyy13Em~D$0Dmry& zlXZ*%uf+`}+e=^thpA;K8e2%}Ty2|iYkXb$fL+-&8%X&fcDM<}k6x6{12fNFYzsSN z!Pp#;!brvoksSh4n+Ne5O68rQ#Lo4>LOG7GV^E>#D+|9(mbqV5b%50kJK8{0~u@K(9aeVf24MQ Y2gn+f8o=#mi2wiq07*qoM6N<$f{9>bfB*mh literal 0 HcmV?d00001 diff --git a/docs/html/img72.png b/docs/html/img72.png new file mode 100644 index 0000000000000000000000000000000000000000..5fd95a8c1dcfbcccd9eb264149a74430d9393676 GIT binary patch literal 366 zcmV-!0g?WRP)RHR400001 zbW%=J06^y0W&i*H>`6pHR49>SU;qMkMm7dyAmf3=;b2ezlB`od{9$llzz$d#J^)EJ zhT;O&0I&`q=)|EG8*qT?0fGY$4s76`5Wrxt0mx|;NH8gImH)r3m;}S{0H7-uz&St* z8lcS900+^AF9r!t80TY&wH9(5Df%yVQ1Jf4RHR400001 zbW%=J06^y0W&i*Ia7jc#R5*?8lRrztKp4iKT+(>8)dX}^gM+I<=qP09;24Lh2-b*H zI(AdH13QR;F0HY|v=qca@FCovU!J_V2kr%W(iJKv z73gdsA!RcoCl| z^l*uk+3(c188z4}a7ls)cs*WeK2TOLyPX?xR)sYL%1x$JbyL{yNF3ohjkD-Us=zp9 z9S@ncgga>X8so5;9_{<7HFMA53_b_}!g>kd>W0jAsJIpD$mrg$i;XWih`bI{aYf2P zM!l6c)j9cj$iFD9DMvLN)1LR_nDfT4u9^#08EQ*u@0f-qTGc$C9)97-D~|DqWk-8? z#;zsN6EM(fvhfD&oU}FW&YN>~Kw1Knb$>$IRa9%+3h&wN%&F3^Kv~L9r9F?kY|*kK oJA!O6%2%q7&Negp^}iy00I>s7aF>Ox8~^|S07*qoM6N<$g8!!8IsgCw literal 0 HcmV?d00001 diff --git a/docs/html/img74.png b/docs/html/img74.png new file mode 100644 index 0000000000000000000000000000000000000000..c4b1412a5f4794f23aa87c1c2bed9878babdaa10 GIT binary patch literal 325 zcmV-L0lNN)P)RHR400001 zbW%=J06^y0W&i*H!%0LzR49>SU;u*zAZBEMfgb^ICIc6QV)@~~;J|<%G$gPBH41=K zLj*VpXn^QKVlUXha-o31U<1fC0jUbD{{OcXa}Z+)Zou>byIqV5stF|u4B_5DHU~q) z51_l*7M_*EG81BG~*JQx^w6gn7P`TvJGup*hkPMLcs0Y2D;k6{&MeZXKVASW=L z;RKLl!t${OBFxjk^o7A+w*kWAgwhQDtc(vCFLMVlm;gD)^%;WLEwNj6z=15M(-i;! XIU^#`2>4*X00000NkvXXu0mjfd7E~8 literal 0 HcmV?d00001 diff --git a/docs/html/img75.png b/docs/html/img75.png new file mode 100644 index 0000000000000000000000000000000000000000..f30e3ea6f99e5ebce12bc102cd26d73786deef1c GIT binary patch literal 362 zcmV-w0hRuVP)RHR400001 zbW%=J06^y0W&i*H=t)FDR2Y?GU;qK0H*8>|c zr~q^<%LibfIv4GlVHt%K!iX07*qo IM6N<$f@!;dR{#J2 literal 0 HcmV?d00001 diff --git a/docs/html/img76.png b/docs/html/img76.png new file mode 100644 index 0000000000000000000000000000000000000000..b286bba5e8c9b4b5cc38dfff846eb8a536ca237e GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^ia;#K!py+HsQxf&6OdyN;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XeHZT^vI+CMG8^For3lB|EV7XxOMpJhm68ahUXgFX6{|frA?ume?F*^kiBxfl>Pb zyI_t?!nY8GyaVfcOb(p;$l#&H!DQI6dqHDkzSB!avo`*O<5CQN!x_Skp9pYVbn^eg zhM4Jw(|o@1G#G@68ThaTo#6>@U}Pxk|HX8TSz%T#vv9I%1n+((eUH+V6H^!xb{Oqr xKDG2*qx7{$3|*`Ami0c_)#md-p0|d9!RxBke0%4{FF0015Y0{{R4;Uvxr0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*H+(|@1R5*=eU;qQYP!0xcfa^SVaRvsUI5+FT378W9Vc-KcZ3+O$z5p8z^GP%p1{zR!4h#)V4h;}7?%lhIwTgz|0gS9Rhbhyom4PFr znL#|H+2dssE@jO83Je?v82q^>F!-}>z-bx-Fy-<)Fr4sbV7S5KU;s+W9k8fER(26+ wVoL@Pr!#Pd3Sbzf(cgg~HVUw$8Z6)g0IHXERcYdcqyPW_07*qoM6N<$g7JHPvH$=8 literal 0 HcmV?d00001 diff --git a/docs/html/img78.png b/docs/html/img78.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee708a9d7060555266e6a88e9b6f799b54c81c7 GIT binary patch literal 534 zcmV+x0_pvUP);T0000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*Ilu1NER7ig_UIrY1n_akp;R7yNh6V;sBpwHZ;$+~f zyAPz9QgLbfj}CCy@BwNp#1ej}5P$GS0d591hP?2r@8m37|>t-n{`tO$7Pp1Mdf?4Zwf`swr5�!!`cQ-1yK#DI0C1?O*rUodd z0EjivBq4wm&IAU11a_l9M>(L0gR;{228DO9P`_dB-~ou8W_?;Jq(C4#srv&cQUYi z*ulW>(1k2vx`6os3uglB2fW4r-97{4cJ2V684SEF9~inBt}r7>@EC9<80a$aHsCO( z<3|$`&l-p=+zJ>nA`}>=B74A#fzyp)W@sZ$onWvV2zHzGbbb@ z#K6EnMMVWDb1g(v3P>@Q1o;IsI6S+N2IRPUx;TbNOifNWz$r4pGBY!iGhi8G*i{GC z8BKb6d^^q_XFsDLBHdI}XqezEsKU9Vkx?%)P()6;(k9h7*+|CC%EOt7lOgvCuZD4! RUzGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XgNKE{-7_Gn0YZ9fFl5Y7QD*jM-sIFa$KFBMoI&y`&qW@dB7uWvd3f3t!}Jm! r%wR}6$!+k#vLQ0OAbP0l+XkK=6g%U literal 0 HcmV?d00001 diff --git a/docs/html/img80.png b/docs/html/img80.png new file mode 100644 index 0000000000000000000000000000000000000000..0c79fb589657a85590ee4c51b39b37f59c9e407d GIT binary patch literal 828 zcmV-C1H=4@P)JKMRryXiN( zF%@|T5fI=>ob`Di2u;5y?9WP^QDDzHxLZo__Dnw!J|OnkrU``Hbf(y?_ugg-1d61p z(OA6EU!nhp$luJWt)ajAjgA6Qpl>>F+}~{@$AQT;`Uy-mE>Z0?W z`U~hA`u_)9PumBztw~D|xXX9XZ8++4c6l@h3yAMp{m`~&gN2ui@p;l^sWJKKto9x?MbW(g zr3XD6niaSBNjDKat?Konxp?D^H~tdvDc>)8EyA29aKH3hek+SU$hB+8&DG~Mkh=YS zkqyJ=>rb9KELq=-c3mQMbHXUP6(>YPvWu7kUZv=T??Xg1FGLmLAqcS!EJY2KRD`Qk zWbmAj?OK?d&w?PUSyV-`GHZuhBF0fJC;gbgSs@Y2_gKLC*f0zW^}bn!^fQb8Y$!cA<+c1SW(8 zQCosyphTFEU_|B~5J^on5r`V^NXBR--Qt%hbdoMP`X;4DmSc6FM%F$IBrzee4po2o z(67FD=t8Y(9$EG{HtnuXz1{8)_5%3FGg1dXwQ>1}TASYhniA}wwX~c70000RHR400001 zbW%=J06^y0W&i*H<4Ht8R2Y?GU;qK800jmJ;NXJLJRpKaLe#avfdK`40Afyt%?!LP z3=FI+nGB)c3>bhTK{TLE<6EagE2}4vTkwT}pG(1cgFXW{rdsSEKoH6>QD|k3;A}d< z9PI51-O^_2{DEh$sF@c|1;Ufp*Lk2O1k3bm!?c*xR#qoSP00000NkvXXu0mjf De(Qt1 literal 0 HcmV?d00001 diff --git a/docs/html/img82.png b/docs/html/img82.png new file mode 100644 index 0000000000000000000000000000000000000000..3ffa14f5b4a525ba647a004ced352f5480fc36f0 GIT binary patch literal 501 zcmVRHR400001 zbW%=J06^y0W&i*Ib4f%&R5*?8Q@=~YKotIZX>HmxP2Gh?u;AE1L=Yj1Qafd(Ta8*q%4QRtGOJIN`TP)-IJ`DTNxHSaElvOi>`>|esP zAd;DlAZUyJm}rK>eyf59ag{b2QbV`K;rd_py38sFO%hxgGd1w+6!K2@r%+OF>|K0o zxv5NP!NNuGL`?mfde<4Eb}n{FFjibi1v_tbwt5`e)tMbDoO@x6_?=PlQVPv#=v)i& zf<0izrldPz%knHNOjmV_CaT99pLhh`qGb=r?z+>eI)iJV#(~$E#<)RsAE&(`l;1LW rv@FzIvz-~qh00000NkvXXu0mjf+o|A| literal 0 HcmV?d00001 diff --git a/docs/html/img83.png b/docs/html/img83.png new file mode 100644 index 0000000000000000000000000000000000000000..a4793c56f0a26700ea41106e0a6c6eecb2dcb640 GIT binary patch literal 366 zcmV-!0g?WRP)RHR400001 zbW%=J06^y0W&i*H>`6pHR49?HkFjb3K@>&LW}S82#W-C^BPq1s&XiM#2ohNA1&e%u zUD~lps(_!c{=qi(gI^-#2ewI{nQ;{?l%U??@#fum_uUHzRGfp-#BJiUyhX&q))(Km zFqgj8NLV<f5{N!KXfjdIw}MhRks?NAe1q>3V5`WQt7IS>3CY{ zvXiI#C7Hp4>%`dYtZuV&0|xNK^XV+y+u8d1zM2ty4t1K*D`4Vgjdm{hCYjq{{gOK0 z4}E@lbFXwNeSR2?GhRm<;yK9>J`OjcqG{FEUQM5#kCZLTyQaJbfBIV_$oDy=82|tP M07*qoM6N<$g2$SjmH+?% literal 0 HcmV?d00001 diff --git a/docs/html/img84.png b/docs/html/img84.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e8d746b80c3f42f9b9bdfe192b8ca72073ce3c GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz1!py+HxYAnq9FSuW;1lAydGqEKD^|>zGiSnt z2`w!x6%`dZIXMXl2_YdN9v&VxHZ}$Z1}Z8l5)u+TJUl>6uOd&+15%77L4Lsu4$p3+ z0XemvE{-7*Q|LuD*gKZpMA#~<{m*tai@vw&AhC<34(5nY>yaE zx3@KL^6+qO;^A`O;}?&ZAn#HjB6R7uJWI#M!`%-hnq9isC%g*czHttllW>{s{y|9Z#UZ6l;f`K6^Uv0fMV@m|kAq<|belF{r5}E)L3{H9g literal 0 HcmV?d00001 diff --git a/docs/html/img85.png b/docs/html/img85.png new file mode 100644 index 0000000000000000000000000000000000000000..37a6ec01e3a5b8d17b1e4efacd2268ba850e1cf2 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W7!py+H7-8Vy4CJT>_=LD_-n@CmiWPI_%xP(9 zsi>&P$;k-`3Gwjou(7c*Fffpikl^9r0jdpUHGB!A7)yfuf*Bm1-ADs+sytmBLnNjq zCjdd3Lj$vcUNn>R1dZm-`Ig1c7?=eaLhmv%hs+9jkZ|Atmq}k|BIA`*_5&t8=LHfb z9AMbUm)6Lnd2BvoGxH3goOO%|vzQOvJ@J5VS>*wh&x~x+cVgOnc?3_yObFa8DG^b8 n=|SQFr!MJ}%;^&jGBTW-uJJqW)iDd8D;PXo{an^LB{Ts5BI8e} literal 0 HcmV?d00001 diff --git a/docs/html/img86.png b/docs/html/img86.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4d5a24f7a67475e8b069d007215157a0717db1 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^+#og!GXn$TuRA;E0XcF3J|V7~H*a3CV#S;}b6Q$j zDk>^+a&kgKLL?+4czAe#O4{FTtpHMtB|(0{3=Yq3qyafzo-U3d95a&>5+0;5Fdk!K zGh@>*NJvOv4ASJ`Im06?At55Aa43z3=S`2oSGI&R=U7CFlN*?~FFVdQ&MBb@0Q#&qasU7T literal 0 HcmV?d00001 diff --git a/docs/html/img87.png b/docs/html/img87.png new file mode 100644 index 0000000000000000000000000000000000000000..407736ac1719e52da9cf1365f5479d3920d28e69 GIT binary patch literal 571 zcmV-B0>u4^P)RHR400001 zbW%=J06^y0W&i*Ixk*GpR5*?8RJ}{XKotMwa;-_5+RRQBXQ7LN2y%!PDM&k5Q5?)5 z6kN>W(kY^d=;ET#t%F0yf{2K_bH|R=zaSLceV6NzeyBsyMf`=_`~KkFOMpH&y}nR< zF2ESV>v3I-q-L_hmLv!%1#5p7@)ZotFqsFiwA6VF0fCy5^YlneRO2%QfvP9rI(*0$ z3Y-yHZ~j!zzX73#&_`L& zoirjg1>YJpF`B;F-wWD+DIzo4#u3s3EN4m<5@FvoM>CA$SSD$xnalivpOM);RnIF! zm~go&-tDEGxURf&8m813GTMwyysczcE1DCI;qSxR_C8aaJ`CUZ@@s#^ZbaFo7*sDs zr;}5XaWNdkLzEWGZkbSt{`}|{Kd;mj`TRP+vCu0Br002ov JPDHLkV1gvv{EYwr literal 0 HcmV?d00001 diff --git a/docs/html/img88.png b/docs/html/img88.png new file mode 100644 index 0000000000000000000000000000000000000000..2abf9ed6cfa450df1a8b8b1b7610ce21f19e31a7 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^#y~8`!py+H$g+z&9mp{V@Ck98R*|4K9sqEg5dw^#3!vG}ms&f%=#S%nTNRHR400001 zbW%=J06^y0W&i*INl8ROR5*=eV1NPzAZCRyIT%nu0bIod2JCc@_ zpNC<>2aeslVG<5NJAfg@!NAT^;AjBV0ZI}`$pYa(kOD!31fK#PFN_qxIFW(FwSkZ- zE?^)zfLYoM3>O(>38@D~R|}Z6g@NS*1HS{ZjTvh04a{CHWoYWH!K@D$>REUl*bcDR zGRQlis)r+}{ihWD*i?G^iZvO)xYxC{ZbRV9vmuki#Iv#FHb-!z1rd!z^&n zXOp4BhQvh*b8MZ3l#Xm*(EC!V=F-t_&8BrIOhAM=&{Uv7+Oes#h1)=J+1yV7%NRS@ z7PEH=DDtt*5a_pz`Ai(V-+JBHGLdCarCTn6+>5%|7X^9)x z{{FA$ysGX{#((;kJdeRe-ZQ*B#u5?%HGE3X{S!LeG?Ee$DjQrc@_!WOInlL)TSDT} zMUjp22?_ss#96gYB_#;VZ&=ph-`Mz)A*Q7H%m4rTWh107h~(b>Z{5hK$K|<1M(@Qw lXTiG-YK_O_J_Y)4FfgPknpVC&G947y44$rjF6*2UngCRRHR400001 zbW%=J06^y0W&i*I2}wjjR5*=eV893Z85r0Y92gil(Ixo#K_uq~yt)|}SRs@Hn(%Wt ztAKz3n1BP>&ILgHfdMKKA;A6t%-jGJX<$fTW8maZa5OMr0C@rq_!JlvNVb%Cz=X_U z202CpNq`ZE15ngAAhC7$85|TIARETT&Y}SH637b)91I)`4NQEzK<^>z;si@OAOt#r z>V_0xNnl_+fL)410Ze%?FfiasYLmg_W(*Zbqh77O@ZtRX+ p2E>dTAnYI<9${c`#wjy20RaAFFWVFp{ZIe^002ovPDHLkV1hR*g`@xg literal 0 HcmV?d00001 diff --git a/docs/html/img91.png b/docs/html/img91.png new file mode 100644 index 0000000000000000000000000000000000000000..f71e274b6cb9295d14552c2888f93fd833ccccd9 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W7!py+H7-8Vy4CELD_=LD_-n@CmiWPI_%$YD@ zLQ6|aMMXtUPEJBXLP$u6hlhuajg5hUfr^TXgoFeS4-Zh&tH{&yfD~g%kY6x^!?PP{ zK+YUb7sn8ZsmTcpOloW_0tpEj4aGZzSr)AM|NnozL(tKU_XU=`m+z2mQ0ZI8$0ZZ7 z|UXtbc#1qr0B`-Oxai_TCEy*1*l9vwiD@Yy`K9KFO hXzh~5|0f^oQVjlni literal 0 HcmV?d00001 diff --git a/docs/html/img92.png b/docs/html/img92.png new file mode 100644 index 0000000000000000000000000000000000000000..dc005ccf7ed6bac7a04a3827c1f4d3dcc304e9d4 GIT binary patch literal 415 zcmV;Q0bu@#P)RHR400001 zbW%=J06^y0W&i*I9Z5t%R5*=eV89Fd!K4Eg83P7>elVjKzX=QstQaB<5bAdU!v~m< zg90IAumO$_$UKk{A7DmCuqZGbIKT&FZ2$^2FeI=saPaUuI0SG5h1ihIaATN2j@_gI zCKMh!h}fWkA_j6q0IH@0WR4auKchnessdInUS=@E0Hm6OfrFvJfXS8z9AOQ}3V9e7 zFrdaGM+1WZv5p^{fF*%}@c>TQiD1%$fq~%zPBmN#AaXN?8urPdtu7f13=*lO3@jTM zpz^3{47MkPs3Q;^E<8V`F1rV4$L+A|WBc!@~nq{(p1SeIUhH666=m;PC858jxe>>Eal| zF*7-#p^?d=yRo^kQTAAx5QESj9v+QN35*kjTov*hrlp*)N@G}7DWmWwW5o|aj-$I6 feKtPvVV=ZrCxi8o@7-jOD;Ydp{an^LB{Ts5NaZ*B literal 0 HcmV?d00001 diff --git a/docs/html/img94.png b/docs/html/img94.png new file mode 100644 index 0000000000000000000000000000000000000000..46520babcc16327dd9b72f5d4cc64309c246eebe GIT binary patch literal 375 zcmV--0f_#IP)RHR400001 zbW%=J06^y0W&i*H^+`lQR49>SU;qI&1_lQPh5`m;zyuOS0%>4!0|PTF14jn~lK}%B zz{v|DS%63YWO^%*Sg?Vk0b+&&KAqSB`v)YB0ub{S@Ip8eeB3~%J_1_?0u3xIq#I8V zHaCJ_JB{Ed?AvvY>&18O&vB0Ed$U4?_S0OGifo!-oYxl^hLR zz<`9fcZnrL;RPBvn`WT%00Wx>7I6+puoRqRV8^CS7EH1;@HHedFrNU13@}K5fPsNA zr6 literal 0 HcmV?d00001 diff --git a/docs/html/img95.png b/docs/html/img95.png new file mode 100644 index 0000000000000000000000000000000000000000..985ac48f8c056c758514081d558883216f7b6673 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^VjwmPGXn#oM$hJBK#oCxPl)U0&6`)OSTSeLoCy;q zw6wHTR8-{T@*cccXsHmt&NJ#MT@BlTviab3JNHLZK`2{mLJiCzw zp5T$*LVfddmn7@n(F8q}}^v9k7@u$sV_9L<={7Vx;0 zrH#|!UDM$?Iu54}Ed0U5$NQpTZZY#=_O_H~y$XGH%>GQwk6kt#DQZ)H)DtZ^TY_N^ Xo6x!C?uyYs%NRUe{an^LB{Ts5zPd=+ literal 0 HcmV?d00001 diff --git a/docs/html/img96.png b/docs/html/img96.png new file mode 100644 index 0000000000000000000000000000000000000000..503b1ab625b0b58be3c1c329604963e873079469 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^`amql!py+HXsMCK2;>+9_=LD_-n@CmiWPI_%$YD@ zLQ6|aMMXtUPEJBXLP$u6hlhuajg5hUfr^TXgoFeS4-Zh&tH{&yfD~g%kY6x^!?PP{ zK+a`P7sn8diOC5JOl1NG&oZ#{=KRs9X=7u%C+gtT&1n6A`4J0SSQ(p{n1c7jgN!<- zHcGb_<@}0nm~w!HZ5k^ZlS7ykGxuS3wzdY>mjbN0M`pFir#P%I(3rlGF~d}wnK{~n zdBV{R4UO_o{~_&hE}{O11~Y6yAk2Y_Mdq zkV$y7hTB0US@p)(UpzVr|5?9sd@%mtAZlE~ywRTdG`qlWL1$5CmWU}Eg(KOIv$Xkh lN>85f*5g6TZNn#w3$r{DK)Ap4~_T zavD5c978x}CMP(s?-9NsF>!~EJFk$0#3r>`2O;lI3B}197`ennJ`@t5mcd3PG-7Be4aH>+i?V{2pUWSY=n z$L!DKZ0#({%pA=Wak8jQ{ZS9Ugx$&wzDb!03=H#kN+kY@5W5U?3xlVtpUXO@geCx3 C%29g& literal 0 HcmV?d00001 diff --git a/docs/html/img98.png b/docs/html/img98.png new file mode 100644 index 0000000000000000000000000000000000000000..b83a8d66b2d9b937bd16c8b5cf98e92f0b700064 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj;GXn#o1jC}|K#p#JPl)U0&6`)OSTSeLoCy;q zw6wHTR8-{T@*cccXNJvQV@PM>;p0B$Iq!>$r{DK)Ap4~_Ta-2L} z978x}CMP63NJ&V@U`S#sV`sBSXuPB*ED^yXA`#$V&CF~L#PaJInP*RDW-dEWGvO=K kgiFN_ychy`_T}&}uwP*_Hm|Ci4m6Fy)78&qol`;+0L^eW6951J literal 0 HcmV?d00001 diff --git a/docs/html/img99.png b/docs/html/img99.png new file mode 100644 index 0000000000000000000000000000000000000000..de35d7fad8c77ab7abeff94980152111cb2310fd GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj;GXn#o1jC}|K#ov=Pl)U0&6`_VT5@u7LPA1p zY;1tStv&fqffQp&kY6x^!?PP{K#r29i(?4K%;W?I1~q1ZlU&X`Is$SMkC~1!acnDM dXgTJ}$lx}Y$t}hApchazgQu&X%Q~loCIAY}A*=uZ literal 0 HcmV?d00001 diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 00000000..9569fcac --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,354 @@ + + + + + +userhtml + + + + + + + + + + + + + + + + +next +up +previous + +contents +
+ Next: Contents +   Contents +
+
+ +PSBLAS +
+
+User's and Reference + Guide
+
A reference guide for the Parallel Sparse BLAS library +
+
+
+
Salvatore Filippone +
+Alfredo Buttari
+
+University of Rome ``Tor Vergata'', Italy +
+
+
+Software version: 2.3 +
+July 24, 2008 + +

+ + + + + +

+ + + diff --git a/docs/html/node1.html b/docs/html/node1.html new file mode 100644 index 00000000..2fb61f70 --- /dev/null +++ b/docs/html/node1.html @@ -0,0 +1,115 @@ + + + + + +Contents + + + + + + + + + + + + + + + + + + + +next + +up + +previous +
+ Next: Introduction + Up: userhtml + Previous: userhtml +
+
+ +
+ +

+Contents +

+ + + + +

+ +

+ +

+


+ + + diff --git a/docs/html/node10.html b/docs/html/node10.html new file mode 100644 index 00000000..5f2793b4 --- /dev/null +++ b/docs/html/node10.html @@ -0,0 +1,102 @@ + + + + + +Named Constants + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Sparse Matrix data structure + Up: Descriptor data structure + Previous: Descriptor data structure +   Contents +
+
+ + +

+ +
+Named Constants +

+
+
psb_none_
+
Generic no-op; +
+
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/node100.html b/docs/html/node100.html new file mode 100644 index 00000000..afc224e2 --- /dev/null +++ b/docs/html/node100.html @@ -0,0 +1,141 @@ + + + + + +psb_precbld -- Builds a preconditioner + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_precaply Preconditioner + Up: Preconditioner routines + Previous: psb_precinit Initialize +   Contents +
+
+ + +

+psb_precbld -- Builds a preconditioner +

+ +

+

+call psb_precbld(a, desc_a, prec, info)
+
+ +

+

+
Type:
+
Synchronous. +
+
On Entry
+
+
+
a
+
the system sparse matrix. +Scope: local +
+Type: required +
+Intent: in, target. +
+Specified as: a sparse matrix data structure spdatapsb_spmat_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. +
+
+ +

+

+
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. +
+
+ +

+


+ + + diff --git a/docs/html/node101.html b/docs/html/node101.html new file mode 100644 index 00000000..e40daf30 --- /dev/null +++ b/docs/html/node101.html @@ -0,0 +1,159 @@ + + + + + +psb_precaply -- Preconditioner application routine + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_precdescr Prints + Up: Preconditioner routines + Previous: psb_precbld Builds +   Contents +
+
+ + +

+psb_precaply -- Preconditioner application routine +

+ +

+

+call psb_precaply(prec,x,y,desc_a,info,trans,work)
+call psb_precaply(prec,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 double precision array. +
+
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 double precision 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/node102.html b/docs/html/node102.html new file mode 100644 index 00000000..7c673380 --- /dev/null +++ b/docs/html/node102.html @@ -0,0 +1,102 @@ + + + + + +psb_precdescr -- Prints a description of current preconditioner + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Iterative Methods + Up: Preconditioner routines + Previous: psb_precaply Preconditioner +   Contents +
+
+ + +

+psb_precdescr -- Prints a description of current + preconditioner +

+ +

+

+call psb_precdescr(prec)
+call psb_precdescr(prec, iout)
+
+ +

+

+
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: optiona +
+Intent: in. +
+Specified as: an integer number. +
+
+ +

+


+ + + diff --git a/docs/html/node103.html b/docs/html/node103.html new file mode 100644 index 00000000..2f98f091 --- /dev/null +++ b/docs/html/node103.html @@ -0,0 +1,83 @@ + + + + + +Iterative Methods + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_krylov Krylov + Up: userhtml + Previous: psb_precdescr Prints +   Contents +
+
+ + +

+ +
+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/node104.html b/docs/html/node104.html new file mode 100644 index 00000000..b60771d9 --- /dev/null +++ b/docs/html/node104.html @@ -0,0 +1,395 @@ + + + + + +psb_krylov -- Krylov Methods Driver Routine + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Bibliography + Up: Iterative Methods + Previous: Iterative Methods +   Contents +
+
+ + +

+
+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 is the normwise backward error, in the infinity +norm, i.e. 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} +
+
+

+or the 2-norm residual reduction +

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

+according to the value passed through 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. + +

+

+call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
+     & itmax,iter,err,itrace,irst,istop,cond)
+
+ +

+

+
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; + +

+

+
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_spmat_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. +
+
x
+
The initial guess. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one array. +
+
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. +
+Scope: global +
+Type: optional +
+Intent: in. +
+
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. Default: 2. +
+
On Return
+
+
+
x
+
The computed solution. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one array. +
+
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. +
+Scope: global +
+Type: optional +
+Intent: out. +
+Returned as: a real number. +
+
info
+
Error code. +
+Scope: local +
+Type: required +
+Intent: out. +
+An integer value; 0 means no error has been detected. +
+
+ +

+ +

+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Bibliography + Up: Iterative Methods + Previous: Iterative Methods +   Contents + + + + diff --git a/docs/html/node105.html b/docs/html/node105.html new file mode 100644 index 00000000..c8ca0740 --- /dev/null +++ b/docs/html/node105.html @@ -0,0 +1,162 @@ + + + + + +Bibliography + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: About this document ... + Up: userhtml + Previous: psb_krylov Krylov +   Contents +

+ + +

+Bibliography +

+

+

1 +
+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. +

2 +
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 +

3 +
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. + +

+

4 +
+ 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. +

5 +
+ 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. +

6 +
+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). +

7 +
+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. +

8 +
+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. +

9 +
+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. +

10 +
+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. +

11 +
+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. +

12 +
+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. + +

+

13 +
+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. +

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

15 +
+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/node106.html b/docs/html/node106.html new file mode 100644 index 00000000..79128a9a --- /dev/null +++ b/docs/html/node106.html @@ -0,0 +1,74 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Up: userhtml + Previous: Bibliography +   Contents +
+
+ + +

+About this document ... +

+

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

+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 -noaddress -dir ../../html userhtml.tex +

+The translation was initiated by Salvatore Filippone on 2008-07-24 +


+ + + diff --git a/docs/html/node107.html b/docs/html/node107.html new file mode 100644 index 00000000..6337076a --- /dev/null +++ b/docs/html/node107.html @@ -0,0 +1,144 @@ + + + + + +psb_precinit -- Initialize a preconditioner + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_precbld Builds + Up: userhtml + Previous: Preconditioner routines +   Contents +
+
+ + +

+psb_precinit -- Initialize a preconditioner +

+ +

+ifstarssyntaxsyntaxcall psb_precinitprec, ptype, info + +

+

+
Type:
+
Asynchronous. +
+
On Entry
+
+
+
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 follows3: +
+
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/node108.html b/docs/html/node108.html new file mode 100644 index 00000000..9843ce77 --- /dev/null +++ b/docs/html/node108.html @@ -0,0 +1,139 @@ + + + + + +psb_precbld -- Builds a preconditioner + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_precaply Preconditioner + Up: userhtml + Previous: psb_precinit Initialize +   Contents +
+
+ + +

+psb_precbld -- Builds a preconditioner +

+ +

+ifstarssyntaxsyntaxcall psb_precblda, desc_a, prec, info + +

+

+
Type:
+
Synchronous. +
+
On Entry
+
+
+
a
+
the system sparse matrix. +Scope: local +
+Type: required +
+Intent: in, target. +
+Specified as: a sparse matrix data structure spdatapsb_spmat_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. +
+
+ +

+

+
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. +
+
+ +

+


+ + + diff --git a/docs/html/node109.html b/docs/html/node109.html new file mode 100644 index 00000000..8ef0c0fd --- /dev/null +++ b/docs/html/node109.html @@ -0,0 +1,157 @@ + + + + + +psb_precaply -- Preconditioner application routine + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_precdescr Prints + Up: userhtml + Previous: psb_precbld Builds +   Contents +
+
+ + +

+psb_precaply -- Preconditioner application routine +

+ +

+ifstarssyntaxsyntaxcall psb_precaplyprec,x,y,desc_a,info,trans,work +ifstarssyntaxsyntax*call psb_precaplyprec,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 double precision array. +
+
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 double precision 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/node11.html b/docs/html/node11.html new file mode 100644 index 00000000..81bd77b6 --- /dev/null +++ b/docs/html/node11.html @@ -0,0 +1,264 @@ + + + + + +Sparse Matrix data structure + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Named Constants + Up: Data Structures + Previous: Named Constants +   Contents +
+
+ + +

+ +
+Sparse Matrix data structure +

+The spdatapsb_spmat_type data structure +contains all information about local portion of the sparse matrix and +its storage mode. Most of these fields are set by the tools +routines when inserting a new sparse matrix; the user needs only +choose, if he/she so whishes, a specific matrix storage mode. +
+
aspk
+
Contains values of the local distributed sparse +matrix. +
+Specified as: an allocatable array of rank one of type corresponding +to matrix entries type. +
+
ia1
+
Holds integer information on distributed sparse +matrix. Actual information will depend on data format used. +
+Specified as: an allocatable integer array of rank one. +
+
ia2
+
Holds integer information on distributed sparse +matrix. Actual information will depend on data format used. +
+Specified as: an allocatable integer array of rank one. +
+
infoa
+
On entry can hold auxiliary information on distributed sparse +matrix. Actual information will depend on data format used. +
+Specified as: an integer array of length psb_ifasize_. +
+
fida
+
Defines the format of the distributed sparse matrix. +
+Specified as: a string of length 5 +
+
descra
+
Describe the characteristic of the distributed sparse matrix. +
+Specified as: array of character of length 9. +
+
pl
+
Specifies the local row permutation of distributed sparse +matrix. If pl(1) is equal to 0, then there isn't row permutation. +
+Specified as: an allocatable integer array of dimension equal to number of local row (matrix_data[psb_n_row_]) +
+
pr
+
Specifies the local column permutation of distributed sparse +matrix. If PR(1) is equal to 0, then there isn't columnm permutation. +
+Specified as: an allocatable integer array of dimension equal to number of +local row (matrix_data[psb_n_col_]) +
+
m
+
Number of rows; if row indices are stored explicitly, +as in Coordinate Storage, should be greater than or equal to the +maximum row index actually present in the sparse matrix. +Specified as: integer variable. +
+
k
+
Number of columns; if column indices are stored explicitly, +as in Coordinate Storage or Compressed Sparse Rows, should be greater +than or equal to the maximum column index actually present in the sparse matrix. +Specified as: integer variable. +
+
+The Fortran 95 interface for distributed sparse matrices containing +double precision real entries is defined as shown in +figure 4. The definitions for single precision and +complex data are identical except for the real declaration and +for the kind type parameter. + +
+ + + +
Figure 4: + The PSBLAS defined data type that + contains a sparse matrix.
+
+ +
+ +\fbox{\TheSbox} +
+
+ +

+The following two cases are among the most commonly used: +

+
fida=``CSR''
+
Compressed storage by rows. In this case the +following should hold: + +
    +
  1. ia2(i) contains the index of the first element of row +i; the last element of the sparse matrix is thus stored at +index $ia2(m+1)-1$. It should contain m+1 entries in +nondecreasing order (strictly increasing, if there are no empty rows). +
  2. +
  3. ia1(j) contains the column index and aspk(j) +contains the corresponding coefficient value, for all +$ia2(1) \le j
+\le ia2(m+1)-1$. +
  4. +
+
+
fida=``COO''
+
Coordinate storage. In this case the following +should hold: + +
    +
  1. infoa(1) contains the number of nonzero elements in the +matrix; +
  2. +
  3. For all +$1 \le j \le infoa(1)$, the coefficient, row index and +column index are stored into apsk(j), ia1(j) and +ia2(j) respectively. +
  4. +
+
+
+A 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. +
+
+

+ +Subsections + + + +
+ + +next + +up + +previous + +contents +
+ Next: Named Constants + Up: Data Structures + Previous: Named Constants +   Contents + + + + diff --git a/docs/html/node110.html b/docs/html/node110.html new file mode 100644 index 00000000..ae8679c7 --- /dev/null +++ b/docs/html/node110.html @@ -0,0 +1,101 @@ + + + + + +psb_precdescr -- Prints a description of current preconditioner + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Iterative Methods + Up: userhtml + Previous: psb_precaply Preconditioner +   Contents +
+
+ + +

+psb_precdescr -- Prints a description of current + preconditioner +

+ +

+ifstarssyntaxsyntaxcall psb_precdescrprec +ifstarssyntaxsyntax*call psb_precdescrprec, iout + +

+

+
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: optiona +
+Intent: in. +
+Specified as: an integer number. +
+
+ +

+


+ + + diff --git a/docs/html/node111.html b/docs/html/node111.html new file mode 100644 index 00000000..95cd3349 --- /dev/null +++ b/docs/html/node111.html @@ -0,0 +1,73 @@ + + + + + +Iterative Methods + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_krylov Krylov + Up: userhtml + Previous: psb_precdescr Prints +   Contents +
+
+ + +

+ +
+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. + +

+


+ + + diff --git a/docs/html/node112.html b/docs/html/node112.html new file mode 100644 index 00000000..68e007fe --- /dev/null +++ b/docs/html/node112.html @@ -0,0 +1,393 @@ + + + + + +psb_krylov -- Krylov Methods Driver Routine + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Bibliography + Up: userhtml + Previous: Iterative Methods +   Contents +
+
+ + +

+
+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 is the normwise backward error, in the infinity +norm, i.e. 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} +
+
+

+or the 2-norm residual reduction +

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

+according to the value passed through 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. + +

+ifstarssyntaxsyntaxcall psb_krylovmethod,a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,irst,istop,cond + +

+

+
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; + +

+

+
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_spmat_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. +
+
x
+
The initial guess. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one array. +
+
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. +
+Scope: global +
+Type: optional +
+Intent: in. +
+
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. Default: 2. +
+
On Return
+
+
+
x
+
The computed solution. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one array. +
+
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. +
+Scope: global +
+Type: optional +
+Intent: out. +
+Returned as: a real number. +
+
info
+
Error code. +
+Scope: local +
+Type: required +
+Intent: out. +
+An integer value; 0 means no error has been detected. +
+
+ +

+ +

+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Bibliography + Up: userhtml + Previous: Iterative Methods +   Contents + + + + diff --git a/docs/html/node113.html b/docs/html/node113.html new file mode 100644 index 00000000..290203c3 --- /dev/null +++ b/docs/html/node113.html @@ -0,0 +1,162 @@ + + + + + +Bibliography + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: About this document ... + Up: userhtml + Previous: psb_krylov Krylov +   Contents +

+ + +

+Bibliography +

+

+

1 +
+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. +

2 +
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 +

3 +
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. + +

+

4 +
+ 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. +

5 +
+ 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. +

6 +
+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). +

7 +
+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. +

8 +
+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. +

9 +
+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. +

10 +
+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. +

11 +
+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. +

12 +
+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. + +

+

13 +
+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. +

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

15 +
+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/node114.html b/docs/html/node114.html new file mode 100644 index 00000000..8ddb1a93 --- /dev/null +++ b/docs/html/node114.html @@ -0,0 +1,74 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Up: userhtml + Previous: Bibliography +   Contents +
+
+ + +

+About this document ... +

+

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

+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 -noaddress -dir ../../html userhtml.tex +

+The translation was initiated by Salvatore Filippone on 2008-07-24 +


+ + + diff --git a/docs/html/node115.html b/docs/html/node115.html new file mode 100644 index 00000000..012ff547 --- /dev/null +++ b/docs/html/node115.html @@ -0,0 +1,100 @@ + + + + + +psb_precdescr -- Prints a description of current preconditioner + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Iterative Methods + Up: Preconditioner routines + Previous: psb_precaply Preconditioner +   Contents +
+
+ + +

+psb_precdescr -- Prints a description of current + preconditioner +

+ +

+ifstarssyntaxsyntaxcall psb_precdescrprec +ifstarssyntaxsyntax*call psb_precdescrprec, iout + +

+

+
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: optiona +
+Intent: in. +
+Specified as: an integer number. +
+
+ +

+


+ + + diff --git a/docs/html/node116.html b/docs/html/node116.html new file mode 100644 index 00000000..0216e1fa --- /dev/null +++ b/docs/html/node116.html @@ -0,0 +1,83 @@ + + + + + +Iterative Methods + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_krylov Krylov + Up: userhtml + Previous: psb_precdescr Prints +   Contents +
+
+ + +

+ +
+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/node117.html b/docs/html/node117.html new file mode 100644 index 00000000..d647571f --- /dev/null +++ b/docs/html/node117.html @@ -0,0 +1,392 @@ + + + + + +psb_krylov -- Krylov Methods Driver Routine + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Bibliography + Up: Iterative Methods + Previous: Iterative Methods +   Contents +
+
+ + +

+
+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 is the normwise backward error, in the infinity +norm, i.e. 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} +
+
+

+or the 2-norm residual reduction +

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

+according to the value passed through 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. + +

+ifstarssyntaxsyntaxcall psb_krylovmethod,a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,irst,istop,cond + +

+

+
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; + +

+

+
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_spmat_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. +
+
x
+
The initial guess. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one array. +
+
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. +
+Scope: global +
+Type: optional +
+Intent: in. +
+
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. Default: 2. +
+
On Return
+
+
+
x
+
The computed solution. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one array. +
+
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. +
+Scope: global +
+Type: optional +
+Intent: out. +
+Returned as: a real number. +
+
info
+
Error code. +
+Scope: local +
+Type: required +
+Intent: out. +
+An integer value; 0 means no error has been detected. +
+
+ +

+ +

+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Bibliography + Up: Iterative Methods + Previous: Iterative Methods +   Contents + + + + diff --git a/docs/html/node118.html b/docs/html/node118.html new file mode 100644 index 00000000..bddfca28 --- /dev/null +++ b/docs/html/node118.html @@ -0,0 +1,162 @@ + + + + + +Bibliography + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: About this document ... + Up: userhtml + Previous: psb_krylov Krylov +   Contents +

+ + +

+Bibliography +

+

+

1 +
+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. +

2 +
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 +

3 +
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. + +

+

4 +
+ 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. +

5 +
+ 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. +

6 +
+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). +

7 +
+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. +

8 +
+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. +

9 +
+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. +

10 +
+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. +

11 +
+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. +

12 +
+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. + +

+

13 +
+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. +

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

15 +
+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/node119.html b/docs/html/node119.html new file mode 100644 index 00000000..4e3b8779 --- /dev/null +++ b/docs/html/node119.html @@ -0,0 +1,74 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Up: userhtml + Previous: Bibliography +   Contents +
+
+ + +

+About this document ... +

+

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

+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 -noaddress -dir ../../html userhtml.tex +

+The translation was initiated by Salvatore Filippone on 2008-07-24 +


+ + + diff --git a/docs/html/node12.html b/docs/html/node12.html new file mode 100644 index 00000000..b3f23414 --- /dev/null +++ b/docs/html/node12.html @@ -0,0 +1,89 @@ + + + + + +Named Constants + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Preconditioner data structure + Up: Sparse Matrix data structure + Previous: Sparse Matrix data structure +   Contents +
+
+ + +

+ +
+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/node13.html b/docs/html/node13.html new file mode 100644 index 00000000..c6deaf59 --- /dev/null +++ b/docs/html/node13.html @@ -0,0 +1,103 @@ + + + + + +Preconditioner data structure + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Data structure query routines + Up: Data Structures + Previous: Named Constants +   Contents +
+
+ + +

+ +
+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 5. The psb_prec_type +data type may contain a simple preconditioning matrix with the +associated communication descriptor.The values contained in +the iprcparm and rprcparm define tha type of +preconditioner along with all the parameters related to it; thus, +iprcparm and rprcparm define how the other records have +to be interpreted. This data structure is the basis of more complex +preconditioning strategies, which are the subject of further +research. + +

+ + + +
Figure 5: +The PSBLAS defined data type that contains a preconditioner.

+ +
+ +
+
+\fbox{\TheSbox}
+
+
+ +

+


+ + + diff --git a/docs/html/node14.html b/docs/html/node14.html new file mode 100644 index 00000000..3dcdf50d --- /dev/null +++ b/docs/html/node14.html @@ -0,0 +1,81 @@ + + + + + +Data structure query routines + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cd_get_local_rows Get + Up: Data Structures + Previous: Preconditioner data structure +   Contents +
+
+ + +

+ +
+Data structure query routines +

+

+ +Subsections + + + +

+ + + diff --git a/docs/html/node15.html b/docs/html/node15.html new file mode 100644 index 00000000..cca094f8 --- /dev/null +++ b/docs/html/node15.html @@ -0,0 +1,111 @@ + + + + + +psb_cd_get_local_rows -- Get number of local rows + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cd_get_local_cols Get + Up: Data structure query routines + Previous: Data structure query routines +   Contents +
+
+ + +

+psb_cd_get_local_rows -- Get number of local rows +

+ +

+

+nr = psb_cd_get_local_rows(desc)
+
+ +

+

+
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
+
+
+
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/node16.html b/docs/html/node16.html new file mode 100644 index 00000000..80d3248a --- /dev/null +++ b/docs/html/node16.html @@ -0,0 +1,112 @@ + + + + + +psb_cd_get_local_cols -- Get number of local cols + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cd_get_global_rows Get + Up: Data structure query routines + Previous: psb_cd_get_local_rows Get +   Contents +
+
+ + +

+psb_cd_get_local_cols -- Get number of local cols +

+ +

+

+nc = psb_cd_get_local_cols(desc)
+
+ +

+

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

+

+
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/node17.html b/docs/html/node17.html new file mode 100644 index 00000000..79c5050a --- /dev/null +++ b/docs/html/node17.html @@ -0,0 +1,102 @@ + + + + + +psb_cd_get_global_rows -- Get number of global rows + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cd_get_global_cols Get + Up: Data structure query routines + Previous: psb_cd_get_local_cols Get +   Contents +
+
+ + +

+psb_cd_get_global_rows -- Get number of global rows +

+ +

+

+nr = psb_cd_get_global_rows(desc)
+
+ +

+

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

+

+
On Return
+
+
+
Function value
+
The number of global rows in the mesh +
+
+ +

+


+ + + diff --git a/docs/html/node18.html b/docs/html/node18.html new file mode 100644 index 00000000..0751b583 --- /dev/null +++ b/docs/html/node18.html @@ -0,0 +1,101 @@ + + + + + +psb_cd_get_global_cols -- Get number of global cols + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cd_get_context Get communication context + Up: Data structure query routines + Previous: psb_cd_get_global_rows Get +   Contents +
+
+ + +

+psb_cd_get_global_cols -- Get number of global cols +

+ +

+

+nr = psb_cd_get_global_cols(desc)
+
+ +

+

+
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
+
+
+
Function value
+
The number of global cols in the mesh +
+
+ +

+


+ + + diff --git a/docs/html/node19.html b/docs/html/node19.html new file mode 100644 index 00000000..0627d65d --- /dev/null +++ b/docs/html/node19.html @@ -0,0 +1,123 @@ + + + + + +psb_cd_get_context--Get communication context + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cd_get_large_threshold Get + Up: Data Structures + Previous: psb_cd_get_global_cols Get +   Contents +
+
+ + +

+
+psb_cd_get_context--Get communication context +
+

+
+ictxt = psb_cd_get_context(desc)
+
+ +

+

+
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
+
+
+
Function value
+
The communication context. +
+
+ +

+


+ +Subsections + + + +

+ + + diff --git a/docs/html/node2.html b/docs/html/node2.html new file mode 100644 index 00000000..d0574a21 --- /dev/null +++ b/docs/html/node2.html @@ -0,0 +1,165 @@ + + + + + +Introduction + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: General overview + Up: userhtml + Previous: Contents +   Contents +
+
+ + +

+
+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 is internally implemented in + the Fortran 95 [14] programming language, with reuse and/or + adaptation of some existing Fortran 77 software, and a handful of C + routines. +A similar approach has been advocated by a number of authors, +e.g. [13]. 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. +In the current release we rely on the availability of the so-called +allocatable extensions, specified in TR 15581. Strictly speaking they +are outside the Fortran 95 standard; however they have been included +in the Fortran 2003 language standard, and are available in +practically all Fortran 95 compilers on the market, including the GNU +Fortran compiler from the Free Software Foundation (as of version 4.2). +The presentation of the +PSBLAS library follows the general structure of the proposal for +serial Sparse BLAS [7,8], which in its turn is based on the +proposal for BLAS on dense matrices [12,4,5]. + +

+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. + +

+


+ + +next + +up + +previous + +contents +
+ Next: General overview + Up: userhtml + Previous: Contents +   Contents + + + + diff --git a/docs/html/node20.html b/docs/html/node20.html new file mode 100644 index 00000000..e8438e25 --- /dev/null +++ b/docs/html/node20.html @@ -0,0 +1,86 @@ + + + + + +psb_cd_get_large_threshold -- Get threshold for index mapping switch + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cd_set_large_threshold Set + Up: psb_cd_get_context Get communication context + Previous: psb_cd_get_context Get communication context +   Contents +
+
+ + +

+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 new file mode 100644 index 00000000..ab809f1b --- /dev/null +++ b/docs/html/node21.html @@ -0,0 +1,95 @@ + + + + + +psb_cd_set_large_threshold -- Set threshold for index mapping switch + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_sp_get_nrows Get + Up: psb_cd_get_context Get communication context + Previous: psb_cd_get_large_threshold Get +   Contents +
+
+ + +

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

+ +
+call psb_cd_set_large_threshold(ith)
+
+ +

+

+
Type:
+
Asynchronous. +
+
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. + +

+


+ + + diff --git a/docs/html/node22.html b/docs/html/node22.html new file mode 100644 index 00000000..cad71b10 --- /dev/null +++ b/docs/html/node22.html @@ -0,0 +1,103 @@ + + + + + +psb_sp_get_nrows -- Get number of rows in a sparse matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_sp_get_ncols Get + Up: psb_cd_get_context Get communication context + Previous: psb_cd_set_large_threshold Set +   Contents +
+
+ + +

+psb_sp_get_nrows -- Get number of rows in a sparse + matrix +

+ +

+

+nr = psb_sp_get_nrows(a)
+
+ +

+

+
Type:
+
Asynchronous. +
+
On Entry
+
+
+
a
+
the sparse matrix +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type spdatapsb_spmat_type. +
+
+ +

+

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

+


+ + + diff --git a/docs/html/node23.html b/docs/html/node23.html new file mode 100644 index 00000000..2e0ba3ef --- /dev/null +++ b/docs/html/node23.html @@ -0,0 +1,103 @@ + + + + + +psb_sp_get_ncols -- Get number of columns in a sparse matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_sp_get_nnzeros Get + Up: psb_cd_get_context Get communication context + Previous: psb_sp_get_nrows Get +   Contents +
+
+ + +

+psb_sp_get_ncols -- Get number of columns in a + sparse matrix +

+ +

+

+nr = psb_sp_get_ncols(a)
+
+ +

+

+
Type:
+
Asynchronous. +
+
On Entry
+
+
+
a
+
the sparse matrix +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type spdatapsb_spmat_type. +
+
+ +

+

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

+


+ + + diff --git a/docs/html/node24.html b/docs/html/node24.html new file mode 100644 index 00000000..efb8e79f --- /dev/null +++ b/docs/html/node24.html @@ -0,0 +1,112 @@ + + + + + +psb_sp_get_nnzeros -- Get number of nonzero elements in a sparse matrix + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Computational routines + Up: psb_cd_get_context Get communication context + Previous: psb_sp_get_ncols Get +   Contents +
+
+ + +

+psb_sp_get_nnzeros -- Get number of nonzero elements + in a sparse matrix +

+ +

+

+nr = psb_sp_get_nnzeros(a)
+
+ +

+

+
Type:
+
Asynchronous. +
+
On Entry
+
+
+
a
+
the sparse matrix +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type spdatapsb_spmat_type. +
+
+ +

+

+
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/node25.html b/docs/html/node25.html new file mode 100644 index 00000000..42ff464e --- /dev/null +++ b/docs/html/node25.html @@ -0,0 +1,95 @@ + + + + + +Computational routines + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_geaxpby General + Up: userhtml + Previous: psb_sp_get_nnzeros Get +   Contents +
+
+ + +

+Computational routines +

+ +

+


+ +Subsections + + + +

+ + + diff --git a/docs/html/node26.html b/docs/html/node26.html new file mode 100644 index 00000000..a82b033c --- /dev/null +++ b/docs/html/node26.html @@ -0,0 +1,289 @@ + + + + + +psb_geaxpby -- General Dense Matrix Sum + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_gedot Dot + Up: Computational routines + Previous: Computational routines +   Contents +
+
+ + +

+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 +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 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: a structured data 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 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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_gedot Dot + Up: Computational routines + Previous: Computational routines +   Contents + + + + diff --git a/docs/html/node27.html b/docs/html/node27.html new file mode 100644 index 00000000..c42884fd --- /dev/null +++ b/docs/html/node27.html @@ -0,0 +1,288 @@ + + + + + +psb_gedot -- Dot Product + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_gedots Generalized + Up: Computational routines + Previous: psb_geaxpby General +   Contents +
+
+ + +

+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)
+
+

+
+ + + +
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: an array of rank one or two +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: an array of rank one or two +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: a structured data of type descdatapsb_desc_type. + +

+

+
On Return
+
+
+
Function value
+
is the dot product of subvectors $x$ and $y$. +
+Scope: global +
+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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_gedots Generalized + Up: Computational routines + Previous: psb_geaxpby General +   Contents + + + + diff --git a/docs/html/node28.html b/docs/html/node28.html new file mode 100644 index 00000000..88723970 --- /dev/null +++ b/docs/html/node28.html @@ -0,0 +1,274 @@ + + + + + +psb_gedots -- Generalized Dot Product + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_geamax Infinity-Norm + Up: Computational routines + Previous: psb_gedot Dot +   Contents +
+
+ + +

+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: an array of rank one or two +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: an array of rank one or two +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: a structured data of type descdatapsb_desc_type. +
+
On Return
+
+
+
res
+
is the dot product of subvectors $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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_geamax Infinity-Norm + Up: Computational routines + Previous: psb_gedot Dot +   Contents + + + + diff --git a/docs/html/node29.html b/docs/html/node29.html new file mode 100644 index 00000000..31a7b298 --- /dev/null +++ b/docs/html/node29.html @@ -0,0 +1,252 @@ + + + + + +psb_geamax -- Infinity-Norm of Vector + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_geamaxs Generalized + Up: Computational routines + Previous: psb_gedots Generalized +   Contents +
+
+ + +

+psb_geamax -- 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 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)
+
+ +

+

+
+ + + +
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 +containing numbers of type specified in +Table 4. +
+
desc_a
+
contains data structures for communications. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type descdatapsb_desc_type. + +

+

+
On Return
+
+
+
Function value
+
is the infinity norm of subvector $x$. +
+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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_geamaxs Generalized + Up: Computational routines + Previous: psb_gedots Generalized +   Contents + + + + diff --git a/docs/html/node3.html b/docs/html/node3.html new file mode 100644 index 00000000..1a995661 --- /dev/null +++ b/docs/html/node3.html @@ -0,0 +1,202 @@ + + + + + +General overview + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Basic Nomenclature + Up: userhtml + Previous: Introduction +   Contents +
+
+ + +

+ +
+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 95 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 implemented through the Basic +Linear Algebra Communication Subroutines (BLACS) library [6] +that guarantees a portable and efficient communication layer. The +Message Passing Interface code is encapsulated within the BLACS +layer. However, in some cases, MPI routines are directly used either +to improve efficiency or to implement communication patterns for which +the BLACS package doesn't provide any method. + +

+In any case we provide wrappers around the BLACS routines so that the +user does not need to delve into their details (see Sec. 7). + +

+ +

+ + + +
Figure 1: +PSBLAS library components hierarchy.
+
+ +\rotatebox{-90}{\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 data distributions commonly used in +ScaLAPACK 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 [11]. +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 +bottleneck would make this option unattractive in most cases. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents +
+ Next: Basic Nomenclature + Up: userhtml + Previous: Introduction +   Contents + + + + diff --git a/docs/html/node30.html b/docs/html/node30.html new file mode 100644 index 00000000..8a76a08a --- /dev/null +++ b/docs/html/node30.html @@ -0,0 +1,226 @@ + + + + + +psb_geamaxs -- Generalized Infinity Norm + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_geasum 1-Norm + Up: Computational routines + Previous: psb_geamax Infinity-Norm +   Contents +
+
+ + +

+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 +containing numbers of type specified in +Table 5. +
+
desc_a
+
contains data structures for communications. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data 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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_geasum 1-Norm + Up: Computational routines + Previous: psb_geamax Infinity-Norm +   Contents + + + + diff --git a/docs/html/node31.html b/docs/html/node31.html new file mode 100644 index 00000000..0d91847b --- /dev/null +++ b/docs/html/node31.html @@ -0,0 +1,251 @@ + + + + + +psb_geasum -- 1-Norm of Vector + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_geasums Generalized + Up: Computational routines + Previous: psb_geamaxs Generalized +   Contents +
+
+ + +

+psb_geasum -- 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 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)
+
+ +

+

+
+ + + +
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 +containing numbers of type specified in +Table 6. +
+
desc_a
+
contains data structures for communications. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type descdatapsb_desc_type. + +

+

+
On Return
+
+
+
Function value
+
is the 1-norm of vector $x$. +
+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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_geasums Generalized + Up: Computational routines + Previous: psb_geamaxs Generalized +   Contents + + + + diff --git a/docs/html/node32.html b/docs/html/node32.html new file mode 100644 index 00000000..56c3c922 --- /dev/null +++ b/docs/html/node32.html @@ -0,0 +1,436 @@ + + + + + +psb_geasums -- Generalized 1-Norm of Vector + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_genrm2s Generalized + Up: Computational routines + Previous: psb_geasum 1-Norm +   Contents +
+
+ + +

+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 +containing numbers of type specified in +Table 7. +
+
desc_a
+
contains data structures for communications. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data 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. +
+
+ +

+ifstarsubroutinesubroutinepsb_genrm22-Norm of Vector + +

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

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

+else if $x$ is double precision 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)
+
+ +

+

+
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 +containing numbers of type specified in +Table 8. +
+
desc_a
+
contains data structures for communications. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type descdatapsb_desc_type. + +

+

+
On Return
+
+
+
Function Value
+
is the 2-norm of subvector $x$. +
+Scope: global +
+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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_genrm2s Generalized + Up: Computational routines + Previous: psb_geasum 1-Norm +   Contents + + + + diff --git a/docs/html/node33.html b/docs/html/node33.html new file mode 100644 index 00000000..13d9345a --- /dev/null +++ b/docs/html/node33.html @@ -0,0 +1,273 @@ + + + + + +psb_genrm2s -- Generalized 1-Norm of Vector + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_spnrmi Infinity + Up: Computational routines + Previous: psb_geasums Generalized +   Contents +
+
+ + +

+psb_genrm2s -- 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 \sqrt{x^T x}\end{displaymath} +
+
+

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

+
+ + +\begin{displaymath}res(i) \leftarrow \sqrt{x^H x}\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 +containing numbers of type specified in +Table 9. +
+
desc_a
+
contains data structures for communications. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data 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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_spnrmi Infinity + Up: Computational routines + Previous: psb_geasums Generalized +   Contents + + + + diff --git a/docs/html/node34.html b/docs/html/node34.html new file mode 100644 index 00000000..833229cd --- /dev/null +++ b/docs/html/node34.html @@ -0,0 +1,227 @@ + + + + + +psb_spnrmi -- Infinity Norm of Sparse Matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_spmm Sparse + Up: Computational routines + Previous: psb_genrm2s Generalized +   Contents +
+
+ + +

+psb_spnrmi -- 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 10: +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)
+
+ +

+

+
Type:
+
Synchronous. +
+
On Entry
+
+
+
a
+
the local portion of the global sparse matrix +$A$. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type spdatapsb_spmat_type. +
+
desc_a
+
contains data structures for communications. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data 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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_spmm Sparse + Up: Computational routines + Previous: psb_genrm2s Generalized +   Contents + + + + diff --git a/docs/html/node35.html b/docs/html/node35.html new file mode 100644 index 00000000..c73d69df --- /dev/null +++ b/docs/html/node35.html @@ -0,0 +1,439 @@ + + + + + +psb_spmm -- Sparse Matrix by Dense Matrix Product + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_spsm Triangular + Up: Computational routines + Previous: psb_spnrmi Infinity +   Contents +
+
+ + +

+psb_spmm -- Sparse Matrix by Dense Matrix Product +

+ +

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

+
+

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

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

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

+ +

+where: +

+
$x$
+
is the global dense submatrix $x_{:, :}$ +
+
$y$
+
is the global dense submatrix $y_{:, :}$ +
+
$A$
+
is the global sparse submatrix $A$ +
+
$P_r, P_c$
+
are the permutation matrices. +
+
+ +

+

+
+ + + +
Table 11: +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 11. +
+
a
+
the local portion of the sparse matrix +$A$. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type spdatapsb_spmat_type. +
+
x
+
the local portion of global dense matrix +$x$. + +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a rank one or two array +containing numbers of type specified in +Table 11. 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 11. +
+
y
+
the local portion of global dense matrix +$y$. + +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one or two array +containing numbers of type specified in +Table 11. 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: a structured data of type descdatapsb_desc_type. +
+
trans
+
indicate 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 submatrix $y$. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: an array of rank one or two +containing numbers of type specified in +Table 11. +
+
info
+
Error code. +
+Scope: local +
+Type: required +
+Intent: out. +
+An integer value; 0 means no error has been detected. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_spsm Triangular + Up: Computational routines + Previous: psb_spnrmi Infinity +   Contents + + + + diff --git a/docs/html/node36.html b/docs/html/node36.html new file mode 100644 index 00000000..5f3a5282 --- /dev/null +++ b/docs/html/node36.html @@ -0,0 +1,484 @@ + + + + + +psb_spsm -- Triangular System Solve + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Communication routines + Up: Computational routines + Previous: psb_spmm Sparse +   Contents +
+
+ + +

+psb_spsm -- Triangular System Solve +

+ +

+This subroutine computes the Triangular System Solve: + +

+

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

+ +

+where: +

+
$x$
+
is the global dense submatrix $x_{:, :}$ +
+
$y$
+
is the global dense submatrix $y_{:, :}$ +
+
$T$
+
is the global sparse block triangular submatrix $T$ +
+
$D$
+
is the scaling diagonal matrix. +
+
$P_r, P_c$
+
are the permutation matrices. +
+
+ +

+

+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 12: +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 12. +
+
t
+
the global portion of the sparse matrix +$T$. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data 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 +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 +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: a structured data 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 12. +
+
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 12. +
+
info
+
Error code. +
+Scope: local +
+Type: required +
+Intent: out. +
+An integer value; 0 means no error has been detected. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Communication routines + Up: Computational routines + Previous: psb_spmm Sparse +   Contents + + + + diff --git a/docs/html/node37.html b/docs/html/node37.html new file mode 100644 index 00000000..9132d4d4 --- /dev/null +++ b/docs/html/node37.html @@ -0,0 +1,84 @@ + + + + + +Communication routines + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_halo Halo + Up: userhtml + Previous: psb_spsm Triangular +   Contents +
+
+ + +

+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/node38.html b/docs/html/node38.html new file mode 100644 index 00000000..0e6d1485 --- /dev/null +++ b/docs/html/node38.html @@ -0,0 +1,655 @@ + + + + + +psb_halo -- Halo Data Communication + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_ovrl Overlap + Up: Communication routines + Previous: Communication routines +   Contents +
+
+ + +

+psb_halo -- Halo Data Communication +

+ +

+These subroutines gathers the values of the halo +elements, and (optionally) scale the result: + +

+

+
+ + +\begin{displaymath}x \leftarrow \alpha x \end{displaymath} +
+
+

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

+

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

+
+ +

+

+call psb_halo(x, desc_a, info)
+call psb_halo(x, desc_a, info, alpha, work, data)
+
+ +

+

+
Type:
+
Synchronous. +
+
On Entry
+
+
+
x
+
global dense matrix $x$. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one or two array with the TARGET attribute +containing numbers of type specified in +Table 13. +
+
desc_a
+
contains data structures for communications. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a structured data of type descdatapsb_desc_type. +
+
alpha
+
the scalar $\alpha$. +
+Scope: global +
+Type: optional +
+Intent: in. +
+Default: $alpha = 1 $ +
+Specified as: a number of the data type indicated in Table 13. +
+
work
+
the work array. +
+Scope: local +
+Type: optional +
+Intent: inout. +
+Specified as: a rank one array of the same type of $x$ with the +POINTER attribute. +
+
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 13. +
+
info
+
the local portion of result submatrix $y$. +
+Scope: local +
+Type: required +
+Intent: out. +
+An integer value that contains an error code. +
+
+ +
+ + + +
Figure 6: +Sample discretization mesh.
+
+ +\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}} +
+
+ +

+Usage Example +Consider the discretization mesh depicted in fig. 6, +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
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_ovrl Overlap + Up: Communication routines + Previous: Communication routines +   Contents + + + + diff --git a/docs/html/node39.html b/docs/html/node39.html new file mode 100644 index 00000000..0d6bb4c8 --- /dev/null +++ b/docs/html/node39.html @@ -0,0 +1,763 @@ + + + + + +psb_ovrl -- Overlap Update + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_gather Gather + Up: Communication routines + Previous: psb_halo Halo +   Contents +
+
+ + +

+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 14: +Data types
+
+ + + + + + + + + + + + + + + + +
$x$Subroutine
Short Precision Realpsb_ovrl
Long Precision Realpsb_ovrl
Short Precision Complexpsb_ovrl
Long Precision Complexpsb_ovrl
+
+
+

+
+ +

+

+call psb_ovrl(x, desc_a, info)
+call psb_ovrl(x, desc_a, info, update=update_type, work=work)
+
+ +

+

+
Type:
+
Synchronous. +
+
On Entry
+
+
+
x
+
global dense matrix $x$. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one or two array +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. +
+
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 14. +
+
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 7: +Sample discretization mesh.
+
+ +\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}} +
+
+ +Example of use +Consider the discretization mesh depicted in fig. 7, +partitioned among two processes as shown by the dashed lines, with an +overlap of 1 extra layer with respect to the partition of +fig. 6; 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
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_gather Gather + Up: Communication routines + Previous: psb_halo Halo +   Contents + + + + diff --git a/docs/html/node4.html b/docs/html/node4.html new file mode 100644 index 00000000..418d6adb --- /dev/null +++ b/docs/html/node4.html @@ -0,0 +1,227 @@ + + + + + +Basic Nomenclature + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Library contents + Up: General overview + Previous: General overview +   Contents +
+
+ + +

+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 [3,2]. + +

+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.
+
+ +\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. + +

+


+ + +next + +up + +previous + +contents +
+ Next: Library contents + Up: General overview + Previous: General overview +   Contents + + + + diff --git a/docs/html/node40.html b/docs/html/node40.html new file mode 100644 index 00000000..1339cb1f --- /dev/null +++ b/docs/html/node40.html @@ -0,0 +1,275 @@ + + + + + +psb_gather -- Gather Global Dense Matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_scatter Scatter + Up: Communication routines + Previous: psb_ovrl Overlap +   Contents +
+
+ + +

+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 15: +Data types
+
+ + + + + + + + + + + + + + + + + + + +
$x_i, y$Subroutine
Integerpsb_gather
Short Precision Realpsb_gather
Long Precision Realpsb_gather
Short Precision Complexpsb_gather
Long Precision Complexpsb_gather
+
+
+

+
+ +

+

+call psb_gather(glob_x, loc_x, desc_a, info, root)
+call psb_gather(glob_x, loc_x, desc_a, info, root)
+
+ +

+

+
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 containing numbers of the type +indicated 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. +
+
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. +
+
info
+
Error code. +
+Scope: local +
+Type: required +
+Intent: out. +
+An integer value; 0 means no error has been detected. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_scatter Scatter + Up: Communication routines + Previous: psb_ovrl Overlap +   Contents + + + + diff --git a/docs/html/node41.html b/docs/html/node41.html new file mode 100644 index 00000000..e853ed03 --- /dev/null +++ b/docs/html/node41.html @@ -0,0 +1,273 @@ + + + + + +psb_scatter -- Scatter Global Dense Matrix + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Data management routines + Up: Communication routines + Previous: psb_gather Gather +   Contents +
+
+ + +

+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 16: +Data types
+
+ + + + + + + + + + + + + + + + + + + +
$x_i, y$Subroutine
Integerpsb_scatter
Short Precision Realpsb_scatter
Long Precision Realpsb_scatter
Short Precision Complexpsb_scatter
Long Precision Complexpsb_scatter
+
+
+

+
+ +

+

+call psb_scatter(glob_x, loc_x, desc_a, info, root)
+call psb_scatter(glob_x, loc_x, desc_a, info, root)
+
+ +

+

+
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 $-1$. +
+
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 array containing numbers of the type +indicated in Table 16. +
+
info
+
Error code. +
+Scope: local +
+Type: required +
+Intent: out. +
+An integer value; 0 means no error has been detected. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Data management routines + Up: Communication routines + Previous: psb_gather Gather +   Contents + + + + diff --git a/docs/html/node42.html b/docs/html/node42.html new file mode 100644 index 00000000..80440136 --- /dev/null +++ b/docs/html/node42.html @@ -0,0 +1,135 @@ + + + + + +Data management routines + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cdall Allocates + Up: userhtml + Previous: psb_scatter Scatter +   Contents +
+
+ + +

+ +
+Data management routines +

+ +

+


+ +Subsections + + + +

+ + + diff --git a/docs/html/node43.html b/docs/html/node43.html new file mode 100644 index 00000000..fe22e070 --- /dev/null +++ b/docs/html/node43.html @@ -0,0 +1,368 @@ + + + + + +psb_cdall -- Allocates a communication descriptor + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cdins Communication + Up: Data management routines + Previous: Data management routines +   Contents +
+
+ + +

+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,flag=flag)
+call psb_cdall(icontxt, desc_a, info,vl=vl)
+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. Exactly 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. +
+
parts
+
the subroutine that defines the partitioning scheme. +
+Scope:global. +
+Type:required. +
+Specified as: a subroutine. +
+
vl
+
Data allocation: the set of global indices 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. +
+
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. +
+
+ +

+

+
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. Exactly one of the optional arguments parts, vg, + vl, nl 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 containint 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; the size of the index space is + equal to the size of vg, and each index $i$ is assigned to + the 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. +
    +
    vl
    +
    In this case we are specifying the list of indices assigned + to the current process; thus, the global problem size $mg$ is given by + the sum of the sizes of the individual vectors vl specified + on the calling processes. The subroutine will check that each entry + in the global index space $(1\dots mg)$ is specified exactly once. +
    +
    nl
    +
    In this case we are implying a generalized row-block + distribution in which each process $I$ gets assigned a consecutive + chunk of $N_I=nl$ global indices. +
    +
    repl
    +
    In this case we are asking 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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_cdins Communication + Up: Data management routines + Previous: Data management routines +   Contents + + + + diff --git a/docs/html/node44.html b/docs/html/node44.html new file mode 100644 index 00000000..b8743a70 --- /dev/null +++ b/docs/html/node44.html @@ -0,0 +1,193 @@ + + + + + +psb_cdins -- Communication descriptor insert routine + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cdasb Communication + Up: Data management routines + Previous: psb_cdall Allocates +   Contents +
+
+ + +

+psb_cdins -- Communication descriptor insert routine +

+ +

+

+call psb_cdins(nz, ia, ja, desc_a, info)
+
+ +

+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. + +

+

+
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$. +
+
+ +

+

+
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. +
+
+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_cdasb Communication + Up: Data management routines + Previous: psb_cdall Allocates +   Contents + + + + diff --git a/docs/html/node45.html b/docs/html/node45.html new file mode 100644 index 00000000..433fe050 --- /dev/null +++ b/docs/html/node45.html @@ -0,0 +1,128 @@ + + + + + +psb_cdasb -- Communication descriptor assembly routine + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cdcpy Copies + Up: Data management routines + Previous: psb_cdins Communication +   Contents +
+
+ + +

+psb_cdasb -- Communication descriptor assembly routine +

+ +

+

+call psb_cdasb(desc_a, info)
+
+ +

+

+
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. +
+
+ +

+

+
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/node46.html b/docs/html/node46.html new file mode 100644 index 00000000..88524e07 --- /dev/null +++ b/docs/html/node46.html @@ -0,0 +1,123 @@ + + + + + +psb_cdcpy -- Copies a communication descriptor + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cdfree Frees + Up: Data management routines + Previous: psb_cdasb Communication +   Contents +
+
+ + +

+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/node47.html b/docs/html/node47.html new file mode 100644 index 00000000..dc24d737 --- /dev/null +++ b/docs/html/node47.html @@ -0,0 +1,110 @@ + + + + + +psb_cdfree -- Frees a communication descriptor + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_cdbldext Build + Up: Data management routines + Previous: psb_cdcpy Copies +   Contents +
+
+ + +

+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/node48.html b/docs/html/node48.html new file mode 100644 index 00000000..eb264907 --- /dev/null +++ b/docs/html/node48.html @@ -0,0 +1,208 @@ + + + + + +psb_cdbldext -- Build an extended communication descriptor + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_spall Allocates + Up: Data management routines + Previous: psb_cdfree Frees +   Contents +
+
+ + +

+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_spmat_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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_spall Allocates + Up: Data management routines + Previous: psb_cdfree Frees +   Contents + + + + diff --git a/docs/html/node49.html b/docs/html/node49.html new file mode 100644 index 00000000..010095d4 --- /dev/null +++ b/docs/html/node49.html @@ -0,0 +1,177 @@ + + + + + +psb_spall -- Allocates a sparse matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_spins Insert + Up: Data management routines + Previous: psb_cdbldext Build +   Contents +
+
+ + +

+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_spmat_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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_spins Insert + Up: Data management routines + Previous: psb_cdbldext Build +   Contents + + + + diff --git a/docs/html/node5.html b/docs/html/node5.html new file mode 100644 index 00000000..26903f7d --- /dev/null +++ b/docs/html/node5.html @@ -0,0 +1,186 @@ + + + + + +Library contents + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Application structure + Up: General overview + Previous: Basic Nomenclature +   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 the symbols (i.e. subroutine names, data types...) are + prefixed by psb_ +
  • +
  • all the data type names are suffixed by _type +
  • +
  • all the constant values are suffixed by _ +
  • +
  • all the 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 + interfaces 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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Application structure + Up: General overview + Previous: Basic Nomenclature +   Contents + + + + diff --git a/docs/html/node50.html b/docs/html/node50.html new file mode 100644 index 00000000..6fa71538 --- /dev/null +++ b/docs/html/node50.html @@ -0,0 +1,246 @@ + + + + + +psb_spins -- Insert a cloud of elements into a sparse matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_spasb Sparse + Up: Data management routines + Previous: psb_spall Allocates +   Contents +
+
+ + +

+psb_spins -- Insert a cloud of elements into a sparse + matrix +

+ +

+

+call psb_spins(nz, ia, ja, val, a, desc_a, info)
+
+ +

+

+
Type:
+
Asynchronous. +
+
On Entry
+
+
+
nz
+
the number of elements to be inserted. +
+Scope:local. +
+Type:required. +
+Intent: in. +
+Specified as: an integer scalar. +
+
ia
+
the row indices of the elements to be inserted. +
+Scope:local. +
+Type:required. +
+Intent: in. +
+Specified as: an integer array of size $nz$. +
+
ja
+
the column indices of the elements to be inserted. +
+Scope:local. +
+Type:required. +
+Intent: in. +
+Specified as: an integer array of size $nz$. +
+
val
+
the elements 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 aspk component of the sparse matrix $a$. +
+
desc_a
+
The communication descriptor. +
+Scope: local. +
+Type: required. +
+Intent: inout. +
+Specified as: a variable of type descdatapsb_desc_type. +
+
+ +

+

+
On Return
+
+
+
a
+
the matrix into which elements will be inserted. +
+Scope:local +
+Type:required +
+Intent: inout. +
+Specified as: a structured data of type spdatapsb_spmat_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. Any coefficients from matrix rows not assigned to the calling + process are silently ignored; +
  8. +
  9. If the descriptor is in the assembled state, then any entries in + the sparse matrix that would generate additional communication + requirements will be ignored; +
  10. +
  11. If the matrix is in the update state, any entries in positions + that were not present in the original matrix will be ignored. +
  12. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_spasb Sparse + Up: Data management routines + Previous: psb_spall Allocates +   Contents + + + + diff --git a/docs/html/node51.html b/docs/html/node51.html new file mode 100644 index 00000000..f989b8c0 --- /dev/null +++ b/docs/html/node51.html @@ -0,0 +1,205 @@ + + + + + +psb_spasb -- Sparse matrix assembly routine + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_spfree Frees + Up: Data management routines + Previous: psb_spins Insert +   Contents +
+
+ + +

+psb_spasb -- Sparse matrix assembly routine +

+ +

+

+call psb_spasb(a, desc_a, info, afmt, upd, dupl)
+
+ +

+

+
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: global. +
+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_. +
+
+ +

+

+
On Return
+
+
+
a
+
the matrix to be assembled. +
+Scope:local +
+Type:required +
+Intent: inout. +
+Specified as: a structured data of type spdatapsb_spmat_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. On exit from this routine the matrix is in the assembled state, + and thus is suitable for the computational routines. +
  10. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_spfree Frees + Up: Data management routines + Previous: psb_spins Insert +   Contents + + + + diff --git a/docs/html/node52.html b/docs/html/node52.html new file mode 100644 index 00000000..0b74fa30 --- /dev/null +++ b/docs/html/node52.html @@ -0,0 +1,121 @@ + + + + + +psb_spfree -- Frees a sparse matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_sprn Reinit + Up: Data management routines + Previous: psb_spasb Sparse +   Contents +
+
+ + +

+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_spmat_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/node53.html b/docs/html/node53.html new file mode 100644 index 00000000..e26e9cd2 --- /dev/null +++ b/docs/html/node53.html @@ -0,0 +1,140 @@ + + + + + +psb_sprn -- Reinit sparse matrix structure for psblas routines. + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_geall Allocates + Up: Data management routines + Previous: psb_spfree Frees +   Contents +
+
+ + +

+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_spmat_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/node54.html b/docs/html/node54.html new file mode 100644 index 00000000..9723790d --- /dev/null +++ b/docs/html/node54.html @@ -0,0 +1,158 @@ + + + + + +psb_geall -- Allocates a dense matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_geins Dense + Up: Data management routines + Previous: psb_sprn Reinit +   Contents +
+
+ + +

+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, 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/node55.html b/docs/html/node55.html new file mode 100644 index 00000000..21452a6a --- /dev/null +++ b/docs/html/node55.html @@ -0,0 +1,219 @@ + + + + + +psb_geins -- Dense matrix insertion routine + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_geasb Assembly + Up: Data management routines + Previous: psb_geall Allocates +   Contents +
+
+ + +

+psb_geins -- Dense matrix insertion routine +

+ +

+

+call psb_geins(m, irw, val, x, desc_a, info,dupl)
+
+ +

+

+
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_. +
+
+ +

+

+
On Return
+
+
+
x
+
the output dense matrix. +
+Scope: local +
+Type: required +
+Intent: inout. +
+Specified as: a rank one or two array with the ALLOCATABLE +attribute, 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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_geasb Assembly + Up: Data management routines + Previous: psb_geall Allocates +   Contents + + + + diff --git a/docs/html/node56.html b/docs/html/node56.html new file mode 100644 index 00000000..7dcbad13 --- /dev/null +++ b/docs/html/node56.html @@ -0,0 +1,120 @@ + + + + + +psb_geasb -- Assembly a dense matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_gefree Frees + Up: Data management routines + Previous: psb_geins Dense +   Contents +
+
+ + +

+psb_geasb -- Assembly a dense matrix +

+ +

+

+call psb_geasb(x, desc_a, info)
+
+ +

+

+
Type:
+
Synchronous. +
+
On Entry
+
+
+
desc_a
+
The communication descriptor. +
+Scope: local +
+Type: required +
+Intent: in. +
+Specified as: a variable of type descdatapsb_desc_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 +attribute, 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/node57.html b/docs/html/node57.html new file mode 100644 index 00000000..3efa7b4f --- /dev/null +++ b/docs/html/node57.html @@ -0,0 +1,125 @@ + + + + + +psb_gefree -- Frees a dense matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_gelp Applies + Up: Data management routines + Previous: psb_geasb Assembly +   Contents +
+
+ + +

+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 +attribute, 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/node58.html b/docs/html/node58.html new file mode 100644 index 00000000..75d1237b --- /dev/null +++ b/docs/html/node58.html @@ -0,0 +1,145 @@ + + + + + +psb_gelp -- Applies a left permutation to a dense matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_glob_to_loc Global + Up: Data management routines + Previous: psb_gefree Frees +   Contents +
+
+ + +

+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/node59.html b/docs/html/node59.html new file mode 100644 index 00000000..15441a9d --- /dev/null +++ b/docs/html/node59.html @@ -0,0 +1,223 @@ + + + + + +psb_glob_to_loc -- Global to local indices convertion + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_loc_to_glob Local + Up: Data management routines + Previous: psb_gelp Applies +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_loc_to_glob Local + Up: Data management routines + Previous: psb_gelp Applies +   Contents + + + + diff --git a/docs/html/node6.html b/docs/html/node6.html new file mode 100644 index 00000000..5b4cf463 --- /dev/null +++ b/docs/html/node6.html @@ -0,0 +1,279 @@ + + + + + +Application structure + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Programming model + Up: General overview + Previous: Library contents +   Contents +
+
+ + +

+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 psb_precset and + build it with psb_precbld +
  12. +
  13. Call the iterative method of choice, e.g. psb_bicgstab +
  14. +
+This is the structure of the sample program +test/pargen/ppde90.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 psb_precset and + psb_precbld +
    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. + +

+


+ + +next + +up + +previous + +contents +
+ Next: Programming model + Up: General overview + Previous: Library contents +   Contents + + + + diff --git a/docs/html/node60.html b/docs/html/node60.html new file mode 100644 index 00000000..b1ab2226 --- /dev/null +++ b/docs/html/node60.html @@ -0,0 +1,199 @@ + + + + + +psb_loc_to_glob -- Local to global indices conversion + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_is_owned + Up: Data management routines + Previous: psb_glob_to_loc Global +   Contents +
+
+ + +

+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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_is_owned + Up: Data management routines + Previous: psb_glob_to_loc Global +   Contents + + + + diff --git a/docs/html/node61.html b/docs/html/node61.html new file mode 100644 index 00000000..f132e1c6 --- /dev/null +++ b/docs/html/node61.html @@ -0,0 +1,132 @@ + + + + + +psb_is_owned + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_owned_index + Up: Data management routines + Previous: psb_loc_to_glob Local +   Contents +
+
+ + +

+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/node62.html b/docs/html/node62.html new file mode 100644 index 00000000..95bfac79 --- /dev/null +++ b/docs/html/node62.html @@ -0,0 +1,156 @@ + + + + + +psb_owned_index + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_is_local + Up: Data management routines + Previous: psb_is_owned +   Contents +
+
+ + +

+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/node63.html b/docs/html/node63.html new file mode 100644 index 00000000..cf184c26 --- /dev/null +++ b/docs/html/node63.html @@ -0,0 +1,132 @@ + + + + + +psb_is_local + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_local_index + Up: Data management routines + Previous: psb_owned_index +   Contents +
+
+ + +

+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/node64.html b/docs/html/node64.html new file mode 100644 index 00000000..f1602c57 --- /dev/null +++ b/docs/html/node64.html @@ -0,0 +1,156 @@ + + + + + +psb_local_index + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_get_boundary Extract + Up: Data management routines + Previous: psb_is_local +   Contents +
+
+ + +

+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/node65.html b/docs/html/node65.html new file mode 100644 index 00000000..6af8fb33 --- /dev/null +++ b/docs/html/node65.html @@ -0,0 +1,136 @@ + + + + + +psb_get_boundary -- Extract list of boundary elements + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_get_overlap Extract + Up: Data management routines + Previous: psb_local_index +   Contents +
+
+ + +

+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/node66.html b/docs/html/node66.html new file mode 100644 index 00000000..aae8df71 --- /dev/null +++ b/docs/html/node66.html @@ -0,0 +1,135 @@ + + + + + +psb_get_overlap -- Extract list of overlap elements + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_sp_getrow Extract + Up: Data management routines + Previous: psb_get_boundary Extract +   Contents +
+
+ + +

+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/node67.html b/docs/html/node67.html new file mode 100644 index 00000000..75aaebd3 --- /dev/null +++ b/docs/html/node67.html @@ -0,0 +1,265 @@ + + + + + +psb_sp_getrow -- Extract row(s) from a sparse matrix + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_sizeof Memory + Up: Data management routines + Previous: psb_get_overlap Extract +   Contents +
+
+ + +

+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_spmat_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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_sizeof Memory + Up: Data management routines + Previous: psb_get_overlap Extract +   Contents + + + + diff --git a/docs/html/node68.html b/docs/html/node68.html new file mode 100644 index 00000000..7d038f3e --- /dev/null +++ b/docs/html/node68.html @@ -0,0 +1,132 @@ + + + + + +psb_sizeof -- Memory occupation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Sorting utilities + Up: Data management routines + Previous: psb_sp_getrow Extract +   Contents +
+
+ + +

+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_spmat_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 number. +
+
+ +

+


+ + + diff --git a/docs/html/node69.html b/docs/html/node69.html new file mode 100644 index 00000000..ccade181 --- /dev/null +++ b/docs/html/node69.html @@ -0,0 +1,283 @@ + + + + + +Sorting utilities + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Parallel environment routines + Up: Data management routines + Previous: psb_sizeof Memory +   Contents +
+
+ + +

+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: psb_sort_up_, +psb_sort_down_, psb_asort_up_, psb_asort_down_; +default psb_sort_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. The sorting can be performed in the up/down direction, on the + natural or absolute values; for complex data the sorting can only + be done on the absolute values; +
  2. +
  3. 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; +
  4. +
  5. 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; +
  6. +
  7. If +$flag = psb\_sort\_keep\_idx\_$ the routine will assume that + the entries in $ix(:)$ have already been initialized by the user; +
  8. +
  9. 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 often the preferred choice when a sorting is needed + by other routines in the library. +
    6. +
    +
  10. +
+ +

+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Parallel environment routines + Up: Data management routines + Previous: psb_sizeof Memory +   Contents + + + + diff --git a/docs/html/node7.html b/docs/html/node7.html new file mode 100644 index 00000000..7a65b85d --- /dev/null +++ b/docs/html/node7.html @@ -0,0 +1,131 @@ + + + + + +Programming model + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Data Structures + Up: General overview + Previous: Application structure +   Contents +
+
+ + +

+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.4 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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Data Structures + Up: General overview + Previous: Application structure +   Contents + + + + diff --git a/docs/html/node70.html b/docs/html/node70.html new file mode 100644 index 00000000..9f57dfdd --- /dev/null +++ b/docs/html/node70.html @@ -0,0 +1,109 @@ + + + + + +Parallel environment routines + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_init Initializes + Up: userhtml + Previous: Sorting utilities +   Contents +
+
+ + +

+ +
+Parallel environment routines +

+ +

+


+ +Subsections + + + +

+ + + diff --git a/docs/html/node71.html b/docs/html/node71.html new file mode 100644 index 00000000..cc55598a --- /dev/null +++ b/docs/html/node71.html @@ -0,0 +1,129 @@ + + + + + +psb_init -- Initializes PSBLAS parallel environment + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_info Return + Up: Parallel environment routines + Previous: Parallel environment routines +   Contents +
+
+ + +

+psb_init -- Initializes PSBLAS parallel environment +

+ +

+

+call psb_init(icontxt, np)
+
+ +

+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 provided by the underlying +parallel environment. +
+
+ +

+

+
On Return
+
+
+
icontxt
+
the communication context identifying the virtual + parallel machine. +
+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 parallel execution + environment. +
  4. +
+ +

+


+ + + diff --git a/docs/html/node72.html b/docs/html/node72.html new file mode 100644 index 00000000..ad8484eb --- /dev/null +++ b/docs/html/node72.html @@ -0,0 +1,180 @@ + + + + + +psb_info -- Return information about PSBLAS parallel environment + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_exit Exit + Up: Parallel environment routines + Previous: psb_init Initializes +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_exit Exit + Up: Parallel environment routines + Previous: psb_init Initializes +   Contents + + + + diff --git a/docs/html/node73.html b/docs/html/node73.html new file mode 100644 index 00000000..5a830604 --- /dev/null +++ b/docs/html/node73.html @@ -0,0 +1,158 @@ + + + + + +psb_exit -- Exit from PSBLAS parallel environment + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_get_mpicomm Get + Up: Parallel environment routines + Previous: psb_info Return +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_get_mpicomm Get + Up: Parallel environment routines + Previous: psb_info Return +   Contents + + + + diff --git a/docs/html/node74.html b/docs/html/node74.html new file mode 100644 index 00000000..c017a53a --- /dev/null +++ b/docs/html/node74.html @@ -0,0 +1,110 @@ + + + + + +psb_get_mpicomm -- Get the MPI communicator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_get_rank Get + Up: Parallel environment routines + Previous: psb_exit Exit +   Contents +
+
+ + +

+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/node75.html b/docs/html/node75.html new file mode 100644 index 00000000..61953e5f --- /dev/null +++ b/docs/html/node75.html @@ -0,0 +1,132 @@ + + + + + +psb_get_rank -- Get the MPI rank + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_wtime Wall + Up: Parallel environment routines + Previous: psb_get_mpicomm Get +   Contents +
+
+ + +

+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/node76.html b/docs/html/node76.html new file mode 100644 index 00000000..57cf95df --- /dev/null +++ b/docs/html/node76.html @@ -0,0 +1,88 @@ + + + + + +psb_wtime -- Wall clock timing + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_barrier Sinchronization + Up: Parallel environment routines + Previous: psb_get_rank Get +   Contents +
+
+ + +

+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/node77.html b/docs/html/node77.html new file mode 100644 index 00000000..b7b312b7 --- /dev/null +++ b/docs/html/node77.html @@ -0,0 +1,96 @@ + + + + + +psb_barrier -- Sinchronization point parallel environment + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_abort Abort + Up: Parallel environment routines + Previous: psb_wtime Wall +   Contents +
+
+ + +

+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/node78.html b/docs/html/node78.html new file mode 100644 index 00000000..d49e3020 --- /dev/null +++ b/docs/html/node78.html @@ -0,0 +1,94 @@ + + + + + +psb_abort -- Abort a computation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_bcast Broadcast + Up: Parallel environment routines + Previous: psb_barrier Sinchronization +   Contents +
+
+ + +

+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/node79.html b/docs/html/node79.html new file mode 100644 index 00000000..ebd8088e --- /dev/null +++ b/docs/html/node79.html @@ -0,0 +1,170 @@ + + + + + +psb_bcast -- Broadcast data + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_sum Global + Up: Parallel environment routines + Previous: psb_abort Abort +   Contents +
+
+ + +

+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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_sum Global + Up: Parallel environment routines + Previous: psb_abort Abort +   Contents + + + + diff --git a/docs/html/node8.html b/docs/html/node8.html new file mode 100644 index 00000000..5a4488d2 --- /dev/null +++ b/docs/html/node8.html @@ -0,0 +1,150 @@ + + + + + +Data Structures + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Descriptor data structure + Up: userhtml + Previous: Programming model +   Contents +
+
+ + +

+ +
+Data Structures +

+ +

+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 are defined in +the module psb_base_mod; this will have to be included by every +user subroutine that makes use of the library. + +

+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. +
+
+ +

+


+ +Subsections + + + +

+ + + diff --git a/docs/html/node80.html b/docs/html/node80.html new file mode 100644 index 00000000..50f964fe --- /dev/null +++ b/docs/html/node80.html @@ -0,0 +1,185 @@ + + + + + +psb_sum -- Global sum + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_max Global + Up: Parallel environment routines + Previous: psb_bcast Broadcast +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_max Global + Up: Parallel environment routines + Previous: psb_bcast Broadcast +   Contents + + + + diff --git a/docs/html/node81.html b/docs/html/node81.html new file mode 100644 index 00000000..ef1af10c --- /dev/null +++ b/docs/html/node81.html @@ -0,0 +1,184 @@ + + + + + +psb_max -- Global maximum + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_min Global + Up: Parallel environment routines + Previous: psb_sum Global +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_min Global + Up: Parallel environment routines + Previous: psb_sum Global +   Contents + + + + diff --git a/docs/html/node82.html b/docs/html/node82.html new file mode 100644 index 00000000..b260aeee --- /dev/null +++ b/docs/html/node82.html @@ -0,0 +1,186 @@ + + + + + +psb_min -- Global minimum + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_amx Global + Up: Parallel environment routines + Previous: psb_max Global +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_amx Global + Up: Parallel environment routines + Previous: psb_max Global +   Contents + + + + diff --git a/docs/html/node83.html b/docs/html/node83.html new file mode 100644 index 00000000..90b01454 --- /dev/null +++ b/docs/html/node83.html @@ -0,0 +1,184 @@ + + + + + +psb_amx -- Global maximum absolute value + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_amn Global + Up: Parallel environment routines + Previous: psb_min Global +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_amn Global + Up: Parallel environment routines + Previous: psb_min Global +   Contents + + + + diff --git a/docs/html/node84.html b/docs/html/node84.html new file mode 100644 index 00000000..c21d80de --- /dev/null +++ b/docs/html/node84.html @@ -0,0 +1,186 @@ + + + + + +psb_amn -- Global minimum absolute value + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_snd Send + Up: Parallel environment routines + Previous: psb_amx Global +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_snd Send + Up: Parallel environment routines + Previous: psb_amx Global +   Contents + + + + diff --git a/docs/html/node85.html b/docs/html/node85.html new file mode 100644 index 00000000..eeb4370c --- /dev/null +++ b/docs/html/node85.html @@ -0,0 +1,200 @@ + + + + + +psb_snd -- Send data + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_rcv Receive + Up: Parallel environment routines + Previous: psb_amn Global +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: psb_rcv Receive + Up: Parallel environment routines + Previous: psb_amn Global +   Contents + + + + diff --git a/docs/html/node86.html b/docs/html/node86.html new file mode 100644 index 00000000..072928b6 --- /dev/null +++ b/docs/html/node86.html @@ -0,0 +1,199 @@ + + + + + +psb_rcv -- Receive data + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Error handling + Up: Parallel environment routines + Previous: psb_snd Send +   Contents +
+
+ + +

+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. +
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: Error handling + Up: Parallel environment routines + Previous: psb_snd Send +   Contents + + + + diff --git a/docs/html/node87.html b/docs/html/node87.html new file mode 100644 index 00000000..302299f1 --- /dev/null +++ b/docs/html/node87.html @@ -0,0 +1,201 @@ + + + + + +Error handling + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_errpush Pushes + Up: userhtml + Previous: psb_rcv Receive +   Contents +
+
+ + +

+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 8 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 8: +The layout of a generic psb_foo + routine with respect to PSBLAS-2.0 error handling policy.
+
+ +
+ +\fbox{\TheSbox} +
+
+ +

+Figure 9 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 9: +A sample PSBLAS-2.0 error + message. Process 0 detected an error condition inside the psb_cest subroutine
+
+ +
+ +\fbox{\TheSbox} +
+
+ +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents +
+ Next: psb_errpush Pushes + Up: userhtml + Previous: psb_rcv Receive +   Contents + + + + diff --git a/docs/html/node88.html b/docs/html/node88.html new file mode 100644 index 00000000..243eb5de --- /dev/null +++ b/docs/html/node88.html @@ -0,0 +1,122 @@ + + + + + +psb_errpush -- Pushes an error code onto the error stack + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_error Prints + Up: Error handling + Previous: Error handling +   Contents +
+
+ + +

+psb_errpush -- Pushes an error code onto the error + stack +

+ +

+

+call psb_errpush(err_c, r_name, i_err, a_err)
+
+ +

+

+
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. +
+
+ +

+


+ + + diff --git a/docs/html/node89.html b/docs/html/node89.html new file mode 100644 index 00000000..40f05367 --- /dev/null +++ b/docs/html/node89.html @@ -0,0 +1,93 @@ + + + + + +psb_error -- Prints the error stack content and aborts execution + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_set_errverbosity Sets + Up: Error handling + Previous: psb_errpush Pushes +   Contents +
+
+ + +

+psb_error -- Prints the error stack content and aborts + execution +

+ +

+

+call psb_error(icontxt)
+
+ +

+

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

+


+ + + diff --git a/docs/html/node9.html b/docs/html/node9.html new file mode 100644 index 00000000..dab63b95 --- /dev/null +++ b/docs/html/node9.html @@ -0,0 +1,257 @@ + + + + + +Descriptor data structure + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Named Constants + Up: Data Structures + Previous: Data Structures +   Contents +
+
+ + +

+ +
+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 to a sparse matrix, it +contains data about general matrix informations and elements to be +exchanged among processes. + +

+It is not necessary for the user to know the internal structure of +psb_desc_type, it is set in a transparent mode by the tools +routines of Sec. 6, and its fields may be accessed +if necessary via the routines of sec. 3.4; +nevertheless we include a description for the curious +reader: +

+
matrix_data
+
includes general information about matrix and +process grid, such as the communication context, the size of the +global matrix, the size of the portion of matrix stored on the current +process, and so on. +Specified as: an allocatable integer array of dimension psb_mdata_size_. +
+
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. +
+The list may contain an arbitrary number of groups; its end is marked +by a -1. +
+Specified as: an allocatable integer array of rank one. +
+
ext_index
+
A list of element indices to be exchanged to + implement the mapping between a base descriptor and a descriptor + with overlap. +
+
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. +
+The list may contain an arbitrary number of groups; its end is marked +by a -1. +
+Specified as: an allocatable integer array of rank one. +
+
ovr_mst_idx
+
A list to retrieve the value of each + overlap element from the respective master process. +
+Specified as: an allocatable integer array of rank one. +
+
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. +
+
loc_to_glob
+
each element $i$ of this array contains +global identifier of the local variable $i$. +
+Specified as: an allocatable integer array of rank one. +
+
glob_to_loc, glb_lc, hashv
+
Contain a mapping from + global to local indices. +
+
+The Fortran 95 definition for psb_desc_type structures is +as follows: + +
+ + + +
Figure 3: +The PSBLAS defined data type that + contains the communication descriptor.
+
+ +
+ +\fbox{\TheSbox} +
+
+ +

+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. +
+
+The global to local index mapping may be stored in two different +formats: the first is simpler but more expensive, as it requires on +each process an amount of memory proportional to the global size of +the index space; the second is more complex, but only requires memory +proportional to the local index space size. The choice is made at the +time of the initialization according to a threshold; this threshold +may be queried and set using the functions in +sec. 3.4. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents +
+ Next: Named Constants + Up: Data Structures + Previous: Data Structures +   Contents + + + + diff --git a/docs/html/node90.html b/docs/html/node90.html new file mode 100644 index 00000000..b77a2d7f --- /dev/null +++ b/docs/html/node90.html @@ -0,0 +1,93 @@ + + + + + +psb_set_errverbosity -- Sets the verbosity of error messages. + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_set_erraction Set + Up: Error handling + Previous: psb_error Prints +   Contents +
+
+ + +

+psb_set_errverbosity -- Sets the verbosity of error + messages. +

+ +

+

+call psb_set_errverbosity(v)
+
+ +

+

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

+


+ + + diff --git a/docs/html/node91.html b/docs/html/node91.html new file mode 100644 index 00000000..1dfb1024 --- /dev/null +++ b/docs/html/node91.html @@ -0,0 +1,98 @@ + + + + + +psb_set_erraction -- Set the type of action to be taken upon error condition. + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Utilities + Up: Error handling + Previous: psb_set_errverbosity Sets +   Contents +
+
+ + +

+psb_set_erraction -- Set the type of action to be + taken upon error condition. +

+ +

+

+call psb_set_erraction(err_act)
+
+ +

+

+
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. +
+
+ +

+

+call psb_errcomm(icontxt, err)
+
+ +

+


+ + + diff --git a/docs/html/node92.html b/docs/html/node92.html new file mode 100644 index 00000000..7631306f --- /dev/null +++ b/docs/html/node92.html @@ -0,0 +1,95 @@ + + + + + +Utilities + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: hb_read Read + Up: userhtml + Previous: psb_set_erraction Set +   Contents +
+
+ + +

+ +
+Utilities +

+ +

+We have some utitlities available for input and output of +sparsematrices; the interfaces to these routines are available in the +module psb_util_mod. + +

+


+ +Subsections + + + +

+ + + diff --git a/docs/html/node93.html b/docs/html/node93.html new file mode 100644 index 00000000..a9872f18 --- /dev/null +++ b/docs/html/node93.html @@ -0,0 +1,164 @@ + + + + + +hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: hb_write Write + Up: Utilities + Previous: Utilities +   Contents +
+
+ + +

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

+ +

+

+call hb_read(a, iret, iunit, filename, b, mtitle)
+
+ +

+

+
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_spmat_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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: hb_write Write + Up: Utilities + Previous: Utilities +   Contents + + + + diff --git a/docs/html/node94.html b/docs/html/node94.html new file mode 100644 index 00000000..a70ad484 --- /dev/null +++ b/docs/html/node94.html @@ -0,0 +1,173 @@ + + + + + +hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: mm_mat_read Read + Up: Utilities + Previous: hb_read Read +   Contents +
+
+ + +

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

+ +

+

+call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
+
+ +

+

+
Type:
+
Asynchronous. +
+
On Entry
+
+
+
a
+
the sparse matrix to be written. +
+Type:required. +
+Specified as: a structured data of type spdatapsb_spmat_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. +
+
+ +

+


+ + +next + +up + +previous + +contents +
+ Next: mm_mat_read Read + Up: Utilities + Previous: hb_read Read +   Contents + + + + diff --git a/docs/html/node95.html b/docs/html/node95.html new file mode 100644 index 00000000..e8773cfe --- /dev/null +++ b/docs/html/node95.html @@ -0,0 +1,119 @@ + + + + + +mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: mm_vet_read Read + Up: Utilities + Previous: hb_write Write +   Contents +
+
+ + +

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

+ +

+

+call mm_mat_read(a, iret, iunit, filename)
+
+ +

+

+
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_spmat_type. +
+
iret
+
Error code. +
+Type: required +
+An integer value; 0 means no error has been detected. +
+
+ +

+


+ + + diff --git a/docs/html/node96.html b/docs/html/node96.html new file mode 100644 index 00000000..9f7b7513 --- /dev/null +++ b/docs/html/node96.html @@ -0,0 +1,120 @@ + + + + + +mm_vet_read -- Read a dense vector from a file in the MatrixMarket format + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: mm_mat_write Write + Up: Utilities + Previous: mm_mat_read Read +   Contents +
+
+ + +

+mm_vet_read -- Read a dense vector from a + file in the MatrixMarket format +

+ +
+call mm_vet_read(b, iret, iunit, filename)
+
+ +

+

+
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 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/node97.html b/docs/html/node97.html new file mode 100644 index 00000000..d834c807 --- /dev/null +++ b/docs/html/node97.html @@ -0,0 +1,123 @@ + + + + + +mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Preconditioner routines + Up: Utilities + Previous: mm_vet_read Read +   Contents +
+
+ + +

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

+ +
+call mm_mat_write(a, mtitle, iret, iunit, filename)
+
+
+
Type:
+
Asynchronous. +
+
On Entry
+
+
+
a
+
the sparse matrix to be written. +
+Type:required. +
+Specified as: a structured data of type spdatapsb_spmat_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/node98.html b/docs/html/node98.html new file mode 100644 index 00000000..60801ac6 --- /dev/null +++ b/docs/html/node98.html @@ -0,0 +1,97 @@ + + + + + +Preconditioner routines + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_precinit Initialize + Up: userhtml + Previous: mm_mat_write Write +   Contents +
+
+ + +

+ +
+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. + +

+


+ +Subsections + + + +

+ + + diff --git a/docs/html/node99.html b/docs/html/node99.html new file mode 100644 index 00000000..26b5f3e1 --- /dev/null +++ b/docs/html/node99.html @@ -0,0 +1,146 @@ + + + + + +psb_precinit -- Initialize a preconditioner + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: psb_precbld Builds + Up: Preconditioner routines + Previous: Preconditioner routines +   Contents +
+
+ + +

+psb_precinit -- Initialize a preconditioner +

+ +

+

+call psb_precinit(prec, ptype, info)
+
+ +

+

+
Type:
+
Asynchronous. +
+
On Entry
+
+
+
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 follows3: +
+
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/userhtml.css b/docs/html/userhtml.css new file mode 100644 index 00000000..d1824aff --- /dev/null +++ b/docs/html/userhtml.css @@ -0,0 +1,30 @@ +/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ +.MATH { font-family: "Century Schoolbook", serif; } +.MATH I { font-family: "Century Schoolbook", serif; font-style: italic } +.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } + +/* implement both fixed-size and relative sizes */ +SMALL.XTINY { font-size : xx-small } +SMALL.TINY { font-size : x-small } +SMALL.SCRIPTSIZE { font-size : smaller } +SMALL.FOOTNOTESIZE { font-size : small } +SMALL.SMALL { } +BIG.LARGE { } +BIG.XLARGE { font-size : large } +BIG.XXLARGE { font-size : x-large } +BIG.HUGE { font-size : larger } +BIG.XHUGE { font-size : xx-large } + +/* heading styles */ +H1 { } +H2 { } +H3 { } +H4 { } +H5 { } + +/* mathematics styles */ +DIV.displaymath { } /* math displays */ +TD.eqno { } /* equation-number cells */ + + +/* document-specific styles come next */ diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html new file mode 100644 index 00000000..9569fcac --- /dev/null +++ b/docs/html/userhtml.html @@ -0,0 +1,354 @@ + + + + + +userhtml + + + + + + + + + + + + + + + + +next +up +previous + +contents +
+ Next: Contents +   Contents +
+
+ +PSBLAS +
+
+User's and Reference + Guide
+
A reference guide for the Parallel Sparse BLAS library +
+
+
+
Salvatore Filippone +
+Alfredo Buttari
+
+University of Rome ``Tor Vergata'', Italy +
+
+
+Software version: 2.3 +
+July 24, 2008 + +

+ + + + + +

+ + + diff --git a/docs/pdf/Makefile b/docs/pdf/Makefile index e9da3a0d..6a224157 100644 --- a/docs/pdf/Makefile +++ b/docs/pdf/Makefile @@ -84,6 +84,7 @@ # TOPFILE = userguide.tex +HTMLFILE = userhtml.tex SECFILE = title.tex intro.tex commrout.tex datastruct.tex psbrout.tex toolsrout.tex\ methods.tex precs.tex penv.tex error.tex util.tex FIGDIR = figures @@ -110,6 +111,8 @@ DATE = $(shell date +%Y-%m-%d) ## ## Programs # +LATEX = latex +LTX2HTML = latex2html PDFLATEX = pdflatex ACRO = evince XPDF = xpdf @@ -126,7 +129,7 @@ CLEANIDX = ../bin/cleanidx ## ## Files # -TEXFILES = $(TOPFILE) $(SECFILE) +TEXFILES = $(TOPFILE) $(SECFILE) $(HTMLFILE) RCSFILES = $(TEXFILES) Makefile BASEFILE = $(patsubst %.tex,%,$(TOPFILE)) @@ -135,6 +138,10 @@ PDF = $(join $(BASEFILE),.pdf) PS = $(join $(BASEFILE),.ps) GXS = $(join $(BASEFILE),.gxs) GLX = $(join $(BASEFILE),.glx) +BASEHTML = $(patsubst %.tex,%,$(HTMLFILE)) +HTML = $(join $(HTMLFILE),.html) +HTMLDIR = ../html +HTMLFLAGS = -noaddress FIGURES = $(sort $(wildcard $(FIGDIR)/*)) GLOFILES:= $(sort $(wildcard lib/*.gdf)) @@ -150,8 +157,10 @@ TEXLNFIL = $(addprefix $(PWD)/,$(TEXFILES)) #============================================================================ -all: $(PDF) - @echo $(PDF) +all: pdf html + +pdf: $(PDF) +html: $(HTML) $(PDF): $(TEXFILES) $(LIBFILES) $(FIGURES) Makefile $(header) @@ -169,6 +178,22 @@ $(PDF): $(TEXFILES) $(LIBFILES) $(FIGURES) Makefile $(pdflatex-filter) $(finish) +$(HTML): $(TEXFILES) $(LIBFILES) $(FIGURES) Makefile + $(header) + $(initialize) + $(latex-filter) + ifneq ($(BIBFILES),) + $(bibtex) + $(latex-filter) + endif + ifneq ($(GLOFILES),) + $(glosstex) + $(latex-filter) + endif +# $(makeindex) + $(latex-filter) + $(ltx2html-filter) + $(PS): $(PDF) $(PDF2PS) $< $(PS) @@ -269,6 +294,14 @@ define pdflatex cd tmp; $(PDFLATEX) $(TOPFILE) endef +define latex + @echo + @echo "----- latex -------------------------------------------------------" + @echo -n "Starting: "; date + @echo + cd tmp; $(LATEX) $(HTMLFILE) +endef + #---------------------------------------------------------------------------- define pdflatex-filter @@ -279,6 +312,22 @@ define pdflatex-filter cd tmp; ($(PDFLATEX) $(TOPFILE) 2>&1) | $(FILTER) endef +define latex-filter + @echo + @echo "----- latex -------------------------------------------------------" + @echo -n "Starting: "; date + @echo + cd tmp; ($(LATEX) $(HTMLFILE) 2>&1) | $(FILTER) +endef + +define ltx2html-filter + @echo + @echo "----- latex -------------------------------------------------------" + @echo -n "Starting: "; date + @echo + cd tmp; ($(LTX2HTML) $(HTMLFLAGS) -dir ../$(HTMLDIR) $(HTMLFILE) 2>&1) | $(FILTER) +endef + #---------------------------------------------------------------------------- define bibtex @@ -323,4 +372,14 @@ define finish @echo -n "Target: " endef +define ltx2html-finish + @ln -sf tmp/$@ . + @echo + @echo "----- finish ---------------------------------------------------------" + @echo -n "Start: "$(START); echo + @echo -n "Finish: "; date + @echo -n "Output: "; ls -l -o tmp/$@ + @echo -n "Target: " +endef + diff --git a/docs/pdf/commrout.tex b/docs/pdf/commrout.tex index 74ecd37d..88d30464 100644 --- a/docs/pdf/commrout.tex +++ b/docs/pdf/commrout.tex @@ -8,7 +8,8 @@ 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}. -\subroutine{psb\_halo}{Halo Data Communication} +\clearpage\subsection*{psb\_halo --- Halo Data Communication} +\addcontentsline{toc}{subsection}{psb\_halo} These subroutines gathers the values of the halo elements, and (optionally) scale the result: @@ -36,8 +37,10 @@ Long Precision Complex & psb\_halo \\ \caption{Data types\label{tab:f90halo}} \end{table} -\syntax{call psb\_halo}{x, desc\_a, info} -\syntax*{call psb\_halo}{x, desc\_a, info, alpha, work, data} +\begin{verbatim} +call psb_halo(x, desc_a, info) +call psb_halo(x, desc_a, info, alpha, work, data) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -93,7 +96,8 @@ An integer value that contains an error code. \end{center} \caption{Sample discretization mesh.\label{fig:try8x8}} \end{figure} -\section*{Example of use} + +{\par\noindent\large\bfseries Usage Example} Consider the discretization mesh depicted in fig.~\ref{fig:try8x8}, partitioned among two processes as shown by the dashed line; the data distribution is such that each process will own 32 entries in the @@ -159,7 +163,8 @@ following: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_ovrl}{Overlap Update} +\clearpage\subsection*{psb\_ovrl --- Overlap Update} +\addcontentsline{toc}{subsection}{psb\_ovrl} These subroutines applies an overlap operator to the input vector: @@ -187,8 +192,10 @@ Long Precision Complex & psb\_ovrl \\ \caption{Data types\label{tab:f90ovrl}} \end{table} -\syntax{call psb\_ovrl}{x, desc\_a, info} -\syntax*{call psb\_ovrl}{x, desc\_a, info, update=update\_type, work=work} +\begin{verbatim} +call psb_ovrl(x, desc_a, info) +call psb_ovrl(x, desc_a, info, update=update_type, work=work) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -239,7 +246,7 @@ An integer value; 0 means no error has been detected. \end{description} -\section*{Usage notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item If there is no overlap in the data distribution associated with the descriptor, no operations are performed; @@ -263,7 +270,7 @@ their instances. \end{center} \caption{Sample discretization mesh.\label{fig:try8x8_ov}} \end{figure} -\section*{Example of use} +{\par\noindent\large\bfseries Example of use} Consider the discretization mesh depicted in fig.~\ref{fig:try8x8_ov}, partitioned among two processes as shown by the dashed lines, with an overlap of 1 extra layer with respect to the partition of @@ -343,7 +350,8 @@ following (showing a transition among the two subdomains) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_gather}{Gather Global Dense Matrix} +\clearpage\subsection*{psb\_gather --- Gather Global Dense Matrix} +\addcontentsline{toc}{subsection}{psb\_gather} These subroutines collect the portions of global dense matrix distributed over all process into one single array stored on one @@ -375,8 +383,10 @@ Long Precision Complex & psb\_gather \\ \caption{Data types\label{tab:gather}} \end{table} -\syntax{call psb\_gather}{glob\_x, loc\_x, desc\_a, info, root} -\syntax{call psb\_gather}{glob\_x, loc\_x, desc\_a, info, root} +\begin{verbatim} +call psb_gather(glob_x, loc_x, desc_a, info, root) +call psb_gather(glob_x, loc_x, desc_a, info, root) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -442,7 +452,8 @@ An integer value; 0 means no error has been detected. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_scatter}{Scatter Global Dense Matrix} +\clearpage\subsection*{psb\_scatter --- Scatter Global Dense Matrix} +\addcontentsline{toc}{subsection}{psb\_scatter} These subroutines scatters the portions of global dense matrix owned by a process to all the processes in the processes grid. @@ -473,8 +484,10 @@ Long Precision Complex & psb\_scatter \\ \caption{Data types\label{tab:scatter}} \end{table} -\syntax{call psb\_scatter}{glob\_x, loc\_x, desc\_a, info, root} -\syntax{call psb\_scatter}{glob\_x, loc\_x, desc\_a, info, root} +\begin{verbatim} +call psb_scatter(glob_x, loc_x, desc_a, info, root) +call psb_scatter(glob_x, loc_x, desc_a, info, root) +\end{verbatim} \begin{description} \item[Type:] Synchronous. diff --git a/docs/pdf/datastruct.tex b/docs/pdf/datastruct.tex index a86555d0..6a82d3a0 100644 --- a/docs/pdf/datastruct.tex +++ b/docs/pdf/datastruct.tex @@ -450,9 +450,12 @@ research. \subsection{Data structure query routines} \label{sec:dataquery} -\subsubroutine{psb\_cd\_get\_local\_rows}{Get number of local rows} +\subsubsection*{psb\_cd\_get\_local\_rows --- Get number of local rows} +\addcontentsline{toc}{subsubsection}{psb\_cd\_get\_local\_rows } -\syntax{nr = psb\_cd\_get\_local\_rows}{desc} +\begin{verbatim} +nr = psb_cd_get_local_rows(desc) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -473,9 +476,12 @@ Specified as: a structured data of type \descdata. \end{description} -\subsubroutine{psb\_cd\_get\_local\_cols}{Get number of local cols} +\subsubsection*{psb\_cd\_get\_local\_cols --- Get number of local cols} +\addcontentsline{toc}{subsubsection}{psb\_cd\_get\_local\_cols } -\syntax{nc = psb\_cd\_get\_local\_cols}{desc} +\begin{verbatim} +nc = psb_cd_get_local_cols(desc) +\end{verbatim} \begin{description} \item[\bf On Entry] @@ -497,9 +503,12 @@ Specified as: a structured data of type \descdata. \end{description} -\subsubroutine{psb\_cd\_get\_global\_rows}{Get number of global rows} +\subsubsection*{psb\_cd\_get\_global\_rows --- Get number of global rows} +\addcontentsline{toc}{subsubsection}{psb\_cd\_get\_global\_rows } -\syntax{nr = psb\_cd\_get\_global\_rows}{desc} +\begin{verbatim} +nr = psb_cd_get_global_rows(desc) +\end{verbatim} \begin{description} \item[\bf On Entry] @@ -516,9 +525,12 @@ Specified as: a structured data of type \descdata. \item[Function value] The number of global rows in the mesh \end{description} -\subsubroutine{psb\_cd\_get\_global\_cols}{Get number of global cols} +\subsubsection*{psb\_cd\_get\_global\_cols --- Get number of global cols} +\addcontentsline{toc}{subsubsection}{psb\_cd\_get\_global\_cols } -\syntax{nr = psb\_cd\_get\_global\_cols}{desc} +\begin{verbatim} +nr = psb_cd_get_global_cols(desc) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -537,7 +549,9 @@ Specified as: a structured data of type \descdata. \subsubroutine{psb\_cd\_get\_context}{Get communication context} -\syntax{ictxt = psb\_cd\_get\_context}{desc} +\begin{verbatim} +ictxt = psb_cd_get_context(desc) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -555,9 +569,12 @@ Specified as: a structured data of type \descdata. \end{description} -\subsubroutine{psb\_cd\_get\_large\_threshold}{Get threshold for +\subsubsection*{psb\_cd\_get\_large\_threshold --- Get threshold for index mapping switch} -\syntax{ith = psb\_cd\_get\_large\_threshold}{} +\addcontentsline{toc}{subsubsection}{psb\_cd\_get\_large\_threshold} +\begin{verbatim} +ith = psb_cd_get_large_threshold() +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -568,9 +585,12 @@ Specified as: a structured data of type \descdata. -\subsubroutine{psb\_cd\_set\_large\_threshold}{Set threshold for +\subsubsection*{psb\_cd\_set\_large\_threshold --- Set threshold for index mapping switch} -\syntax{call psb\_cd\_set\_large\_threshold}{ith} +\addcontentsline{toc}{subsubsection}{psb\_cd\_set\_large\_threshold} +\begin{verbatim} +call psb_cd_set_large_threshold(ith) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -585,9 +605,13 @@ Note: the threshold value is only queried by the library at the time a call to \verb|psb_cdall| is executed, therefore changing the threshold has no effect on communication descriptors that have already been initialized. -\subsubroutine{psb\_sp\_get\_nrows}{Get number of rows in a sparse matrix} +\subsubsection*{psb\_sp\_get\_nrows --- Get number of rows in a sparse + matrix} +\addcontentsline{toc}{subsubsection}{ psb\_sp\_get\_nrows} -\syntax{nr = psb\_sp\_get\_nrows}{a} +\begin{verbatim} +nr = psb_sp_get_nrows(a) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -605,9 +629,13 @@ Specified as: a structured data of type \spdata. \end{description} -\subsubroutine{psb\_sp\_get\_ncols}{Get number of columns in a sparse matrix} +\subsubsection*{psb\_sp\_get\_ncols --- Get number of columns in a + sparse matrix} +\addcontentsline{toc}{subsubsection}{psb\_sp\_get\_ncols} -\syntax{nr = psb\_sp\_get\_ncols}{a} +\begin{verbatim} +nr = psb_sp_get_ncols(a) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -625,9 +653,13 @@ Specified as: a structured data of type \spdata. \end{description} -\subsubroutine{psb\_sp\_get\_nnzeros}{Get number of nonzero elements in a sparse matrix} +\subsubsection*{psb\_sp\_get\_nnzeros --- Get number of nonzero elements + in a sparse matrix} +\addcontentsline{toc}{subsubsection}{psb\_sp\_get\_nnzeros} -\syntax{nr = psb\_sp\_get\_nnzeros}{a} +\begin{verbatim} +nr = psb_sp_get_nnzeros(a) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -644,7 +676,7 @@ Specified as: a structured data of type \spdata. \item[Function value] The number of nonzero elements stored in sparse matrix \verb|a|. \end{description} -\subsubsection*{Notes} +{\par\noindent\bfseries Notes} \begin{enumerate} \item The function value is specific to the storage format of matrix \verb|a|; some storage formats employ padding, thus the returned diff --git a/docs/pdf/error.tex b/docs/pdf/error.tex index 49d89178..a7abe497 100644 --- a/docs/pdf/error.tex +++ b/docs/pdf/error.tex @@ -119,9 +119,13 @@ Aborting... \end{figure} -\subroutine{psb\_errpush}{Pushes an error code onto the error stack} +\clearpage\subsection*{psb\_errpush --- Pushes an error code onto the error + stack} +\addcontentsline{toc}{subsection}{psb\_errpush} -\syntax{call psb\_errpush}{err\_c, r\_name, i\_err, a\_err} +\begin{verbatim} +call psb_errpush(err_c, r_name, i_err, a_err) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -146,9 +150,13 @@ Type: {\bf optional}\\ Specified as: a string.\\ \end{description} -\subroutine{psb\_error}{Prints the error stack content and aborts execution} +\clearpage\subsection*{psb\_error --- Prints the error stack content and aborts + execution} +\addcontentsline{toc}{subsection}{psb\_error} -\syntax{call psb\_error}{icontxt} +\begin{verbatim} +call psb_error(icontxt) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -162,9 +170,13 @@ Specified as: an integer. -\subroutine{psb\_set\_errverbosity}{Sets the verbosity of error messages.} +\clearpage\subsection*{psb\_set\_errverbosity --- Sets the verbosity of error + messages.} +\addcontentsline{toc}{subsection}{psb\_set\_errverbosity} -\syntax{call psb\_set\_errverbosity}{v} +\begin{verbatim} +call psb_set_errverbosity(v) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -176,10 +188,14 @@ Intent: {\bf in}.\\ Specified as: an integer. \end{description} -\subroutine{psb\_set\_erraction}{Set the type of action to be taken - upon error condition.} +\clearpage\subsection*{psb\_set\_erraction --- Set the type of action to be + taken upon error condition.} +\addcontentsline{toc}{subsection}{psb\_set\_erraction} -\syntax{call psb\_set\_erraction}{err\_act} + +\begin{verbatim} +call psb_set_erraction(err_act) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -194,9 +210,12 @@ Specified as: an integer. Possible values: \verb|psb_act_ret|, -%% \subroutine{psb\_errcomm}{Error communication routine} +%% \clearpage\subsection*{psb\_errcomm --- Error communication routine} +%\addcontentsline{toc}{subsection}{psb\_errcomm} -%% \syntax{call psb\_errcomm}{icontxt, err} +\begin{verbatim} +call psb_errcomm(icontxt, err) +\end{verbatim} %% \begin{description} %% \item[\bf On Entry] diff --git a/docs/pdf/methods.tex b/docs/pdf/methods.tex index a529b6a1..9d271c3d 100644 --- a/docs/pdf/methods.tex +++ b/docs/pdf/methods.tex @@ -11,7 +11,9 @@ the module \verb|psb_krylov_mod|. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_krylov \label{krylov}}{Krylov Methods Driver Routine} +\clearpage\subsection*{psb\_krylov \label{krylov} --- Krylov Methods Driver + Routine} +\addcontentsline{toc}{subsection}{krylov} This subroutine is a driver that provides a general interface for all the Krylov-Subspace family methods implemented in PSBLAS version 2. @@ -26,7 +28,10 @@ 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. -\syntax{call psb\_krylov}{method,a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop,cond} +\begin{verbatim} +call psb_krylov(method,a,prec,b,x,eps,desc_a,info,& + & itmax,iter,err,itrace,irst,istop,cond) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -126,481 +131,6 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% % -%% % CG -%% % -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \subroutine{psb\_cg \label{cg}}{CG Iterative Method} - -%% This subroutine implements the CG method with restarting. The -%% stopping criterion is the normwise backward error, in the infinity -%% norm, i.e. the iteration is stopped when -%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] -%% or -%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \] -%% according to the value passed through the istop argument (see later). - - -%% \syntax{call psb\_cg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop} - -%% \begin{description} -%% \item[\bf On Entry] -%% \item[a] the local portion of global sparse matrix -%% $A$. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \spdata. -%% \item[prec] The data structure containing the preconditioner.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \precdata. -%% \item[b] The RHS vector. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[x] The initial guess. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[eps] The stopping tolerance. \\ -%% Scope: {\bf global} \\ -%% Type: {\bf required}\\ -%% Specified as: a real number. -%% \item[desc\_a] contains data structures for communications.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \descdata. -%% \item[itmax] The maximum number of iterations to perform.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Default: $itmax = 1000$.\\ -%% Specified as: an integer variable $itmax \ge 1$. -%% \item[itrace] If $>0$ print out an informational message about -%% convergence every $itrace$ iterations.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% \item[istop] An integer specifying the stopping criterion.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ - -%% \item[\bf On Return] -%% \item[x] The computed solution. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[iter] The number of iterations performed.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: an integer variable. -%% \item[err] The error estimate on exit.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: a real number. -%% \item[info] Error code.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required} \\ -%% An integer value; 0 means no error has been detected. -%% \end{description} -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% % -%% % CGS -%% % -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \subroutine{psb\_cgs \label{cgs}}{CGS Iterative Method} - -%% This subroutine implements the CGS method with restarting. The -%% stopping criterion is the normwise backward error, in the infinity -%% norm, i.e. the iteration is stopped when -%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] -%% or -%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \] -%% according to the value passed through the istop argument (see later). - - -%% \syntax{call psb\_cgs}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop} - -%% \begin{description} -%% \item[\bf On Entry] -%% \item[a] the local portion of global sparse matrix -%% $A$. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \spdata. -%% \item[prec] The data structure containing the preconditioner.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \precdata. -%% \item[b] The RHS vector. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[x] The initial guess. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[eps] The stopping tolerance. \\ -%% Scope: {\bf global} \\ -%% Type: {\bf required}\\ -%% Specified as: a real number. -%% \item[desc\_a] contains data structures for communications.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \descdata. -%% \item[itmax] The maximum number of iterations to perform.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Default: $itmax = 1000$.\\ -%% Specified as: an integer variable $itmax \ge 1$. -%% \item[itrace] If $>0$ print out an informational message about -%% convergence every $itrace$ iterations.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% \item[istop] An integer specifying the stopping criterion.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ - -%% \item[\bf On Return] -%% \item[x] The computed solution. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[iter] The number of iterations performed.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: an integer variable. -%% \item[err] The error estimate on exit.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: a real number. -%% \item[info] Error code.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required} \\ -%% An integer value; 0 means no error has been detected. -%% \end{description} - -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% % -%% % BiCG -%% % -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \subroutine{psb\_bicg \label{bicg}}{BiCG Iterative Method} - -%% This subroutine implements the BiCG method with restarting. The -%% stopping criterion is the normwise backward error, in the infinity -%% norm, i.e. the iteration is stopped when -%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] -%% or -%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \] -%% according to the value passed through the istop argument (see later). - - -%% \syntax{call psb\_bicg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop} - -%% \begin{description} -%% \item[\bf On Entry] -%% \item[a] the local portion of global sparse matrix -%% $A$. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \spdata. -%% \item[prec] The data structure containing the preconditioner.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \precdata. -%% \item[b] The RHS vector. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[x] The initial guess. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[eps] The stopping tolerance. \\ -%% Scope: {\bf global} \\ -%% Type: {\bf required}\\ -%% Specified as: a real number. -%% \item[desc\_a] contains data structures for communications.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \descdata. -%% \item[itmax] The maximum number of iterations to perform.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Default: $itmax = 1000$.\\ -%% Specified as: an integer variable $itmax \ge 1$. -%% \item[itrace] If $>0$ print out an informational message about -%% convergence every $itrace$ iterations.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% \item[istop] An integer specifying the stopping criterion.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ - -%% \item[\bf On Return] -%% \item[x] The computed solution. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[iter] The number of iterations performed.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: an integer variable. -%% \item[err] The error estimate on exit.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: a real number. -%% \item[info] Error code.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required} \\ -%% An integer value; 0 means no error has been detected. -%% \end{description} - - -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% % -%% % BiCGSTAB -%% % -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \subroutine{psb\_bicgstab \label{bicgstab}}{BiCGSTAB Iterative Method} - -%% This subroutine implements the BiCGSTAB method with restarting. The -%% stopping criterion is the normwise backward error, in the infinity -%% norm, i.e. the iteration is stopped when -%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] -%% or -%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \] -%% according to the value passed through the istop argument (see later). - - -%% \syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop} - -%% \begin{description} -%% \item[\bf On Entry] -%% \item[a] the local portion of global sparse matrix -%% $A$. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \spdata. -%% \item[prec] The data structure containing the preconditioner.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \precdata. -%% \item[b] The RHS vector. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[x] The initial guess. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[eps] The stopping tolerance. \\ -%% Scope: {\bf global} \\ -%% Type: {\bf required}\\ -%% Specified as: a real number. -%% \item[desc\_a] contains data structures for communications.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \descdata. -%% \item[itmax] The maximum number of iterations to perform.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Default: $itmax = 1000$.\\ -%% Specified as: an integer variable $itmax \ge 1$. -%% \item[itrace] If $>0$ print out an informational message about -%% convergence every $itrace$ iterations.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% \item[istop] An integer specifying the stopping criterion.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ - -%% \item[\bf On Return] -%% \item[x] The computed solution. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[iter] The number of iterations performed.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: an integer variable. -%% \item[err] The error estimate on exit.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: a real number. -%% \item[info] Error code.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required} \\ -%% An integer value; 0 means no error has been detected. -%% \end{description} - - -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% % -%% % BiCGSTAB(L) -%% % -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \subroutine{psb\_bicgstabl \label{bicgstabl}}{BiCGSTAB-$l$ Iterative Method} - -%% This subroutine implements the BiCGSTAB-$l$ method with restarting. The -%% stopping criterion is the normwise backward error, in the infinity -%% norm, i.e. the iteration is stopped when -%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] -%% or -%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \] -%% according to the value passed through the istop argument (see later). - - -%% \syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop} - -%% \begin{description} -%% \item[\bf On Entry] -%% \item[a] the local portion of global sparse matrix -%% $A$. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \spdata. -%% \item[prec] The data structure containing the preconditioner.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \precdata. -%% \item[b] The RHS vector. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[x] The initial guess. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[eps] The stopping tolerance. \\ -%% Scope: {\bf global} \\ -%% Type: {\bf required}\\ -%% Specified as: a real number. -%% \item[desc\_a] contains data structures for communications.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \descdata. -%% \item[itmax] The maximum number of iterations to perform.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Default: $itmax = 1000$.\\ -%% Specified as: an integer variable $itmax \ge 1$. -%% \item[itrace] If $>0$ print out an informational message about -%% convergence every $itrace$ iterations.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% \item[irst] An integer specifying the restarting iteration.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% \item[istop] An integer specifying the stopping criterion.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ - -%% \item[\bf On Return] -%% \item[x] The computed solution. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[iter] The number of iterations performed.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: an integer variable. -%% \item[err] The error estimate on exit.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: a real number. -%% \item[info] Error code.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required} \\ -%% An integer value; 0 means no error has been detected. -%% \end{description} - - -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% % -%% % GMRES -%% % -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \subroutine{psb\_gmres \label{gmres}}{GMRES Iterative Method} - -%% This subroutine implements the GMRES method with restarting. The -%% stopping criterion is the normwise backward error, in the infinity -%% norm, i.e. the iteration is stopped when -%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] -%% or -%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \] -%% according to the value passed through the istop argument (see later). - - -%% \syntax{call psb\_gmres}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop} - -%% \begin{description} -%% \item[\bf On Entry] -%% \item[a] the local portion of global sparse matrix -%% $A$. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \spdata. -%% \item[prec] The data structure containing the preconditioner.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \precdata. -%% \item[b] The RHS vector. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[x] The initial guess. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[eps] The stopping tolerance. \\ -%% Scope: {\bf global} \\ -%% Type: {\bf required}\\ -%% Specified as: a real number. -%% \item[desc\_a] contains data structures for communications.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a structured data of type \descdata. -%% \item[itmax] The maximum number of iterations to perform.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Default: $itmax = 1000$.\\ -%% Specified as: an integer variable $itmax \ge 1$. -%% \item[itrace] If $>0$ print out an informational message about -%% convergence every $itrace$ iterations.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% \item[irst] An integer specifying the restart iteration.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% \item[istop] An integer specifying the stopping criterion.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ - -%% \item[\bf On Return] -%% \item[x] The computed solution. \\ -%% Scope: {\bf local} \\ -%% Type: {\bf required}\\ -%% Specified as: a rank one array. -%% \item[iter] The number of iterations performed.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: an integer variable. -%% \item[err] The error estimate on exit.\\ -%% Scope: {\bf global} \\ -%% Type: {\bf optional}\\ -%% Returned as: a real number. -%% \item[info] Error code.\\ -%% Scope: {\bf local} \\ -%% Type: {\bf required} \\ -%% An integer value; 0 means no error has been detected. -%% \end{description} - - - - %%% Local Variables: %%% mode: latex diff --git a/docs/pdf/penv.tex b/docs/pdf/penv.tex index 9394a2fd..a233b9ec 100644 --- a/docs/pdf/penv.tex +++ b/docs/pdf/penv.tex @@ -2,9 +2,12 @@ \section{Parallel environment routines} \label{sec:parenv} -\subroutine{psb\_init}{Initializes PSBLAS parallel environment} +\clearpage\subsection*{psb\_init --- Initializes PSBLAS parallel environment} +\addcontentsline{toc}{subsection}{psb\_init} -\syntax{call psb\_init}{icontxt, np} +\begin{verbatim} +call psb_init(icontxt, np) +\end{verbatim} This subroutine initializes the PSBLAS parallel environment, defining a virtual parallel machine. @@ -31,7 +34,7 @@ Specified as: an integer variable. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item A call to this routine must precede any other PSBLAS call. \item It is an error to specify a value for $np$ greater than the @@ -40,9 +43,13 @@ Specified as: an integer variable. \end{enumerate} -\subroutine{psb\_info}{Return information about PSBLAS parallel environment} +\clearpage\subsection*{psb\_info --- Return information about PSBLAS parallel + environment} +\addcontentsline{toc}{subsection}{psb\_info} -\syntax{call psb\_info}{icontxt, iam, np} +\begin{verbatim} +call psb_info(icontxt, iam, np) +\end{verbatim} This subroutine returns information about the PSBLAS parallel environment, defining a virtual parallel machine. @@ -72,7 +79,7 @@ Specified as: an integer variable. \ \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item For processes in the virtual parallel machine the identifier will satisfy $0 \le iam \le np-1$; @@ -84,10 +91,13 @@ Specified as: an integer variable. \ \end{enumerate} -\subroutine{psb\_exit}{Exit from PSBLAS parallel environment} +\clearpage\subsection*{psb\_exit --- Exit from PSBLAS parallel environment} +\addcontentsline{toc}{subsection}{psb\_exit} -\syntax{call psb\_exit}{icontxt} -\syntax*{call psb\_exit}{icontxt,close} +\begin{verbatim} +call psb_exit(icontxt) +call psb_exit(icontxt,close) +\end{verbatim} This subroutine exits from the PSBLAS parallel virtual machine. \begin{description} @@ -107,7 +117,7 @@ Intent: {\bf in}.\\ Specified as: a logical variable, default value: true. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item This routine may be called even if a previous call to \verb|psb_info| has returned with $iam=-1$; indeed, it it is the only @@ -124,9 +134,12 @@ Specified as: a logical variable, default value: true. \end{enumerate} -\subroutine{psb\_get\_mpicomm}{Get the MPI communicator} +\clearpage\subsection*{psb\_get\_mpicomm --- Get the MPI communicator} +\addcontentsline{toc}{subsection}{psb\_get\_mpicomm} -\syntax{call psb\_get\_mpicomm}{icontxt, icomm} +\begin{verbatim} +call psb_get_mpicomm(icontxt, icomm) +\end{verbatim} This subroutine returns the MPI communicator associated with a PSBLAS context \begin{description} @@ -149,9 +162,12 @@ Intent: {\bf out}.\\ \end{description} -\subroutine{psb\_get\_rank}{Get the MPI rank} +\clearpage\subsection*{psb\_get\_rank --- Get the MPI rank} +\addcontentsline{toc}{subsection}{psb\_get\_rank} -\syntax{call psb\_get\_rank}{rank, icontxt, id} +\begin{verbatim} +call psb_get_rank(rank, icontxt, id) +\end{verbatim} This subroutine returns the MPI rank of the PSBLAS process $id$ \begin{description} @@ -181,9 +197,12 @@ Intent: {\bf out}.\\ -\subroutine{psb\_wtime}{Wall clock timing} +\clearpage\subsection*{psb\_wtime --- Wall clock timing} +\addcontentsline{toc}{subsection}{psb\_wtime} -\syntax{time = psb\_wtime}{} +\begin{verbatim} +time = psb_wtime() +\end{verbatim} This function returns a wall clock timer. The resolution of the timer is dependent on the underlying parallel environment implementation. @@ -195,9 +214,13 @@ Returned as: a \verb|real(psb_dpk_)| variable. \end{description} -\subroutine{psb\_barrier}{Sinchronization point parallel environment} +\clearpage\subsection*{psb\_barrier --- Sinchronization point parallel + environment} +\addcontentsline{toc}{subsection}{psb\_barrier} -\syntax{call psb\_barrier}{icontxt} +\begin{verbatim} +call psb_barrier(icontxt) +\end{verbatim} This subroutine acts as an explicit synchronization point for the PSBLAS parallel virtual machine. @@ -213,9 +236,12 @@ Specified as: an integer variable. \end{description} -\subroutine{psb\_abort}{Abort a computation} +\clearpage\subsection*{psb\_abort --- Abort a computation} +\addcontentsline{toc}{subsection}{psb\_abort} -\syntax{call psb\_abort}{icontxt} +\begin{verbatim} +call psb_abort(icontxt) +\end{verbatim} This subroutine aborts computation on the parallel virtual machine. \begin{description} @@ -233,9 +259,12 @@ Specified as: an integer variable. -\subroutine{psb\_bcast}{Broadcast data} +\clearpage\subsection*{psb\_bcast --- Broadcast data} +\addcontentsline{toc}{subsection}{psb\_bcast} -\syntax{call psb\_bcast}{icontxt, dat, root} +\begin{verbatim} +call psb_bcast(icontxt, dat, root) +\end{verbatim} This subroutine implements a broadcast operation based on the underlying communication library. @@ -276,9 +305,12 @@ Type, kind, rank and size must agree on all processes. \end{description} -\subroutine{psb\_sum}{Global sum} +\clearpage\subsection*{psb\_sum --- Global sum} +\addcontentsline{toc}{subsection}{psb\_sum} -\syntax{call psb\_sum}{icontxt, dat, root} +\begin{verbatim} +call psb_sum(icontxt, dat, root) +\end{verbatim} This subroutine implements a sum reduction operation based on the underlying communication library. @@ -318,7 +350,7 @@ scalar, or a rank 1 or 2 array. \\ Type, kind, rank and size must agree on all processes. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item The \verb|dat| argument is both input and output, and its value may be changed even on processes different from the final @@ -327,9 +359,12 @@ Type, kind, rank and size must agree on all processes. -\subroutine{psb\_max}{Global maximum} +\clearpage\subsection*{psb\_max --- Global maximum} +\addcontentsline{toc}{subsection}{psb\_max} -\syntax{call psb\_max}{icontxt, dat, root} +\begin{verbatim} +call psb_max(icontxt, dat, root) +\end{verbatim} This subroutine implements a maximum valuereduction operation based on the underlying communication library. @@ -370,16 +405,19 @@ Type, kind, rank and size must agree on all processes. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item The \verb|dat| argument is both input and output, and its value may be changed even on processes different from the final result destination. \end{enumerate} -\subroutine{psb\_min}{Global minimum} +\clearpage\subsection*{psb\_min --- Global minimum} +\addcontentsline{toc}{subsection}{psb\_min} -\syntax{call psb\_min}{icontxt, dat, root} +\begin{verbatim} +call psb_min(icontxt, dat, root) +\end{verbatim} This subroutine implements a minimum value reduction operation based on the underlying communication library. @@ -420,16 +458,19 @@ Type, kind, rank and size must agree on all processes. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item The \verb|dat| argument is both input and output, and its value may be changed even on processes different from the final result destination. \end{enumerate} -\subroutine{psb\_amx}{Global maximum absolute value} +\clearpage\subsection*{psb\_amx --- Global maximum absolute value} +\addcontentsline{toc}{subsection}{psb\_amx} -\syntax{call psb\_amx}{icontxt, dat, root} +\begin{verbatim} +call psb_amx(icontxt, dat, root) +\end{verbatim} This subroutine implements a maximum absolute value reduction operation based on the underlying communication library. @@ -470,16 +511,19 @@ Type, kind, rank and size must agree on all processes. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item The \verb|dat| argument is both input and output, and its value may be changed even on processes different from the final result destination. \end{enumerate} -\subroutine{psb\_amn}{Global minimum absolute value} +\clearpage\subsection*{psb\_amn --- Global minimum absolute value} +\addcontentsline{toc}{subsection}{psb\_amn} -\syntax{call psb\_amn}{icontxt, dat, root} +\begin{verbatim} +call psb_amn(icontxt, dat, root) +\end{verbatim} This subroutine implements a minimum absolute value reduction operation based on the underlying communication library. @@ -520,7 +564,7 @@ Type, kind, rank and size must agree on all processes. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item The \verb|dat| argument is both input and output, and its value may be changed even on processes different from the final @@ -528,9 +572,12 @@ Type, kind, rank and size must agree on all processes. \end{enumerate} -\subroutine{psb\_snd}{Send data} +\clearpage\subsection*{psb\_snd --- Send data} +\addcontentsline{toc}{subsection}{psb\_snd} -\syntax{call psb\_snd}{icontxt, dat, dst, m} +\begin{verbatim} +call psb_snd(icontxt, dat, dst, m) +\end{verbatim} This subroutine sends a packet of data to a destination. \begin{description} @@ -570,16 +617,19 @@ same value on sending and receiving processes. \item[\bf On Return] \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item This subroutine implies a synchronization, but only between the calling process and the destination process $dst$. \end{enumerate} -\subroutine{psb\_rcv}{Receive data} +\clearpage\subsection*{psb\_rcv --- Receive data} +\addcontentsline{toc}{subsection}{psb\_rcv} -\syntax{call psb\_rcv}{icontxt, dat, src, m} +\begin{verbatim} +call psb_rcv(icontxt, dat, src, m) +\end{verbatim} This subroutine receives a packet of data to a destination. \begin{description} @@ -619,7 +669,7 @@ Type, kind and rank must agree on sender and receiver process; if $m$ is not specified, size must agree as well. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item This subroutine implies a synchronization, but only between the calling process and the source process $src$. diff --git a/docs/pdf/precs.tex b/docs/pdf/precs.tex index df922810..c41247d6 100644 --- a/docs/pdf/precs.tex +++ b/docs/pdf/precs.tex @@ -24,9 +24,12 @@ module \verb|psb_prec_mod|. -\subroutine{psb\_precinit}{Initialize a preconditioner} +\clearpage\subsection*{psb\_precinit --- Initialize a preconditioner} +\addcontentsline{toc}{subsection}{psb\_precinit} -\syntax{call psb\_precinit}{prec, ptype, info} +\begin{verbatim} +call psb_precinit(prec, ptype, info) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -57,7 +60,7 @@ Type: {\bf required}\\ Intent: {\bf out}.\\ Error code: if no error, 0 is returned. \end{description} -\subsection*{Usage Notes} +{\par\noindent\large\bfseries Notes} %% The PSBLAS 2.0 contains a number of preconditioners, ranging from a %% simple diagonal scaling to 2-level domain decomposition. These %% preconditioners may use the SuperLU or the UMFPACK software, if @@ -78,9 +81,12 @@ $ptype$ string as follows\footnote{The string is case-insensitive}: \end{description} -\subroutine{psb\_precbld}{Builds a preconditioner} +\clearpage\subsection*{psb\_precbld --- Builds a preconditioner} +\addcontentsline{toc}{subsection}{psb\_precbld} -\syntax{call psb\_precbld}{a, desc\_a, prec, info} +\begin{verbatim} +call psb_precbld(a, desc_a, prec, info) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -123,10 +129,13 @@ An integer value; 0 means no error has been detected. -\subroutine{psb\_precaply}{Preconditioner application routine} +\clearpage\subsection*{psb\_precaply --- Preconditioner application routine} +\addcontentsline{toc}{subsection}{psb\_precaply} -\syntax{call psb\_precaply}{prec,x,y,desc\_a,info,trans,work} -\syntax*{call psb\_precaply}{prec,x,desc\_a,info,trans} +\begin{verbatim} +call psb_precaply(prec,x,y,desc_a,info,trans,work) +call psb_precaply(prec,x,desc_a,info,trans) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -174,10 +183,14 @@ An integer value; 0 means no error has been detected. -\subroutine{psb\_precdescr}{Prints a description of current preconditioner} +\clearpage\subsection*{psb\_precdescr --- Prints a description of current + preconditioner} +\addcontentsline{toc}{subsection}{psb\_precdescr} -\syntax{call psb\_precdescr}{prec} -\syntax*{call psb\_precdescr}{prec, iout} +\begin{verbatim} +call psb_precdescr(prec) +call psb_precdescr(prec, iout) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. diff --git a/docs/pdf/psbrout.tex b/docs/pdf/psbrout.tex index c864256a..03c29c23 100644 --- a/docs/pdf/psbrout.tex +++ b/docs/pdf/psbrout.tex @@ -5,7 +5,8 @@ % DENSE MATRIX SUM % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_geaxpby}{General Dense Matrix Sum} +\clearpage\subsection*{psb\_geaxpby --- General Dense Matrix Sum} +\addcontentsline{toc}{subsection}{psb\_geaxpby} This subroutine is an interface to the computational kernel for dense matrix sum: @@ -16,7 +17,9 @@ dense matrix sum: %% \item[$y$] represents the global dense submatrix $y_{:, :}$ %% \end{description} -\syntax{call psb\_geaxpby}{alpha, x, beta, y, desc\_a, info} +\begin{verbatim} +call psb_geaxpby(alpha, x, beta, y, desc_a, info) +\end{verbatim} %% \syntax*{call psb\_geaxpby}{alpha, x, beta, y, desc\_a, info, n, jx, jy} %( calculating y <- alpha*x+beta*y ) @@ -111,7 +114,8 @@ An integer value; 0 means no error has been detected. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_gedot}{Dot Product} +\clearpage\subsection*{psb\_gedot --- Dot Product} +\addcontentsline{toc}{subsection}{psb\_gedot} This function computes dot product between two vectors $x$ and $y$.\\ @@ -126,7 +130,9 @@ Else if $x$ and $y$ are complex vectors then it computes dot-product as: %% \item[$y$] represents the global subvector $y_{:,jy}$ %% \end{description} -\syntax{psb\_gedot}{x, y, desc\_a, info} +\begin{verbatim} +psb_gedot(x, y, desc_a, info) +\end{verbatim} %% \syntax*{psb\_gedot}{x, y, desc\_a, info, jx, jy} \begin{table}[h] \begin{center} @@ -200,7 +206,8 @@ An integer value; 0 means no error has been detected. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_gedots}{Generalized Dot Product} +\clearpage\subsection*{psb\_gedots --- Generalized Dot Product} +\addcontentsline{toc}{subsection}{psb\_gedots} This subroutine computes a series of dot products among the columns of two dense matrices $x$ and $y$: @@ -210,7 +217,9 @@ 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. -\syntax{call psb\_gedots}{res, x, y, desc\_a, info} +\begin{verbatim} +call psb_gedots(res, x, y, desc_a, info) +\end{verbatim} \begin{table}[h] \begin{center} \begin{tabular}{ll} @@ -271,7 +280,8 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_geamax}{Infinity-Norm of Vector} +\clearpage\subsection*{psb\_geamax --- Infinity-Norm of Vector} +\addcontentsline{toc}{subsection}{psb\_geamax} This function computes the infinity-norm of a vector $x$.\\ @@ -285,7 +295,9 @@ else if $x$ is a complex vector then it computes infinity-norm as: %% \item[$x$] represents the global subvector $x_{:,jx}$ %% \end{description} -\syntax{psb\_geamax}{x, desc\_a, info} +\begin{verbatim} +psb_geamax(x, desc_a, info) +\end{verbatim} %% \syntax*{psb\_geamax}{x, desc\_a, info, jx} \begin{table}[h] @@ -346,13 +358,17 @@ An integer value; 0 means no error has been detected. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_geamaxs}{Generalized Infinity Norm} +\clearpage\subsection*{psb\_geamaxs --- Generalized Infinity Norm} +\addcontentsline{toc}{subsection}{psb\_geamaxs} This subroutine computes a series of infinity norms on the columns of a dense matrix $x$: \[ res(i) \leftarrow \max_k |x(k,i)| \] -\syntax{call psb\_geamaxs}{res, x, desc\_a, info} +\begin{verbatim} +call psb_geamaxs(res, x, desc_a, info) +\end{verbatim} + \begin{table}[h] \begin{center} \begin{tabular}{lll} @@ -404,7 +420,8 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_geasum}{1-Norm of Vector} +\clearpage\subsection*{psb\_geasum --- 1-Norm of Vector} +\addcontentsline{toc}{subsection}{psb\_geasum} This function computes the 1-norm of a vector $x$.\\ If $x$ is a real vector @@ -414,7 +431,9 @@ else if $x$ is a vector then it computes 1-norm as: \[ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1\] -\syntax{psb\_geasum}{x, desc\_a, info} +\begin{verbatim} +psb_geasum(x, desc_a, info) +\end{verbatim} \begin{table}[h] \begin{center} @@ -463,7 +482,8 @@ An integer value; 0 means no error has been detected. \end{description} -\subroutine{psb\_geasums}{Generalized 1-Norm of Vector} +\clearpage\subsection*{psb\_geasums --- Generalized 1-Norm of Vector} +\addcontentsline{toc}{subsection}{psb\_geasums} This subroutine computes a series of 1-norms on the columns of a dense matrix $x$: @@ -476,7 +496,9 @@ else if $x$ is a complex vector then it computes 1-norm as: \[ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1\] -\syntax{call psb\_geasums}{res, x, desc\_a, info} +\begin{verbatim} +call psb_geasums(res, x, desc_a, info) +\end{verbatim} \begin{table}[h] \begin{center} @@ -563,8 +585,11 @@ Long Precision Real&Long Precision Complex & psb\_genrm2 \\ \caption{Data types\label{tab:f90nrm2}} \end{table} -\syntax{psb\_genrm2}{x, desc\_a, info} +\begin{verbatim} +psb_genrm2(x, desc_a, info) +\end{verbatim} %% \syntax*{psb\_genrm2}{x, desc\_a, info, jx} + \begin{description} \item[Type:] Synchronous. \item[\bf On Entry] @@ -604,7 +629,8 @@ An integer value; 0 means no error has been detected. -\subroutine{psb\_genrm2s}{Generalized 1-Norm of Vector} +\clearpage\subsection*{psb\_genrm2s --- Generalized 1-Norm of Vector} +\addcontentsline{toc}{subsection}{psb\_genrm2s} This subroutine computes a series of 1-norms on the columns of a dense matrix $x$: @@ -617,7 +643,9 @@ else if $x$ is a complex vector then it computes 1-norm as: \[ res(i) \leftarrow \sqrt{x^H x}\] -\syntax{call psb\_genrm2s}{res, x, desc\_a, info} +\begin{verbatim} +call psb_genrm2s(res, x, desc_a, info) +\end{verbatim} \begin{table}[h] \begin{center} @@ -675,7 +703,8 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_spnrmi}{Infinity Norm of Sparse Matrix} +\clearpage\subsection*{psb\_spnrmi --- Infinity Norm of Sparse Matrix} +\addcontentsline{toc}{subsection}{psb\_spnrmi} This function computes the infinity-norm of a matrix $A$:\\ @@ -701,7 +730,9 @@ Long Precision Complex & psb\_spnrmi \\ \caption{Data types\label{tab:f90nrmi}} \end{table} -\syntax{psb\_spnrmi}{A, desc\_a, info} +\begin{verbatim} +psb_spnrmi(A, desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -736,7 +767,8 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_spmm}{Sparse Matrix by Dense Matrix Product} +\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: @@ -777,9 +809,11 @@ Long Precision Complex & psb\_spmm \\ \caption{Data types\label{tab:f90spmm}} \end{table} -\syntax{call psb\_spmm}{alpha, a, x, beta, y, desc\_a, info} -\syntax*{call psb\_spmm}{alpha, a, x, beta, y,desc\_a, info, -trans, work} +\begin{verbatim} +call psb_spmm(alpha, a, x, beta, y, desc_a, info) +call psb_spmm(alpha, a, x, beta, y,desc_a, info, & + & trans, work) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -886,7 +920,8 @@ An integer value; 0 means no error has been detected. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subroutine{psb\_spsm}{Triangular System Solve} +\clearpage\subsection*{psb\_spsm --- Triangular System Solve} +\addcontentsline{toc}{subsection}{psb\_spsm} This subroutine computes the Triangular System Solve: @@ -912,9 +947,11 @@ where: \item[$P_r, P_c$] are the permutation matrices. \end{description} -\syntax{call psb\_spsm}{alpha, t, x, beta, y, desc\_a, info} -\syntax*{call psb\_spsm}{alpha, t, x, beta, y, desc\_a, info, -trans, unit, choice, diag, work} +\begin{verbatim} +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) +\end{verbatim} \begin{table}[h] \begin{center} diff --git a/docs/pdf/toolsrout.tex b/docs/pdf/toolsrout.tex index 8e4808ae..0ef5c9b4 100644 --- a/docs/pdf/toolsrout.tex +++ b/docs/pdf/toolsrout.tex @@ -5,17 +5,20 @@ % %% psb_cdall %% % -\subroutine{psb\_cdall}{Allocates a communication descriptor} +\subsection*{psb\_cdall --- Allocates a communication descriptor} +\addcontentsline{toc}{subsection}{psb\_cdall} -\syntax{call psb\_cdall}{icontxt, desc\_a, info,mg=mg,parts=parts} -\syntax*{call psb\_cdall}{icontxt, desc\_a, info,vg=vg,flag=flag} -\syntax*{call psb\_cdall}{icontxt, desc\_a, info,vl=vl} -\syntax*{call psb\_cdall}{icontxt, desc\_a, info,nl=nl} -\syntax*{call psb\_cdall}{icontxt, desc\_a, info,mg=mg,repl=.true.} +\begin{verbatim} +call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts) +call psb_cdall(icontxt, desc_a, info,vg=vg,flag=flag) +call psb_cdall(icontxt, desc_a, info,vl=vl) +call psb_cdall(icontxt, desc_a, info,nl=nl) +call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.) +\end{verbatim} This subroutine initializes the communication descriptor associated with an index space. Exactly one of the optional arguments -\verb|parts|, \verb|vg|, \verb|vl| or \verb|nl| +\verb|parts|, \verb|vg|, \verb|vl|, \verb|nl| or \verb|repl| must be specified, thereby choosing the specific initialization strategy: \begin{description} @@ -82,7 +85,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item Exactly one of the optional arguments \verb|parts|, \verb|vg|, \verb|vl|, \verb|nl| must be specified, thereby choosing the @@ -140,9 +143,12 @@ An integer value; 0 means no error has been detected. % %% psb_cdins %% % -\subroutine{psb\_cdins}{Communication descriptor insert routine} +\clearpage\subsection*{psb\_cdins --- Communication descriptor insert routine} +\addcontentsline{toc}{subsection}{psb\_cdins} -\syntax{call psb\_cdins}{nz, ia, ja, desc\_a, info} +\begin{verbatim} +call psb_cdins(nz, ia, ja, desc_a, info) +\end{verbatim} This subroutine examines the edges of the graph associated with the discretization mesh (and isomorphic to the sparsity pattern of a @@ -190,7 +196,7 @@ Type: {\bf required} \\ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item This routine may only be called if the descriptor is in the build state; @@ -204,9 +210,12 @@ nor the end vertex belong to the current process. % %% psb_cdasb %% % -\subroutine{psb\_cdasb}{Communication descriptor assembly routine} +\clearpage\subsection*{psb\_cdasb --- Communication descriptor assembly routine} +\addcontentsline{toc}{subsection}{psb\_cdasb} -\syntax{call psb\_cdasb}{desc\_a, info} +\begin{verbatim} +call psb_cdasb(desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -232,7 +241,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. %\item[arg] \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item On exit from this routine the descriptor is in the assembled state. @@ -243,9 +252,12 @@ An integer value; 0 means no error has been detected. % %% psb_cdcpy %% % -\subroutine{psb\_cdcpy}{Copies a communication descriptor} +\clearpage\subsection*{psb\_cdcpy --- Copies a communication descriptor} +\addcontentsline{toc}{subsection}{psb\_cdcpy} -\syntax{call psb\_cdcpy}{desc\_in, desc\_out, info} +\begin{verbatim} +call psb_cdcpy(desc_in, desc_out, info) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -276,9 +288,12 @@ An integer value; 0 means no error has been detected. % %% psb_cdfree %% % -\subroutine{psb\_cdfree}{Frees a communication descriptor} +\clearpage\subsection*{psb\_cdfree --- Frees a communication descriptor} +\addcontentsline{toc}{subsection}{psb\_cdfree} -\syntax{call psb\_cdfree}{desc\_a, info} +\begin{verbatim} +call psb_cdfree(desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -304,9 +319,13 @@ An integer value; 0 means no error has been detected. % %% psb_cdcpy %% % -\subroutine{psb\_cdbldext}{Build an extended communication descriptor} +\clearpage\subsection*{psb\_cdbldext --- Build an extended communication + descriptor} +\addcontentsline{toc}{subsection}{psb\_cdbldext} -\syntax{call psb\_cdbldext}{a,desc\_a,nl,desc\_out, info, extype} +\begin{verbatim} +call psb_cdbldext(a,desc_a,nl,desc_out, info, extype) +\end{verbatim} This subroutine builds an extended communication descriptor, based on the input descriptor \verb|desc_a| and on the stencil specified @@ -352,7 +371,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item Specifying \verb|psb_ovt_xhal_| for the \verb|extype| argument the user will obtain a descriptor for a domain partition in which @@ -370,7 +389,9 @@ An integer value; 0 means no error has been detected. %% % %% %% psb_cdren %% %% % -%% \subroutine{psb\_cdren}{Applies a renumeration to a communication descriptor} +%% \subsection*{psb\_cdren --- Applies a renumeration to a +%% communication descriptor} +%% \addcontentsline{toc}{subsection}{psb\_cdren} %% \syntax{call psb\_cdren}{trans, iperm, desc\_a, info} @@ -405,7 +426,8 @@ An integer value; 0 means no error has been detected. % %% psb_descprt %% % -%% \subroutine{psb\_cdprt}{Prints a descriptor} +%% \subsection*{psb\_cdprt --- Prints a descriptor} +%%\addcontentsline{toc}{subsection}{psb\_cdprt} %% \syntax{call psb\_cdprt}{iout, desc\_a, glob, short} @@ -434,9 +456,12 @@ An integer value; 0 means no error has been detected. % %% psb_spalloc %% % -\subroutine{psb\_spall}{Allocates a sparse matrix} +\clearpage\subsection*{psb\_spall --- Allocates a sparse matrix} +\addcontentsline{toc}{subsection}{psb\_spall} -\syntax{call psb\_spall}{a, desc\_a, info, nnz} +\begin{verbatim} +call psb_spall(a, desc_a, info, nnz) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -467,7 +492,7 @@ Type: {\bf required} \\ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item On exit from this routine the sparse matrix is in the build state. @@ -483,9 +508,13 @@ An integer value; 0 means no error has been detected. % %% psb_spins %% % -\subroutine{psb\_spins}{Insert a cloud of elements into a sparse matrix} +\clearpage\subsection*{psb\_spins --- Insert a cloud of elements into a sparse + matrix} +\addcontentsline{toc}{subsection}{psb\_spins} -\syntax{call psb\_spins}{nz, ia, ja, val, a, desc\_a, info} +\begin{verbatim} +call psb_spins(nz, ia, ja, val, a, desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -545,7 +574,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item On entry to this routine the descriptor may be in either the build or assembled state. @@ -569,9 +598,12 @@ An integer value; 0 means no error has been detected. % %% psb_spasb %% % -\subroutine{psb\_spasb}{Sparse matrix assembly routine} +\clearpage\subsection*{psb\_spasb --- Sparse matrix assembly routine} +\addcontentsline{toc}{subsection}{psb\_spasb} -\syntax{call psb\_spasb}{a, desc\_a, info, afmt, upd, dupl} +\begin{verbatim} +call psb_spasb(a, desc_a, info, afmt, upd, dupl) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -613,7 +645,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item On entry to this routine the descriptor must be in the assembled state, i.e. \verb|psb_cdasb| must already have been called. @@ -634,7 +666,9 @@ An integer value; 0 means no error has been detected. %% % %% %% psb_spcnv %% %% % -%% \subroutine{psb\_spcnv}{Converts a sparse matrix storage format} +%% \subsection*{psb\_spcnv --- Converts a sparse matrix storage +%% format} +%%\addcontentsline{toc}{subsection}{psb\_spcnv} %% \syntax{call psb\_spcnv}{a, b, desc\_a, info} @@ -667,9 +701,12 @@ An integer value; 0 means no error has been detected. % %% psb_spfree %% % -\subroutine{psb\_spfree}{Frees a sparse matrix} +\clearpage\subsection*{psb\_spfree --- Frees a sparse matrix} +\addcontentsline{toc}{subsection}{psb\_spfree} -\syntax{call psb\_spfree}{a, desc\_a, info} +\begin{verbatim} +call psb_spfree(a, desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -701,9 +738,13 @@ An integer value; 0 means no error has been detected. % %% psb_sprn %% % -\subroutine{psb\_sprn}{Reinit sparse matrix structure for psblas routines.} +\clearpage\subsection*{psb\_sprn --- Reinit sparse matrix structure for psblas + routines.} +\addcontentsline{toc}{subsection}{psb\_sprn} -\syntax{call psb\_sprn}{a, decsc\_a, info, clear} +\begin{verbatim} +call psb_sprn(a, decsc_a, info, clear) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -733,7 +774,7 @@ Type: {\bf required} \\ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item On exit from this routine the sparse matrix is in the update state. @@ -741,7 +782,8 @@ An integer value; 0 means no error has been detected. % %% psb_spupdate %% % -%% \subroutine{psb\_spupdate}{Updates a sparse matrix.} +%% \subsection*{psb\_spupdate --- Updates a sparse matrix.} +%%\addcontentsline{toc}{subsection}{psb\_spupdate} %% \syntax{call psb\_spupdate}{a, ia, ja, blck, desc\_a, info, ix, jx, updflag} @@ -755,7 +797,9 @@ An integer value; 0 means no error has been detected. %% % %% %% psb_csrp %% %% % -%% \subroutine{psb\_csrp}{Applies a right permutation to a sparse matrix} +%% \subsection*{psb\_csrp --- Applies a right permutation to a sparse +%% matrix} +%%\addcontentsline{toc}{subsection}{psb\_csrp} %% \syntax{call psb\_csrp}{trans, iperm, a, info} @@ -785,9 +829,12 @@ An integer value; 0 means no error has been detected. % %% psb_alloc %% % -\subroutine{psb\_geall}{Allocates a dense matrix} +\clearpage\subsection*{psb\_geall --- Allocates a dense matrix} +\addcontentsline{toc}{subsection}{psb\_geall} -\syntax{call psb\_geall}{x, desc\_a, info, n, lb} +\begin{verbatim} +call psb_geall(x, desc_a, info, n, lb) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -830,9 +877,12 @@ An integer value; 0 means no error has been detected. % %% psb_ins %% % -\subroutine{psb\_geins}{Dense matrix insertion routine} +\clearpage\subsection*{psb\_geins --- Dense matrix insertion routine} +\addcontentsline{toc}{subsection}{psb\_geins} -\syntax{call psb\_geins}{m, irw, val, x, desc\_a, info,dupl} +\begin{verbatim} +call psb_geins(m, irw, val, x, desc_a, info,dupl) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -883,7 +933,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item Dense vectors/matrices do not have an associated state; \item Duplicate entries are either overwritten or added, there is no @@ -894,9 +944,12 @@ An integer value; 0 means no error has been detected. % %% psb_asb %% % -\subroutine{psb\_geasb}{Assembly a dense matrix} +\clearpage\subsection*{psb\_geasb --- Assembly a dense matrix} +\addcontentsline{toc}{subsection}{psb\_geasb} -\syntax{call psb\_geasb}{x, desc\_a, info} +\begin{verbatim} +call psb_geasb(x, desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -925,9 +978,12 @@ An integer value; 0 means no error has been detected. % %% psb_free %% % -\subroutine{psb\_gefree}{Frees a dense matrix} +\clearpage\subsection*{psb\_gefree --- Frees a dense matrix} +\addcontentsline{toc}{subsection}{psb\_gefree} -\syntax{call psb\_gefree}{x, desc\_a, info} +\begin{verbatim} +call psb_gefree(x, desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Synchronous. @@ -960,9 +1016,13 @@ An integer value; 0 means no error has been detected. % %% psb_gelp %% % -\subroutine{psb\_gelp}{Applies a left permutation to a dense matrix} +\clearpage\subsection*{psb\_gelp --- Applies a left permutation to a dense + matrix} +\addcontentsline{toc}{subsection}{psb\_gelp} -\syntax{call psb\_gelp}{trans, iperm, x, info} +\begin{verbatim} +call psb_gelp(trans, iperm, x, info) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -997,10 +1057,14 @@ An integer value; 0 means no error has been detected. % %% psb_glob_to_loc %% % -\subroutine{psb\_glob\_to\_loc}{Global to local indices convertion} +\clearpage\subsection*{psb\_glob\_to\_loc --- Global to local indices + convertion} +\addcontentsline{toc}{subsection}{psb\_glob\_to\_loc} -\syntax{call psb\_glob\_to\_loc}{x, y, desc\_a, info, iact,owned} -\syntax*{call psb\_glob\_to\_loc}{x, desc\_a, info, iact,owned} +\begin{verbatim} +call psb_glob_to_loc(x, y, desc_a, info, iact,owned) +call psb_glob_to_loc(x, desc_a, info, iact,owned) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1052,17 +1116,23 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item If an input index is out of range, then the corresponding output index is set to a negative number; \item The default \verb|I|gnore means that the negative output is the only action taken on an out-of-range input. \end{enumerate} -\subroutine{psb\_loc\_to\_glob}{Local to global indices conversion} -\syntax{call psb\_loc\_to\_glob}{x, y, desc\_a, info, iact} -\syntax*{call psb\_loc\_to\_glob}{x, desc\_a, info, iact} + +\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) +call psb_loc_to_glob(x, desc_a, info, iact) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1112,9 +1182,12 @@ An integer value; 0 means no error has been detected. % %% psb_loc_to_glob %% % -\subroutine{psb\_is\_owned}{} +\clearpage\subsection*{psb\_is\_owned } +\addcontentsline{toc}{subsection}{psb\_is\_owned} -\syntax{call psb\_is\_owned}{x, desc\_a} +\begin{verbatim} +call psb_is_owned(x, desc_a) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1141,7 +1214,7 @@ Intent: {\bf out}.\\ \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item This routine returns a \verb|.true.| value for an index that is strictly owned by the current process, excluding the halo @@ -1149,9 +1222,12 @@ Intent: {\bf out}.\\ \end{enumerate} -\subroutine{psb\_owned\_index}{} +\clearpage\subsection*{psb\_owned\_index } +\addcontentsline{toc}{subsection}{psb\_owned\_index} -\syntax{call psb\_owned\_index}{y, x, desc\_a, info} +\begin{verbatim} +call psb_owned_index(y, x, desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1190,7 +1266,7 @@ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item This routine returns a \verb|.true.| value for those indices that are strictly owned by the current process, excluding the halo @@ -1198,9 +1274,12 @@ An integer value; 0 means no error has been detected. \end{enumerate} -\subroutine{psb\_is\_local}{} +\clearpage\subsection*{psb\_is\_local } +\addcontentsline{toc}{subsection}{psb\_is\_local} -\syntax{call psb\_is\_local}{x, desc\_a} +\begin{verbatim} +call psb_is_local(x, desc_a) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1227,16 +1306,19 @@ Intent: {\bf out}.\\ \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item This routine returns a \verb|.true.| value for an index that is local to the current process, including the halo indices \end{enumerate} -\subroutine{psb\_local\_index}{} +\clearpage\subsection*{psb\_local\_index } +\addcontentsline{toc}{subsection}{psb\_local\_index} -\syntax{call psb\_local\_index}{y, x, desc\_a, info} +\begin{verbatim} +call psb_local_index(y, x, desc_a, info) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1275,7 +1357,7 @@ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item This routine returns a \verb|.true.| value for those indices that are local to the current process, including the halo @@ -1287,9 +1369,12 @@ An integer value; 0 means no error has been detected. % %% psb_ins %% % -\subroutine{psb\_get\_boundary}{Extract list of boundary elements} +\clearpage\subsection*{psb\_get\_boundary --- Extract list of boundary elements} +\addcontentsline{toc}{subsection}{psb\_get\_boundary} -\syntax{call psb\_get\_boundary}{bndel, desc, info} +\begin{verbatim} +call psb_get_boundary(bndel, desc, info) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1317,7 +1402,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item If there are no boundary elements (i.e., if the local part of the connectivity graph is self-contained) the output vector is set @@ -1326,9 +1411,12 @@ An integer value; 0 means no error has been detected. number of boundary elements. \end{enumerate} -\subroutine{psb\_get\_overlap}{Extract list of overlap elements} +\clearpage\subsection*{psb\_get\_overlap --- Extract list of overlap elements} +\addcontentsline{toc}{subsection}{psb\_get\_overlap} -\syntax{call psb\_get\_overlap}{ovrel, desc, info} +\begin{verbatim} +call psb_get_overlap(ovrel, desc, info) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1356,7 +1444,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item If there are no overlap elements the output vector is set to the ``not allocated'' state. @@ -1366,10 +1454,13 @@ An integer value; 0 means no error has been detected. -\subroutine{psb\_sp\_getrow}{Extract row(s) from a sparse matrix} +\clearpage\subsection*{psb\_sp\_getrow --- Extract row(s) from a sparse matrix} +\addcontentsline{toc}{subsection}{psb\_sp\_getrow} -\syntax{call psb\_sp\_getrow}{row, a, nz, ia, ja, val, info, append, - nzin, lrw} +\begin{verbatim} +call psb_sp_getrow(row, a, nz, ia, ja, val, info, & + & append, nzin, lrw) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1440,7 +1531,7 @@ Intent: {\bf out}.\\ An integer value; 0 means no error has been detected. \end{description} -\section*{Notes} +{\par\noindent\large\bfseries Notes} \begin{enumerate} \item The output $nz$ is always the size of the output generated by the current call; thus, if \verb|append=.true.|, the total output @@ -1456,14 +1547,17 @@ An integer value; 0 means no error has been detected. -\subroutine{psb\_sizeof}{Memory occupation} +\clearpage\subsection*{psb\_sizeof --- Memory occupation} +\addcontentsline{toc}{subsection}{psb\_sizeof} This function computes the memory occupation of a PSBLAS object. -\syntax{psb\_sizeof}{a} -\syntax*{psb\_sizeof}{desc\_a} -\syntax*{psb\_sizeof}{prec} +\begin{verbatim} +isz = psb_sizeof(a) +isz = psb_sizeof(desc_a) +isz = psb_sizeof(prec) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -1492,14 +1586,17 @@ Returned as: an integer number. \end{description} -\subroutine{Sorting utilities}{} +\clearpage\subsection*{Sorting utilities} +\addcontentsline{toc}{subsection}{Sorting utilities} -\subroutine*{psb\_msort}{Sorting by the Merge-sort algorithm} -\subroutine*{psb\_qsort}{Sorting by the Quicksort algorithm} -\subroutine*{psb\_hsort}{Sorting by the Heapsort algorithm} -\syntax{call psb\_msort}{x,ix,dir,flag} -\syntax*{call psb\_qsort}{x,ix,dir,flag} -\syntax*{call psb\_hsort}{x,ix,dir,flag} +{\par\noindent\large\bfseries psb\_msort --- Sorting by the Merge-sort algorithm} +{\par\noindent\large\bfseries psb\_qsort --- Sorting by the Quicksort algorithm} +{\par\noindent\large\bfseries psb\_hsort --- Sorting by the Heapsort algorithm} +\begin{verbatim} +call psb_msort(x,ix,dir,flag) +call psb_qsort(x,ix,dir,flag) +call psb_hsort(x,ix,dir,flag) +\end{verbatim} These serial routines sort a sequence $X$ into ascending or descending order. The argument meaning is identical for the three @@ -1536,7 +1633,8 @@ Type: {\bf Optional} \\ An integer array of rank 1, whose entries are moved to the same position as the corresponding entries in $x$. \end{description} -\section*{Usage notes} + +{\goodbreak\par\noindent\large\bfseries Notes} \begin{enumerate} \item The sorting can be performed in the up/down direction, on the natural or absolute values; for complex data the sorting can only diff --git a/docs/pdf/userguide.tex b/docs/pdf/userguide.tex index 73258c7a..29138be8 100644 --- a/docs/pdf/userguide.tex +++ b/docs/pdf/userguide.tex @@ -10,6 +10,7 @@ plainpages=false, pdfpagelabels, colorlinks, + citecolor=red, linkcolor=blue]{hyperref} \usepackage{ifthen} \usepackage{graphicx} @@ -58,7 +59,7 @@ \ifdim \wd\@tempboxa >\hsize \setbox\@tempboxa\hbox{\em $($#2$)$} \ifdim\wd\@tempboxa >\hsize - \begin{flushright}#1\ \em$($#2$)$\end{flushright}% + \flushright#1\ \em$($#2$)$\endflushright% \else \hbox to\hsize{#1\hfil}% \hbox to\hsize{\hfil\box\@tempboxa}% @@ -75,7 +76,36 @@ \newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_spmat\_type}}} \begin{document} -\include{title} + +\pdfbookmark{PSBLAS-v2.3 User's Guide}{title} + +\newlength{\centeroffset} +\setlength{\centeroffset}{-0.5\oddsidemargin} +\addtolength{\centeroffset}{0.5\evensidemargin} +%\addtolength{\textwidth}{-\centeroffset} +\thispagestyle{empty} +\vspace*{\stretch{1}} +\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} +\flushright +{\Huge\bfseries PSBLAS 2.3 User's guide +} +\noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex] +\hfill\emph{\Large A reference guide for the Parallel Sparse BLAS library} +\end{minipage}} + +\vspace{\stretch{1}} +\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} +\flushright +{\bfseries +by Salvatore Filippone\\ +and Alfredo Buttari}\\ +University of Rome ``Tor Vergata''.\\[3ex] +\today +\end{minipage}} + +%\addtolength{\textwidth}{\centeroffset} +\vspace{\stretch{2}} + \cleardoublepage \begingroup \renewcommand*{\thepage}{toc} diff --git a/docs/pdf/userhtml.tex b/docs/pdf/userhtml.tex new file mode 100644 index 00000000..9763525a --- /dev/null +++ b/docs/pdf/userhtml.tex @@ -0,0 +1,270 @@ +\documentclass[10pt,a4paper,twoside]{article} +\usepackage{pstricks} +\usepackage{fancybox} +\usepackage{amsfonts} +% \usepackage{minitoc} +% \setcounter{minitocdepth}{2} +\usepackage[bookmarks=true, + bookmarksnumbered=true, + bookmarksopen=false, + plainpages=false, + pdfpagelabels, + colorlinks, + linkcolor=blue]{hyperref} +\usepackage{ifthen} +\usepackage{graphicx} +\newtheorem{theorem}{Theorem} +\newtheorem{corollary}{Corollary} + +%\newboolean{mtc} +%\setboolean{mtc}{true} + +\pdfoutput=0 +% \relax +% \pdfcompresslevel=0 %-- 0 = none, 9 = best +% \pdfinfo{ %-- Info dictionary of PDF output /Author (Alfredo Buttari) +% /Title (Parallel Sparse BLAS V. 2.2) +% /Subject (Parallel Sparse Basic Linear Algebra Subroutines) +% /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) +% /Creator (pdfLaTeX) +% /Producer ($Id: userguide.tex 1978 2007-10-19 14:51:12Z sfilippo $) +% } +% \pdfcatalog{ %-- Catalog dictionary of PDF output. +% /URI (http://ce.uniroma2.it/psblas) +% } + +\newcounter{subroutine}[subsection] +\newcounter{example}[subroutine] +\makeatletter +\def\subroutine{\@ifstar{\@subroutine}{\clearpage\@subroutine}}% +\def\@subroutine#1#2{% +\stepcounter{subroutine}% + \section*{\flushleft #1---#2 \endflushleft}% + \addcontentsline{toc}{subsection}{#1}% + \markright{#1}}% +\newcommand{\subsubroutine}[2]{% +\stepcounter{subroutine}% + \subsection*{\flushleft #1---#2 \endflushleft}% + \addcontentsline{toc}{subsubsection}{#1}% + \markright{#1}}% +\newcommand{\examplename}{Example} +\newcommand{\syntaxname}{Syntax} +\def\syntax{\@ifstar{\@ssyntax}{\@syntax}}% +\def\@syntax{\nobreak\section*{\syntaxname}% + \@ssyntax}% +\def\@ssyntax#1#2{% + \nobreak + \setbox\@tempboxa\hbox{#1\ {\em $($#2$)$}}% + \ifdim \wd\@tempboxa >\hsize + \setbox\@tempboxa\hbox{\em $($#2$)$} + \ifdim\wd\@tempboxa >\hsize + \flushright#1\ \em$($#2$)$\endflushright% + \else + \hbox to\hsize{#1\hfil}% + \hbox to\hsize{\hfil\box\@tempboxa}% + \fi + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi\par\vskip\baselineskip} +\makeatother +\newcommand{\example}{\stepcounter{example}% +\section*{\examplename~\theexample}} + +\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_type}}} +\newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}} +\newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_spmat\_type}}} + +\begin{document} +{\LARGE\bfseries PSBLAS\\[.8ex] User's and Reference + Guide}\\[\baselineskip] +\emph{\large A reference guide for the Parallel Sparse BLAS library}\\[3ex] +{\bfseries Salvatore Filippone\\ + Alfredo Buttari } \\ + University of Rome ``Tor Vergata'', Italy\\[2ex] +%\\[10ex] +%\today +Software version: 2.3\\ +%\today +July 24, 2008 +\cleardoublepage +\begingroup + \renewcommand*{\thepage}{toc} + \pagenumbering{roman} % Roman numbering + \setcounter{page}{1} % Abstract start on page ii + \tableofcontents +\endgroup + +\cleardoublepage + +\pagenumbering{arabic} % Arabic numbering +\setcounter{page}{1} % Chapters start on page 1 + +\include{intro} +\include{datastruct} +\include{psbrout} +\include{commrout} +\include{toolsrout} +\include{penv} +\include{error} +\include{util} +\include{precs} +\include{methods} + +\cleardoublepage + +\begin{thebibliography}{99} + +\bibitem{PARA04FOREST} +G.~Bella, S.~Filippone, A.~De Maio and M.~Testa, +{\em 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. +\bibitem{2007d} A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,\newblock +2LEV-D2P4: a package of high-performance preconditioners,\newblock +Applicable Algebra in Engineering, Communications and Computing, +Volume 18, Number 3, May, 2007, pp. 223-239 +%Published online: 13 February 2007, {\tt http://dx.doi.org/10.1007/s00200-007-0035-z} +% +\bibitem{2007c} P. D'Ambra, S. Filippone, D. Di Serafino\newblock +On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners +\newblock +Applied Numerical Mathematics, Elsevier Science, +Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196. +%published online 3 February 2007, {\tt +% http://dx.doi.org/10.1016/j.apnum.2007.01.006} + +\bibitem{BLAS2} + Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., +An Extended Set of {F}ortran {B}asic {L}inear {A}lgebra {S}ubprograms, +{ACM Trans. Math. Softw.} vol.~{14}, 1--17, 1988. +\bibitem{BLAS3} + 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. +%% \bibitem{DOUGLAS} +%% R.E.~Bank and C.C.~Douglas, +%% {\em SMMP: Sparse Matrix Multiplication Package}, +%% Advances in Computational Mathematics, 1993, 1, 127-137. +%% (See also {\tt http://www.mgnet.org/~douglas/ccd-codes.html}) +% +% +%% \bibitem{PARA04} +%% A.~Buttari, P.~D'Ambra, D.~di Serafino and S.~Filippone, +%% {\em Extending PSBLAS to Build Parallel Schwarz Preconditioners}, +%% in , J.~Dongarra, K.~Madsen, J.~Wasniewski, editors, +%% Proceedings of PARA~04 Workshop on State of the Art +%% in Scientific Computing, pp.~593--602, Lecture Notes in Computer Science, +%% Springer, 2005. +% +%% \bibitem{CAI_SAAD} +%% X.~C.~Cai and Y.~Saad, +%% {\em Overlapping Domain Decomposition Algorithms for General Sparse Matrices}, +%% Numerical Linear Algebra with Applications, 3(3), pp.~221--237, 1996. +%% % +%% \bibitem{CAI_SARKIS} +%% X.C.~Cai and M.~Sarkis, +%% {\em A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems}, +%% SIAM Journal on Scientific Computing, 21(2), pp.~792--797, 1999. +% +%% \bibitem{CAI_WIDLUND} +%% X.C.~Cai and O.~B.~Widlund, +%% {\em Domain Decomposition Algorithms for Indefinite Elliptic Problems}, +%% SIAM Journal on Scientific and Statistical Computing, 13(1), pp.~243--258, 1992. +% +%% \bibitem{DD1} +%% T.~Chan and T.~Mathew, +%% {\em Domain Decomposition Algorithms}, +%% in A.~Iserles, editor, Acta Numerica 1994, pp.~61--143, 1994. +%% Cambridge University Press. +%% % +%% \bibitem{APNUM06} +%% P.~D'Ambra, D.~di Serafino and S.~Filippone, +%% On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners, +%% Applied Numerical Mathematics, to appear, 2007. +% +%% \bibitem{UMFPACK} +%% T.A.~Davis, +%% {\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal +%% Method with a Column Pre-ordering Strategy}, +%% ACM Transactions on Mathematical Software, 30, pp.~196--199, 2004. +%% (See also {\tt http://www.cise.ufl.edu/~davis/}) +%% % +%% \bibitem{SUPERLU} +%% J.W.~Demmel, S.C.~Eisenstat, J.R.~Gilbert, X.S.~Li and J.W.H.~Liu, +%% A supernodal approach to sparse partial pivoting, +%% SIAM Journal on Matrix Analysis and Applications, 20(3), pp.~720--755, 1999. +% +\bibitem{BLACS} +J.~J.~Dongarra and R.~C.~Whaley, +{\em 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). +% +\bibitem{sblas97} +I.~Duff, M.~Marrone, G.~Radicati and C.~Vittoli, +{\em Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: +a User Level Interface}, +ACM Transactions on Mathematical Software, 23(3), pp.~379--401, 1997. +% +\bibitem{sblas02} +I.~Duff, M.~Heroux and R.~Pozo, +{\em 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. +\bibitem{PSBLAS} +S.~Filippone and M.~Colajanni, +{\em PSBLAS: A Library for Parallel Linear Algebra +Computation on Sparse Matrices}, +\newblock +ACM Transactions on Mathematical Software, 26(4), pp.~527--550, 2000. +% +\bibitem{KIVA3PSBLAS} +S.~Filippone, P.~D'Ambra, M.~Colajanni, +{\em 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. +% +\bibitem{METIS} +Karypis, G. and Kumar, V., +{\em {METIS}: Unstructured Graph Partitioning and Sparse Matrix + Ordering System}. +Minneapolis, MN 55455: University of Minnesota, Department of + Computer Science, 1995. +Internet Address: {\verb|http://www.cs.umn.edu/~karypis|}. +\bibitem{BLAS1} +Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., + Basic {L}inear {A}lgebra {S}ubprograms for {F}ortran usage, +{ACM Trans. Math. Softw.} vol.~{5}, 38--329, 1979. + +\bibitem{machiels} +{Machiels, L. and Deville, M.} +{\em Fortran 90: An entry to object-oriented programming for the solution + of partial differential equations.} +{ACM Trans. Math. Softw.} vol.~{23}, 32--49. +\bibitem{metcalf} +{Metcalf, M., Reid, J. and Cohen, M.} +{\em Fortran 95/2003 explained.} +{Oxford University Press}, 2004. +% +%% \bibitem{DD2} +%% B.~Smith, P.~Bjorstad and W.~Gropp, +%% {\em Domain Decomposition: Parallel Multilevel Methods for Elliptic +%% Partial Differential Equations}, +%% Cambridge University Press, 1996. +% +\bibitem{MPI1} +M.~Snir, S.~Otto, S.~Huss-Lederman, D.~Walker and J.~Dongarra, +{\em MPI: The Complete Reference. Volume 1 - The MPI Core}, second edition, +MIT Press, 1998. +% +\end{thebibliography} + +\end{document} +%%% Local Variables: +%%% mode: latex +%%% TeX-master: 'userguide' +%%% End: diff --git a/docs/pdf/util.tex b/docs/pdf/util.tex index fb48a3ca..54db4fce 100644 --- a/docs/pdf/util.tex +++ b/docs/pdf/util.tex @@ -9,10 +9,14 @@ module \verb|psb_util_mod|. %\subroutine{PSB\_HBIO\_MOD}{Input/Output in Harwell-Boeing format} -\subroutine{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} -\syntax{call hb\_read}{a, iret, iunit, filename, b, mtitle} - +\addcontentsline{toc}{subsubsection}{hb\_read} + +\begin{verbatim} +call hb_read(a, iret, iunit, filename, b, mtitle) +\end{verbatim} + \begin{description} \item[Type:] Asynchronous. \item[\bf On Entry ] @@ -48,8 +52,13 @@ An integer value; 0 means no error has been detected. -\subroutine{hb\_write}{Write a sparse matrix to a file in the Harwell--Boeing format} -\syntax{call hb\_write}{a, iret, iunit, filename, key, rhs, mtitle} +\clearpage\subsection*{hb\_write --- Write a sparse matrix to a file + in the Harwell--Boeing format} +\addcontentsline{toc}{subsubsection}{hb\_write} + +\begin{verbatim} +call hb_write(a, iret, iunit, filename, key, rhs, mtitle) +\end{verbatim} @@ -96,8 +105,13 @@ An integer value; 0 means no error has been detected. %\subroutine{PSB\_MMIO\_MOD}{Input/Output in MatrixMarket format} -\subroutine{mm\_mat\_read}{Read a sparse matrix from a file in the MatrixMarket format} -\syntax{call mm\_mat\_read}{a, iret, iunit, filename} +\clearpage\subsection*{mm\_mat\_read --- Read a sparse matrix from a + file in the MatrixMarket format} +\addcontentsline{toc}{subsubsection}{mm\_mat\_read} + +\begin{verbatim} +call mm_mat_read(a, iret, iunit, filename) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -122,8 +136,12 @@ Type: {\bf required} \\ An integer value; 0 means no error has been detected. \end{description} -\subroutine{mm\_vet\_read}{Read a dense vector from a file in the MatrixMarket format} -\syntax{call mm\_vet\_read}{b, iret, iunit, filename} +\clearpage\subsection*{mm\_vet\_read --- Read a dense vector from a + file in the MatrixMarket format} +\addcontentsline{toc}{subsubsection}{mm\_vet\_read } +\begin{verbatim} +call mm_vet_read(b, iret, iunit, filename) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. @@ -152,8 +170,12 @@ An integer value; 0 means no error has been detected. -\subroutine{mm\_mat\_write}{Write a sparse matrix to a file in the MatrixMarket format} -\syntax{call mm\_mat\_write}{a, mtitle, iret, iunit, filename} +\clearpage\subsection*{mm\_mat\_write --- Write a sparse matrix to a + file in the MatrixMarket format} +\addcontentsline{toc}{subsubsection}{mm\_mat\_write} +\begin{verbatim} +call mm_mat_write(a, mtitle, iret, iunit, filename) +\end{verbatim} \begin{description} \item[Type:] Asynchronous. \item[\bf On Entry ]