-
-
Save gonuke/c36e327e399c7a685cd315c738121c9a to your computer and use it in GitHub Desktop.
import numpy as np | |
import pymoab as mb | |
def load_model(filename): | |
mbcore = mb.core.Core() | |
mbcore.load_file(filename) | |
return mbcore | |
def get_groups(mbcore): | |
category_tag = mbcore.tag_get_handle(mb.types.CATEGORY_TAG_NAME) | |
group_category = np.array(["Group"]) | |
group_ents = mbcore.get_entities_by_type_and_tag(0, mb.types.MBENTITYSET, category_tag, group_category) | |
return group_ents | |
def get_vol_mat_map(mbcore): | |
name_tag = mbcore.tag_get_handle(mb.types.NAME_TAG_NAME) | |
id_tag = mbcore.tag_get_handle(mb.types.GLOBAL_ID_TAG_NAME) | |
vol_mat = {} | |
group_ents = get_groups(mbcore) | |
for group_ent in group_ents: | |
group_name = mbcore.tag_get_data(name_tag, group_ent) | |
# optionally confirm that this is a material! | |
vols = mbcore.get_entities_by_type(group_ent, mb.types.MBENTITYSET) | |
for vol in vols: | |
id = mbcore.tag_get_data(id_tag, vol) | |
vol_mat[id] = group_name | |
return vol_mat | |
I couldn't get the vols = mbcore.get_entities(group_ent)
command to work though, I get the error AttributeError: 'pymoab.core.Core' object has no attribute 'get_entities'
So I am trying the script with other options
mbcore.get_entities_by_dimension(
mbcore.get_entities_by_type(
mbcore.get_entities_by_handle(
mbcore.get_entities_by_type_and_tag(
This looks like just the script I am after, thanks for making this, I think that I stumbled across a tiny typo that I see a fix for
id_tag = mbcore.tag_get_hanlde(mb.types.GLOBAL_ID_TAG_NAME)
should perhaps be
id_tag = mbcore.tag_get_handle(mb.types.GLOBAL_ID_TAG_NAME)
Thanks… I fixed this one
I couldn't get the
vols = mbcore.get_entities(group_ent)
command to work though, I get the errorAttributeError: 'pymoab.core.Core' object has no attribute 'get_entities'
So I am trying the script with other options
mbcore.get_entities_by_dimension( mbcore.get_entities_by_type( mbcore.get_entities_by_handle( mbcore.get_entities_by_type_and_tag(
I’ve updated it to use get_entities_by_type()
as it’s the easiest option
Excellent, I can get this working with a few more minor changes ([0][0]
appears to be needed at the end of tag_get_data
calls).
Would you mind if I make a tiny python package from this script?
Naturally I would cite this gist as the source and I can find a way of getting git to commit this code as @gonuke code in the git commit history.
Sure - feel free to make a script out of this.
Just in case anyone is reading this in the future. I made a python package around this script and it can be located here
https://github.com/fusion-energy/dagmc_h5m_file_inspector
Also managed to allocate commits for the script to gonuke and added a cite to this script at the end of the readme
This looks like just the script I am after, thanks for making this, I think that I stumbled across a tiny typo that I see a fix for
id_tag = mbcore.tag_get_hanlde(mb.types.GLOBAL_ID_TAG_NAME)
should perhaps be
id_tag = mbcore.tag_get_handle(mb.types.GLOBAL_ID_TAG_NAME)