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
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>FreeMat: vtkDistributedDataFilter</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">FreeMat
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('vtkparallel_vtkdistributeddatafilter.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">vtkDistributedDataFilter </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Section: <a class="el" href="sec_vtkparallel.html">Visualization Toolkit Parallel Classes</a> </p>
<h1><a class="anchor" id="Usage"></a>
Usage</h1>
<p>This filter redistributes data among processors in a parallel application into spatially contiguous vtkUnstructuredGrids. The execution model anticipated is that all processes read in part of a large vtkDataSet. Each process sets the input of filter to be that DataSet. When executed, this filter builds in parallel a k-d tree, decomposing the space occupied by the distributed DataSet into spatial regions. It assigns each spatial region to a processor. The data is then redistributed and the output is a single vtkUnstructuredGrid containing the cells in the process' assigned regions.</p>
<p>This filter is sometimes called "D3" for "distributed data decomposition".</p>
<p>Enhancement: You can set the k-d tree decomposition, rather than have D3 compute it. This allows you to divide a dataset using the decomposition computed for another dataset. Obtain a description of the k-d tree cuts this way:</p>
<p>vtkBSPCuts *cuts = D3Object1->GetCuts()</p>
<p>And set it this way:</p>
<p>D3Object2->SetCuts(cuts)</p>
<p>It is desirable to have a field array of global node IDs for two reasons:</p>
<ol type="1">
<li>When merging together sub grids that were distributed across processors, global node IDs can be used to remove duplicate points and significantly reduce the size of the resulting output grid. If no such array is available, D3 will use a tolerance to merge points, which is much slower.</li>
</ol>
<ol type="1">
<li>If ghost cells have been requested, D3 requires a global node ID array in order to request and transfer ghost cells in parallel among the processors. If there is no global node ID array, D3 will in parallel create a global node ID array, and the time to do this can be significant.</li>
</ol>
<p>If you know the name of a global node ID array in the input dataset, set that name with this method. If you leave it unset, D3 will search the input data set for certain common names of global node ID arrays. If none is found, and ghost cells have been requested, D3 will create a temporary global node ID array before aquiring ghost cells. It is also desirable to have global element IDs. However, if they don't exist D3 can create them relatively quickly. Set the name of the global element ID array if you have it. If it is not set, D3 will search for it using common names. If still not found, D3 will create a temporary array of global element IDs.</p>
<p>To create an instance of class vtkDistributedDataFilter, simply invoke its constructor as follows </p>
<pre class="fragment"> obj = vtkDistributedDataFilter
</pre> <h1><a class="anchor" id="Methods"></a>
Methods</h1>
<p>The class vtkDistributedDataFilter has several methods that can be used. They are listed below. Note that the documentation is translated automatically from the VTK sources, and may not be completely intelligible. When in doubt, consult the VTK website. In the methods listed below, <code>obj</code> is an instance of the vtkDistributedDataFilter class. </p>
<ul>
<li>
<code>string = obj.GetClassName ()</code> </li>
<li>
<code>int = obj.IsA (string name)</code> </li>
<li>
<code>vtkDistributedDataFilter = obj.NewInstance ()</code> </li>
<li>
<code>vtkDistributedDataFilter = obj.SafeDownCast (vtkObject o)</code> </li>
<li>
<code>obj.SetController (vtkMultiProcessController c)</code> - Set/Get the communicator object </li>
<li>
<code>vtkMultiProcessController = obj.GetController ()</code> - Set/Get the communicator object </li>
<li>
<code>vtkPKdTree = obj.GetKdtree ()</code> </li>
<li>
<code>obj.RetainKdtreeOn ()</code> </li>
<li>
<code>obj.RetainKdtreeOff ()</code> </li>
<li>
<code>int = obj.GetRetainKdtree ()</code> </li>
<li>
<code>obj.SetRetainKdtree (int )</code> </li>
<li>
<code>obj.IncludeAllIntersectingCellsOn ()</code> </li>
<li>
<code>obj.IncludeAllIntersectingCellsOff ()</code> </li>
<li>
<code>int = obj.GetIncludeAllIntersectingCells ()</code> </li>
<li>
<code>obj.SetIncludeAllIntersectingCells (int )</code> </li>
<li>
<code>obj.ClipCellsOn ()</code> </li>
<li>
<code>obj.ClipCellsOff ()</code> </li>
<li>
<code>int = obj.GetClipCells ()</code> </li>
<li>
<code>obj.SetClipCells (int )</code> </li>
<li>
<code>obj.SetBoundaryMode (int mode)</code> - Handling of ClipCells and IncludeAllIntersectingCells. </li>
<li>
<code>obj.SetBoundaryModeToAssignToOneRegion ()</code> - Handling of ClipCells and IncludeAllIntersectingCells. </li>
<li>
<code>obj.SetBoundaryModeToAssignToAllIntersectingRegions ()</code> - Handling of ClipCells and IncludeAllIntersectingCells. </li>
<li>
<code>obj.SetBoundaryModeToSplitBoundaryCells ()</code> - Handling of ClipCells and IncludeAllIntersectingCells. </li>
<li>
<code>int = obj.GetBoundaryMode ()</code> - Handling of ClipCells and IncludeAllIntersectingCells. </li>
<li>
<code>obj.UseMinimalMemoryOn ()</code> </li>
<li>
<code>obj.UseMinimalMemoryOff ()</code> </li>
<li>
<code>int = obj.GetUseMinimalMemory ()</code> </li>
<li>
<code>obj.SetUseMinimalMemory (int )</code> </li>
<li>
<code>obj.TimingOn ()</code> </li>
<li>
<code>obj.TimingOff ()</code> </li>
<li>
<code>obj.SetTiming (int )</code> </li>
<li>
<code>int = obj.GetTiming ()</code> </li>
<li>
<p class="startli"><code>vtkBSPCuts = obj.GetCuts ()</code> - You can set the k-d tree decomposition, rather than have D3 compute it. This allows you to divide a dataset using the decomposition computed for another dataset. Obtain a description of the k-d tree cuts this way:</p>
<p>vtkBSPCuts *cuts = D3Object1->GetCuts()</p>
<p>And set it this way:</p>
<p class="endli">D3Object2->SetCuts(cuts) </p>
</li>
<li>
<p class="startli"><code>obj.SetCuts (vtkBSPCuts cuts)</code> - You can set the k-d tree decomposition, rather than have D3 compute it. This allows you to divide a dataset using the decomposition computed for another dataset. Obtain a description of the k-d tree cuts this way:</p>
<p>vtkBSPCuts *cuts = D3Object1->GetCuts()</p>
<p>And set it this way:</p>
<p class="endli">D3Object2->SetCuts(cuts) </p>
</li>
</ul>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">FreeMat Documentation</a></li><li class="navelem"><a class="el" href="sec_vtkparallel.html">Visualization Toolkit Parallel Classes</a></li>
<li class="footer">Generated on Thu Jul 25 2013 17:18:34 for FreeMat by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.1 </li>
</ul>
</div>
</body>
</html>
|