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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
|
<center><a href="https://gitlab.com/petsc/petsc/-/blob/966382dc56242773704ef5f5cee7aa2db3ebc577/include/petscsf.h">Actual source code: petscsf.h</a></center><br>
<html>
<head>
<title></title>
<meta name="generator" content="c2html 0.9.6">
<meta name="date" content="2025-04-30T18:14:50+00:00">
</head>
<body bgcolor="#FFFFFF">
<pre width=80>
<a name="line1"> 1: </a><font color="#B22222">/*</font>
<a name="line2"> 2: </a><font color="#B22222"> A star forest (SF) describes a communication pattern</font>
<a name="line3"> 3: </a><font color="#B22222">*/</font>
<a name="line4"> 4: </a><font color="#A020F0">#pragma once</font>
<a name="line6"> 6: </a>#include <A href="../include/petscsys.h.html"><petscsys.h></A>
<a name="line7"> 7: </a>#include <A href="../include/petscsftypes.h.html"><petscsftypes.h></A>
<a name="line8"> 8: </a>#include <A href="../include/petscvec.h.html"><petscvec.h></A>
<a name="line10"> 10: </a><font color="#B22222">/* MANSEC = <a href="../manualpages/Vec/Vec.html">Vec</a> */</font>
<a name="line11"> 11: </a><font color="#B22222">/* SUBMANSEC = <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> */</font>
<a name="line13"> 13: </a>PETSC_EXTERN <a href="../manualpages/Sys/PetscClassId.html">PetscClassId</a> PETSCSF_CLASSID;
<a name="line15"> 15: </a><font color="#B22222">/*E</font>
<a name="line16"> 16: </a><font color="#B22222"> <a href="../manualpages/PetscSF/PetscSFPattern.html">PetscSFPattern</a> - Pattern of the `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>` graph</font>
<a name="line18"> 18: </a><font color="#B22222"> Values:</font>
<a name="line19"> 19: </a><font color="#B22222">+ `<a href="../manualpages/PetscSF/PetscSFPattern.html">PETSCSF_PATTERN_GENERAL</a>` - A general graph. One sets the graph with `<a href="../manualpages/PetscSF/PetscSFSetGraph.html">PetscSFSetGraph</a>()` and usually does not use this enum directly.</font>
<a name="line20"> 20: </a><font color="#B22222">. `<a href="../manualpages/PetscSF/PetscSFPattern.html">PETSCSF_PATTERN_ALLGATHER</a>` - A graph that every rank gathers all roots from all ranks (like `<a href="http://www.mpich.org/static/docs/latest/www3/MPI_Allgather.html#MPI_Allgather">MPI_Allgather</a>()`). One sets the graph with `<a href="../manualpages/PetscSF/PetscSFSetGraphWithPattern.html">PetscSFSetGraphWithPattern</a>()`.</font>
<a name="line21"> 21: </a><font color="#B22222">. `<a href="../manualpages/PetscSF/PetscSFPattern.html">PETSCSF_PATTERN_GATHER</a>` - A graph that rank 0 gathers all roots from all ranks (like `<a href="http://www.mpich.org/static/docs/latest/www3/MPI_Gatherv.html#MPI_Gatherv">MPI_Gatherv</a>()` with root=0). One sets the graph with `<a href="../manualpages/PetscSF/PetscSFSetGraphWithPattern.html">PetscSFSetGraphWithPattern</a>()`.</font>
<a name="line22"> 22: </a><font color="#B22222">- `<a href="../manualpages/PetscSF/PetscSFPattern.html">PETSCSF_PATTERN_ALLTOALL</a>` - A graph that every rank gathers different roots from all ranks (like `<a href="http://www.mpich.org/static/docs/latest/www3/MPI_Alltoall.html#MPI_Alltoall">MPI_Alltoall</a>()`). One sets the graph with `<a href="../manualpages/PetscSF/PetscSFSetGraphWithPattern.html">PetscSFSetGraphWithPattern</a>()`.</font>
<a name="line23"> 23: </a><font color="#B22222"> In an ALLTOALL graph, we assume each process has <size> leaves and <size> roots, with each leaf connecting to a remote root. Here <size> is</font>
<a name="line24"> 24: </a><font color="#B22222"> the size of the communicator. This does not mean one can not communicate multiple data items between a pair of processes. One just needs to</font>
<a name="line25"> 25: </a><font color="#B22222"> create a new MPI datatype for the multiple data items, e.g., by `<a href="http://www.mpich.org/static/docs/latest/www3/MPI_Type_contiguous.html#MPI_Type_contiguous">MPI_Type_contiguous</a>`.</font>
<a name="line26"> 26: </a><font color="#B22222"> Level: beginner</font>
<a name="line28"> 28: </a><font color="#B22222">.seealso: `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>`, `<a href="../manualpages/PetscSF/PetscSFSetGraph.html">PetscSFSetGraph</a>()`, `<a href="../manualpages/PetscSF/PetscSFSetGraphWithPattern.html">PetscSFSetGraphWithPattern</a>()`</font>
<a name="line29"> 29: </a><font color="#B22222">E*/</font>
<a name="line30"> 30: </a><font color="#4169E1">typedef</font> <font color="#4169E1">enum</font> {
<a name="line31"> 31: </a> <a href="../manualpages/PetscSF/PetscSFPattern.html">PETSCSF_PATTERN_GENERAL</a>,
<a name="line32"> 32: </a> <a href="../manualpages/PetscSF/PetscSFPattern.html">PETSCSF_PATTERN_ALLGATHER</a>,
<a name="line33"> 33: </a> <a href="../manualpages/PetscSF/PetscSFPattern.html">PETSCSF_PATTERN_GATHER</a>,
<a name="line34"> 34: </a> <a href="../manualpages/PetscSF/PetscSFPattern.html">PETSCSF_PATTERN_ALLTOALL</a>
<a name="line35"> 35: </a>} <a href="../manualpages/PetscSF/PetscSFPattern.html">PetscSFPattern</a>;
<a name="line37"> 37: </a><font color="#B22222">/*E</font>
<a name="line38"> 38: </a><font color="#B22222"> <a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PetscSFWindowSyncType</a> - Type of synchronization for `PETSCSFWINDOW`</font>
<a name="line40"> 40: </a><font color="#B22222"> Values:</font>
<a name="line41"> 41: </a><font color="#B22222">+ `<a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PETSCSF_WINDOW_SYNC_FENCE</a>` - simplest model, synchronizing across communicator</font>
<a name="line42"> 42: </a><font color="#B22222">. `<a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PETSCSF_WINDOW_SYNC_LOCK</a>` - passive model, less synchronous, requires less setup than `<a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PETSCSF_WINDOW_SYNC_ACTIVE</a>`, but may require more handshakes</font>
<a name="line43"> 43: </a><font color="#B22222">- `<a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PETSCSF_WINDOW_SYNC_ACTIVE</a>` - active model, provides most information to MPI implementation, needs to construct 2-way process groups (more setup than `<a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PETSCSF_WINDOW_SYNC_LOCK</a>`)</font>
<a name="line45"> 45: </a><font color="#B22222"> Level: advanced</font>
<a name="line47"> 47: </a><font color="#B22222">.seealso: `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>`, `<a href="../manualpages/PetscSF/PetscSFWindowSetSyncType.html">PetscSFWindowSetSyncType</a>()`, `<a href="../manualpages/PetscSF/PetscSFWindowGetSyncType.html">PetscSFWindowGetSyncType</a>()`</font>
<a name="line48"> 48: </a><font color="#B22222">E*/</font>
<a name="line49"> 49: </a><font color="#4169E1">typedef</font> <font color="#4169E1">enum</font> {
<a name="line50"> 50: </a> <a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PETSCSF_WINDOW_SYNC_FENCE</a>,
<a name="line51"> 51: </a> <a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PETSCSF_WINDOW_SYNC_LOCK</a>,
<a name="line52"> 52: </a> <a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PETSCSF_WINDOW_SYNC_ACTIVE</a>
<a name="line53"> 53: </a>} <a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PetscSFWindowSyncType</a>;
<a name="line54"> 54: </a>PETSC_EXTERN const char *const PetscSFWindowSyncTypes[];
<a name="line56"> 56: </a><font color="#B22222">/*E</font>
<a name="line57"> 57: </a><font color="#B22222"> <a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PetscSFWindowFlavorType</a> - Flavor for the creation of MPI windows for `PETSCSFWINDOW`</font>
<a name="line59"> 59: </a><font color="#B22222"> Values:</font>
<a name="line60"> 60: </a><font color="#B22222">+ `<a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PETSCSF_WINDOW_FLAVOR_CREATE</a>` - Use `<a href="http://www.mpich.org/static/docs/latest/www3/MPI_Win_create.html#MPI_Win_create">MPI_Win_create</a>()`, no reuse</font>
<a name="line61"> 61: </a><font color="#B22222">. `<a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PETSCSF_WINDOW_FLAVOR_DYNAMIC</a>` - Use `<a href="http://www.mpich.org/static/docs/latest/www3/MPI_Win_create_dynamic.html#MPI_Win_create_dynamic">MPI_Win_create_dynamic</a>()` and dynamically attach pointers</font>
<a name="line62"> 62: </a><font color="#B22222">. `<a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PETSCSF_WINDOW_FLAVOR_ALLOCATE</a>` - Use `<a href="http://www.mpich.org/static/docs/latest/www3/MPI_Win_allocate.html#MPI_Win_allocate">MPI_Win_allocate</a>()`</font>
<a name="line63"> 63: </a><font color="#B22222">- `<a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PETSCSF_WINDOW_FLAVOR_SHARED</a>` - Use `<a href="http://www.mpich.org/static/docs/latest/www3/MPI_Win_allocate_shared.html#MPI_Win_allocate_shared">MPI_Win_allocate_shared</a>()`</font>
<a name="line65"> 65: </a><font color="#B22222"> Level: advanced</font>
<a name="line67"> 67: </a><font color="#B22222">.seealso: `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>`, `<a href="../manualpages/PetscSF/PetscSFWindowSetFlavorType.html">PetscSFWindowSetFlavorType</a>()`, `<a href="../manualpages/PetscSF/PetscSFWindowGetFlavorType.html">PetscSFWindowGetFlavorType</a>()`</font>
<a name="line68"> 68: </a><font color="#B22222">E*/</font>
<a name="line69"> 69: </a><font color="#4169E1">typedef</font> <font color="#4169E1">enum</font> {
<a name="line70"> 70: </a> <a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PETSCSF_WINDOW_FLAVOR_CREATE</a>,
<a name="line71"> 71: </a> <a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PETSCSF_WINDOW_FLAVOR_DYNAMIC</a>,
<a name="line72"> 72: </a> <a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PETSCSF_WINDOW_FLAVOR_ALLOCATE</a>,
<a name="line73"> 73: </a> <a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PETSCSF_WINDOW_FLAVOR_SHARED</a>
<a name="line74"> 74: </a>} <a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PetscSFWindowFlavorType</a>;
<a name="line75"> 75: </a>PETSC_EXTERN const char *const PetscSFWindowFlavorTypes[];
<a name="line77"> 77: </a><font color="#B22222">/*E</font>
<a name="line78"> 78: </a><font color="#B22222"> <a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PetscSFDuplicateOption</a> - Aspects to preserve when duplicating a `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>`</font>
<a name="line80"> 80: </a><font color="#B22222"> Values:</font>
<a name="line81"> 81: </a><font color="#B22222">+ `<a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PETSCSF_DUPLICATE_CONFONLY</a>` - configuration only, user must call `<a href="../manualpages/PetscSF/PetscSFSetGraph.html">PetscSFSetGraph</a>()`</font>
<a name="line82"> 82: </a><font color="#B22222">. `<a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PETSCSF_DUPLICATE_RANKS</a>` - communication ranks preserved, but different graph (allows simpler setup after calling `<a href="../manualpages/PetscSF/PetscSFSetGraph.html">PetscSFSetGraph</a>()`)</font>
<a name="line83"> 83: </a><font color="#B22222">- `<a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PETSCSF_DUPLICATE_GRAPH</a>` - entire graph duplicated</font>
<a name="line85"> 85: </a><font color="#B22222"> Level: beginner</font>
<a name="line87"> 87: </a><font color="#B22222">.seealso: `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>`, `<a href="../manualpages/PetscSF/PetscSFDuplicate.html">PetscSFDuplicate</a>()`</font>
<a name="line88"> 88: </a><font color="#B22222">E*/</font>
<a name="line89"> 89: </a><font color="#4169E1">typedef</font> <font color="#4169E1">enum</font> {
<a name="line90"> 90: </a> <a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PETSCSF_DUPLICATE_CONFONLY</a>,
<a name="line91"> 91: </a> <a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PETSCSF_DUPLICATE_RANKS</a>,
<a name="line92"> 92: </a> <a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PETSCSF_DUPLICATE_GRAPH</a>
<a name="line93"> 93: </a>} <a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PetscSFDuplicateOption</a>;
<a name="line94"> 94: </a>PETSC_EXTERN const char *const PetscSFDuplicateOptions[];
<a name="line96"> 96: </a><font color="#B22222">/*E</font>
<a name="line97"> 97: </a><font color="#B22222"> <a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PetscSFConcatenateRootMode</a> - Modes of root concatenation when concatenating `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>`s</font>
<a name="line99"> 99: </a><font color="#B22222"> Values:</font>
<a name="line100">100: </a><font color="#B22222">+ `<a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PETSCSF_CONCATENATE_ROOTMODE_LOCAL</a>` - concatenate root spaces locally (separately on each rank)</font>
<a name="line101">101: </a><font color="#B22222">. `<a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PETSCSF_CONCATENATE_ROOTMODE_SHARED</a>` - do not concatenate roots; root space is considered the same for each input `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>` (checked in debug mode)</font>
<a name="line102">102: </a><font color="#B22222">- `<a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PETSCSF_CONCATENATE_ROOTMODE_GLOBAL</a>` - concatenate root spaces globally</font>
<a name="line104">104: </a><font color="#B22222"> Level: advanced</font>
<a name="line106">106: </a><font color="#B22222">.seealso: `<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>`, `<a href="../manualpages/PetscSF/PetscSFConcatenate.html">PetscSFConcatenate</a>()`</font>
<a name="line107">107: </a><font color="#B22222">E*/</font>
<a name="line108">108: </a><font color="#4169E1">typedef</font> <font color="#4169E1">enum</font> {
<a name="line109">109: </a> <a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PETSCSF_CONCATENATE_ROOTMODE_LOCAL</a>,
<a name="line110">110: </a> <a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PETSCSF_CONCATENATE_ROOTMODE_SHARED</a>,
<a name="line111">111: </a> <a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PETSCSF_CONCATENATE_ROOTMODE_GLOBAL</a>,
<a name="line112">112: </a>} <a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PetscSFConcatenateRootMode</a>;
<a name="line113">113: </a>PETSC_EXTERN const char *const PetscSFConcatenateRootModes[];
<a name="line115">115: </a>PETSC_EXTERN <a href="../manualpages/Sys/PetscFunctionList.html">PetscFunctionList</a> PetscSFList;
<a name="line116">116: </a><strong><font color="#4169E1"><a name="PetscSFRegister"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFRegister.html">PetscSFRegister</a>(const char[], <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> (*)(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>)</font></strong>);
<a name="line118">118: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFInitializePackage.html">PetscSFInitializePackage</a>(void)</font></strong>;
<a name="line119">119: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFFinalizePackage.html">PetscSFFinalizePackage</a>(void)</font></strong>;
<a name="line120">120: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreate.html">PetscSFCreate</a>(<a href="../manualpages/Sys/MPI_Comm.html">MPI_Comm</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line121">121: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFDestroy.html">PetscSFDestroy</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line122">122: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetType.html">PetscSFSetType</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSFType.html">PetscSFType</a>)</font></strong>;
<a name="line123">123: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetType.html">PetscSFGetType</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSFType.html">PetscSFType</a> *)</font></strong>;
<a name="line124">124: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFView.html">PetscSFView</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Viewer/PetscViewer.html">PetscViewer</a>)</font></strong>;
<a name="line125">125: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFViewFromOptions.html">PetscSFViewFromOptions</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscObject.html">PetscObject</a>, const char[])</font></strong>;
<a name="line126">126: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetUp.html">PetscSFSetUp</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>)</font></strong>;
<a name="line127">127: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetFromOptions.html">PetscSFSetFromOptions</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>)</font></strong>;
<a name="line128">128: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFDuplicate.html">PetscSFDuplicate</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSFDuplicateOption.html">PetscSFDuplicateOption</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line129">129: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFWindowSetSyncType.html">PetscSFWindowSetSyncType</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PetscSFWindowSyncType</a>)</font></strong>;
<a name="line130">130: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFWindowGetSyncType.html">PetscSFWindowGetSyncType</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSFWindowSyncType.html">PetscSFWindowSyncType</a> *)</font></strong>;
<a name="line131">131: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFWindowSetFlavorType.html">PetscSFWindowSetFlavorType</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PetscSFWindowFlavorType</a>)</font></strong>;
<a name="line132">132: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFWindowGetFlavorType.html">PetscSFWindowGetFlavorType</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSFWindowFlavorType.html">PetscSFWindowFlavorType</a> *)</font></strong>;
<a name="line133">133: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFWindowSetInfo.html">PetscSFWindowSetInfo</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Info)</font></strong>;
<a name="line134">134: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFWindowGetInfo.html">PetscSFWindowGetInfo</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Info *)</font></strong>;
<a name="line135">135: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetRankOrder.html">PetscSFSetRankOrder</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscBool.html">PetscBool</a>)</font></strong>;
<a name="line136">136: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetGraph.html">PetscSFSetGraph</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>[], <a href="../manualpages/Sys/PetscCopyMode.html">PetscCopyMode</a>, <a href="../manualpages/PetscSF/PetscSFNode.html">PetscSFNode</a>[], <a href="../manualpages/Sys/PetscCopyMode.html">PetscCopyMode</a>)</font></strong>;
<a name="line137">137: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetGraphWithPattern.html">PetscSFSetGraphWithPattern</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/IS/PetscLayout.html">PetscLayout</a>, <a href="../manualpages/PetscSF/PetscSFPattern.html">PetscSFPattern</a>)</font></strong>;
<a name="line138">138: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetGraph.html">PetscSFGetGraph</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *[], const <a href="../manualpages/PetscSF/PetscSFNode.html">PetscSFNode</a> *[])</font></strong>;
<a name="line139">139: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetLeafRange.html">PetscSFGetLeafRange</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *)</font></strong>;
<a name="line140">140: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreateEmbeddedRootSF.html">PetscSFCreateEmbeddedRootSF</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line141">141: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreateEmbeddedLeafSF.html">PetscSFCreateEmbeddedLeafSF</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line142">142: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFReset.html">PetscSFReset</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>)</font></strong>;
<a name="line143">143: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetUpRanks.html">PetscSFSetUpRanks</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Group)</font></strong>;
<a name="line144">144: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetRootRanks.html">PetscSFGetRootRanks</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscMPIInt.html">PetscMPIInt</a> *, const <a href="../manualpages/Sys/PetscMPIInt.html">PetscMPIInt</a> **, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> **, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> **, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> **)</font></strong>;
<a name="line145">145: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetLeafRanks.html">PetscSFGetLeafRanks</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscMPIInt.html">PetscMPIInt</a> *, const <a href="../manualpages/Sys/PetscMPIInt.html">PetscMPIInt</a> **, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> **, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> **)</font></strong>;
<a name="line146">146: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetGroups.html">PetscSFGetGroups</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Group *, MPI_Group *)</font></strong>;
<a name="line147">147: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetMultiSF.html">PetscSFGetMultiSF</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line148">148: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetRanksSF.html">PetscSFGetRanksSF</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line149">149: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreateInverseSF.html">PetscSFCreateInverseSF</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line150">150: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFConcatenate.html">PetscSFConcatenate</a>(<a href="../manualpages/Sys/MPI_Comm.html">MPI_Comm</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>[], <a href="../manualpages/PetscSF/PetscSFConcatenateRootMode.html">PetscSFConcatenateRootMode</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>[], <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line151">151: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreateStridedSF.html">PetscSFCreateStridedSF</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line153">153: </a><font color="#B22222">/* Build <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> from <a href="../manualpages/IS/PetscLayout.html">PetscLayout</a> */</font>
<a name="line154">154: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetGraphLayout.html">PetscSFSetGraphLayout</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/IS/PetscLayout.html">PetscLayout</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, <a href="../manualpages/Sys/PetscCopyMode.html">PetscCopyMode</a>, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *)</font></strong>;
<a name="line155">155: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGetGraphLayout.html">PetscSFGetGraphLayout</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/IS/PetscLayout.html">PetscLayout</a> *, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *[], <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *[])</font></strong>;
<a name="line156">156: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreateFromLayouts.html">PetscSFCreateFromLayouts</a>(<a href="../manualpages/IS/PetscLayout.html">PetscLayout</a>, <a href="../manualpages/IS/PetscLayout.html">PetscLayout</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line157">157: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreateByMatchingIndices.html">PetscSFCreateByMatchingIndices</a>(<a href="../manualpages/IS/PetscLayout.html">PetscLayout</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line158">158: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFMerge.html">PetscSFMerge</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line159">159: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetGraphFromCoordinates.html">PetscSFSetGraphFromCoordinates</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>, <a href="../manualpages/Sys/PetscReal.html">PetscReal</a>, const <a href="../manualpages/Sys/PetscReal.html">PetscReal</a> *, const <a href="../manualpages/Sys/PetscReal.html">PetscReal</a> *)</font></strong>;
<a name="line161">161: </a><font color="#B22222">/* <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a> interoperability */</font>
<a name="line162">162: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFSetGraphSection.html">PetscSFSetGraphSection</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a>, <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a>)</font></strong>;
<a name="line163">163: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreateRemoteOffsets.html">PetscSFCreateRemoteOffsets</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a>, <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *[])</font></strong>;
<a name="line164">164: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFDistributeSection.html">PetscSFDistributeSection</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *[], <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a>)</font></strong>;
<a name="line165">165: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCreateSectionSF.html">PetscSFCreateSectionSF</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a>, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>[], <a href="../manualpages/PetscSection/PetscSection.html">PetscSection</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line167">167: </a><font color="#B22222">/* Reduce rootdata to leafdata using provided operation */</font>
<a name="line168">168: </a><strong><font color="#4169E1"><a name="PetscSFBcastBegin"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFBcastBegin.html">PetscSFBcastBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line169">169: </a><strong><font color="#4169E1"><a name="PetscSFBcastEnd"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFBcastEnd.html">PetscSFBcastEnd</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line170">170: </a><strong><font color="#4169E1"><a name="PetscSFBcastWithMemTypeBegin"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFBcastWithMemTypeBegin.html">PetscSFBcastWithMemTypeBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a>, const void *, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a>, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(6, 2);
<a name="line172">172: </a><font color="#B22222">/* Reduce leafdata into rootdata using provided operation */</font>
<a name="line173">173: </a><strong><font color="#4169E1"><a name="PetscSFReduceBegin"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFReduceBegin.html">PetscSFReduceBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line174">174: </a><strong><font color="#4169E1"><a name="PetscSFReduceEnd"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFReduceEnd.html">PetscSFReduceEnd</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line175">175: </a><strong><font color="#4169E1"><a name="PetscSFReduceWithMemTypeBegin"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFReduceWithMemTypeBegin.html">PetscSFReduceWithMemTypeBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a>, const void *, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a>, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(6, 2);
<a name="line177">177: </a><font color="#B22222">/* Atomically modifies (using provided operation) rootdata using leafdata from each leaf, value at root at time of modification is returned in leafupdate. */</font>
<a name="line178">178: </a><strong><font color="#4169E1"><a name="PetscSFFetchAndOpBegin"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFFetchAndOpBegin.html">PetscSFFetchAndOpBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, void *, const void *, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(5, 2);
<a name="line179">179: </a><strong><font color="#4169E1"><a name="PetscSFFetchAndOpEnd"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFFetchAndOpEnd.html">PetscSFFetchAndOpEnd</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, void *, const void *, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(5, 2);
<a name="line181">181: </a><strong><font color="#4169E1"><a name="PetscSFFetchAndOpWithMemTypeBegin"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFFetchAndOpWithMemTypeBegin.html">PetscSFFetchAndOpWithMemTypeBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a>, void *, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a>, const void *, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a>, void *, MPI_Op)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(6, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(8, 2);
<a name="line183">183: </a><font color="#B22222">/* Compute the degree of every root vertex (number of leaves in its star) */</font>
<a name="line184">184: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFComputeDegreeBegin.html">PetscSFComputeDegreeBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *[])</font></strong>;
<a name="line185">185: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFComputeDegreeEnd.html">PetscSFComputeDegreeEnd</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *[])</font></strong>;
<a name="line186">186: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFComputeMultiRootOriginalNumbering.html">PetscSFComputeMultiRootOriginalNumbering</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a>[], <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *[])</font></strong>;
<a name="line187">187: </a><font color="#B22222">/* Concatenate data from all leaves into roots */</font>
<a name="line188">188: </a><strong><font color="#4169E1"><a name="PetscSFGatherBegin"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGatherBegin.html">PetscSFGatherBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, void *)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line189">189: </a><strong><font color="#4169E1"><a name="PetscSFGatherEnd"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFGatherEnd.html">PetscSFGatherEnd</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, void *)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line190">190: </a><font color="#B22222">/* Distribute distinct values to each leaf from roots */</font>
<a name="line191">191: </a><strong><font color="#4169E1"><a name="PetscSFScatterBegin"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFScatterBegin.html">PetscSFScatterBegin</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, void *)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line192">192: </a><strong><font color="#4169E1"><a name="PetscSFScatterEnd"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFScatterEnd.html">PetscSFScatterEnd</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, void *)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line194">194: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFCompose.html">PetscSFCompose</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line195">195: </a><strong><font color="#4169E1">PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFComposeInverse.html">PetscSFComposeInverse</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *)</font></strong>;
<a name="line197">197: </a><strong><font color="#4169E1"><a name="PetscSFRegisterPersistent"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFRegisterPersistent.html">PetscSFRegisterPersistent</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, const void *)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line198">198: </a><strong><font color="#4169E1"><a name="PetscSFDeregisterPersistent"></a>PETSC_EXTERN <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> <a href="../manualpages/PetscSF/PetscSFDeregisterPersistent.html">PetscSFDeregisterPersistent</a>(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a>, MPI_Datatype, const void *, const void *)</font></strong> PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(3, 2) PETSC_ATTRIBUTE_MPI_POINTER_WITH_TYPE(4, 2);
<a name="line200">200: </a><strong><font color="#228B22">#define MPIU_REPLACE MPI_REPLACE PETSC_DEPRECATED_MACRO(3, 15, 0, </font><font color="#666666">"MPI_REPLACE"</font><font color="#228B22">, )</font></strong>
<a name="line202">202: </a>PETSC_DEPRECATED_FUNCTION(3, 12, 0, <font color="#666666">"<a href="../manualpages/PetscSF/PetscSFGetRootRanks.html">PetscSFGetRootRanks</a>()"</font>, )
<a name="line203">203: </a><strong><font color="#4169E1"><a name="PetscSFGetRanks"></a>static inline <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> PetscSFGetRanks(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> sf, <a href="../manualpages/Sys/PetscMPIInt.html">PetscMPIInt</a> *nranks, const <a href="../manualpages/Sys/PetscMPIInt.html">PetscMPIInt</a> **ranks, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> **roffset, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> **rmine, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> **rremote)</font></strong>
<a name="line204">204: </a>{
<a name="line205">205: </a> <font color="#4169E1">return</font> <a href="../manualpages/PetscSF/PetscSFGetRootRanks.html">PetscSFGetRootRanks</a>(sf, nranks, ranks, roffset, rmine, rremote);
<a name="line206">206: </a>}
<a name="line208">208: </a>PETSC_DEPRECATED_FUNCTION(3, 15, 0, <font color="#666666">"<a href="../manualpages/PetscSF/PetscSFCreateEmbeddedRootSF.html">PetscSFCreateEmbeddedRootSF</a>()"</font>, )
<a name="line209">209: </a><strong><font color="#4169E1"><a name="PetscSFCreateEmbeddedSF"></a>static inline <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> PetscSFCreateEmbeddedSF(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> sf, <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> nselected, const <a href="../manualpages/Sys/PetscInt.html">PetscInt</a> *selected, <a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> *esf)</font></strong>
<a name="line210">210: </a>{
<a name="line211">211: </a> <font color="#4169E1">return</font> <a href="../manualpages/PetscSF/PetscSFCreateEmbeddedRootSF.html">PetscSFCreateEmbeddedRootSF</a>(sf, nselected, selected, esf);
<a name="line212">212: </a>}
<a name="line214">214: </a>PETSC_DEPRECATED_FUNCTION(3, 15, 0, <font color="#666666">"<a href="../manualpages/PetscSF/PetscSFBcastBegin.html">PetscSFBcastBegin</a>()"</font>, )
<a name="line215">215: </a><strong><font color="#4169E1"><a name="PetscSFBcastAndOpBegin"></a>static inline <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> PetscSFBcastAndOpBegin(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> sf, MPI_Datatype unit, const void *rootdata, void *leafdata, MPI_Op op)</font></strong>
<a name="line216">216: </a>{
<a name="line217">217: </a> <font color="#4169E1">return</font> <a href="../manualpages/PetscSF/PetscSFBcastBegin.html">PetscSFBcastBegin</a>(sf, unit, rootdata, leafdata, op);
<a name="line218">218: </a>}
<a name="line220">220: </a>PETSC_DEPRECATED_FUNCTION(3, 15, 0, <font color="#666666">"<a href="../manualpages/PetscSF/PetscSFBcastEnd.html">PetscSFBcastEnd</a>()"</font>, )
<a name="line221">221: </a><strong><font color="#4169E1"><a name="PetscSFBcastAndOpEnd"></a>static inline <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> PetscSFBcastAndOpEnd(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> sf, MPI_Datatype unit, const void *rootdata, void *leafdata, MPI_Op op)</font></strong>
<a name="line222">222: </a>{
<a name="line223">223: </a> <font color="#4169E1">return</font> <a href="../manualpages/PetscSF/PetscSFBcastEnd.html">PetscSFBcastEnd</a>(sf, unit, rootdata, leafdata, op);
<a name="line224">224: </a>}
<a name="line226">226: </a>PETSC_DEPRECATED_FUNCTION(3, 15, 0, <font color="#666666">"<a href="../manualpages/PetscSF/PetscSFBcastWithMemTypeBegin.html">PetscSFBcastWithMemTypeBegin</a>()"</font>, )
<a name="line227">227: </a><strong><font color="#4169E1"><a name="PetscSFBcastAndOpWithMemtypeBegin"></a>static inline <a href="../manualpages/Sys/PetscErrorCode.html">PetscErrorCode</a> PetscSFBcastAndOpWithMemtypeBegin(<a href="../manualpages/PetscSF/PetscSF.html">PetscSF</a> sf, MPI_Datatype unit, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a> rootmtype, const void *rootdata, <a href="../manualpages/Sys/PetscMemType.html">PetscMemType</a> leafmtype, void *leafdata, MPI_Op op)</font></strong>
<a name="line228">228: </a>{
<a name="line229">229: </a> <font color="#4169E1">return</font> <a href="../manualpages/PetscSF/PetscSFBcastWithMemTypeBegin.html">PetscSFBcastWithMemTypeBegin</a>(sf, unit, rootmtype, rootdata, leafmtype, leafdata, op);
<a name="line230">230: </a>}
</pre>
</body>
</html>
|