mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
mld2p4-2:
docs/html/index.html docs/html/node17.html docs/html/node2.html docs/html/node23.html docs/html/node24.html docs/html/node25.html docs/html/node28.html docs/html/userhtml.html docs/mld2p4-2.1-guide.pdf docs/src/userinterface.tex mlprec/impl/mld_ccprecset.F90 mlprec/impl/mld_cprecset.F90 mlprec/impl/mld_dcprecset.F90 mlprec/impl/mld_dprecset.F90 mlprec/impl/mld_scprecset.F90 mlprec/impl/mld_sprecset.F90 mlprec/impl/mld_zcprecset.F90 mlprec/impl/mld_zprecset.F90 ALign precset to cprecset Improve SM and SV set to user's guide
This commit is contained in:
+39
-23
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Adding smoothers and solvers to MLD2P4</TITLE>
|
||||
<META NAME="description" CONTENT="Adding smoothers and solvers to MLD2P4">
|
||||
<TITLE>Adding new smoothers and solvers to MLD2P4</TITLE>
|
||||
<META NAME="description" CONTENT="Adding new smoothers and solvers to MLD2P4">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -53,37 +53,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
|
||||
<BR>
|
||||
Adding smoothers and solvers to MLD2P4
|
||||
Adding new smoothers and solvers to MLD2P4
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
<B>Da ampliare e completare - SALVATORE.</B>
|
||||
<BR>
|
||||
<P>
|
||||
Completely new smoother and/or solver classes derived from the
|
||||
base objects in the library may be used without recompiling the
|
||||
library itself. Once the new smoother/solver class has been
|
||||
developed, the user can declare a variable of that new type in the
|
||||
application, and pass that variable to the <code>p%set(solver,info)</code>
|
||||
call; the new solver object is then dynamically included in the
|
||||
preconditioner structure.
|
||||
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.
|
||||
|
||||
<P>
|
||||
|
||||
<BR>
|
||||
<P>
|
||||
If the user has developed a new type of smoother and/or
|
||||
solver by extending one of the base MLD2P4 types, and has declared a
|
||||
variable of the new type in the main program, it is possible to pass
|
||||
the new smoother/solver variable to the setup routine as follows:
|
||||
Once the new smoother/solver class has been developed, to use it in
|
||||
the context of the multilevel preconditioners it is necessary to:
|
||||
|
||||
<UL>
|
||||
<LI>Declare in the application program a variable of the new type;
|
||||
</LI>
|
||||
<LI>Pass that variable as the argument to the se routine as in the
|
||||
following:
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%set(smoother,info [,ilev, ilmax,pos])</code>
|
||||
<BR><code>call p%set(solver,info [,ilev, ilmax,pos])</code>
|
||||
|
||||
</DIV>
|
||||
In this way, the variable will act as a <I>mold</I> to which the
|
||||
preconditioner will conform, even though the MLD2P4 library is not
|
||||
modified, and thus has no direct knowledge about the new type.
|
||||
</LI>
|
||||
<LI>Link into the application executable the code implementing the
|
||||
various methods.
|
||||
</LI>
|
||||
</UL>
|
||||
The new solver object is then dynamically included in the
|
||||
preconditioner structure, and will act as a <I>mold</I> to which the
|
||||
preconditioner will conform, even though the MLD2P4 library has not
|
||||
been modified to account for this new development.
|
||||
|
||||
<P>
|
||||
It is possible to define new values for the keyword <code>WHAT</code> in the
|
||||
<code>set</code> routines; if the library code does not recognize a keyword,
|
||||
it passes it down the composition hierarchy (levels containing
|
||||
smoothers containing solvers), so that it can be eventually caught by
|
||||
the new solver.
|
||||
|
||||
<P>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user