<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html > <head><title>Method apply</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)"> <meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)"> <!-- html,3 --> <meta name="src" content="userhtml.tex"> <link rel="stylesheet" type="text/css" href="userhtml.css"> </head><body > <!--l. 798--><div class="crosslinks"><p class="noindent"><span class="cmr-12">[</span><a href="userhtmlsu16.html" ><span class="cmr-12">next</span></a><span class="cmr-12">] [</span><a href="userhtmlsu14.html" ><span class="cmr-12">prev</span></a><span class="cmr-12">] [</span><a href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span class="cmr-12">prev-tail</span></a><span class="cmr-12">] [</span><a href="#tailuserhtmlsu15.html"><span class="cmr-12">tail</span></a><span class="cmr-12">] [</span><a href="userhtmlse6.html#userhtmlsu15.html" ><span class="cmr-12">up</span></a><span class="cmr-12">] </span></p></div> <h4 class="subsectionHead"><span class="titlemark"><span class="cmr-12">6.6 </span></span> <a id="x25-240006.6"></a><span class="cmr-12">Method apply</span></h4> <div class="center" > <!--l. 800--><p class="noindent" > <!--l. 801--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">call</span><span class="cmtt-12"> p%apply(x,y,desc_a,info</span><span class="cmtt-12"> [,trans,work])</span></span></span><br /> </div> <!--l. 804--><p class="noindent" ><span class="cmr-12">This method computes </span><span class="cmmi-12">y </span><span class="cmr-12">= </span><span class="cmmi-12">op</span><span class="cmr-12">(</span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmr-8">1</span></sup><span class="cmr-12">) </span><span class="cmmi-12">x</span><span class="cmr-12">, where </span><span class="cmmi-12">B </span><span class="cmr-12">is a previously built preconditioner,</span> <span class="cmr-12">stored into </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">p</span></span></span><span class="cmr-12">, and </span><span class="cmmi-12">op </span><span class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span> <span class="cmr-12">value of </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">trans</span></span></span><span class="cmr-12">. Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,</span> <span class="obeylines-h"><span class="verb"><span class="cmtt-12">p%apply</span></span></span> <span class="cmr-12">is called within the PSBLAS method </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">psb_krylov</span></span></span> <span class="cmr-12">and hence it is completely</span> <span class="cmr-12">transparent to the user.</span> <!--l. 813--><p class="noindent" ><span class="cmbx-12">Arguments</span> <div class="tabular"> <table id="TBL-14" class="tabular" cellspacing="0" cellpadding="0" ><colgroup id="TBL-14-1g"><col id="TBL-14-1"><col id="TBL-14-2"></colgroup><tr style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:wrap; text-align:left;" id="TBL-14-1-1" class="td11"><!--l. 820--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">x</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-1-2" class="td11"><!--l. 820--><p class="noindent" ><span class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span></span></span><span class="cmti-12">kind</span><span class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">),</span><span class="cmtt-12"> dimension(:),</span><span class="cmtt-12"> intent(in)</span></span></span><span class="cmr-12">.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:wrap; text-align:left;" id="TBL-14-2-1" class="td11"><!--l. 821--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-2-2" class="td11"><!--l. 821--><p class="noindent" ><span class="cmr-12">The local part of the vector </span><span class="cmmi-12">x</span><span class="cmr-12">. Note that </span><span class="cmti-12">type </span><span class="cmr-12">and </span><span class="cmti-12">kind</span><span class="cmti-12">_parameter</span> <span class="cmr-12">must be chosen according to the real/complex, single/double</span> <span class="cmr-12">precision version of MLD2P4 under use.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:wrap; text-align:left;" id="TBL-14-3-1" class="td11"><!--l. 824--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">y</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-3-2" class="td11"><!--l. 824--><p class="noindent" ><span class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span></span></span><span class="cmti-12">kind</span><span class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">),</span><span class="cmtt-12"> dimension(:),</span><span class="cmtt-12"> intent(out)</span></span></span><span class="cmr-12">.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:wrap; text-align:left;" id="TBL-14-4-1" class="td11"><!--l. 825--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-4-2" class="td11"><!--l. 825--><p class="noindent" ><span class="cmr-12">The local part of the vector </span><span class="cmmi-12">y</span><span class="cmr-12">. Note that </span><span class="cmti-12">type </span><span class="cmr-12">and </span><span class="cmti-12">kind</span><span class="cmti-12">_parameter</span> <span class="cmr-12">must be chosen according to the real/complex, single/double</span> <span class="cmr-12">precision version of MLD2P4 under use.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:wrap; text-align:left;" id="TBL-14-5-1" class="td11"><!--l. 828--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-14-5-2" class="td11"><!--l. 828--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12"> intent(in)</span></span></span><span class="cmr-12">.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:wrap; text-align:left;" id="TBL-14-6-1" class="td11"><!--l. 829--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-6-2" class="td11"><!--l. 829--><p class="noindent" ><span class="cmr-12">The communication descriptor associated to the matrix to be</span> <span class="cmr-12">preconditioned.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:wrap; text-align:left;" id="TBL-14-7-1" class="td11"><!--l. 831--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-7-2" class="td11"><!--l. 831--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">integer,</span><span class="cmtt-12"> intent(out)</span></span></span><span class="cmr-12">.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:wrap; text-align:left;" id="TBL-14-8-1" class="td11"><!--l. 832--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-8-2" class="td11"><!--l. 832--><p class="noindent" ><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12"> </span><a href="userhtmlse8.html#x30-340008"><span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">for details.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:wrap; text-align:left;" id="TBL-14-9-1" class="td11"><!--l. 833--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">trans</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-9-2" class="td11"><!--l. 833--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">character(len=1),</span><span class="cmtt-12"> optional,</span><span class="cmtt-12"> intent(in).</span></span></span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:wrap; text-align:left;" id="TBL-14-10-1" class="td11"><!--l. 834--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-10-2" class="td11"><!--l. 834--><p class="noindent" ><span class="cmr-12">If </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">trans</span></span></span> <span class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">’N’,’n’</span></span></span> <span class="cmr-12">then </span><span class="cmmi-12">op</span><span class="cmr-12">(</span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmr-8">1</span></sup><span class="cmr-12">) = </span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmr-8">1</span></sup><span class="cmr-12">; if </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">trans</span></span></span> <span class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">’T’,’t’</span></span></span> <span class="cmr-12">then </span><span class="cmmi-12">op</span><span class="cmr-12">(</span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmr-8">1</span></sup><span class="cmr-12">) = </span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmmi-8">T</span> </sup> <span class="cmr-12">(transpose of </span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmr-8">1</span></sup><span class="cmr-12">); if </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">trans</span></span></span> <span class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">’C’,’c’</span></span></span> <span class="cmr-12">then</span> <span class="cmmi-12">op</span><span class="cmr-12">(</span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmr-8">1</span></sup><span class="cmr-12">) = </span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmmi-8">C</span></sup> <span class="cmr-12">(conjugate transpose of </span><span class="cmmi-12">B</span><sup><span class="cmsy-8">-</span><span class="cmr-8">1</span></sup><span class="cmr-12">).</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:wrap; text-align:left;" id="TBL-14-11-1" class="td11"><!--l. 838--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">work</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-11-2" class="td11"><!--l. 838--><p class="noindent" ><span class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span></span></span><span class="cmti-12">kind</span><span class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">),</span><span class="cmtt-12"> dimension(:),</span><span class="cmtt-12"> optional,</span><span class="cmtt-12"> target</span></span></span><span class="cmr-12">.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:wrap; text-align:left;" id="TBL-14-12-1" class="td11"><!--l. 839--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-12-2" class="td11"><!--l. 839--><p class="noindent" ><span class="cmr-12">Workspace. Its size should be at least </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">4</span><span class="cmtt-12"> *</span><span class="cmtt-12"> psb_cd_get_local_</span></span></span> <span class="obeylines-h"><span class="verb"><span class="cmtt-12">cols(desc_a)</span></span></span> <span class="cmr-12">(see the PSBLAS User’s Guide). Note that </span><span class="cmti-12">type</span> <span class="cmr-12">and </span><span class="cmti-12">kind</span><span class="cmti-12">_parameter </span><span class="cmr-12">must be chosen according to the real/complex,</span> <span class="cmr-12">single/double precision version of MLD2P4 under use.</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:wrap; text-align:left;" id="TBL-14-13-1" class="td11"> </td> </tr></table></div> <!--l. 846--><p class="indent" > <span class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span> <span class="cmr-12">invoked as follows:</span> <div class="center" > <!--l. 849--><p class="noindent" > <!--l. 850--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="cmtt-12">call</span><span class="cmtt-12"> mld_precaply(p,what,val,info)</span></span></span></div> <!--l. 855--><div class="crosslinks"><p class="noindent"><span class="cmr-12">[</span><a href="userhtmlsu16.html" ><span class="cmr-12">next</span></a><span class="cmr-12">] [</span><a href="userhtmlsu14.html" ><span class="cmr-12">prev</span></a><span class="cmr-12">] [</span><a href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span class="cmr-12">prev-tail</span></a><span class="cmr-12">] [</span><a href="userhtmlsu15.html" ><span class="cmr-12">front</span></a><span class="cmr-12">] [</span><a href="userhtmlse6.html#userhtmlsu15.html" ><span class="cmr-12">up</span></a><span class="cmr-12">] </span></p></div> <!--l. 855--><p class="indent" > <a id="tailuserhtmlsu15.html"></a> </body></html>