From 435babf6f197116e64d076420d058a44684c2d64 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Tue, 16 May 2017 13:11:01 +0000 Subject: [PATCH] mld2p4-2: docs/html/node24.html docs/html/node28.html docs/mld2p4-2.1-guide.pdf docs/src/userinterface.tex Fixes for extending smoothers and solvers. --- docs/html/node24.html | 30 ++++++++++++++++++++---------- docs/html/node28.html | 2 +- docs/mld2p4-2.1-guide.pdf | 18 +++++++++--------- docs/src/userinterface.tex | 27 +++++++++++++++++---------- 4 files changed, 47 insertions(+), 30 deletions(-) diff --git a/docs/html/node24.html b/docs/html/node24.html index 175387e9..4b77d43e 100644 --- a/docs/html/node24.html +++ b/docs/html/node24.html @@ -59,16 +59,20 @@ Adding new smoothers and solvers to MLD2P4

Developers can add completely new smoother and/or solver classes derived from the base objects in the library may be used without -recompiling the library itself. To do so it is necessary first to -select the base type to be extended; in our experience, it is quite -likely that the new application needs only require the definition of a -``solver'' object, which is almost always acting only on the local -part of the distributed matrix. The parallel actions required to -connect the various solver objects are most often already provided by -the Block Jacobi or the Additive Schwarz smoothers. -To define a new solver, the developer will then have to define its -components and methods, perhaps taking one of the predefined solvers -as a starting point if possible. +recompiling the library itself. + +

+To do so it is necessary first to select the base type to be extended; +in our experience, it is quite likely that the new application needs +only require the definition of a ``solver'' object, which is almost +always acting only on the local part of the distributed matrix. + +

+The parallel actions required to connect the various solver objects +are most often already provided by the Block Jacobi or the Additive +Schwarz smoothers. To define a new solver, the developer will then +have to define its components and methods, perhaps taking one of the +predefined solvers as a starting point if possible.

Once the new smoother/solver class has been developed, to use it in @@ -101,6 +105,12 @@ it passes it down the composition hierarchy (levels containing smoothers containing solvers), so that it can be eventually caught by the new solver. +

+An example is contained in the source code distribution under the +folder tests/newslv. This example solver is simply the ILU(0) +solver under a new name, but it should give an idea of what needs to +be done. +


diff --git a/docs/html/node28.html b/docs/html/node28.html index adb6cda7..d5340175 100644 --- a/docs/html/node28.html +++ b/docs/html/node28.html @@ -63,7 +63,7 @@ Mathematics Department, Macquarie University, Sydney. The command line arguments were:
latex2html -local_icons -noaddress -dir ../../html userhtml.tex

-The translation was initiated by Salvatore Filippone on 2017-05-13 +The translation was initiated by Salvatore Filippone on 2017-05-16


