You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
amg4psblas/docs/html/node24.html

153 lines
5.4 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 2012 (1.2)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<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">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node25.html">
<LINK REL="previous" HREF="node15.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node25.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html369"
HREF="node25.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html365"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html359"
HREF="node23.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html367"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html370"
HREF="node25.html">Error Handling</A>
<B> Up:</B> <A NAME="tex2html366"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html360"
HREF="node23.html">Subroutine descr</A>
&nbsp; <B> <A NAME="tex2html368"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
<BR>
Adding new smoothers and solvers to MLD2P4
</H1>
<P>
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>
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>
</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>
<BR>
<P>
<TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>smoother</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_smoother_type)</code></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new smoother to be employed in the
preconditioner.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>solver</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_solver_type)</code></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new solver to be employed in the
preconditioner.</TD>
</TR>
</TABLE>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html369"
HREF="node25.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html365"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html359"
HREF="node23.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html367"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html370"
HREF="node25.html">Error Handling</A>
<B> Up:</B> <A NAME="tex2html366"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html360"
HREF="node23.html">Subroutine descr</A>
&nbsp; <B> <A NAME="tex2html368"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>