Yes, it's quite easy to implement (I just need to figure out how I do that in Xdmf format... but it must be easy...)<br><br>Just to emphasize the subject -- or piss you off ;oP<br><br>The term "ghost" (some people use "halo". In portuguese it's "fantasma") is suitable to
define something that does not really exist -- or exists somehow in
another life ;o) -- in this sense, only cells (or nodes) that are not really owned
by a subdomain should be considered as ghosts. Consequently, only cells
(or nodes) that come from other parallel subdomains (in other words, are somehow
overlapped) should be considered as "ghost cells" or "ghost nodes".<br><br>As I said, just trying to piss you off...<br><br>of course, I'm kidding....<br><br>Renato.<br>
<br>It explains why I never tried to define an array of ghost cells in my code. They simply does not exist in my case...<br><br><div class="gmail_quote">On Mon, Apr 6, 2009 at 8:58 PM, Berk Geveci <span dir="ltr"><<a href="mailto:berk.geveci@kitware.com">berk.geveci@kitware.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I did not mean ghost cells. I meant ghost points. If you were to mark<br>
the points at a shared interface as ghost (more appropriately<br>
duplicated), we can easily throw away all polygons that contain all<br>
duplicate points when extracting external surfaces. Even better, if we<br>
had an array that had values like:<br>
<br>
-1 : point not shared<br>
n >= 0 : point shared, owned by process n<br>
<br>
we could make bunch of filters work correctly - mainly statistics ones<br>
and the glyph filter. Is this something that is easy for your<br>
simulation to write?<br>
<font color="#888888"><br>
-berk<br>
</font><div><div></div><div class="h5"><br>
On Mon, Apr 6, 2009 at 7:41 PM, Renato Elias <<a href="mailto:rnelias@gmail.com">rnelias@gmail.com</a>> wrote:<br>
> Berk, forgive for delaying my response (I was out of my lab...)<br>
><br>
> Just a silly question:<br>
><br>
> What do you exactly mean by "Ghost cell"? This silly question is justified<br>
> by the fact that I thought that ghost cells only make sense when we have<br>
> subdomains _overlapped_. In these cases, the number of overlapped cell<br>
> layers should (or could) be considered as "ghost level".<br>
><br>
> In my case, the subdomains are not overlapped at all. They are just<br>
> partitioned by Metis and the solver can deal with the computations without<br>
> the need to use overlapped elements. Thus, if "ghost cells" can be simply<br>
> defined by "cells somehow touching the parallel interface (even those not<br>
> overlapped)" I think I could try tagging my parallel interface cells as<br>
> "ghost level 0" to see what happens...<br>
><br>
> Renato.<br>
><br>
> On Sun, Apr 5, 2009 at 11:53 PM, Chris Kees<br>
> <<a href="mailto:christopher.e.kees@usace.army.mil">christopher.e.kees@usace.army.mil</a>> wrote:<br>
>><br>
>> Berk,<br>
>><br>
>> Thanks for correcting me. I'll try adding the vtkGhostLevels to the XDMF<br>
>> and see how that goes.<br>
>><br>
>> Chris<br>
>> On Apr 4, 2009, at 2:50 PM, Berk Geveci wrote:<br>
>><br>
>>> The right way to deal with this situation is to mark the ghost cells<br>
>>> as ghost. If you create a cell array called vtkGhostLevels and assign<br>
>>> 0 to inside cells and 1 to ghost cells, you should not need<br>
>>> MergeBlocks or CleanToGrid. Note that this array has to be of type<br>
>>> unsigned char. There are actual benefits to keeping ghost levels since<br>
>>> some algorithms will produce better results.<br>
>>><br>
>>> -berk<br>
>>><br>
>>> On Thu, Apr 2, 2009 at 6:37 PM, Chris Kees<br>
>>> <<a href="mailto:christopher.e.kees@usace.army.mil">christopher.e.kees@usace.army.mil</a>> wrote:<br>
>>>><br>
>>>> I turned off the overlapping domain decomposition (ghost cells) for a<br>
>>>> simple<br>
>>>> problem and the sequence<br>
>>>><br>
>>>> MergeBlocks->CleantoGrid->ExtractSurface->Clip<br>
>>>><br>
>>>> shows just the physical boundary of the problem (clipped open so you can<br>
>>>> see<br>
>>>> inside). Also volume visualization and streamline calculation works with<br>
>>>> no<br>
>>>> processor boundary artifacts.<br>
>>>><br>
>>>> From what I understand, there are no filters in paraview or abstractions<br>
>>>> in<br>
>>>> the XDMF data model at this time that will allow paraview to read in<br>
>>>> overlapping blocks and really make use of the ghost cells correctly. For<br>
>>>> now<br>
>>>> truncating our output to only "owned" elements will solve our problems.<br>
>>>> Thanks again for the help.<br>
>>>><br>
>>>> Chris<br>
>>>><br>
>>>> On Mar 30, 2009, at 2:06 PM, Chris Kees wrote:<br>
>>>><br>
>>>>> Thanks for the help. I also tried suggestions from Paul, Ken, and<br>
>>>>> Berk,<br>
>>>>> but it does seem that I'm stuck right now unless I provide ParaView<br>
>>>>> with<br>
>>>>> more information. Since streamlines are computed correctly on the<br>
>>>>> current<br>
>>>>> multiblock mesh I just generated the mesh on a single processor and<br>
>>>>> used<br>
>>>>> ExtractSurface->Clip on that mesh to visualize the geometry around the<br>
>>>>> streamlines from the multiblock grid.<br>
>>>>><br>
>>>>> On the first method: Each of my UnstructuredGrids in the Multiblock<br>
>>>>> Grid<br>
>>>>> is a subdomain in an overlapping decomposition of the domain. Each of<br>
>>>>> the<br>
>>>>> subdomains has several elements of overlap (the layer of ghost cells is<br>
>>>>> more<br>
>>>>> than one element thick). Presumably the streamline generation works<br>
>>>>> now on<br>
>>>>> the multiblock grid because the overlap is loaded into ParaView. Is<br>
>>>>> there a<br>
>>>>> way I can just set a cell-centered attributed to identify the ghost<br>
>>>>> cells so<br>
>>>>> that surface extraction and volume visualization will work too?<br>
>>>>> Currently<br>
>>>>> volume visualization of the multiblock grid shows only a single<br>
>>>>> subdomain<br>
>>>>> and volume visualization after MergeBlocks shows the whole domain but<br>
>>>>> with<br>
>>>>> overlap regions being more opaque.<br>
>>>>><br>
>>>>> On your other method, we have both the external boundary mesh and a<br>
>>>>> pre-mesh polygonal representation of the boundaries available in the<br>
>>>>> simulator. You are suggesting that I just dump one of those to a valid<br>
>>>>> ParaView format as well, is that correct?<br>
>>>>><br>
>>>>> Chris<br>
>>>>><br>
>>>>> On Mar 30, 2009, at 9:14 AM, Jean Favre wrote:<br>
>>>>><br>
>>>>>> Chris Kees wrote:<br>
>>>>>>><br>
>>>>>>> So far I've tried MergeBlocks->ExtractSurface->FeatureEdges->Clip and<br>
>>>>>>> various permutations that I've seen in previous posts and the wiki,<br>
>>>>>>> but I always end up with the surfaces on the interior of the tank as<br>
>>>>>>> if it still sees each subdomain as a closed surface.<br>
>>>>>><br>
>>>>>> In fact, it seems to me that ParaView does the best it can. Your<br>
>>>>>> unstructured mesh is partitioned in 512 pieces and [presumably], you<br>
>>>>>> did<br>
>>>>>> not specify ghost-cells at the partition boundaries. Without<br>
>>>>>> ghost-cells, ParaView has no information to help decide whether an<br>
>>>>>> outside face looks towards the outside world, or to another partition.<br>
>>>>>> I<br>
>>>>>> don't think any combination of filters would help you. Removing<br>
>>>>>> duplicate points may only remove duplicate fake boundaries, but these<br>
>>>>>> fake boundaries must be removed all together.<br>
>>>>>><br>
>>>>>> I use two methods to achieve what you want. Ghost-cells, or another<br>
>>>>>> multi-piece object containing the different boundary types (solid,<br>
>>>>>> symmetries, inflow, outflow, etc) stored as vtkPolyData. These are<br>
>>>>>> read<br>
>>>>>> in from the models on disk.<br>
>>>>>><br>
>>>>>> Jean --<br>
>>>>>> Swiss National Supercomputing Center<br>
>>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>><br>
>>>>> _______________________________________________<br>
>>>>> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
>>>>><br>
>>>>> Visit other Kitware open-source projects at<br>
>>>>> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>>>>><br>
>>>>> Please keep messages on-topic and check the ParaView Wiki at:<br>
>>>>> <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
>>>>><br>
>>>>> Follow this link to subscribe/unsubscribe:<br>
>>>>> <a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
>>>><br>
>>>> Visit other Kitware open-source projects at<br>
>>>> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>>>><br>
>>>> Please keep messages on-topic and check the ParaView Wiki at:<br>
>>>> <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
>>>><br>
>>>> Follow this link to subscribe/unsubscribe:<br>
>>>> <a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
>>>><br>
>><br>
>> _______________________________________________<br>
>> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
>><br>
>> Visit other Kitware open-source projects at<br>
>> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>><br>
>> Please keep messages on-topic and check the ParaView Wiki at:<br>
>> <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
>><br>
>> Follow this link to subscribe/unsubscribe:<br>
>> <a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
><br>
><br>
</div></div></blockquote></div><br>