diff --git a/docs/mld2p4-2.1-guide.pdf b/docs/mld2p4-2.1-guide.pdf index e94b6973..4e53a168 100644 --- a/docs/mld2p4-2.1-guide.pdf +++ b/docs/mld2p4-2.1-guide.pdf @@ -6327,7 +6327,7 @@ endstream endobj 557 0 obj << -/Length 5303 +/Length 5872 >> stream 0 g 0 G @@ -6337,7 +6337,7 @@ BT 0 g 0 G [-378(User)-377(Interf)88(a)23(ce)]TJ/F15 10.9091 Tf 401.542 0 Td [(39)]TJ 0 g 0 G -/F17 14.3462 Tf -401.542 -35.866 Td [(7)-1125(Adding)-375(new)-375(smo)-31(others)-375(and)-375(solv)31(ers)-375(to)-375(MLD2P4)]TJ/F15 10.9091 Tf 0 -24.352 Td [(Dev)28(elop)-28(ers)-414(can)-413(add)-414(completely)-413(new)-414(smo)-28(other)-414(an)1(d/or)-414(solv)28(er)-414(classes)-414(deriv)28(ed)-413(from)-414(the)]TJ 0 -13.549 Td [(base)-302(ob)-55(jects)-302(in)-301(the)-302(library)-301(ma)28(y)-302(b)-28(e)-301(used)-302(without)-301(recompiling)-302(th)1(e)-302(library)-301(itself.)-434(T)83(o)-301(do)-302(so)]TJ 0 -13.549 Td [(it)-317(is)-317(necessary)-317(\014rst)-317(to)-317(select)-317(the)-317(base)-317(t)28(yp)-28(e)-317(to)-317(b)-27(e)-317(exte)-1(n)1(ded;)-323(in)-317(our)-317(exp)-27(erience,)-321(it)-317(is)-317(q)1(uite)]TJ 0 -13.549 Td [(lik)28(ely)-396(that)-396(the)-396(new)-397(application)-396(needs)-396(only)-396(require)-396(the)-396(de\014nition)-396(of)-396(a)-396(\134solv)28(er")-397(ob)-55(ject,)]TJ 0 -13.55 Td [(whic)28(h)-417(is)-417(al)1(m)-1(ost)-416(alw)28(a)27(ys)-416(acting)-417(only)-416(on)-417(the)-417(lo)-27(c)-1(al)-416(part)-417(of)-416(the)-417(distributed)-416(matrix.)-695(The)]TJ 0 -13.549 Td [(parallel)-399(actions)-399(required)-399(to)-399(connect)-399(the)-399(v)55(ari)1(ous)-400(solv)28(er)-399(ob)-55(jects)-399(are)-400(most)-399(often)-399(already)]TJ 0 -13.549 Td [(pro)28(vided)-447(b)28(y)-447(the)-447(Blo)-28(c)28(k)-447(Jacobi)-446(or)-447(the)-447(Additiv)28(e)-447(Sc)28(h)28(w)27(arz)-446(smo)-28(others.)-785(T)83(o)-447(de\014ne)-446(a)-447(new)]TJ 0 -13.549 Td [(solv)28(er,)-466(the)-440(dev)28(elop)-28(er)-439(will)-440(then)-439(ha)28(v)27(e)-439(to)-440(de\014ne)-439(its)-440(comp)-28(onen)28(ts)-439(and)-440(metho)-28(ds,)-466(p)-27(erhaps)]TJ 0 -13.549 Td [(taking)-333(one)-334(of)-333(the)-333(prede\014ned)-333(solv)27(ers)-333(as)-333(a)-334(starting)-333(p)-28(oin)28(t)-333(if)-333(p)-28(ossible.)]TJ 16.937 -13.55 Td [(Once)-329(the)-329(new)-329(smo)-28(other/solv)28(er)-329(class)-329(has)-329(b)-27(een)-329(dev)28(e)-1(l)1(op)-28(ed,)-330(to)-329(use)-329(it)-329(in)-329(th)1(e)-329(con)27(text)-329(of)]TJ -16.937 -13.549 Td [(the)-333(m)27(ultil)1(e)-1(v)28(el)-333(preconditioners)-333(it)-334(is)-333(necessary)-333(to:)]TJ +/F17 14.3462 Tf -401.542 -35.866 Td [(7)-1125(Adding)-375(new)-375(smo)-31(others)-375(and)-375(solv)31(ers)-375(to)-375(MLD2P4)]TJ/F15 10.9091 Tf 0 -24.352 Td [(Dev)28(elop)-28(ers)-414(can)-413(add)-414(completely)-413(new)-414(smo)-28(other)-414(an)1(d/or)-414(solv)28(er)-414(classes)-414(deriv)28(ed)-413(from)-414(the)]TJ 0 -13.549 Td [(base)-333(ob)-56(jects)-333(in)-334(the)-333(library)-333(ma)28(y)-334(b)-27(e)-334(used)-333(without)-333(recompiling)-334(the)-333(library)-333(itself.)]TJ 16.937 -13.549 Td [(T)83(o)-250(do)-251(so)-251(it)-250(is)-251(necessary)-251(\014rst)-250(to)-251(select)-251(the)-250(base)-251(t)28(yp)-28(e)-251(to)-250(b)-28(e)-251(extended;)-278(in)-251(our)-250(exp)-28(erience,)]TJ -16.937 -13.549 Td [(it)-306(is)-306(quite)-306(lik)28(ely)-306(that)-306(the)-305(new)-306(application)-306(needs)-306(only)-306(require)-306(the)-306(de\014niti)1(on)-306(of)-306(a)-306(\134solv)28(er")]TJ 0 -13.55 Td [(ob)-56(j)1(e)-1(ct,)-333(whic)28(h)-333(is)-334(almost)-333(alw)28(a)27(ys)-333(acting)-333(only)-333(on)-334(the)-333(lo)-28(cal)-333(part)-333(of)-334(the)-333(distributed)-333(matrix.)]TJ 16.937 -13.549 Td [(The)-393(paral)1(le)-1(l)-392(actions)-393(required)-392(to)-393(connect)-392(the)-393(v)56(arious)-393(solv)28(er)-393(ob)-55(jects)-393(are)-392(m)-1(ost)-392(often)]TJ -16.937 -13.549 Td [(already)-348(pro)27(vided)-348(b)28(y)-349(the)-348(Blo)-28(c)28(k)-349(Jacobi)-348(or)-349(the)-348(Additiv)28(e)-349(Sc)28(h)28(w)28(arz)-349(smo)-28(others.)-490(T)84(o)-349(de\014ne)-348(a)]TJ 0 -13.549 Td [(new)-276(solv)28(er,)-287(the)-275(dev)27(elop)-27(er)-276(will)-275(then)-276(ha)28(v)28(e)-276(to)-275(de\014ne)-276(its)-276(comp)-27(onen)27(ts)-275(and)-276(metho)-27(ds,)-287(p)-28(erhaps)]TJ 0 -13.549 Td [(taking)-333(one)-334(of)-333(the)-333(prede\014ned)-333(solv)27(ers)-333(as)-333(a)-334(starting)-333(p)-28(oin)28(t)-333(if)-333(p)-28(ossible.)]TJ 16.937 -13.55 Td [(Once)-329(the)-329(new)-329(smo)-28(other/solv)28(er)-329(class)-329(has)-329(b)-27(een)-329(dev)28(e)-1(l)1(op)-28(ed,)-330(to)-329(use)-329(it)-329(in)-329(th)1(e)-329(con)27(text)-329(of)]TJ -16.937 -13.549 Td [(the)-333(m)27(ultil)1(e)-1(v)28(el)-333(preconditioners)-333(it)-334(is)-333(necessary)-333(to:)]TJ 0 g 0 G /F25 10.9091 Tf 16.364 -22.515 Td [(\017)]TJ 0 g 0 G @@ -6352,7 +6352,7 @@ BT 0 g 0 G /F25 10.9091 Tf -83.227 -26.999 Td [(\017)]TJ 0 g 0 G -/F15 10.9091 Tf 10.909 0 Td [(Link)-308(in)27(to)-308(the)-309(application)-308(executable)-309(the)-308(co)-28(de)-309(implemen)28(ting)-309(th)1(e)-309(v)55(ar)1(ious)-309(metho)-28(ds.)]TJ -27.273 -22.515 Td [(The)-270(new)-270(solv)28(er)-270(ob)-55(ject)-270(is)-270(then)-269(dynamically)-270(included)-270(in)-269(the)-270(preconditioner)-270(stru)1(c)-1(tu)1(re)-1(,)-282(and)]TJ 0 -13.549 Td [(will)-321(act)-321(as)-321(a)]TJ/F18 10.9091 Tf 60.74 0 Td [(mold)]TJ/F15 10.9091 Tf 27.49 0 Td [(to)-321(whic)28(h)-321(the)-322(p)1(rec)-1(on)1(ditioner)-321(w)-1(i)1(ll)-322(confor)1(m)-1(,)-323(ev)28(en)-321(though)-321(the)-321(MLD2P4)]TJ -88.23 -13.55 Td [(library)-333(has)-334(n)1(ot)-334(b)-28(een)-333(mo)-28(di\014ed)-333(to)-333(accoun)28(t)-334(for)-333(this)-333(new)-334(dev)28(elopmen)28(t.)]TJ 16.937 -13.549 Td [(It)-358(is)-358(p)-28(ossible)-358(to)-357(de\014ne)-358(new)-358(v)55(alues)-358(for)-357(the)-358(k)27(eyw)28(ord)]TJ/F44 10.9091 Tf 244.802 0 Td [(WHAT)]TJ/F15 10.9091 Tf 26.813 0 Td [(in)-358(the)]TJ/F44 10.9091 Tf 32.052 0 Td [(set)]TJ/F15 10.9091 Tf 21.086 0 Td [(routines;)-370(if)-358(the)]TJ -341.69 -13.549 Td [(library)-319(co)-28(de)-319(do)-28(es)-319(not)-319(recognize)-320(a)-319(k)28(eyw)28(ord,)-322(it)-319(passes)-320(it)-319(do)28(wn)-319(the)-319(comp)-28(osition)-319(hierarc)28(h)27(y)]TJ 0 -13.549 Td [(\050lev)28(els)-307(con)28(taining)-307(smo)-28(others)-306(con)27(tain)1(ing)-307(solv)28(ers\051,)-312(so)-307(that)-307(it)-306(c)-1(an)-306(b)-28(e)-307(ev)28(en)28(tually)-307(caugh)28(t)-307(b)28(y)]TJ 0 -13.549 Td [(the)-333(new)-334(solv)28(er.)]TJ/F44 10.9091 Tf 22.914 -37.579 Td [(smoother)-14(class\050mld_x_base_smoother_type\051)]TJ/F15 10.9091 Tf 45.971 -13.55 Td [(The)-333(user-de\014ned)-334(new)-333(smo)-28(other)-333(to)-333(b)-28(e)-334(emplo)28(y)28(ed)-333(in)-334(the)-333(preconditioner.)]TJ/F44 10.9091 Tf -45.971 -13.549 Td [(solver)-1064(class\050mld_x_base_solver_type\051)]TJ/F15 10.9091 Tf 45.971 -13.549 Td [(The)-333(user-de\014ned)-334(new)-333(solv)28(er)-334(to)-333(b)-28(e)-333(emplo)28(y)28(ed)-334(in)-333(the)-333(preconditioner.)]TJ +/F15 10.9091 Tf 10.909 0 Td [(Link)-308(in)27(to)-308(the)-309(application)-308(executable)-309(the)-308(co)-28(de)-309(implemen)28(ting)-309(th)1(e)-309(v)55(ar)1(ious)-309(metho)-28(ds.)]TJ -27.273 -22.515 Td [(The)-270(new)-270(solv)28(er)-270(ob)-55(ject)-270(is)-270(then)-269(dynamically)-270(included)-270(in)-269(the)-270(preconditioner)-270(stru)1(c)-1(tu)1(re)-1(,)-282(and)]TJ 0 -13.549 Td [(will)-321(act)-321(as)-321(a)]TJ/F18 10.9091 Tf 60.74 0 Td [(mold)]TJ/F15 10.9091 Tf 27.49 0 Td [(to)-321(whic)28(h)-321(the)-322(p)1(rec)-1(on)1(ditioner)-321(w)-1(i)1(ll)-322(confor)1(m)-1(,)-323(ev)28(en)-321(though)-321(the)-321(MLD2P4)]TJ -88.23 -13.55 Td [(library)-333(has)-334(n)1(ot)-334(b)-28(een)-333(mo)-28(di\014ed)-333(to)-333(accoun)28(t)-334(for)-333(this)-333(new)-334(dev)28(elopmen)28(t.)]TJ 16.937 -13.549 Td [(It)-358(is)-358(p)-28(ossible)-358(to)-357(de\014ne)-358(new)-358(v)55(alues)-358(for)-357(the)-358(k)27(eyw)28(ord)]TJ/F44 10.9091 Tf 244.802 0 Td [(WHAT)]TJ/F15 10.9091 Tf 26.813 0 Td [(in)-358(the)]TJ/F44 10.9091 Tf 32.052 0 Td [(set)]TJ/F15 10.9091 Tf 21.086 0 Td [(routines;)-370(if)-358(the)]TJ -341.69 -13.549 Td [(library)-319(co)-28(de)-319(do)-28(es)-319(not)-319(recognize)-320(a)-319(k)28(eyw)28(ord,)-322(it)-319(passes)-320(it)-319(do)28(wn)-319(the)-319(comp)-28(osition)-319(hierarc)28(h)27(y)]TJ 0 -13.549 Td [(\050lev)28(els)-307(con)28(taining)-307(smo)-28(others)-306(con)27(tain)1(ing)-307(solv)28(ers\051,)-312(so)-307(that)-307(it)-306(c)-1(an)-306(b)-28(e)-307(ev)28(en)28(tually)-307(caugh)28(t)-307(b)28(y)]TJ 0 -13.549 Td [(the)-333(new)-334(solv)28(er.)]TJ 16.937 -13.55 Td [(An)-222(example)-222(is)-223(con)28(tained)-222(in)-222(the)-222(source)-223(co)-28(d)1(e)-223(distribution)-222(under)-222(the)-222(folder)]TJ/F44 10.9091 Tf 336.364 0 Td [(tests/newslv)]TJ/F15 10.9091 Tf 68.726 0 Td [(.)]TJ -422.027 -13.549 Td [(This)-350(example)-350(solv)28(er)-350(is)-350(simply)-350(the)-350(ILU\0500\051)-349(s)-1(olv)28(er)-350(und)1(e)-1(r)-349(a)-350(new)-350(name,)-354(but)-350(it)-350(should)-350(giv)28(e)]TJ 0 -13.549 Td [(an)-333(idea)-334(of)-333(what)-333(needs)-334(to)-333(b)-28(e)-333(done.)]TJ/F44 10.9091 Tf 22.914 -37.579 Td [(smoother)-14(class\050mld_x_base_smoother_type\051)]TJ/F15 10.9091 Tf 45.971 -13.549 Td [(The)-333(user-de\014ned)-334(new)-333(smo)-28(other)-333(to)-333(b)-28(e)-334(emplo)28(y)28(ed)-333(in)-334(the)-333(preconditioner.)]TJ/F44 10.9091 Tf -45.971 -13.549 Td [(solver)-1064(class\050mld_x_base_solver_type\051)]TJ/F15 10.9091 Tf 45.971 -13.55 Td [(The)-333(user-de\014ned)-334(new)-333(solv)28(er)-334(to)-333(b)-28(e)-333(emplo)28(y)28(ed)-334(in)-333(the)-333(preconditioner.)]TJ 0 g 0 G 0 g 0 G ET @@ -9249,8 +9249,8 @@ endobj 672 0 obj << /Title (MultiLevel Domain Decomposition Parallel Preconditioners Package based on PSBLAS, V. 2.1) /Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package) /Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI) /Creator (pdfLaTeX) /Producer ($Id: userguide.tex 2008-04-08 Pasqua D'Ambra, Daniela di Serafino, Salvatore Filippone$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.17)/Keywords() -/CreationDate (D:20170513100533+01'00') -/ModDate (D:20170513100533+01'00') +/CreationDate (D:20170516131616+01'00') +/ModDate (D:20170516131616+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) kpathsea version 6.2.2) >> @@ -10067,7 +10067,7 @@ endobj /W [1 3 1] /Root 671 0 R /Info 672 0 R -/ID [ ] +/ID [<8A3CA28412DD333F87FA1F1F7E13B1EF> <8A3CA28412DD333F87FA1F1F7E13B1EF>] /Length 3370 >> stream @@ -10076,10 +10076,10 @@ stream m96m86m76+m66;m56Nm4 m3!" m2#$m1%&Wm0'(^m/)*m.+,m--.m,/0m+12m*34m)56"m(78&m'9:;?<=m mmmB@ AFCgDmm IGHKLMNOPQRSTUVWXYZ[\]^_`abcJlm 5TR     Snm m(GB@'I<; !"q/%$(#&m*+,-/123456<)8.0767>=F:?@ABCDFG>K=IEHm012?NLťMPROQmUSTWYVX^Z [abc666666666`6 _76 H)*+6 6666666 k66mmmmmmmA6666666#66m 6 6!6"m6%6&6'6(6)6,6$6*6/606.626-61,6465666768696E6F6B6376:6<6=6>6?6@6A6M0M6G6H6I6J6K6D6O6C/6L6_6Q6R6S6T6U6V6W6X6Y6[6PS6Z6c6]6`6\r6^m6a6b!Ig -   b !"#)$%&'(I@49+-*,m1.& /372556<8]:;>A=?EB@CDGJFHm NKLQRSTUPXOVZ[\_Y ]bca`m Q   -sT m!x1$ #m!3$%-.C4ț589m"JDEKLMNOPQRSTUVWXYZ[<\8]|M^_ە`a5>b] c@m|Ckmamm9mmmLjmmm#m$m%m&mDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m]m^m_m`ma, +   b !"#)$%&'(I@49+-*,m1.& /372556<8]:;>A=?EB@CDGJFHm NKLQRSTUPXOVZ[\_Y ]bca`Ŧ Q   +sT m!x1] #!3$!%-.C4589m"JDEKLMNOPQRSTUVWXYZ[u\:]~^7_`(a7wb_DcymEmcmUmrmmmNmmm#m$m%m&mDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m]m^m_m`mae endstream endobj startxref -585004 +585573 %%EOF diff --git a/docs/src/userinterface.tex b/docs/src/userinterface.tex index 48095b4a..ecc6f081 100644 --- a/docs/src/userinterface.tex +++ b/docs/src/userinterface.tex @@ -860,16 +860,18 @@ as follows: Developers can add completely new smoother and/or solver classes derived from the base objects in the library may be used without -recompiling the library itself. To do so it is necessary first to -select the base type to be extended; in our experience, it is quite -likely that the new application needs only require the definition of a -``solver'' object, which is almost always acting only on the local -part of the distributed matrix. The parallel actions required to -connect the various solver objects are most often already provided by -the Block Jacobi or the Additive Schwarz smoothers. -To define a new solver, the developer will then have to define its -components and methods, perhaps taking one of the predefined solvers -as a starting point if possible. +recompiling the library itself. + +To do so it is necessary first to select the base type to be extended; +in our experience, it is quite likely that the new application needs +only require the definition of a ``solver'' object, which is almost +always acting only on the local part of the distributed matrix. + +The parallel actions required to connect the various solver objects +are most often already provided by the Block Jacobi or the Additive +Schwarz smoothers. To define a new solver, the developer will then +have to define its components and methods, perhaps taking one of the +predefined solvers as a starting point if possible. Once the new smoother/solver class has been developed, to use it in @@ -896,6 +898,11 @@ it passes it down the composition hierarchy (levels containing smoothers containing solvers), so that it can be eventually caught by the new solver. +An example is contained in the source code distribution under the +folder \verb|tests/newslv|. This example solver is simply the ILU(0) +solver under a new name, but it should give an idea of what needs to +be done. + \ \\ \begin{tabular}{p{1.2cm}p{12cm}}