[Paraview] [EXTERNAL] Re: [EXT] Re: Exodus Block Names
Scott, W Alan
wascott at sandia.gov
Mon Aug 31 15:16:51 EDT 2015
Excellent, thanks Dennis!
Alan
-----Original Message-----
From: ParaView [mailto:paraview-bounces at paraview.org] On Behalf Of Dennis Conklin
Sent: Monday, August 31, 2015 12:47 PM
To: David Thompson
Cc: Paraview (paraview at paraview.org)
Subject: [EXTERNAL] Re: [Paraview] [EXT] Re: Exodus Block Names
All,
Just to wrap this up for the benefit of anyone who searches on this later:
From a python script, it's pretty easy
# Get a pointer to Exodus Reader, either open a file or get Active Source
rdr=GetActiveSource()
Block1=rdr.ElementBlocks[0]
Print Block1
# output will be block name
In a Programmable Filter, things are a little more complicated:
# First create list of Block_names
#
Input=self.GetInput()
# Element Block data is in DataBlock(0) of composite database
ElementBlocks=input.GetBlock(0)
#Number of ElementBlocks
numElemBlocks=ElementBlocks.GetNumberOfBlocks()
#
Block_names=[] #list
#
# names for all blocks in file are available # normally only care about blocks that are loaded # make a list of all and index blocks of interest later For blk in range(numElemBlocks):
meta=ElementBlocks.GetMetaData(blk)
Name=meta.Get(vtk.vtkCompositeDataSet.NAME())
Block_names.append(Name)
#
# Loop over all loaded blocks and find associated names For block in output:
Blk_id=block.FieldData.GetArray('ElementBlockIds')
Blk_name=Block_names[Blk_id-1]
Thanks to everyone for their help.
Dennis
-----Original Message-----
From: David Thompson [mailto:david.thompson at kitware.com]
Sent: Monday, August 31, 2015 10:50 AM
To: Dennis Conklin
Cc: Shawn Waldon; Paraview (paraview at paraview.org)
Subject: Re: [Paraview] [EXT] Re: Exodus Block Names
Hi all,
The Exodus reader creates 8 top-level blocks to identify different types of data present in each file (corresponding to the names you see for 0-7). Each of these blocks contains child blocks for the actual data loaded from the file (which may be a subset of the data present in the file). It is these sub-blocks whose metadata will hold the names from the Exodus file.
David
> On Aug 31, 2015, at 10:40 AM, Dennis Conklin <dennis_conklin at goodyear.com> wrote:
>
> Shawn,
>
> Ok, I’m dense.
>
> When I run your code inside the Programmable Filter, I see some confusing things:
> mbi.GetNumberOfBlocks returns 8, which is NOT the number of blocks in my model but IS the number of MetaData blocks.
>
> The mbi.GetMetaData[i].Get(vtk.vtkCompositeDataSet.NAME()) then is
> Value of i Name
> 0 Element Blocks
> 1 Face Blocks
> 2 Edge Blocks
> 3 Element Sets
> 4 Side Sets
> 5 Face Sets
> 6 Edge Sets
> 7 Node Sets
> 8 <out of range>
>
> I am poking around mbi.GetMetaData[0] (Element Blocks) but I still haven’t found any Block Names there. I feel like I am completely missing something here, but I have no idea what it is.
>
> Dennis
>
>
> From: Shawn Waldon [mailto:shawn.waldon at kitware.com]
> Sent: Monday, August 31, 2015 9:46 AM
> To: Dennis Conklin
> Cc: Paraview (paraview at paraview.org)
> Subject: Re: [EXT] Re: [Paraview] Exodus Block Names
>
> Hi Dennis,
>
> The metadata is on the reader's output, which is a vtkMultiBlockDataSet. reader.GetOutput() should get you the dataset in your python script. Inside the programmable filter you will need to get the input dataset (self.GetInput() should get you the input dataset and self.GetOutput() should get you the output dataset). So something like the following for your programmable filter:
>
> mbi = self.GetInput()
> mbo = self.GetOutput()
>
> mbo.ShallowCopy(mbi)
>
> for i in range(mbo.GetNumberOfBlocks()):
> metadata = mbo.GetMetaData(i)
> name = metadata.Get(vtk.vtkCompositeDataSet.NAME())
> # do something with the name
>
>
> HTH,
> Shawn
>
> On Mon, Aug 31, 2015 at 8:31 AM, Dennis Conklin <dennis_conklin at goodyear.com> wrote:
> Shawn,
>
> Thanks for that tip but I can’t seem to access this structure. Really, I need it within the Programmable Filter, but even when I run a Python script and try to find it directly in an Exodus reader, I can’t seem to locate this metadata.
>
> If I print dir(ExodusReader), there doesn’t seem to be anything about metadata.
> Dennis
>
> From: Shawn Waldon [mailto:shawn.waldon at kitware.com]
> Sent: Friday, August 28, 2015 4:44 PM
> To: Dennis Conklin
> Cc: Paraview (paraview at paraview.org)
> Subject: [EXT] Re: [Paraview] Exodus Block Names
>
> Hi Dennis,
>
> The block name is in the block metadata, which is not where I looked the first time either. Here is a code snippet that shows how to access it.
>
> mb = vtk.vtkMultiBlockDataSet()
> ...
> for i in range(mb.GetNumberOfBlocks):
> metadata = mb.GetMetaData(i)
> name = metadata.Get(vtk.vtkCompositeDataSet.NAME())
>
> HTH,
> Shawn
>
> On Fri, Aug 28, 2015 at 4:13 PM, Dennis Conklin <dennis_conklin at goodyear.com> wrote:
> All,
>
> Once again, I need help. We are starting to assign names to our Exodus blocks (outside of Paraview). This is very useful for ease and clarity of post processing and allows convenient reference to actual components. The good news is that Paraview seems perfectly happy to read in the Block Names and use them in the Properties Panel and the Multi-block Inspector and the Find Data screen if they exist (no action or programming required for this). So, for instance, instead of Paraview generating the non-useful name of “Unnamed block ID: 13 Type: hex” when the blockname is empty, it will automagically use the more useful Blockname of “Tread” if that is in the Exodus file.
>
> However, there has been an unintended consequence of this change. If I select some elements and examine them in Spreadsheet View, I see Block Number 14( the +1 offset from Block_ID and Block Number is NOT the problem!). And now I can no longer associate the element (Block Number 14) with it’s block in the Properties Panel or the Multi-block Inspector or the Find Data panel – where the same block is called “Tread”.
>
> So, to remedy this situation I would like to add an element variable of BlockName, which would contain “Tread” for all the elements in BlockID 13, etc., etc. for all the blocks.
>
> My only problem is I can’t seem to find the list of Block Names. I’m pretty weak at vtk, so it must be available but I surrender – I can’t seem to find it. If someone can help me find the list of Block Names from inside the Programmable Filter, I’ll be happy to add the element variable myself.
>
> Thanks for any help, again!
>
> Dennis
>
> _______________________________________________
> 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 ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Search the list archives at: http://markmail.org/search/?q=ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview
>
>
>
> _______________________________________________
> 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 ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Search the list archives at: http://markmail.org/search/?q=ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview
_______________________________________________
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 ParaView Wiki at: http://paraview.org/Wiki/ParaView
Search the list archives at: http://markmail.org/search/?q=ParaView
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/paraview
More information about the ParaView
mailing list