svalinn / pydagmc

A convenience interface for examining and reassigning metadata in DAGMC models with PyMOAB
MIT License
12 stars 8 forks source link

PyDAGMC

PyDAGMC is a Python interface for interacting with DAGMC .h5m files through the embedded topological relationships and metadata contained within. These interactions occur through a set of Python classes corresponding to DAGMC’s metadata Group (a grouping of volumes or surfaces), Volume, and Surface groupings in the mesh database. This interface is intended to provide a simple interface for obtaining information about DAGMC models, replacing significant boilerplate code required to perform the same queries with PyMOAB, the Python interface for MOAB itself.

PyDAGMC classes provide the ability to perform basic queries as properties of the class instances. These queries include:

Example

Code:

import dagmc

model = dagmc.DAGModel('dagmc.h5m')

group_dict = model.groups_by_name
print(group_dict)

fuel_group = groups['mat:fuel']

v1 = fuel_group.volumes_by_id[1]

print(v1)

new_group = dagmc.Group.create(model, name="my_new_group", group_id=10)
print(new_group)

Output:

{'picked': Group 1, Name: picked
, 'mat:fuel': Group 2, Name: mat:fuel
Volume IDs:
[1 2]
, 'mat:Graveyard': Group 0, Name: mat:Graveyard
Volume IDs:
[6]
, 'mat:41': Group 0, Name: mat:41
Volume IDs:
[3]
, 'temp:300': Group 0, Name: temp:300
Volume IDs:
[1 2 3]
}

Volume 1, 4092 triangles

Group 10, Name: my_new_group

Code:

# move volume 1 from the fuel group to the group "mat:41"
group_dict['mat:fuel'].remove_set(v1)
group_dict['mat:41'].add_set(v1)

print(group_dict['mat:fuel'])
print(group_dict['mat:41'])

Output:

Group 2, Name: mat:fuel
Volume IDs:
[2]

Group 0, Name: mat:41
Volume IDs:
[1 3]