File: MatSetValuesBlockedStencil.html

package info (click to toggle)
petsc 3.4.2.dfsg1-8.1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 129,104 kB
  • ctags: 516,422
  • sloc: ansic: 395,939; cpp: 47,201; python: 34,788; makefile: 17,193; fortran: 16,251; f90: 1,592; objc: 954; sh: 822; xml: 621; java: 381; lisp: 293; csh: 241
file content (99 lines) | stat: -rw-r--r-- 6,306 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML3.2 EN">
<HTML>
<HEAD> <link rel="canonical" href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetValuesBlockedStencil.html" />
<META NAME="GENERATOR" CONTENT="DOCTEXT">
<TITLE>MatSetValuesBlockedStencil</TITLE>
</HEAD>
<BODY BGCOLOR="FFFFFF">
   <div id="version" align=right><b>petsc-3.4.2 2013-07-02</b></div>
<A NAME="MatSetValuesBlockedStencil"><H1>MatSetValuesBlockedStencil</H1></A>
Inserts or adds a block of values into a matrix. Using structured grid indexing 
<H3><FONT COLOR="#CC3333">Synopsis</FONT></H3>
<PRE>
#include "petscmat.h" 
PetscErrorCode  MatSetValuesBlockedStencil(Mat mat,PetscInt m,const MatStencil idxm[],PetscInt n,const MatStencil idxn[],const PetscScalar v[],InsertMode addv)
</PRE>
Not Collective
<P>
<H3><FONT COLOR="#CC3333">Input Parameters</FONT></H3>
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>mat </B></TD><TD>- the matrix
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>m </B></TD><TD>- number of rows being entered
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>idxm </B></TD><TD>- grid coordinates for matrix rows being entered
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>n </B></TD><TD>- number of columns being entered
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>idxn </B></TD><TD>- grid coordinates for matrix columns being entered
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>v </B></TD><TD>- a logically two-dimensional array of values
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>addv </B></TD><TD>- either <A HREF="../Sys/ADD_VALUES.html#ADD_VALUES">ADD_VALUES</A> or <A HREF="../Sys/INSERT_VALUES.html#INSERT_VALUES">INSERT_VALUES</A>, where
<A HREF="../Sys/ADD_VALUES.html#ADD_VALUES">ADD_VALUES</A> adds values to any existing entries, and
<A HREF="../Sys/INSERT_VALUES.html#INSERT_VALUES">INSERT_VALUES</A> replaces existing entries with new values
</TD></TR></TABLE>
<P>
<H3><FONT COLOR="#CC3333">Notes</FONT></H3>
By default the values, v, are row-oriented and unsorted.
See <A HREF="../Mat/MatSetOption.html#MatSetOption">MatSetOption</A>() for other options.
<P>
Calls to <A HREF="../Mat/MatSetValuesBlockedStencil.html#MatSetValuesBlockedStencil">MatSetValuesBlockedStencil</A>() with the <A HREF="../Sys/INSERT_VALUES.html#INSERT_VALUES">INSERT_VALUES</A> and <A HREF="../Sys/ADD_VALUES.html#ADD_VALUES">ADD_VALUES</A>
options cannot be mixed without intervening calls to the assembly
routines.
<P>
The grid coordinates are across the entire grid, not just the local portion
<P>
<A HREF="../Mat/MatSetValuesBlockedStencil.html#MatSetValuesBlockedStencil">MatSetValuesBlockedStencil</A>() uses 0-based row and column numbers in Fortran
as well as in C.
<P>
For setting/accessing vector values via array coordinates you can use the <A HREF="../DM/DMDAVecGetArray.html#DMDAVecGetArray">DMDAVecGetArray</A>() routine
<P>
In order to use this routine you must either obtain the matrix with <A HREF="../DM/DMCreateMatrix.html#DMCreateMatrix">DMCreateMatrix</A>()
or call <A HREF="../Mat/MatSetBlockSize.html#MatSetBlockSize">MatSetBlockSize</A>(), <A HREF="../Mat/MatSetLocalToGlobalMapping.html#MatSetLocalToGlobalMapping">MatSetLocalToGlobalMapping</A>() and <A HREF="../Mat/MatSetStencil.html#MatSetStencil">MatSetStencil</A>() first.
<P>
The columns and rows in the stencil passed in MUST be contained within the
ghost region of the given process as set with DMDACreateXXX() or <A HREF="../Mat/MatSetStencil.html#MatSetStencil">MatSetStencil</A>(). For example,
if you create a <A HREF="../DM/DMDA.html#DMDA">DMDA</A> with an overlap of one grid level and on a particular process its first
local nonghost x logical coordinate is 6 (so its first ghost x logical coordinate is 5) the
first i index you can use in your column and row indices in <A HREF="../Mat/MatSetStencil.html#MatSetStencil">MatSetStencil</A>() is 5.
<P>
In Fortran idxm and idxn should be declared as
<pre>
    <A HREF="../Mat/MatStencil.html#MatStencil">MatStencil</A> idxm(4,m),idxn(4,n)
