<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!--Converted with LaTeX2HTML 2008 (1.71) 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>Dense Vector Data Structure</TITLE> <META NAME="description" CONTENT="Dense Vector Data Structure"> <META NAME="keywords" CONTENT="userhtml"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META NAME="Generator" CONTENT="LaTeX2HTML v2008"> <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> <LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="next" HREF="node36.html"> <LINK REL="previous" HREF="node20.html"> <LINK REL="up" HREF="node9.html"> <LINK REL="next" HREF="node31.html"> </HEAD> <BODY > <!--Navigation Panel--> <A NAME="tex2html571" HREF="node31.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html567" HREF="node9.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html561" HREF="node29.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html569" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html572" HREF="node31.html">Methods</A> <B> Up:</B> <A NAME="tex2html568" HREF="node9.html">Data Structures and Classes</A> <B> Previous:</B> <A NAME="tex2html562" HREF="node29.html">Named Constants</A> <B> <A NAME="tex2html570" HREF="node1.html">Contents</A></B> <BR> <BR> <!--End of Navigation Panel--> <H2><A NAME="SECTION00044000000000000000"></A> <A NAME="sec:vecttype"></A> <BR> Dense Vector Data Structure </H2> The vdata<TT>psb_T_vect_type</TT> data structure encapsulates the dense vectors in a way similar to sparse matrices, i.e. including a base type vbasedata<TT> psb_T_base_vect_type</TT>. The user will not, in general, access the vector components directly, but rather via the routines of sec. <A HREF="node56.html#sec:toolsrout">6</A>. Among other simple things, we define here an extraction method that can be used to get a full copy of the part of the vector stored on the local process. <P> The type declaration is shown in figure <A HREF="#fig:vectype">5</A> where <code>T</code> is a placeholder for the data type and precision variants <DL> <DT><STRONG>I</STRONG></DT> <DD>Integer; </DD> <DT><STRONG>S</STRONG></DT> <DD>Single precision real; </DD> <DT><STRONG>D</STRONG></DT> <DD>Double precision real; </DD> <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>v%v</code>; the separation between the application and the actual data is essential for cases where it is necessary to link to data storage made available elsewhere outside the direct control of the compiler/application, e.g. data stored in a graphics accelerator's private memory. <DIV ALIGN="CENTER"><A NAME="fig:vectype"></A><A NAME="733"></A> <TABLE> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG> The PSBLAS defined data type that contains a dense vector.</CAPTION> <TR><TD><DIV ALIGN="CENTER"> </DIV><TABLE WIDTH="85%"> <TR><TD> <PRE> type psb_T_base_vect_type TYPE(KIND_), allocatable :: v(:) end type psb_T_base_vect_type type psb_T_vect_type class(psb_T_base_vect_type), allocatable :: v end type psb_T_vect_type </PRE></TD></TR> </TABLE> <DIV ALIGN="CENTER"> </DIV></TD></TR> </TABLE> </DIV> <P> <BR><HR> <!--Table of Child-Links--> <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A> <UL> <LI><A NAME="tex2html573" HREF="node31.html">Methods</A> <LI><A NAME="tex2html574" HREF="node32.html">get_nrows -- Get number of rows in a dense vector</A> <LI><A NAME="tex2html575" HREF="node33.html">get_ncols -- Get number of columns in a sparse matrix</A> <LI><A NAME="tex2html576" HREF="node34.html">sizeof -- Get memory occupation in bytes of a dense vector matrix</A> <LI><A NAME="tex2html577" HREF="node35.html">get_vect -- Get a copy of the vector contents</A> </UL> <!--End of Table of Child-Links--> <HR> <!--Navigation Panel--> <A NAME="tex2html571" HREF="node31.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html567" HREF="node9.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html561" HREF="node29.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html569" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html572" HREF="node31.html">Methods</A> <B> Up:</B> <A NAME="tex2html568" HREF="node9.html">Data Structures and Classes</A> <B> Previous:</B> <A NAME="tex2html562" HREF="node29.html">Named Constants</A> <B> <A NAME="tex2html570" HREF="node1.html">Contents</A></B> <!--End of Navigation Panel--> </BODY> </HTML>