[vtkusers] Polyhedral volume computation

Bill Lorensen bill.lorensen at gmail.com
Tue Jun 12 15:20:14 EDT 2012


I would try geometry filter followed by triangle filter followed by
massproperties.


On Tue, Jun 12, 2012 at 12:56 PM, Jeff Lee <jlee1549 at gmail.com> wrote:
> that assumes that the polyhedron can be tetrahedralized - the face-based
> approach is more robust.  in practice it is better to assume that arbitrary
> polyhedra cannot be triangulated, and that the tets you get back will not
> actually represent the original polyhedron, especially ones with nonconvex
> faces.  I guess it all depends on how accurate you need the volumes to be.
> Jeff
>
>
> On Tue, Jun 12, 2012 at 10:14 AM, Andrew Parker
> <andy.john.parker at googlemail.com> wrote:
>>
>> I knew I'd done this before, but that's because I was working inside
>> paraview directly.  Frustrating this is not available in pure vtk:
>>
>>
>> http://www.paraview.org/ParaView3/Doc/Nightly/html/classvtkCellIntegrator.html
>>
>> Andy
>>
>>
>> On 12 June 2012 14:43, Jeff Lee <jlee1549 at gmail.com> wrote:
>>>
>>> its kind of the cost of doing business with arbitrary polyhedra, either
>>> you triangulate or it is done internally.  your workflow is dealing with
>>> data in vtk format, i.e. cells which may be more tedious/inefficient to
>>> process than with data stored in a face-based datastructure.  even
>>> commercial codes need to make assumptions about the face shape - either by
>>> ear-cut triangulation or spoking to the face centroid.  it is an expensive
>>> operation either way. it sounds like you are on the right track though, and
>>> perhaps you could contribute whatever you come up with.
>>> Best,
>>>
>>> Jeff
>>>
>>> On Tue, Jun 12, 2012 at 9:29 AM, Andrew Parker
>>> <andy.john.parker at googlemail.com> wrote:
>>>>
>>>> Yes this is for an entire mesh.  The faces are non-triangular.  The
>>>> point I was making/asking was for a method to do this within vtk, without
>>>> having to pre-process my mesh.  If there is polyhedral support it would be
>>>> nice if that support extended to basic metrics of a polyhedral.
>>>>
>>>> So to be clear my work flow needs to be the following.  Read in very
>>>> large unstructured arbitrary shaped polyhedral mesh; loop over mesh; extract
>>>> each cell; triangular each face of the cell; pass this to vtkmassproperties;
>>>> get the cell volume; repeat.
>>>>
>>>> I would hate to think how many people are having to reproduce code like
>>>> this for basic metrics of a polyhedral mesh that is said to be
>>>> supported.....
>>>>
>>>> Cheers,
>>>> Andy
>>>>
>>>>
>>>> On 12 June 2012 14:20, Jeff Lee <jlee1549 at gmail.com> wrote:
>>>>>
>>>>> You usually have to triangulate the polyhedron faces anyways because
>>>>> the they will likely be nonplanar, nonconvex, etc.  You could either steal
>>>>> the code in vtkMassProperties which computes the volume on the triangle set,
>>>>> or convert to triangles and use an internal instance of vtkMassProperties -
>>>>> I would probably opt for the former, but it depends on whether you are doing
>>>>> a one-off or trying to compute volumes for an entire mesh.
>>>>>
>>>>>
>>>>> On Tue, Jun 12, 2012 at 9:05 AM, Andrew Parker
>>>>> <andy.john.parker at googlemail.com> wrote:
>>>>>>
>>>>>> I would have used it except this put me off in the docs:
>>>>>>
>>>>>> " vtkMassProperties estimates the volume, the surface area, and the
>>>>>> normalized shape index of a triangle mesh. "
>>>>>>
>>>>>>
>>>>>> On 12 June 2012 13:56, Jeff Lee <jlee1549 at gmail.com> wrote:
>>>>>>>
>>>>>>> did you look at vtkMassProperties?  it uses divergence theorem to
>>>>>>> compute volume which is face based and works on arbitrary polyhedra.
>>>>>>> Jeff
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Jun 12, 2012 at 8:48 AM, Andrew Parker
>>>>>>> <andy.john.parker at googlemail.com> wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Many thanks, yes, linear only but an arbitrary number of faces.  I
>>>>>>>> would have bet there was another way of doing this, and that I've used it, I
>>>>>>>> just can't remember how I did it.
>>>>>>>>
>>>>>>>> Do you not think it's rather odd there is a lack of support for
>>>>>>>> simple metrics like this given an arbitrary polyhedra?  One needs only the
>>>>>>>> faces and nodes.  Under the assumption each face is planer then this sort of
>>>>>>>> thing is quite easy, and would at least make the vtk support for this for
>>>>>>>> type of metric with planer faces much more applicable to a significantly
>>>>>>>> larger number of users.  See the following as a good example which is used
>>>>>>>> in CFD and has been for many years:
>>>>>>>>
>>>>>>>> http://www.public.iastate.edu/~zjw/papers/1999-AIAAJ.pdf
>>>>>>>>
>>>>>>>> I appreciate in the non-planer case something else needs to be done,
>>>>>>>> but all of this could be hidden behind a wrapper class that provides metrics
>>>>>>>> regardless of cell type.  If this is indeed in vtk and anybody can point me
>>>>>>>> to it then that would be really helpful.
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Andy
>>>>>>>>
>>>>>>>>
>>>>>>>> On 12 June 2012 12:59, Jochen K. <jochen.kling at email.de> wrote:
>>>>>>>>>
>>>>>>>>> Hi Andy,
>>>>>>>>>
>>>>>>>>> do you address only linear elements with arbitrary polyhedrons?
>>>>>>>>> Or should support be given to quadratic, biquadratic, triquadratic
>>>>>>>>> and even
>>>>>>>>> convexPointSets elements too?
>>>>>>>>>
>>>>>>>>> In any case all cells must be traversed, right?
>>>>>>>>>
>>>>>>>>> While traversing all cells I would check the celltype and store the
>>>>>>>>> cellid
>>>>>>>>> (for cell assignment of the calculated volume later on).
>>>>>>>>>
>>>>>>>>> If the current cell is a primitve type like tetrahedron etc.
>>>>>>>>> calculate the
>>>>>>>>> volume and traverse next cell.
>>>>>>>>>
>>>>>>>>> In case it's a more complicated element I would tetrahedralize it,
>>>>>>>>> and sum
>>>>>>>>> up the volume of each given tetrahedron.
>>>>>>>>>
>>>>>>>>> That's it.
>>>>>>>>>
>>>>>>>>> If the grid consists of a lot of nonlinear elements the result will
>>>>>>>>> probably
>>>>>>>>> deviate a bit from the correct value. The questionis how exactly
>>>>>>>>> you want
>>>>>>>>> the result to be.
>>>>>>>>>
>>>>>>>>> For a cross-check I would apply a surfacefilter to the whole grid,
>>>>>>>>> tetrahedralize it, and sum up the tetrahedron volumes.
>>>>>>>>> Then compare the volume of both approaches. They should be more or
>>>>>>>>> less
>>>>>>>>> identical.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> with best regards
>>>>>>>>> Jochen
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> View this message in context:
>>>>>>>>> http://vtk.1045678.n5.nabble.com/Polyhedral-volume-computation-tp5713778p5713792.html
>>>>>>>>> Sent from the VTK - Users mailing list archive at Nabble.com.
>>>>>>>>> _______________________________________________
>>>>>>>>> Powered by www.kitware.com
>>>>>>>>>
>>>>>>>>> Visit other Kitware open-source projects at
>>>>>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>>>>>
>>>>>>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>>>>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>>>>>>
>>>>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> __________________________________
>>>>>>>>
>>>>>>>>    Dr Andrew Parker
>>>>>>>>
>>>>>>>>    Em at ilandrew.parker at cantab.net
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Powered by www.kitware.com
>>>>>>>>
>>>>>>>> Visit other Kitware open-source projects at
>>>>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>>>>
>>>>>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>>>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>>>>>
>>>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> __________________________________
>>>>>>
>>>>>>    Dr Andrew Parker
>>>>>>
>>>>>>    Em at ilandrew.parker at cantab.net
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> __________________________________
>>>>
>>>>    Dr Andrew Parker
>>>>
>>>>    Em at ilandrew.parker at cantab.net
>>>>
>>>>
>>>
>>
>>
>>
>> --
>>
>> __________________________________
>>
>>    Dr Andrew Parker
>>
>>    Em at ilandrew.parker at cantab.net
>>
>>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>



-- 
Unpaid intern in BillsBasement at noware dot com



More information about the vtkusers mailing list