base/modules/Makefile
 base/modules/psb_gen_block_map_mod.f90
 base/modules/psb_hash_map_mod.f90
 docs/html/footnode.html
 docs/html/img1.png
 docs/html/img10.png
 docs/html/img100.png
 docs/html/img101.png
 docs/html/img102.png
 docs/html/img103.png
 docs/html/img104.png
 docs/html/img105.png
 docs/html/img106.png
 docs/html/img107.png
 docs/html/img108.png
 docs/html/img109.png
 docs/html/img11.png
 docs/html/img110.png
 docs/html/img111.png
 docs/html/img112.png
 docs/html/img113.png
 docs/html/img114.png
 docs/html/img115.png
 docs/html/img116.png
 docs/html/img117.png
 docs/html/img118.png
 docs/html/img119.png
 docs/html/img12.png
 docs/html/img120.png
 docs/html/img121.png
 docs/html/img122.png
 docs/html/img123.png
 docs/html/img124.png
 docs/html/img125.png
 docs/html/img126.png
 docs/html/img127.png
 docs/html/img128.png
 docs/html/img129.png
 docs/html/img13.png
 docs/html/img130.png
 docs/html/img131.png
 docs/html/img132.png
 docs/html/img133.png
 docs/html/img134.png
 docs/html/img135.png
 docs/html/img136.png
 docs/html/img137.png
 docs/html/img138.png
 docs/html/img139.png
 docs/html/img14.png
 docs/html/img140.png
 docs/html/img141.png
 docs/html/img142.png
 docs/html/img143.png
 docs/html/img144.png
 docs/html/img145.png
 docs/html/img146.png
 docs/html/img147.png
 docs/html/img148.png
 docs/html/img15.png
 docs/html/img16.png
 docs/html/img17.png
 docs/html/img18.png
 docs/html/img2.png
 docs/html/img20.png
 docs/html/img22.png
 docs/html/img23.png
 docs/html/img24.png
 docs/html/img25.png
 docs/html/img26.png
 docs/html/img27.png
 docs/html/img28.png
 docs/html/img29.png
 docs/html/img3.png
 docs/html/img30.png
 docs/html/img31.png
 docs/html/img32.png
 docs/html/img33.png
 docs/html/img34.png
 docs/html/img35.png
 docs/html/img36.png
 docs/html/img37.png
 docs/html/img38.png
 docs/html/img39.png
 docs/html/img4.png
 docs/html/img40.png
 docs/html/img41.png
 docs/html/img42.png
 docs/html/img43.png
 docs/html/img44.png
 docs/html/img45.png
 docs/html/img46.png
 docs/html/img47.png
 docs/html/img48.png
 docs/html/img49.png
 docs/html/img5.png
 docs/html/img50.png
 docs/html/img51.png
 docs/html/img52.png
 docs/html/img53.png
 docs/html/img54.png
 docs/html/img55.png
 docs/html/img56.png
 docs/html/img57.png
 docs/html/img58.png
 docs/html/img59.png
 docs/html/img6.png
 docs/html/img60.png
 docs/html/img61.png
 docs/html/img62.png
 docs/html/img63.png
 docs/html/img64.png
 docs/html/img65.png
 docs/html/img66.png
 docs/html/img67.png
 docs/html/img68.png
 docs/html/img69.png
 docs/html/img7.png
 docs/html/img70.png
 docs/html/img71.png
 docs/html/img72.png
 docs/html/img73.png
 docs/html/img74.png
 docs/html/img75.png
 docs/html/img76.png
 docs/html/img77.png
 docs/html/img78.png
 docs/html/img79.png
 docs/html/img8.png
 docs/html/img80.png
 docs/html/img81.png
 docs/html/img82.png
 docs/html/img83.png
 docs/html/img84.png
 docs/html/img85.png
 docs/html/img86.png
 docs/html/img87.png
 docs/html/img88.png
 docs/html/img89.png
 docs/html/img9.png
 docs/html/img90.png
 docs/html/img91.png
 docs/html/img92.png
 docs/html/img93.png
 docs/html/img94.png
 docs/html/img95.png
 docs/html/img96.png
 docs/html/img97.png
 docs/html/img98.png
 docs/html/img99.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/node13.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.0.pdf
 docs/src/biblio.tex
 docs/src/datastruct.tex
 docs/src/intro.tex
 test/fileread/df_sample.f90
 test/fileread/runs/dfs.inp
 test/pargen/ppde.f90
 test/pargen/spde.f90

