<HTML>
<HEAD>
<TITLE>Re: [Paraview] problems generating ghost cells, update on PKdTree questions</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Well, I don&#8217;t know what else would be wrong. &nbsp;Perhaps you could set a breakpoint in D3&#8217;s RequestData to see what ghost level is being passed to it.<BR>
<BR>
-Ken<BR>
<BR>
<BR>
On 11/24/09 4:22 AM, &quot;Christine Corbett Moran&quot; &lt;<a href="corbett@physik.uzh.ch">corbett@physik.uzh.ch</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>I tried this-still no ghost levels (the array is there, as before, but<BR>
the ghost level of everything is still 0).<BR>
<BR>
I don't necessarily want the result of the pipeline to have ghost<BR>
levels (but would like to know how to do this anyway). My end goal is<BR>
to have my reader, which internally runs D3, produce ghost levels on<BR>
request of a downstream filter. Moreover, if a user doesn't use my<BR>
reader, uses the ParaView D3 in the pipeline, and then uses a filter<BR>
of mine which requests ghost level, I would like D3 to generate ghost<BR>
levels.<BR>
<BR>
I am currently failing on both accounts.<BR>
<BR>
Christine<BR>
<BR>
On Mon, Nov 23, 2009 at 10:53 PM, Moreland, Kenneth &lt;<a href="kmorel@sandia.gov">kmorel@sandia.gov</a>&gt; wrote:<BR>
&gt; The UPDATE_NUMBER_OF_GHOST_LEVELS key is used to request the number of ghost<BR>
&gt; levels a filter is supposed to produce.  You set it on an algorithm&#8217;s output<BR>
&gt; information.  It is passed up the pipeline during the RequestUpdateExtent<BR>
&gt; phase of execution and used during the computation in the RequestData phase.<BR>
&gt;  The DATA_NUMBER_OF_GHOST_LEVELS is attached to the data object itself and<BR>
&gt; identifies how many levels were created.<BR>
&gt;<BR>
&gt; Most of the time the requested UPDATE_NUMBER_OF_GHOST_LEVELS is 0 until a<BR>
&gt; filter needs a layer of ghost cells for proper operation, at which time it<BR>
&gt; bumps up the UPDATE_NUMBER_OF_GHOST_LEVELS in its RequestUpdateExtent.<BR>
&gt;  Yours is an uncommon case where you want the result of the pipeline to have<BR>
&gt; ghost levels.<BR>
&gt;<BR>
&gt; I think the trick is just to call something like<BR>
&gt;<BR>
&gt; d3-&gt;GetOutputPortInformation(0)-&gt;Set(UPDATE_NUMBER_OF_GHOST_LEVELS, 1);<BR>
&gt;<BR>
&gt; before calling Update should do the trick.<BR>
&gt;<BR>
&gt; -Ken<BR>
&gt;<BR>
&gt;<BR>
&gt; On 11/23/09 1:21 PM, &quot;Christine Corbett Moran&quot; &lt;<a href="corbett@physik.uzh.ch">corbett@physik.uzh.ch</a>&gt;<BR>
&gt; wrote:<BR>
&gt;<BR>
&gt; Hi Ken,<BR>
&gt;<BR>
&gt; First of all thank you very much for your response.<BR>
&gt;<BR>
&gt; I see the DATA_NUMBER_OF_GHOST_LEVELS or UPDATE_NUMBER_OF_GHOST_LEVELS<BR>
&gt; sets operating on vtkInformation, which I don't call Update on. Should<BR>
&gt; I somehow be accessing the vtkDataObject of the vtkInformation (or<BR>
&gt; something else related to the pipeline as a whole) and call Update on<BR>
&gt; it?  That sounds like it is very likely my problem.<BR>
&gt;<BR>
&gt; Right now<BR>
&gt; 1. I run D3 within my data reader, I set the output to be D3-&gt;output,<BR>
&gt; then the _last thing_ I do is call:<BR>
&gt;  output-&gt;GetInformation()-&gt;Set(vtkDataObject::DATA_NUMBER_OF_GHOST_LEVELS(),<BR>
&gt; 1);<BR>
&gt; 2. In a downstream filter which requires ghost cells, the _first<BR>
&gt; thing_ I do if running in parallel call:<BR>
&gt;   inInfo-&gt;Set(vtkStreamingDemandDrivenPipeline::UPDATE_NUMBER_OF_GHOST_LEVELS(),1);<BR>
&gt;<BR>
&gt; The documentation I can find on this is pretty fluffy (&quot;filters can<BR>
&gt; request ghost cells&quot;), so if anyone points me to something better it<BR>
&gt; would help tremendously (or even a good nugget of example code that I<BR>
&gt; missed in my grepping).<BR>
&gt;<BR>
&gt; Cheers,<BR>
&gt; Christine<BR>
&gt;<BR>
&gt; On Mon, Nov 23, 2009 at 8:57 PM, Moreland, Kenneth &lt;<a href="kmorel@sandia.gov">kmorel@sandia.gov</a>&gt;<BR>
&gt; wrote:<BR>
&gt;&gt; I think setting UPDATE_NUMBER_OF_GHOST_LEVELS on the output of the filter<BR>
&gt;&gt; before calling Update is the right thing to do.  However, in your example<BR>
&gt;&gt; code I do not see where that value is getting set.  I only see the update<BR>
&gt;&gt; extent being set, and that is not sufficient to produce ghost cells.<BR>
&gt;&gt;<BR>
&gt;&gt; -Ken<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt; On 11/19/09 4:50 PM, &quot;Christine Corbett Moran&quot; &lt;<a href="corbett@physik.uzh.ch">corbett@physik.uzh.ch</a>&gt;<BR>
&gt;&gt; wrote:<BR>
&gt;&gt;<BR>
&gt;&gt; I'm having trouble with generating ghost cells, either on my own or<BR>
&gt;&gt; with D3 (via the duplicate boundary points mode). In neither case am I<BR>
&gt;&gt; able to see a single ghost level of value 1 for any of my points on a<BR>
&gt;&gt; test data set, which has 10,000 cells, one point per cell, distributed<BR>
&gt;&gt; on 4 processors. I try both generating ghost cells at level one within<BR>
&gt;&gt; my d3 call in my reader as follows:<BR>
&gt;&gt;                 vtkSmartPointer&lt;vtkDistributedDataFilter&gt; d3 = \<BR>
&gt;&gt;                     vtkSmartPointer&lt;vtkDistributedDataFilter&gt;::New();<BR>
&gt;&gt;                 d3-&gt;AddInput(tipsyReadInitialOutput);<BR>
&gt;&gt;                 d3-&gt;UpdateInformation();<BR>
&gt;&gt;                 vtkStreamingDemandDrivenPipeline* exec = \<BR>
&gt;&gt;<BR>
&gt;&gt;                         static_cast&lt;vtkStreamingDemandDrivenPipeline*&gt;(d3-&gt;GetExecutive());<BR>
&gt;&gt;<BR>
&gt;&gt;                 // adds one ghostlevel<BR>
&gt;&gt;                 exec-&gt;SetUpdateExtent(exec-&gt;GetOutputInformation(0),<BR>
&gt;&gt; piece,<BR>
&gt;&gt; numPieces, 1);<BR>
&gt;&gt;                 d3-&gt;Update();<BR>
&gt;&gt;                 // changing output to output of d3<BR>
&gt;&gt;                 output-&gt;ShallowCopy(d3-&gt;GetOutput());<BR>
&gt;&gt;                 output-&gt;GetInformation()-&gt;Set(<BR>
&gt;&gt;                         vtkDataObject::DATA_NUMBER_OF_GHOST_LEVELS(), 1);<BR>
&gt;&gt; And, as far as I can tell, the procedure for a filter requesting ghost<BR>
&gt;&gt; levels is:<BR>
&gt;&gt;                 // Requesting one level of ghost cells<BR>
&gt;&gt;                 vtkInformation* inInfo =<BR>
&gt;&gt; inputVector[0]-&gt;GetInformationObject(0);<BR>
&gt;&gt;                 inInfo-&gt;Set(<BR>
&gt;&gt;<BR>
&gt;&gt;                         vtkStreamingDemandDrivenPipeline::UPDATE_NUMBER_OF_GHOST_LEVELS(),1);<BR>
&gt;&gt; And my reader or D3 would then have to access the inInfo act on this<BR>
&gt;&gt; request. However neither my filter nor D3 are generating any ghost<BR>
&gt;&gt; cells, as is verified by examining:<BR>
&gt;&gt;<BR>
&gt;&gt;                  output-&gt;GetPointData()-&gt;GetArray(&quot;vtkGhostLevels&quot;)-&gt;GetTuple(<BR>
&gt;&gt;                                 nextHaloId)[0]<BR>
&gt;&gt; Can any one see what's going on? I've read a chunk of vtk source<BR>
&gt;&gt; referencing vtkGhostLevels or using UPDATE_NUMBER_OF_GHOST_LEVELS but<BR>
&gt;&gt; haven't found the clue yet.<BR>
&gt;&gt;<BR>
&gt;&gt; An update on my D3/PKd tree question: I decided to run D3<BR>
&gt;&gt; automatically if the user checks a button in my readers and strongly<BR>
&gt;&gt; recommend they run D3 if they don't use my readers. I found that<BR>
&gt;&gt; BuildLocator() or BuildLocatorFromPoints(points) never worked as I had<BR>
&gt;&gt; hoped from the documentation (I wanted to call it once/or on all<BR>
&gt;&gt; processes on the PkD tree generated by D3 and have it build a locator<BR>
&gt;&gt; which works across all processes, i.e. can also find points belonging<BR>
&gt;&gt; to a neighbor process), so instead I build a KdTree locator local to<BR>
&gt;&gt; each process, separate from the PKdTree generated by D3, and<BR>
&gt;&gt; coordinate a search if necessary, I can still make this highly data<BR>
&gt;&gt; parallel for my applications, e.g. finding the mass of all points<BR>
&gt;&gt; within a given radius by doing local searches/consolidation and just<BR>
&gt;&gt; sending the results for a final consolidation to the root.<BR>
&gt;&gt;<BR>
&gt;&gt; Christine<BR>
&gt;&gt; _______________________________________________<BR>
&gt;&gt; Powered by www.kitware.com<BR>
&gt;&gt;<BR>
&gt;&gt; Visit other Kitware open-source projects at<BR>
&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
&gt;&gt;<BR>
&gt;&gt; Please keep messages on-topic and check the ParaView Wiki at:<BR>
&gt;&gt; <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
&gt;&gt;<BR>
&gt;&gt; Follow this link to subscribe/unsubscribe:<BR>
&gt;&gt; <a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt;    ****      Kenneth Moreland<BR>
&gt;&gt;     ***      Sandia National Laboratories<BR>
&gt;&gt; ***********<BR>
&gt;&gt; *** *** ***  email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
&gt;&gt; **  ***  **  phone: (505) 844-8919<BR>
&gt;&gt;     ***      web:   <a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt;    ****      Kenneth Moreland<BR>
&gt;     ***      Sandia National Laboratories<BR>
&gt; ***********<BR>
&gt; *** *** ***  email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
&gt; **  ***  **  phone: (505) 844-8919<BR>
&gt;     ***      web:   <a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
&gt;<BR>
&gt;<BR>
<BR>
<BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'><BR>
&nbsp;&nbsp;&nbsp;**** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kenneth Moreland<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sandia National Laboratories<BR>
*********** &nbsp;<BR>
*** *** *** &nbsp;email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
** &nbsp;*** &nbsp;** &nbsp;phone: (505) 844-8919<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;web: &nbsp;&nbsp;<a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT>
</BODY>
</HTML>