From 5473b6e783d3beb351470a085c1bbcbacec7e2c5 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sat, 8 Apr 2017 11:26:15 +0000 Subject: [PATCH] psblas3: docs/html/footnode.html docs/html/img101.png docs/html/img103.png docs/html/img104.png docs/html/img108.png docs/html/img112.png docs/html/img129.png docs/html/img13.png docs/html/img133.png docs/html/img136.png docs/html/img138.png docs/html/img140.png docs/html/img145.png docs/html/img147.png docs/html/img148.png docs/html/img149.png docs/html/img15.png docs/html/img150.png docs/html/img151.png docs/html/img152.png docs/html/img153.png docs/html/img156.png docs/html/img157.png docs/html/img158.png docs/html/img159.png docs/html/img16.png docs/html/img160.png docs/html/img161.png docs/html/img162.png docs/html/img163.png docs/html/img164.png docs/html/img165.png docs/html/img166.png docs/html/img20.png docs/html/img22.png docs/html/img25.png docs/html/img26.png docs/html/img28.png docs/html/img31.png docs/html/img32.png docs/html/img35.png docs/html/img37.png docs/html/img40.png docs/html/img41.png docs/html/img42.png docs/html/img43.png docs/html/img45.png docs/html/img49.png docs/html/img53.png docs/html/img56.png docs/html/img58.png docs/html/img63.png docs/html/img68.png docs/html/img73.png docs/html/img75.png docs/html/img79.png docs/html/img8.png docs/html/img80.png docs/html/img81.png docs/html/img86.png docs/html/img89.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/node120.html docs/html/node121.html docs/html/node122.html docs/html/node123.html docs/html/node124.html docs/html/node125.html docs/html/node126.html docs/html/node127.html docs/html/node128.html docs/html/node129.html docs/html/node13.html docs/html/node130.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.html docs/psblas-3.5.pdf docs/src/Makefile docs/src/precs.tex prec/psb_c_base_prec_mod.f90 prec/psb_c_bjacprec.f90 prec/psb_c_diagprec.f90 prec/psb_c_nullprec.f90 prec/psb_c_prec_type.f90 prec/psb_d_base_prec_mod.f90 prec/psb_d_bjacprec.f90 prec/psb_d_diagprec.f90 prec/psb_d_nullprec.f90 prec/psb_d_prec_type.f90 prec/psb_s_base_prec_mod.f90 prec/psb_s_bjacprec.f90 prec/psb_s_diagprec.f90 prec/psb_s_nullprec.f90 prec/psb_s_prec_type.f90 prec/psb_z_base_prec_mod.f90 prec/psb_z_bjacprec.f90 prec/psb_z_diagprec.f90 prec/psb_z_nullprec.f90 prec/psb_z_prec_type.f90 Cosmetic changes to prec%descr Fix docs. --- docs/html/footnode.html | 8 +++---- docs/html/img101.png | Bin 227 -> 221 bytes docs/html/img103.png | Bin 258 -> 258 bytes docs/html/img104.png | Bin 193 -> 184 bytes docs/html/img108.png | Bin 255 -> 251 bytes docs/html/img112.png | Bin 276 -> 222 bytes docs/html/img129.png | Bin 231 -> 223 bytes docs/html/img13.png | Bin 3169 -> 2948 bytes docs/html/img133.png | Bin 210 -> 208 bytes docs/html/img136.png | Bin 276 -> 246 bytes docs/html/img138.png | Bin 267 -> 259 bytes docs/html/img140.png | Bin 239 -> 237 bytes docs/html/img145.png | Bin 762 -> 710 bytes docs/html/img147.png | Bin 867 -> 848 bytes docs/html/img148.png | Bin 1169 -> 1036 bytes docs/html/img149.png | Bin 1357 -> 1196 bytes docs/html/img15.png | Bin 230 -> 218 bytes docs/html/img150.png | Bin 1022 -> 931 bytes docs/html/img151.png | Bin 1106 -> 1001 bytes docs/html/img152.png | Bin 1196 -> 1038 bytes docs/html/img153.png | Bin 1136 -> 1009 bytes docs/html/img156.png | Bin 916 -> 262 bytes docs/html/img157.png | Bin 675 -> 916 bytes docs/html/img158.png | Bin 664 -> 675 bytes docs/html/img159.png | Bin 234 -> 591 bytes docs/html/img16.png | Bin 196 -> 187 bytes docs/html/img160.png | Bin 430 -> 210 bytes docs/html/img161.png | Bin 2413 -> 385 bytes docs/html/img162.png | Bin 451 -> 2413 bytes docs/html/img163.png | Bin 500 -> 431 bytes docs/html/img164.png | Bin 412 -> 500 bytes docs/html/img165.png | Bin 356 -> 412 bytes docs/html/img166.png | Bin 379 -> 356 bytes docs/html/img20.png | Bin 184 -> 179 bytes docs/html/img22.png | Bin 201 -> 185 bytes docs/html/img25.png | Bin 464 -> 437 bytes docs/html/img26.png | Bin 266 -> 259 bytes docs/html/img28.png | Bin 247 -> 238 bytes docs/html/img31.png | Bin 310 -> 294 bytes docs/html/img32.png | Bin 791 -> 724 bytes docs/html/img35.png | Bin 309 -> 309 bytes docs/html/img37.png | Bin 907 -> 793 bytes docs/html/img40.png | Bin 325 -> 316 bytes docs/html/img41.png | Bin 649 -> 574 bytes docs/html/img42.png | Bin 462 -> 405 bytes docs/html/img43.png | Bin 486 -> 440 bytes docs/html/img45.png | Bin 573 -> 522 bytes docs/html/img49.png | Bin 414 -> 393 bytes docs/html/img53.png | Bin 425 -> 412 bytes docs/html/img56.png | Bin 1890 -> 1262 bytes docs/html/img58.png | Bin 2971 -> 2637 bytes docs/html/img63.png | Bin 2387 -> 1640 bytes docs/html/img68.png | Bin 5388 -> 4873 bytes docs/html/img73.png | Bin 362 -> 333 bytes docs/html/img75.png | Bin 2449 -> 1218 bytes docs/html/img79.png | Bin 791 -> 740 bytes docs/html/img8.png | Bin 230 -> 222 bytes docs/html/img80.png | Bin 369 -> 344 bytes docs/html/img81.png | Bin 1415 -> 1316 bytes docs/html/img86.png | Bin 186 -> 186 bytes docs/html/img89.png | Bin 218 -> 213 bytes docs/html/index.html | 8 ++++--- docs/html/node1.html | 8 ++++--- docs/html/node10.html | 7 +++--- docs/html/node100.html | 4 ++-- docs/html/node101.html | 4 ++-- docs/html/node102.html | 4 ++-- docs/html/node103.html | 8 +++---- docs/html/node104.html | 4 ++-- docs/html/node105.html | 4 ++-- docs/html/node106.html | 4 ++-- docs/html/node107.html | 4 ++-- docs/html/node108.html | 4 ++-- docs/html/node109.html | 4 ++-- docs/html/node11.html | 4 ++-- docs/html/node110.html | 4 ++-- docs/html/node111.html | 4 ++-- docs/html/node112.html | 4 ++-- docs/html/node113.html | 10 ++++---- docs/html/node114.html | 10 ++++---- docs/html/node115.html | 6 ++--- docs/html/node116.html | 4 ++-- docs/html/node117.html | 6 ++--- docs/html/node118.html | 6 ++--- docs/html/node119.html | 6 ++--- docs/html/node12.html | 4 ++-- docs/html/node120.html | 6 ++--- docs/html/node121.html | 6 ++--- docs/html/node122.html | 6 ++--- docs/html/node123.html | 4 ++-- docs/html/node124.html | 7 +++--- docs/html/node125.html | 4 ++-- docs/html/node126.html | 4 ++-- docs/html/node127.html | 28 ++++++++++++++++++---- docs/html/node128.html | 4 ++-- docs/html/node129.html | 7 +++--- docs/html/node13.html | 4 ++-- docs/html/node130.html | 4 ++-- docs/html/node14.html | 4 ++-- docs/html/node15.html | 4 ++-- docs/html/node16.html | 4 ++-- docs/html/node17.html | 4 ++-- docs/html/node18.html | 4 ++-- docs/html/node19.html | 4 ++-- docs/html/node2.html | 4 ++-- docs/html/node20.html | 4 ++-- docs/html/node21.html | 4 ++-- docs/html/node22.html | 7 +++--- docs/html/node23.html | 4 ++-- docs/html/node24.html | 4 ++-- docs/html/node25.html | 4 ++-- docs/html/node26.html | 4 ++-- docs/html/node27.html | 4 ++-- docs/html/node28.html | 4 ++-- docs/html/node29.html | 4 ++-- docs/html/node3.html | 8 +++---- docs/html/node30.html | 6 ++--- docs/html/node31.html | 6 ++--- docs/html/node32.html | 4 ++-- docs/html/node33.html | 4 ++-- docs/html/node34.html | 4 ++-- docs/html/node35.html | 4 ++-- docs/html/node36.html | 4 ++-- docs/html/node37.html | 4 ++-- docs/html/node38.html | 4 ++-- docs/html/node39.html | 4 ++-- docs/html/node4.html | 8 +++---- docs/html/node40.html | 4 ++-- docs/html/node41.html | 4 ++-- docs/html/node42.html | 7 +++--- docs/html/node43.html | 4 ++-- docs/html/node44.html | 4 ++-- docs/html/node45.html | 4 ++-- docs/html/node46.html | 4 ++-- docs/html/node47.html | 4 ++-- docs/html/node48.html | 4 ++-- docs/html/node49.html | 7 +++--- docs/html/node5.html | 4 ++-- docs/html/node50.html | 4 ++-- docs/html/node51.html | 4 ++-- docs/html/node52.html | 19 +++++++-------- docs/html/node53.html | 27 ++++++++++----------- docs/html/node54.html | 24 +++++++++---------- docs/html/node55.html | 23 +++++++----------- docs/html/node56.html | 16 ++++++------- docs/html/node57.html | 19 +++++++-------- docs/html/node58.html | 25 ++++++++++---------- docs/html/node59.html | 21 +++++++---------- docs/html/node6.html | 14 +++++------ docs/html/node60.html | 17 +++++++------- docs/html/node61.html | 6 ++--- docs/html/node62.html | 6 ++--- docs/html/node63.html | 25 +++++++++----------- docs/html/node64.html | 27 ++++++++++----------- docs/html/node65.html | 7 +++--- docs/html/node66.html | 22 +++++++++--------- docs/html/node67.html | 22 +++++++++--------- docs/html/node68.html | 6 ++--- docs/html/node69.html | 10 ++++---- docs/html/node7.html | 4 ++-- docs/html/node70.html | 4 ++-- docs/html/node71.html | 8 +++---- docs/html/node72.html | 16 ++++++------- docs/html/node73.html | 4 ++-- docs/html/node74.html | 4 ++-- docs/html/node75.html | 4 ++-- docs/html/node76.html | 4 ++-- docs/html/node77.html | 6 ++--- docs/html/node78.html | 12 +++++----- docs/html/node79.html | 4 ++-- docs/html/node8.html | 4 ++-- docs/html/node80.html | 4 ++-- docs/html/node81.html | 5 ++-- docs/html/node82.html | 8 +++---- docs/html/node83.html | 8 +++---- docs/html/node84.html | 6 ++--- docs/html/node85.html | 4 ++-- docs/html/node86.html | 4 ++-- docs/html/node87.html | 8 +++---- docs/html/node88.html | 8 +++---- docs/html/node89.html | 6 ++--- docs/html/node9.html | 4 ++-- docs/html/node90.html | 6 ++--- docs/html/node91.html | 6 ++--- docs/html/node92.html | 6 ++--- docs/html/node93.html | 4 ++-- docs/html/node94.html | 4 ++-- docs/html/node95.html | 8 +++---- docs/html/node96.html | 4 ++-- docs/html/node97.html | 10 ++++---- docs/html/node98.html | 4 ++-- docs/html/node99.html | 4 ++-- docs/html/userhtml.html | 8 ++++--- docs/psblas-3.5.pdf | 44 +++++++++++++++++++---------------- docs/src/Makefile | 2 +- docs/src/precs.tex | 13 ++++++++--- prec/psb_c_base_prec_mod.f90 | 27 ++++++++++++++++++++- prec/psb_c_bjacprec.f90 | 21 ++++++++++++----- prec/psb_c_diagprec.f90 | 19 +++++++++++---- prec/psb_c_nullprec.f90 | 20 ++++++++++++---- prec/psb_c_prec_type.f90 | 5 ++-- prec/psb_d_base_prec_mod.f90 | 27 ++++++++++++++++++++- prec/psb_d_bjacprec.f90 | 21 ++++++++++++----- prec/psb_d_diagprec.f90 | 19 +++++++++++---- prec/psb_d_nullprec.f90 | 20 ++++++++++++---- prec/psb_d_prec_type.f90 | 5 ++-- prec/psb_s_base_prec_mod.f90 | 27 ++++++++++++++++++++- prec/psb_s_bjacprec.f90 | 21 ++++++++++++----- prec/psb_s_diagprec.f90 | 19 +++++++++++---- prec/psb_s_nullprec.f90 | 20 ++++++++++++---- prec/psb_s_prec_type.f90 | 5 ++-- prec/psb_z_base_prec_mod.f90 | 27 ++++++++++++++++++++- prec/psb_z_bjacprec.f90 | 21 ++++++++++++----- prec/psb_z_diagprec.f90 | 19 +++++++++++---- prec/psb_z_nullprec.f90 | 20 ++++++++++++---- prec/psb_z_prec_type.f90 | 5 ++-- 216 files changed, 808 insertions(+), 574 deletions(-) diff --git a/docs/html/footnode.html b/docs/html/footnode.html index b94373fd..086fb082 100644 --- a/docs/html/footnode.html +++ b/docs/html/footnode.html @@ -1,6 +1,6 @@ - diff --git a/docs/html/node1.html b/docs/html/node1.html index d37d1c64..aa41f85b 100644 --- a/docs/html/node1.html +++ b/docs/html/node1.html @@ -1,6 +1,6 @@ - \begin{displaymath}dot \leftarrow x^H y\end{displaymath}