</pre>
and the values inserted using
<pre>
   idxm(MatStencil_i,1) = i
</pre>
<pre>
   idxm(MatStencil_j,1) = j
</pre>
<pre>
   idxm(MatStencil_k,1) = k
</pre>
etc
<P>
Negative indices may be passed in idxm and idxn, these rows and columns are
simply ignored. This allows easily inserting element stiffness matrices
with homogeneous Dirchlet boundary conditions that you don't want represented
in the matrix.
<P>
Inspired by the structured grid interface to the HYPRE package
(http://www.llnl.gov/CASC/hypre)
<P>

<P>
<P>
<H3><FONT COLOR="#CC3333">See Also</FONT></H3>
 <A HREF="../Mat/MatSetOption.html#MatSetOption">MatSetOption</A>(), <A HREF="../Mat/MatAssemblyBegin.html#MatAssemblyBegin">MatAssemblyBegin</A>(), <A HREF="../Mat/MatAssemblyEnd.html#MatAssemblyEnd">MatAssemblyEnd</A>(), <A HREF="../Mat/MatSetValuesBlocked.html#MatSetValuesBlocked">MatSetValuesBlocked</A>(), <A HREF="../Mat/MatSetValuesLocal.html#MatSetValuesLocal">MatSetValuesLocal</A>()
<BR><A HREF="../Mat/MatSetValues.html#MatSetValues">MatSetValues</A>(), <A HREF="../Mat/MatSetValuesStencil.html#MatSetValuesStencil">MatSetValuesStencil</A>(), <A HREF="../Mat/MatSetStencil.html#MatSetStencil">MatSetStencil</A>(), <A HREF="../DM/DMCreateMatrix.html#DMCreateMatrix">DMCreateMatrix</A>(), <A HREF="../DM/DMDAVecGetArray.html#DMDAVecGetArray">DMDAVecGetArray</A>(), <A HREF="../Mat/MatStencil.html#MatStencil">MatStencil</A>,
<A HREF="../Mat/MatSetBlockSize.html#MatSetBlockSize">MatSetBlockSize</A>(), <A HREF="../Mat/MatSetLocalToGlobalMapping.html#MatSetLocalToGlobalMapping">MatSetLocalToGlobalMapping</A>()
<P><B><P><B><FONT COLOR="#CC3333">Level:</FONT></B>beginner
<BR><FONT COLOR="#CC3333">Location:</FONT></B><A HREF="../../../src/mat/interface/matrix.c.html#MatSetValuesBlockedStencil">src/mat/interface/matrix.c</A>
<BR><A HREF="./index.html">Index of all Mat routines</A>
<BR><A HREF="../../index.html">Table of Contents for all manual pages</A>
<BR><A HREF="../singleindex.html">Index of all manual pages</A>
<P><H3><FONT COLOR="#CC3333">Examples</FONT></H3>
<A HREF="../../../src/snes/examples/tutorials/ex48.c.html">src/snes/examples/tutorials/ex48.c.html</A><BR>
</BODY></HTML>