1. Worked on documentation.
2. Fixed performance problem with gen_block_map: changed to use a hash
internally. 
3. Changed ppde to implement a convection-diffusion problem with
centered differences.
This commit is contained in:
Salvatore Filippone
2012-02-11 11:57:43 +00:00
parent 52714393a0
commit b0e6f32827
279 changed files with 20418 additions and 20328 deletions
+144 -45
View File
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_global_cols -- Get number of global cols</TITLE>
<META NAME="description" CONTENT="get_global_cols -- Get number of global cols">
<TITLE>Sparse Matrix class</TITLE>
<META NAME="description" CONTENT="Sparse Matrix class">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@@ -18,80 +18,179 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node18.html">
<LINK REL="up" HREF="node15.html">
<LINK REL="next" HREF="node29.html">
<LINK REL="previous" HREF="node15.html">
<LINK REL="up" HREF="node8.html">
<LINK REL="next" HREF="node20.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html405"
<A NAME="tex2html432"
HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html401"
HREF="node15.html">
<A NAME="tex2html428"
HREF="node8.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html397"
<A NAME="tex2html422"
HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html403"
<A NAME="tex2html430"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html406"
HREF="node20.html">get_context Get communication context</A>
<B> Up:</B> <A NAME="tex2html402"
HREF="node15.html">Data structure query routines</A>
<B> Previous:</B> <A NAME="tex2html398"
HREF="node18.html">get_global_rows Get</A>
&nbsp; <B> <A NAME="tex2html404"
<B> Next:</B> <A NAME="tex2html433"
HREF="node20.html">Methods</A>
<B> Up:</B> <A NAME="tex2html429"
HREF="node8.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html423"
HREF="node18.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html431"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00045400000000000000">
get_global_cols -- Get number of global cols</A>
</H3>
<P>
<PRE>
nr = desc%get_global_cols()
</PRE>
<P>
<H2><A NAME="SECTION00043000000000000000"></A>
<A NAME="sec:spmat"></A>
<BR>
Sparse Matrix class
</H2>
The spdata<TT>psb_spmat_type</TT> class
contains all information about the local portion of the sparse matrix and
its storage mode. Its design is
based on the STATE design pattern&nbsp;[<A
HREF="node118.html#DesignPatterns">13</A>] as detailed
in&nbsp;[<A
HREF="node118.html#Sparse03">11</A>]; the type declaration is shown in
figure&nbsp;<A HREF="#fig:spmattype">4</A> where <code>T</code> is a placeholder for the
data type and precision variants
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
<DT><STRONG>S</STRONG></DT>
<DD>Single precision real;
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
<DT><STRONG>D</STRONG></DT>
<DD>Double precision real;
</DD>
<DT><STRONG>desc</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
<DT><STRONG>C</STRONG></DT>
<DD>Single precision complex;
</DD>
<DT><STRONG>Z</STRONG></DT>
<DD>Double precision complex.
</DD>
</DL>
The actual data is contained in the polymorphic component <code>a%a</code>; its
specific layout can be chosen dynamically among the predefined types,
or an entirely new storage layout can be implemented and passed to the
library at runtime via the <code>psb_spasb</code> routine.
<P>
<DIV ALIGN="CENTER"><A NAME="fig:spmattype"></A><A NAME="706"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
The PSBLAS defined data type that
contains a sparse matrix.</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
-->
<IMG
WIDTH="535" HEIGHT="218" ALIGN="MIDDLE" BORDER="0"
SRC="img20.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
The following very common formats are precompiled in PSBLAS and thus
are always available:
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
<DT><STRONG>psb_T_coo_sparse_mat</STRONG></DT>
<DD>Coordinate storage;
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of global cols in the mesh
<DT><STRONG>psb_T_csr_sparse_mat</STRONG></DT>
<DD>Compressed storage by rows;
</DD>
<DT><STRONG>psb_T_csc_sparse_mat</STRONG></DT>
<DD>Compressed storage by columns;
</DD>
</DL>
The inner sparse matrix has an associated state, which can take the
following values:
<DL>
<DT><STRONG>Build:</STRONG></DT>
<DD>State entered after the first allocation, and before the
first assembly; in this state it is possible to add nonzero entries.
</DD>
<DT><STRONG>Assembled:</STRONG></DT>
<DD>State entered after the assembly; computations using
the sparse matrix, such as matrix-vector products, are only possible
in this state;
</DD>
<DT><STRONG>Update:</STRONG></DT>
<DD>State entered after a reinitalization; this is used to
handle applications in which the same sparsity pattern is used
multiple times with different coefficients. In this state it is only
possible to enter coefficients for already existing nonzero entries.
</DD>
</DL>
The only storage variant supporting the build state is COO; all other
variants are obtained by conversion to/from it.
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html434"
HREF="node20.html">Methods</A>
<LI><A NAME="tex2html435"
HREF="node21.html">get_nrows -- Get number of rows in a sparse matrix</A>
<LI><A NAME="tex2html436"
HREF="node22.html">get_ncols -- Get number of columns in a sparse matrix</A>
<LI><A NAME="tex2html437"
HREF="node23.html">get_nnzeros -- Get number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html438"
HREF="node24.html">get_size -- Get maximum number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html439"
HREF="node25.html">sizeof -- Get memory occupation in bytes
of a sparse matrix</A>
<LI><A NAME="tex2html440"
HREF="node26.html">get_fmt -- Short description of the dynamic type</A>
<LI><A NAME="tex2html441"
HREF="node27.html">is_bld, is_upd, is_asb -- Status check</A>
<LI><A NAME="tex2html442"
HREF="node28.html">Named Constants</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html432"
HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html428"
HREF="node8.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html422"
HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html430"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html433"
HREF="node20.html">Methods</A>
<B> Up:</B> <A NAME="tex2html429"
HREF="node8.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html423"
HREF="node18.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html431"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>