-

 psb_gedot(x, y, desc_a, info)
@@ -124,10 +123,10 @@ Data types
 
$dot$, $x$,
x
the local portion of global dense matrix $x$.
@@ -178,7 +177,7 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 2. The rank of $x$ must be the same of 2. The rank of $y$ must be the same of $x$.
@@ -218,7 +217,6 @@ Type: required Intent: in.
Specified as: an object of type descdatapsb_desc_type. -

On Return
@@ -226,7 +224,7 @@ Specified as: an object of type descdatapsb_desc_type.
Function value
is the dot product of subvectors $x$ and out. An integer value; 0 means no error has been detected.
-


diff --git a/docs/html/node54.html b/docs/html/node54.html index fbf178e4..53c60c62 100644 --- a/docs/html/node54.html +++ b/docs/html/node54.html @@ -1,6 +1,6 @@ - diff --git a/docs/html/node56.html b/docs/html/node56.html index cddeff04..3c6b12b0 100644 --- a/docs/html/node56.html +++ b/docs/html/node56.html @@ -1,6 +1,6 @@ - \begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath} @@ -92,11 +92,11 @@ Data types
@@ -135,7 +135,7 @@ Data types
x
the local portion of global dense matrix $x$.
@@ -165,7 +165,7 @@ Specified as: an object of type descdatapsb_desc_type.
res
is the infinity norm of the columns of $x$.
diff --git a/docs/html/node57.html b/docs/html/node57.html index 4665c65e..53f40a07 100644 --- a/docs/html/node57.html +++ b/docs/html/node57.html @@ -1,6 +1,6 @@ - \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: @@ -102,7 +102,7 @@ res(i) \leftarrow \|x_i\|

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

