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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML3.2 EN">
<HTML>
<HEAD> <link rel="canonical" href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/DMPlexVecGetClosure.html" />
<META NAME="GENERATOR" CONTENT="DOCTEXT">
<TITLE>DMPlexVecGetClosure</TITLE>
</HEAD>
<BODY BGCOLOR="FFFFFF">
<div id="version" align=right><b>petsc-3.10.3 2018-12-18</b></div>
<div id="bugreport" align=right><a href="mailto:petsc-maint@mcs.anl.gov?subject=Typo or Error in Documentation &body=Please describe the typo or error in the documentation: petsc-3.10.3 v3.10.3 docs/manualpages/DMPLEX/DMPlexVecGetClosure.html "><small>Report Typos and Errors</small></a></div>
<A NAME="DMPlexVecGetClosure"><H1>DMPlexVecGetClosure</H1></A>
Get an array of the values on the closure of 'point'
<H3><FONT COLOR="#CC3333">Synopsis</FONT></H3>
<PRE>
#include "petscdmplex.h"
<A HREF="../Sys/PetscErrorCode.html#PetscErrorCode">PetscErrorCode</A> <A HREF="../DMPLEX/DMPlexVecGetClosure.html#DMPlexVecGetClosure">DMPlexVecGetClosure</A>(<A HREF="../DM/DM.html#DM">DM</A> dm, <A HREF="../IS/PetscSection.html#PetscSection">PetscSection</A> section, <A HREF="../Vec/Vec.html#Vec">Vec</A> v, <A HREF="../Sys/PetscInt.html#PetscInt">PetscInt</A> point, <A HREF="../Sys/PetscInt.html#PetscInt">PetscInt</A> *csize, <A HREF="../Sys/PetscScalar.html#PetscScalar">PetscScalar</A> *values[])
</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>dm </B></TD><TD>- The <A HREF="../DM/DM.html#DM">DM</A>
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>section </B></TD><TD>- The section describing the layout in v, or NULL to use the default section
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>v </B></TD><TD>- The local vector
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>point </B></TD><TD>- The point in the <A HREF="../DM/DM.html#DM">DM</A>
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>csize </B></TD><TD>- The size of the input values array, or NULL
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>values </B></TD><TD>- An array to use for the values, or NULL to have it allocated automatically
</TD></TR></TABLE>
<P>
<H3><FONT COLOR="#CC3333">Output Parameters</FONT></H3>
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>csize </B></TD><TD>- The number of values in the closure
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>values </B></TD><TD>- The array of values. If the user provided NULL, it is a borrowed array and should not be freed
</TD></TR></TABLE>
<P>
<pre>
Note that <A HREF="../DMPLEX/DMPlexVecGetClosure.html#DMPlexVecGetClosure">DMPlexVecGetClosure</A>/<A HREF="../DMPLEX/DMPlexVecRestoreClosure.html#DMPlexVecRestoreClosure">DMPlexVecRestoreClosure</A> only allocates the values array if it set to NULL in the
</pre>
<pre>
calling function. This is because <A HREF="../DMPLEX/DMPlexVecGetClosure.html#DMPlexVecGetClosure">DMPlexVecGetClosure</A>() is typically called in the inner loop of a <A HREF="../Vec/Vec.html#Vec">Vec</A> or <A HREF="../Mat/Mat.html#Mat">Mat</A>
</pre>
<pre>
assembly function, and a user may already have allocated storage for this operation.
</pre>
<pre>
</pre>
<pre>
A typical use could be
</pre>
<pre>
</pre>
<pre>
values = NULL;
</pre>
<pre>
ierr = <A HREF="../DMPLEX/DMPlexVecGetClosure.html#DMPlexVecGetClosure">DMPlexVecGetClosure</A>(dm, NULL, v, p, &clSize, &values);<A HREF="../Sys/CHKERRQ.html#CHKERRQ">CHKERRQ</A>(ierr);
</pre>
<pre>
for (cl = 0; cl < clSize; ++cl) {
</pre>
<pre>
<Compute on closure>
</pre>
<pre>
}
</pre>
<pre>
ierr = <A HREF="../DMPLEX/DMPlexVecRestoreClosure.html#DMPlexVecRestoreClosure">DMPlexVecRestoreClosure</A>(dm, NULL, v, p, &clSize, &values);<A HREF="../Sys/CHKERRQ.html#CHKERRQ">CHKERRQ</A>(ierr);
</pre>
<pre>
</pre>
<pre>
or
</pre>
<pre>
</pre>
<pre>
<A HREF="../Sys/PetscMalloc1.html#PetscMalloc1">PetscMalloc1</A>(clMaxSize, &values);
</pre>
<pre>
for (p = pStart; p < pEnd; ++p) {
</pre>
<pre>
clSize = clMaxSize;
</pre>
<pre>
ierr = <A HREF="../DMPLEX/DMPlexVecGetClosure.html#DMPlexVecGetClosure">DMPlexVecGetClosure</A>(dm, NULL, v, p, &clSize, &values);<A HREF="../Sys/CHKERRQ.html#CHKERRQ">CHKERRQ</A>(ierr);
</pre>
<pre>
for (cl = 0; cl < clSize; ++cl) {
</pre>
<pre>
<Compute on closure>
</pre>
<pre>
}
</pre>
<pre>
}
</pre>
<pre>
<A HREF="../Sys/PetscFree.html#PetscFree">PetscFree</A>(values);
</pre>
<P>
<H3><FONT COLOR="#CC3333">Fortran Notes</FONT></H3>
Since it returns an array, this routine is only available in Fortran 90, and you must
include petsc.h90 in your code.
<P>
The csize argument is not present in the Fortran 90 binding since it is internal to the array.
<P>
<P>
<H3><FONT COLOR="#CC3333">See Also</FONT></H3>
<A HREF="../DMPLEX/DMPlexVecRestoreClosure.html#DMPlexVecRestoreClosure">DMPlexVecRestoreClosure</A>(), <A HREF="../DMPLEX/DMPlexVecSetClosure.html#DMPlexVecSetClosure">DMPlexVecSetClosure</A>(), <A HREF="../DMPLEX/DMPlexMatSetClosure.html#DMPlexMatSetClosure">DMPlexMatSetClosure</A>()
<BR><P><B></B><H3><FONT COLOR="#CC3333">Level</FONT></H3>intermediate<BR>
<H3><FONT COLOR="#CC3333">Location</FONT></H3>
</B><A HREF="../../../src/dm/impls/plex/plex.c.html#DMPlexVecGetClosure">src/dm/impls/plex/plex.c</A>
<P><H3><FONT COLOR="#CC3333">Examples</FONT></H3>
<A HREF="../../../src/snes/examples/tutorials/ex56.c.html">src/snes/examples/tutorials/ex56.c.html</A><BR>
<A HREF="../../../src/snes/examples/tutorials/ex62.c.html">src/snes/examples/tutorials/ex62.c.html</A><BR>
<A HREF="../../../src/snes/examples/tutorials/ex77.c.html">src/snes/examples/tutorials/ex77.c.html</A><BR>
<BR><A HREF="./index.html">Index of all DMPLEX 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>
</BODY></HTML>
|