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.
psblas3/docs/html/node43.html

166 lines
5.2 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<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 v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node50.html">
<LINK REL="previous" HREF="node23.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="next" HREF="node44.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html775"
HREF="node44.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html771"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html765"
HREF="node42.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html773"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html776"
HREF="node44.html">Vector Methods</A>
<B> Up:</B> <A NAME="tex2html772"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html766"
HREF="node42.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html774"
HREF="node1.html">Contents</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00043000000000000000"></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.&nbsp;<A HREF="node71.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&nbsp;<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="937"></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 CLASS="ChildLinks">
<LI><A NAME="tex2html777"
HREF="node44.html">Vector Methods</A>
<LI><A NAME="tex2html778"
HREF="node45.html">get_nrows -- Get number of rows in a dense vector</A>
<LI><A NAME="tex2html779"
HREF="node46.html">sizeof -- Get memory occupation in bytes
of a dense vector</A>
<LI><A NAME="tex2html780"
HREF="node47.html">set -- Set contents of the vector</A>
<LI><A NAME="tex2html781"
HREF="node48.html">get_vect -- Get a copy of the vector contents</A>
<LI><A NAME="tex2html782"
HREF="node49.html">clone -- Clone current object</A>
</UL>
<!--End of Table of Child-Links-->
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html775"
HREF="node44.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html771"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html765"
HREF="node42.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html773"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html776"
HREF="node44.html">Vector Methods</A>
<B> Up:</B> <A NAME="tex2html772"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html766"
HREF="node42.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html774"
HREF="node1.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>
</HTML>