@@ -114,7 +114,7 @@ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1 --> \begin{displaymath}res(i) \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath} @@ -136,11 +136,11 @@ Data types
$res$ $x$ Subroutine
@@ -179,10 +179,9 @@ Data types
x
the local portion of global dense matrix $x$. -
Scope: local
@@ -212,7 +211,7 @@ Specified as: an object of type descdatapsb_desc_type.
res
contains the 1-norm of (the columns of) $x$.
diff --git a/docs/html/node59.html b/docs/html/node59.html index a22b3734..3c747c6b 100644 --- a/docs/html/node59.html +++ b/docs/html/node59.html @@ -1,6 +1,6 @@ - \begin{displaymath}res(i) \leftarrow \Vert x(:,i)\Vert _2 \end{displaymath} @@ -92,11 +92,11 @@ Data types
$res$ $x$ Subroutine
@@ -135,10 +135,9 @@ Data types
x
the local portion of global dense matrix $x$. -
Scope: local
@@ -168,7 +167,7 @@ Specified as: an object of type descdatapsb_desc_type.
res
contains the 1-norm of (the columns of) $x$.
diff --git a/docs/html/node61.html b/docs/html/node61.html index 7a7d040b..b9707887 100644 --- a/docs/html/node61.html +++ b/docs/html/node61.html @@ -1,6 +1,6 @@ - \begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath} diff --git a/docs/html/node62.html b/docs/html/node62.html index bb9f341a..cf8550f7 100644 --- a/docs/html/node62.html +++ b/docs/html/node62.html @@ -1,6 +1,6 @@ - \begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath} diff --git a/docs/html/node63.html b/docs/html/node63.html index ecc265dd..1c7c14b5 100644 --- a/docs/html/node63.html +++ b/docs/html/node63.html @@ -1,6 +1,6 @@ - \begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath} @@ -99,7 +99,7 @@ process $i$.
$scatter$
is the scatter function. @@ -146,7 +146,7 @@ Data types


\begin{lstlisting}
 call psb_scatter(glob_x, loc_x, desc_a, info, root, mold)
diff --git a/docs/html/node7.html b/docs/html/node7.html
index 5e6419ac..88b2e9b2 100644
--- a/docs/html/node7.html
+++ b/docs/html/node7.html
@@ -1,6 +1,6 @@
 <!DOCTYPE HTML PUBLIC - diff --git a/docs/psblas-3.5.pdf b/docs/psblas-3.5.pdf index 03645c0d..ac39e96e 100644 --- a/docs/psblas-3.5.pdf +++ b/docs/psblas-3.5.pdf @@ -21199,7 +21199,7 @@ endstream endobj 1708 0 obj << -/Length 1822 +/Length 2936 >> stream 0 g 0 G @@ -21208,7 +21208,7 @@ BT /F16 11.9552 Tf 150.705 706.129 Td [(descr)-375(|)-375(Prin)31(ts)-375(a)-375(description)-375(of)-375(curren)31(t)-375(preconditioner)]TJ 0 g 0 G 0 g 0 G -/F30 9.9626 Tf 0 -18.389 Td [(call)-525(prec%descr\050\051)]TJ 0 -11.956 Td [(call)-525(prec%descr\050iout\051)]TJ +/F30 9.9626 Tf 0 -18.389 Td [(call)-525(prec%descr\050\051)]TJ 0 -11.956 Td [(call)-525(prec%descr\050iout,)-525(root\051)]TJ 0 g 0 G /F27 9.9626 Tf 0 -21.917 Td [(T)32(yp)-32(e:)]TJ 0 g 0 G @@ -21241,9 +21241,13 @@ BT 0 g 0 G /F27 9.9626 Tf -287.509 -19.925 Td [(iout)]TJ 0 g 0 G -/F8 9.9626 Tf 24.713 0 Td [(output)-333(unit.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 89.94 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -89.747 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optiona)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(n)27(um)28(b)-28(er.)]TJ +/F8 9.9626 Tf 24.713 0 Td [(output)-333(unit.)-444(Scop)-28(e:)]TJ/F27 9.9626 Tf 89.94 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -89.747 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.548 0 Td [(.)]TJ -43.034 -11.955 Td [(Sp)-28(eci\014ed)-333(as:)-445(an)-333(in)28(teger)-333(n)27(um)28(b)-28(er.)-444(Default:)-444(default)-334(outpu)1(t)-334(unit.)]TJ 0 g 0 G - 139.477 -431.922 Td [(132)]TJ +/F27 9.9626 Tf -24.906 -19.926 Td [(ro)-32(ot)]TJ +0 g 0 G +/F8 9.9626 Tf 25.93 0 Td [(Pro)-28(cess)-333(from)-334(whic)28(h)-333(to)-333(prin)28(t)-334(Scop)-28(e:)]TJ/F27 9.9626 Tf 157.244 0 Td [(lo)-32(cal)]TJ/F8 9.9626 Tf -158.268 -11.955 Td [(T)28(yp)-28(e:)]TJ/F27 9.9626 Tf 29.612 0 Td [(optional)]TJ/F8 9.9626 Tf -29.612 -11.955 Td [(In)28(ten)28(t:)]TJ/F27 9.9626 Tf 33.486 0 Td [(in)]TJ/F8 9.9626 Tf 9.547 0 Td [(.)]TJ -43.033 -11.955 Td [(Sp)-28(eci\014ed)-478(as:)-733(an)-478(in)28(teger)-478(n)28(um)27(b)-27(er)-478(b)-28(et)28(w)28(een)-478(0)-478(and)]TJ/F11 9.9626 Tf 220.073 0 Td [(np)]TJ/F14 9.9626 Tf 14.166 0 Td [(\000)]TJ/F8 9.9626 Tf 10.922 0 Td [(1,)-514(in)-478(whic)28(h)-478(case)]TJ -245.161 -11.955 Td [(the)-410(sp)-28(eci\014ed)-410(pro)-28(cess)-410(will)-411(pri)1(n)27(t)-410(the)-410(description,)-429(or)]TJ/F14 9.9626 Tf 225 0 Td [(\000)]TJ/F8 9.9626 Tf 7.749 0 Td [(1,)-429(in)-411(whic)28(h)-410(case)-410(all)]TJ -232.749 -11.955 Td [(pro)-28(cesses)-333(will)-334(prin)28(t.)-444(Default:)-445(0.)]TJ +0 g 0 G + 139.477 -352.221 Td [(132)]TJ 0 g 0 G ET @@ -21810,7 +21814,7 @@ endobj /Type /ObjStm /N 100 /First 969 -/Length 10842 +/Length 10868 >> stream 1652 0 1650 139 1654 283 493 342 1655 400 1656 459 1651 518 1659 624 1661 742 497 800 @@ -21818,11 +21822,11 @@ stream 1672 1702 1674 1820 505 1878 1675 1935 1676 1993 1671 2051 1679 2157 1681 2275 509 2334 1678 2392 1685 2498 1682 2646 1683 2793 1687 2943 513 3001 1688 3058 1684 3116 1694 3273 1689 3439 1690 3583 1691 3728 1692 3875 1696 4022 517 4081 1693 4139 1702 4245 1697 4411 1698 4557 1699 4700 1700 4847 -1704 4991 521 5049 1701 5106 1707 5212 1705 5351 1709 5497 525 5556 1706 5614 1711 5720 1713 5838 -529 5896 1710 5953 1718 6059 1715 6207 1716 6353 1720 6500 533 6559 1717 6617 1722 6723 1724 6841 -537 6899 1721 6956 1729 7049 1725 7197 1726 7346 1731 7490 541 7549 1732 7607 1733 7666 1734 7725 -1735 7784 1728 7842 1741 8039 1727 8205 1737 8352 1738 8495 1739 8639 1743 8786 1740 8844 1746 8963 -1744 9102 1748 9246 1745 9305 1750 9411 1752 9529 1753 9587 729 9645 1754 9702 780 9759 779 9816 +1704 4991 521 5049 1701 5106 1707 5212 1705 5351 1709 5497 525 5556 1706 5614 1711 5746 1713 5864 +529 5922 1710 5979 1718 6085 1715 6233 1716 6379 1720 6526 533 6585 1717 6643 1722 6749 1724 6867 +537 6925 1721 6982 1729 7075 1725 7223 1726 7372 1731 7516 541 7575 1732 7633 1733 7692 1734 7751 +1735 7810 1728 7868 1741 8065 1727 8231 1737 8378 1738 8521 1739 8665 1743 8812 1740 8870 1746 8989 +1744 9128 1748 9272 1745 9331 1750 9437 1752 9555 1753 9613 729 9671 1754 9728 780 9785 779 9842 % 1652 0 obj << /Type /Page @@ -22155,7 +22159,7 @@ stream >> % 1706 0 obj << -/Font << /F16 550 0 R /F30 759 0 R /F27 552 0 R /F8 553 0 R >> +/Font << /F16 550 0 R /F30 759 0 R /F27 552 0 R /F8 553 0 R /F11 745 0 R /F14 762 0 R >> /ProcSet [ /PDF /Text ] >> % 1711 0 obj @@ -26962,9 +26966,9 @@ endstream endobj 1936 0 obj << - /Title (Parallel Sparse BLAS V. 3.5.0) /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 9755 2016-05-25 10:15:57Z sfilippo $) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.17)/Keywords() -/CreationDate (D:20170407152605+01'00') -/ModDate (D:20170407152605+01'00') + /Title (Parallel Sparse BLAS V. 3.5.0) /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 10516 2017-04-07 15:20:39Z sfilippo $) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.17)/Keywords() +/CreationDate (D:20170408102502+01'00') +/ModDate (D:20170408102502+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) >> @@ -27236,7 +27240,7 @@ endobj /W [1 3 1] /Root 1935 0 R /Info 1936 0 R -/ID [ ] +/ID [<32C173B60CAAA4156F1063D2894312EB> <32C173B60CAAA4156F1063D2894312EB>] /Length 9690 >> stream @@ -27272,12 +27276,12 @@ w gSUV]X Y[\\c^ O_ab 4   I  -  ^  s ]789 9 !"#$%&'()*+,-./0123456?: b;=>E@ ,ACDKF GIJQL }MOPUR S^W\V KXZ[^c] 2_abyyy .*yyy 4cy y <yy -y yyy  Kcyyyyy [yyy_yy ikyyy y$y m8y!y#y&y'y(y)y,y%  y*y.y/y0y1y4y- y2y6y9y5 y7y=y: y;`y?y@yCy> :yAyGyD !yEyIyJySyQyH ʴyKyMyNyOyP=yTyUyVyXyR \yWyZy\yY Ey[y] y^y_yaa>  _ - !"#$ k% &'8i(y)*+f,C-b,.(/î0t1+2H345`6bc     "(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c`````````` ` -` ` ` ``````````````````` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/E +  ^  s ]789 9 !"#$%&'()*+,-./0123456?: b;=>E@ ,ACDKF GIJQL }MOPUR S^W\V KXZ[^c] 2_abyyy .*yyy 8y y <yy +y yyy  Kcyyyyy [yyy_yy ikyyy y$y m8y!y#y&y'y(y)y,y%  y*y.y/y0y1y4y- y2y6y9y5 y7y=y: zy;`y?y@yCy> yAyGyD {yEyIyJySyQyH yKyMyNyOyP=yTyUyVyXyR yWyZy\yY y[y] y^y_yaaB  c + !"#$ o% ?&V'<(~)*u+,G-f./"01/2M434n56bc    | "(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c`.````````` ` +` ` ` ``````````````````` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/ endstream endobj startxref -1184905 +1186046 %%EOF diff --git a/docs/src/Makefile b/docs/src/Makefile index 1a725cae..54707fbc 100644 --- a/docs/src/Makefile +++ b/docs/src/Makefile @@ -138,7 +138,7 @@ PDF = $(join $(BASEFILE),.pdf) PS = $(join $(BASEFILE),.ps) GXS = $(join $(BASEFILE),.gxs) GLX = $(join $(BASEFILE),.glx) -TARGETPDF= ../psblas-3.4.pdf +TARGETPDF= ../psblas-3.5.pdf BASEHTML = $(patsubst %.tex,%,$(HTMLFILE)) HTML = $(join $(HTMLFILE),.html) HTMLDIR = ../html diff --git a/docs/src/precs.tex b/docs/src/precs.tex index d8d58221..7d64f8e9 100644 --- a/docs/src/precs.tex +++ b/docs/src/precs.tex @@ -200,7 +200,7 @@ An integer value; 0 means no error has been detected. \begin{verbatim} call prec%descr() -call prec%descr(iout) +call prec%descr(iout, root) \end{verbatim} \begin{description} @@ -213,9 +213,16 @@ Intent: {\bf in}.\\ Specified as: a preconditioner data structure \precdata. \item[iout] output unit. Scope: {\bf local} \\ -Type: {\bf optiona}\\ +Type: {\bf optional}\\ +Intent: {\bf in}.\\ +Specified as: an integer number. Default: default output unit. +\item[root] Process from which to print +Scope: {\bf local} \\ +Type: {\bf optional}\\ Intent: {\bf in}.\\ -Specified as: an integer number. +Specified as: an integer number between 0 and $np-1$, in which case +the specified process will print the description, or $-1$, in which case +all processes will print. Default: 0. \end{description} diff --git a/prec/psb_c_base_prec_mod.f90 b/prec/psb_c_base_prec_mod.f90 index 25731b81..624b9c7c 100644 --- a/prec/psb_c_base_prec_mod.f90 +++ b/prec/psb_c_base_prec_mod.f90 @@ -60,6 +60,7 @@ module psb_c_base_prec_mod generic, public :: apply => c_apply, c_apply_v generic, public :: build => precbld generic, public :: descr => precdescr + procedure, pass(prec) :: desc_prefix => psb_c_base_desc_prefix procedure(psb_c_base_precbld), pass(prec), deferred :: precbld procedure(psb_c_base_sizeof), pass(prec), deferred :: sizeof procedure(psb_c_base_precinit), pass(prec), deferred :: precinit @@ -156,7 +157,7 @@ module psb_c_base_prec_mod abstract interface - subroutine psb_c_base_precdescr(prec,iout) + subroutine psb_c_base_precdescr(prec,iout,root) import psb_ipk_, psb_spk_, psb_desc_type, psb_c_vect_type, & & psb_c_base_vect_type, psb_cspmat_type, psb_c_base_prec_type,& & psb_c_base_sparse_mat @@ -164,6 +165,7 @@ module psb_c_base_prec_mod class(psb_c_base_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_c_base_precdescr end interface @@ -289,4 +291,27 @@ contains end function psb_c_base_get_nzeros + function psb_c_base_desc_prefix(prec) result(res) + use psb_base_mod, only : psb_info, psb_root_ + implicit none + class(psb_c_base_prec_type), intent(in) :: prec + character(len=32) :: res + ! + character(len=32) :: frmtv + integer(psb_ipk_) :: ni, ictxt,iam,np + + ictxt = prec%ictxt + call psb_info(ictxt,iam,np) + + res = '' + if (iam /= psb_root_) then + ni = floor(log10(1.0*np)) + 1 + write(frmtv,'(a,i8.8,a)') '(a,i',ni,',a)' + write(res,frmtv) 'Process ',iam,': Preconditioner: ' + else + write(res,'(a)') 'Preconditioner: ' + end if + + end function psb_c_base_desc_prefix + end module psb_c_base_prec_mod diff --git a/prec/psb_c_bjacprec.f90 b/prec/psb_c_bjacprec.f90 index aac1b3c0..ceb60c61 100644 --- a/prec/psb_c_bjacprec.f90 +++ b/prec/psb_c_bjacprec.f90 @@ -133,17 +133,18 @@ module psb_c_bjacprec contains - subroutine psb_c_bjac_precdescr(prec,iout) + subroutine psb_c_bjac_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod implicit none class(psb_c_bjac_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info - character(len=20) :: name='c_bjac_precdescr' - integer(psb_ipk_) :: iout_, ictxt, iam, np + character(len=20) :: name='c_bjac_precdescr' + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -154,17 +155,25 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if if (.not.allocated(prec%iprcparm)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") goto 9999 end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) - - if (iam == psb_root_) & - & write(iout_,*) 'Block Jacobi with: ',& + if (root_ == -1) root_ = iam + + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'Block Jacobi with: ',& & fact_names(prec%iprcparm(psb_f_type_)) call psb_erractionrestore(err_act) diff --git a/prec/psb_c_diagprec.f90 b/prec/psb_c_diagprec.f90 index 3a1b5af9..a8267070 100644 --- a/prec/psb_c_diagprec.f90 +++ b/prec/psb_c_diagprec.f90 @@ -160,18 +160,18 @@ contains end subroutine psb_c_diag_precfree - subroutine psb_c_diag_precdescr(prec,iout) + subroutine psb_c_diag_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod Implicit None class(psb_c_diag_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info character(len=20) :: name='c_diag_precdescr' - - integer(psb_ipk_) :: iout_, ictxt, iam, np + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -182,11 +182,20 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) + + if (root_ == -1) root_ = iam - if (iam == psb_root_) & - & write(iout_,*) 'Diagonal scaling' + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'Diagonal scaling' call psb_erractionsave(err_act) diff --git a/prec/psb_c_nullprec.f90 b/prec/psb_c_nullprec.f90 index 59e71ce7..5304bff1 100644 --- a/prec/psb_c_nullprec.f90 +++ b/prec/psb_c_nullprec.f90 @@ -156,7 +156,7 @@ contains end subroutine psb_c_null_precfree - subroutine psb_c_null_precdescr(prec,iout) + subroutine psb_c_null_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod @@ -164,10 +164,13 @@ contains class(psb_c_null_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info character(len=20) :: name='c_null_precset' - integer(psb_ipk_) :: iout_, ictxt, iam, np + character(len=32) :: dprefix, frmtv + integer(psb_ipk_) :: ni + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -178,11 +181,20 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) + if (root_ == -1) root_ = iam + - if (iam == psb_root_) & - & write(iout_,*) 'No preconditioning' + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'No preconditioning' call psb_erractionrestore(err_act) return diff --git a/prec/psb_c_prec_type.f90 b/prec/psb_c_prec_type.f90 index 112acd8d..bace774a 100644 --- a/prec/psb_c_prec_type.f90 +++ b/prec/psb_c_prec_type.f90 @@ -148,11 +148,12 @@ module psb_c_prec_type contains - subroutine psb_cfile_prec_descr(prec,iout) + subroutine psb_cfile_prec_descr(prec,iout, root) use psb_base_mod implicit none class(psb_cprec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: iout_,info character(len=20) :: name='prec_descr' @@ -166,7 +167,7 @@ contains info = 1124 call psb_errpush(info,name,a_err="preconditioner") end if - call prec%prec%descr(iout) + call prec%prec%descr(iout=iout,root=root) end subroutine psb_cfile_prec_descr diff --git a/prec/psb_d_base_prec_mod.f90 b/prec/psb_d_base_prec_mod.f90 index 4bc18ec0..94550aa9 100644 --- a/prec/psb_d_base_prec_mod.f90 +++ b/prec/psb_d_base_prec_mod.f90 @@ -60,6 +60,7 @@ module psb_d_base_prec_mod generic, public :: apply => d_apply, d_apply_v generic, public :: build => precbld generic, public :: descr => precdescr + procedure, pass(prec) :: desc_prefix => psb_d_base_desc_prefix procedure(psb_d_base_precbld), pass(prec), deferred :: precbld procedure(psb_d_base_sizeof), pass(prec), deferred :: sizeof procedure(psb_d_base_precinit), pass(prec), deferred :: precinit @@ -156,7 +157,7 @@ module psb_d_base_prec_mod abstract interface - subroutine psb_d_base_precdescr(prec,iout) + subroutine psb_d_base_precdescr(prec,iout,root) import psb_ipk_, psb_dpk_, psb_desc_type, psb_d_vect_type, & & psb_d_base_vect_type, psb_dspmat_type, psb_d_base_prec_type,& & psb_d_base_sparse_mat @@ -164,6 +165,7 @@ module psb_d_base_prec_mod class(psb_d_base_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_d_base_precdescr end interface @@ -289,4 +291,27 @@ contains end function psb_d_base_get_nzeros + function psb_d_base_desc_prefix(prec) result(res) + use psb_base_mod, only : psb_info, psb_root_ + implicit none + class(psb_d_base_prec_type), intent(in) :: prec + character(len=32) :: res + ! + character(len=32) :: frmtv + integer(psb_ipk_) :: ni, ictxt,iam,np + + ictxt = prec%ictxt + call psb_info(ictxt,iam,np) + + res = '' + if (iam /= psb_root_) then + ni = floor(log10(1.0*np)) + 1 + write(frmtv,'(a,i8.8,a)') '(a,i',ni,',a)' + write(res,frmtv) 'Process ',iam,': Preconditioner: ' + else + write(res,'(a)') 'Preconditioner: ' + end if + + end function psb_d_base_desc_prefix + end module psb_d_base_prec_mod diff --git a/prec/psb_d_bjacprec.f90 b/prec/psb_d_bjacprec.f90 index de561415..ee2616c9 100644 --- a/prec/psb_d_bjacprec.f90 +++ b/prec/psb_d_bjacprec.f90 @@ -133,17 +133,18 @@ module psb_d_bjacprec contains - subroutine psb_d_bjac_precdescr(prec,iout) + subroutine psb_d_bjac_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod implicit none class(psb_d_bjac_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info - character(len=20) :: name='d_bjac_precdescr' - integer(psb_ipk_) :: iout_, ictxt, iam, np + character(len=20) :: name='d_bjac_precdescr' + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -154,17 +155,25 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if if (.not.allocated(prec%iprcparm)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") goto 9999 end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) - - if (iam == psb_root_) & - & write(iout_,*) 'Block Jacobi with: ',& + if (root_ == -1) root_ = iam + + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'Block Jacobi with: ',& & fact_names(prec%iprcparm(psb_f_type_)) call psb_erractionrestore(err_act) diff --git a/prec/psb_d_diagprec.f90 b/prec/psb_d_diagprec.f90 index 2e6ef92d..227d4a04 100644 --- a/prec/psb_d_diagprec.f90 +++ b/prec/psb_d_diagprec.f90 @@ -160,18 +160,18 @@ contains end subroutine psb_d_diag_precfree - subroutine psb_d_diag_precdescr(prec,iout) + subroutine psb_d_diag_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod Implicit None class(psb_d_diag_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info character(len=20) :: name='d_diag_precdescr' - - integer(psb_ipk_) :: iout_, ictxt, iam, np + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -182,11 +182,20 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) + + if (root_ == -1) root_ = iam - if (iam == psb_root_) & - & write(iout_,*) 'Diagonal scaling' + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'Diagonal scaling' call psb_erractionsave(err_act) diff --git a/prec/psb_d_nullprec.f90 b/prec/psb_d_nullprec.f90 index acb03ec7..f9a3589e 100644 --- a/prec/psb_d_nullprec.f90 +++ b/prec/psb_d_nullprec.f90 @@ -156,7 +156,7 @@ contains end subroutine psb_d_null_precfree - subroutine psb_d_null_precdescr(prec,iout) + subroutine psb_d_null_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod @@ -164,10 +164,13 @@ contains class(psb_d_null_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info character(len=20) :: name='d_null_precset' - integer(psb_ipk_) :: iout_, ictxt, iam, np + character(len=32) :: dprefix, frmtv + integer(psb_ipk_) :: ni + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -178,11 +181,20 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) + if (root_ == -1) root_ = iam + - if (iam == psb_root_) & - & write(iout_,*) 'No preconditioning' + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'No preconditioning' call psb_erractionrestore(err_act) return diff --git a/prec/psb_d_prec_type.f90 b/prec/psb_d_prec_type.f90 index eb0fa5c8..97ec74b1 100644 --- a/prec/psb_d_prec_type.f90 +++ b/prec/psb_d_prec_type.f90 @@ -148,11 +148,12 @@ module psb_d_prec_type contains - subroutine psb_dfile_prec_descr(prec,iout) + subroutine psb_dfile_prec_descr(prec,iout, root) use psb_base_mod implicit none class(psb_dprec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: iout_,info character(len=20) :: name='prec_descr' @@ -166,7 +167,7 @@ contains info = 1124 call psb_errpush(info,name,a_err="preconditioner") end if - call prec%prec%descr(iout) + call prec%prec%descr(iout=iout,root=root) end subroutine psb_dfile_prec_descr diff --git a/prec/psb_s_base_prec_mod.f90 b/prec/psb_s_base_prec_mod.f90 index 46ff49fd..6440f703 100644 --- a/prec/psb_s_base_prec_mod.f90 +++ b/prec/psb_s_base_prec_mod.f90 @@ -60,6 +60,7 @@ module psb_s_base_prec_mod generic, public :: apply => s_apply, s_apply_v generic, public :: build => precbld generic, public :: descr => precdescr + procedure, pass(prec) :: desc_prefix => psb_s_base_desc_prefix procedure(psb_s_base_precbld), pass(prec), deferred :: precbld procedure(psb_s_base_sizeof), pass(prec), deferred :: sizeof procedure(psb_s_base_precinit), pass(prec), deferred :: precinit @@ -156,7 +157,7 @@ module psb_s_base_prec_mod abstract interface - subroutine psb_s_base_precdescr(prec,iout) + subroutine psb_s_base_precdescr(prec,iout,root) import psb_ipk_, psb_spk_, psb_desc_type, psb_s_vect_type, & & psb_s_base_vect_type, psb_sspmat_type, psb_s_base_prec_type,& & psb_s_base_sparse_mat @@ -164,6 +165,7 @@ module psb_s_base_prec_mod class(psb_s_base_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_s_base_precdescr end interface @@ -289,4 +291,27 @@ contains end function psb_s_base_get_nzeros + function psb_s_base_desc_prefix(prec) result(res) + use psb_base_mod, only : psb_info, psb_root_ + implicit none + class(psb_s_base_prec_type), intent(in) :: prec + character(len=32) :: res + ! + character(len=32) :: frmtv + integer(psb_ipk_) :: ni, ictxt,iam,np + + ictxt = prec%ictxt + call psb_info(ictxt,iam,np) + + res = '' + if (iam /= psb_root_) then + ni = floor(log10(1.0*np)) + 1 + write(frmtv,'(a,i8.8,a)') '(a,i',ni,',a)' + write(res,frmtv) 'Process ',iam,': Preconditioner: ' + else + write(res,'(a)') 'Preconditioner: ' + end if + + end function psb_s_base_desc_prefix + end module psb_s_base_prec_mod diff --git a/prec/psb_s_bjacprec.f90 b/prec/psb_s_bjacprec.f90 index f07d023a..e8ec9b86 100644 --- a/prec/psb_s_bjacprec.f90 +++ b/prec/psb_s_bjacprec.f90 @@ -133,17 +133,18 @@ module psb_s_bjacprec contains - subroutine psb_s_bjac_precdescr(prec,iout) + subroutine psb_s_bjac_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod implicit none class(psb_s_bjac_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info - character(len=20) :: name='s_bjac_precdescr' - integer(psb_ipk_) :: iout_, ictxt, iam, np + character(len=20) :: name='s_bjac_precdescr' + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -154,17 +155,25 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if if (.not.allocated(prec%iprcparm)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") goto 9999 end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) - - if (iam == psb_root_) & - & write(iout_,*) 'Block Jacobi with: ',& + if (root_ == -1) root_ = iam + + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'Block Jacobi with: ',& & fact_names(prec%iprcparm(psb_f_type_)) call psb_erractionrestore(err_act) diff --git a/prec/psb_s_diagprec.f90 b/prec/psb_s_diagprec.f90 index a97e18d7..cf7c5991 100644 --- a/prec/psb_s_diagprec.f90 +++ b/prec/psb_s_diagprec.f90 @@ -160,18 +160,18 @@ contains end subroutine psb_s_diag_precfree - subroutine psb_s_diag_precdescr(prec,iout) + subroutine psb_s_diag_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod Implicit None class(psb_s_diag_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info character(len=20) :: name='s_diag_precdescr' - - integer(psb_ipk_) :: iout_, ictxt, iam, np + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -182,11 +182,20 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) + + if (root_ == -1) root_ = iam - if (iam == psb_root_) & - & write(iout_,*) 'Diagonal scaling' + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'Diagonal scaling' call psb_erractionsave(err_act) diff --git a/prec/psb_s_nullprec.f90 b/prec/psb_s_nullprec.f90 index 453b7716..8247573d 100644 --- a/prec/psb_s_nullprec.f90 +++ b/prec/psb_s_nullprec.f90 @@ -156,7 +156,7 @@ contains end subroutine psb_s_null_precfree - subroutine psb_s_null_precdescr(prec,iout) + subroutine psb_s_null_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod @@ -164,10 +164,13 @@ contains class(psb_s_null_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info character(len=20) :: name='s_null_precset' - integer(psb_ipk_) :: iout_, ictxt, iam, np + character(len=32) :: dprefix, frmtv + integer(psb_ipk_) :: ni + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -178,11 +181,20 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) + if (root_ == -1) root_ = iam + - if (iam == psb_root_) & - & write(iout_,*) 'No preconditioning' + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'No preconditioning' call psb_erractionrestore(err_act) return diff --git a/prec/psb_s_prec_type.f90 b/prec/psb_s_prec_type.f90 index ef4ffc21..957e6f17 100644 --- a/prec/psb_s_prec_type.f90 +++ b/prec/psb_s_prec_type.f90 @@ -148,11 +148,12 @@ module psb_s_prec_type contains - subroutine psb_sfile_prec_descr(prec,iout) + subroutine psb_sfile_prec_descr(prec,iout, root) use psb_base_mod implicit none class(psb_sprec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: iout_,info character(len=20) :: name='prec_descr' @@ -166,7 +167,7 @@ contains info = 1124 call psb_errpush(info,name,a_err="preconditioner") end if - call prec%prec%descr(iout) + call prec%prec%descr(iout=iout,root=root) end subroutine psb_sfile_prec_descr diff --git a/prec/psb_z_base_prec_mod.f90 b/prec/psb_z_base_prec_mod.f90 index 05e37358..3507f9dc 100644 --- a/prec/psb_z_base_prec_mod.f90 +++ b/prec/psb_z_base_prec_mod.f90 @@ -60,6 +60,7 @@ module psb_z_base_prec_mod generic, public :: apply => z_apply, z_apply_v generic, public :: build => precbld generic, public :: descr => precdescr + procedure, pass(prec) :: desc_prefix => psb_z_base_desc_prefix procedure(psb_z_base_precbld), pass(prec), deferred :: precbld procedure(psb_z_base_sizeof), pass(prec), deferred :: sizeof procedure(psb_z_base_precinit), pass(prec), deferred :: precinit @@ -156,7 +157,7 @@ module psb_z_base_prec_mod abstract interface - subroutine psb_z_base_precdescr(prec,iout) + subroutine psb_z_base_precdescr(prec,iout,root) import psb_ipk_, psb_dpk_, psb_desc_type, psb_z_vect_type, & & psb_z_base_vect_type, psb_zspmat_type, psb_z_base_prec_type,& & psb_z_base_sparse_mat @@ -164,6 +165,7 @@ module psb_z_base_prec_mod class(psb_z_base_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root end subroutine psb_z_base_precdescr end interface @@ -289,4 +291,27 @@ contains end function psb_z_base_get_nzeros + function psb_z_base_desc_prefix(prec) result(res) + use psb_base_mod, only : psb_info, psb_root_ + implicit none + class(psb_z_base_prec_type), intent(in) :: prec + character(len=32) :: res + ! + character(len=32) :: frmtv + integer(psb_ipk_) :: ni, ictxt,iam,np + + ictxt = prec%ictxt + call psb_info(ictxt,iam,np) + + res = '' + if (iam /= psb_root_) then + ni = floor(log10(1.0*np)) + 1 + write(frmtv,'(a,i8.8,a)') '(a,i',ni,',a)' + write(res,frmtv) 'Process ',iam,': Preconditioner: ' + else + write(res,'(a)') 'Preconditioner: ' + end if + + end function psb_z_base_desc_prefix + end module psb_z_base_prec_mod diff --git a/prec/psb_z_bjacprec.f90 b/prec/psb_z_bjacprec.f90 index 64ede43d..2c63b002 100644 --- a/prec/psb_z_bjacprec.f90 +++ b/prec/psb_z_bjacprec.f90 @@ -133,17 +133,18 @@ module psb_z_bjacprec contains - subroutine psb_z_bjac_precdescr(prec,iout) + subroutine psb_z_bjac_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod implicit none class(psb_z_bjac_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info - character(len=20) :: name='z_bjac_precdescr' - integer(psb_ipk_) :: iout_, ictxt, iam, np + character(len=20) :: name='z_bjac_precdescr' + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -154,17 +155,25 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if if (.not.allocated(prec%iprcparm)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") goto 9999 end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) - - if (iam == psb_root_) & - & write(iout_,*) 'Block Jacobi with: ',& + if (root_ == -1) root_ = iam + + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'Block Jacobi with: ',& & fact_names(prec%iprcparm(psb_f_type_)) call psb_erractionrestore(err_act) diff --git a/prec/psb_z_diagprec.f90 b/prec/psb_z_diagprec.f90 index db2569f0..7ddc168a 100644 --- a/prec/psb_z_diagprec.f90 +++ b/prec/psb_z_diagprec.f90 @@ -160,18 +160,18 @@ contains end subroutine psb_z_diag_precfree - subroutine psb_z_diag_precdescr(prec,iout) + subroutine psb_z_diag_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod Implicit None class(psb_z_diag_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info character(len=20) :: name='z_diag_precdescr' - - integer(psb_ipk_) :: iout_, ictxt, iam, np + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -182,11 +182,20 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) + + if (root_ == -1) root_ = iam - if (iam == psb_root_) & - & write(iout_,*) 'Diagonal scaling' + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'Diagonal scaling' call psb_erractionsave(err_act) diff --git a/prec/psb_z_nullprec.f90 b/prec/psb_z_nullprec.f90 index 7e69de01..d8c4f0ab 100644 --- a/prec/psb_z_nullprec.f90 +++ b/prec/psb_z_nullprec.f90 @@ -156,7 +156,7 @@ contains end subroutine psb_z_null_precfree - subroutine psb_z_null_precdescr(prec,iout) + subroutine psb_z_null_precdescr(prec,iout,root) use psb_penv_mod use psb_error_mod @@ -164,10 +164,13 @@ contains class(psb_z_null_prec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: err_act, nrow, info character(len=20) :: name='z_null_precset' - integer(psb_ipk_) :: iout_, ictxt, iam, np + character(len=32) :: dprefix, frmtv + integer(psb_ipk_) :: ni + integer(psb_ipk_) :: iout_, ictxt, iam, np, root_ call psb_erractionsave(err_act) @@ -178,11 +181,20 @@ contains else iout_ = 6 end if + if (present(root)) then + root_ = root + else + root_ = psb_root_ + end if + ictxt = prec%ictxt call psb_info(ictxt,iam,np) + if (root_ == -1) root_ = iam + - if (iam == psb_root_) & - & write(iout_,*) 'No preconditioning' + if (iam == root_) & + & write(iout_,*) trim(prec%desc_prefix()),' ',& + & 'No preconditioning' call psb_erractionrestore(err_act) return diff --git a/prec/psb_z_prec_type.f90 b/prec/psb_z_prec_type.f90 index 680c2a70..09141385 100644 --- a/prec/psb_z_prec_type.f90 +++ b/prec/psb_z_prec_type.f90 @@ -148,11 +148,12 @@ module psb_z_prec_type contains - subroutine psb_zfile_prec_descr(prec,iout) + subroutine psb_zfile_prec_descr(prec,iout, root) use psb_base_mod implicit none class(psb_zprec_type), intent(in) :: prec integer(psb_ipk_), intent(in), optional :: iout + integer(psb_ipk_), intent(in), optional :: root integer(psb_ipk_) :: iout_,info character(len=20) :: name='prec_descr' @@ -166,7 +167,7 @@ contains info = 1124 call psb_errpush(info,name,a_err="preconditioner") end if - call prec%prec%descr(iout) + call prec%prec%descr(iout=iout,root=root) end subroutine psb_zfile_prec_descr

$res$ $x$ Subroutine