diff --git a/_build/doctrees/environment.pickle b/_build/doctrees/environment.pickle index 50ef83a57a..439c59a1bb 100644 Binary files a/_build/doctrees/environment.pickle and b/_build/doctrees/environment.pickle differ diff --git a/_build/doctrees/exodus.doctree b/_build/doctrees/exodus.doctree index 7a8c9a5c2d..18a0dab20f 100644 Binary files a/_build/doctrees/exodus.doctree and b/_build/doctrees/exodus.doctree differ diff --git a/_build/html/_modules/exodus.html b/_build/html/_modules/exodus.html index f20da19485..660b3c5662 100644 --- a/_build/html/_modules/exodus.html +++ b/_build/html/_modules/exodus.html @@ -196,7 +196,7 @@

Source code for exodus

 
 def _parse_exodus_version(version_string):
     if version_string:
-        assert version_string.startswith("#define EXODUS_VERSION "), "Received a incorrectly formated verstion string. Please check the CMakeLists.txt"
+        assert version_string.startswith("#define EXODUS_VERSION "), "Received a incorrectly formatted verstion string. Please check the CMakeLists.txt"
         return int(version_string.strip().split()[-1].strip('"').replace('.', ''))
     else:
         return 0
@@ -1663,7 +1663,7 @@ 

Source code for exodus

 
[docs] def get_num_map(self, mapType, idx): """ get user-defined map of exodus element/node/edge/face index to user- or - application- defined element/node/edge/face values. Map values are arbitary integers + application- defined element/node/edge/face values. Map values are arbitrary integers >>> elem_num_map = exo.get_num_map('EX_ELEM_MAP', 1) @@ -1695,7 +1695,7 @@

Source code for exodus

 
[docs] def put_num_map(self, mapType, idx, num_map): """ put user-defined map of exodus element/node/edge/face index to user- or - application- defined element/node/edge/face values. Map values are arbitary integers + application- defined element/node/edge/face values. Map values are arbitrary integers Parameters diff --git a/_build/html/_modules/exomerge.html b/_build/html/_modules/exomerge.html index 54b9d803cd..b89e2b6d44 100644 --- a/_build/html/_modules/exomerge.html +++ b/_build/html/_modules/exomerge.html @@ -119,7 +119,9 @@

Source code for exomerge

 import operator
 
 if sys.version_info[0] < 3:
-    raise Exception("Python-3 version. If using python-2, try `import exomerge2 as exomerge`")
+    raise Exception(
+        "Python-3 version. If using python-2, try `import exomerge2 as exomerge`"
+    )
 
 # import exodus module
 # (exodus.py should be in the same directory as this file)
@@ -133,7 +135,7 @@ 

Source code for exomerge

 VERSION = __version__
 
 # contact person for issues
-CONTACT = 'Tim Kostka <tdkostk@sandia.gov>'
+CONTACT = "Tim Kostka <tdkostk@sandia.gov>"
 
 # show the banner on first use
 SHOW_BANNER = True
@@ -153,11 +155,12 @@ 

Source code for exomerge

 # is the renamed function, or None.
 # e.g. DEPRECATED_FUNCTIONS['build_hex8_cube'] = 'create_hex8_cube'
 DEPRECATED_FUNCTIONS = dict()
-DEPRECATED_FUNCTIONS['write'] = 'export'
+DEPRECATED_FUNCTIONS["write"] = "export"
 
 
 
[docs]class DummyFile(object): """Dummy class used to suppress output to stdout.""" +
[docs] def write(self, x): """Ignore the write command."""
@@ -186,79 +189,117 @@

Source code for exomerge

 
     # define translation from two faces to a 3D cohesive element
     COHESIVE_FORMULA = dict()
-    COHESIVE_FORMULA['quad4'] = ['hex8', (0, 1, 2, 3, 4, 5, 6, 7)]
-    COHESIVE_FORMULA['tri3'] = ['wedge6', (0, 1, 2, 3, 4, 5)]
-    COHESIVE_FORMULA['tri6'] = [
-        'wedge12', (0, 1, 2, 6, 7, 8, 3, 4, 5, 9, 10, 11)
-    ]
+    COHESIVE_FORMULA["quad4"] = ["hex8", (0, 1, 2, 3, 4, 5, 6, 7)]
+    COHESIVE_FORMULA["tri3"] = ["wedge6", (0, 1, 2, 3, 4, 5)]
+    COHESIVE_FORMULA["tri6"] = ["wedge12", (0, 1, 2, 6, 7, 8, 3, 4, 5, 9, 10, 11)]
 
     # define calculation for element length/area/volume
     VOLUME_FORMULA = dict()
-    VOLUME_FORMULA['line2'] = [1.0, (0, 1)]
-    VOLUME_FORMULA['line3'] = VOLUME_FORMULA['line2']
-    VOLUME_FORMULA['tri3'] = [0.5, (0, 1), (0, 2)]
-    VOLUME_FORMULA['tri6'] = VOLUME_FORMULA['tri3']
-    VOLUME_FORMULA['quad4'] = [0.5, (0, 2), (1, 3)]
-    VOLUME_FORMULA['quad6'] = VOLUME_FORMULA['quad4']
-    VOLUME_FORMULA['quad8'] = VOLUME_FORMULA['quad4']
-    VOLUME_FORMULA['tet4'] = [1.0 / 6.0, (0, 1), (0, 2), (0, 3)]
-    VOLUME_FORMULA['tet10'] = VOLUME_FORMULA['tet4']
-    VOLUME_FORMULA['wedge6'] = [
-        0.5, ((0, 3), (1, 4)), ((0, 3), (2, 5)), ((0, 1, 2), (3, 4, 5))
+    VOLUME_FORMULA["line2"] = [1.0, (0, 1)]
+    VOLUME_FORMULA["line3"] = VOLUME_FORMULA["line2"]
+    VOLUME_FORMULA["tri3"] = [0.5, (0, 1), (0, 2)]
+    VOLUME_FORMULA["tri6"] = VOLUME_FORMULA["tri3"]
+    VOLUME_FORMULA["quad4"] = [0.5, (0, 2), (1, 3)]
+    VOLUME_FORMULA["quad6"] = VOLUME_FORMULA["quad4"]
+    VOLUME_FORMULA["quad8"] = VOLUME_FORMULA["quad4"]
+    VOLUME_FORMULA["tet4"] = [1.0 / 6.0, (0, 1), (0, 2), (0, 3)]
+    VOLUME_FORMULA["tet10"] = VOLUME_FORMULA["tet4"]
+    VOLUME_FORMULA["wedge6"] = [
+        0.5,
+        ((0, 3), (1, 4)),
+        ((0, 3), (2, 5)),
+        ((0, 1, 2), (3, 4, 5)),
     ]
-    VOLUME_FORMULA['wedge12'] = VOLUME_FORMULA['wedge6']
-    VOLUME_FORMULA['wedge15'] = VOLUME_FORMULA['wedge6']
-    VOLUME_FORMULA['wedge16'] = VOLUME_FORMULA['wedge6']
-    VOLUME_FORMULA['hex8'] = [
-        1.0, ((0, 3, 4, 7), (1, 2, 5, 6)), ((0, 1, 4, 5), (2, 3, 6, 7)),
-        ((0, 1, 2, 3), (4, 5, 6, 7))
+    VOLUME_FORMULA["wedge12"] = VOLUME_FORMULA["wedge6"]
+    VOLUME_FORMULA["wedge15"] = VOLUME_FORMULA["wedge6"]
+    VOLUME_FORMULA["wedge16"] = VOLUME_FORMULA["wedge6"]
+    VOLUME_FORMULA["hex8"] = [
+        1.0,
+        ((0, 3, 4, 7), (1, 2, 5, 6)),
+        ((0, 1, 4, 5), (2, 3, 6, 7)),
+        ((0, 1, 2, 3), (4, 5, 6, 7)),
     ]
-    VOLUME_FORMULA['hex20'] = VOLUME_FORMULA['hex8']
+    VOLUME_FORMULA["hex20"] = VOLUME_FORMULA["hex8"]
 
     # define mapping of the external faces of an element
     FACE_MAPPING = dict()
-    FACE_MAPPING['hex8'] = [('quad4', (0, 1, 5, 4)), ('quad4', (1, 2, 6, 5)),
-                            ('quad4', (2, 3, 7, 6)), ('quad4', (3, 0, 4, 7)),
-                            ('quad4', (0, 3, 2, 1)), ('quad4', (4, 5, 6, 7))]
-    FACE_MAPPING['hex20'] = [('quad8', (0, 1, 5, 4, 8, 13, 16, 12)),
-                             ('quad8', (1, 2, 6, 5, 9, 14, 17, 13)),
-                             ('quad8', (2, 3, 7, 6, 10, 15, 18, 14)),
-                             ('quad8', (3, 0, 4, 7, 11, 12, 19, 15)),
-                             ('quad8', (0, 3, 2, 1, 11, 10, 9, 8)),
-                             ('quad8', (4, 5, 6, 7, 16, 17, 18, 19))]
-    FACE_MAPPING['tet4'] = [('tri3', (0, 1, 3)), ('tri3', (1, 2, 3)),
-                            ('tri3', (2, 0, 3)), ('tri3', (0, 2, 1))]
-    FACE_MAPPING['tet10'] = [('tri6', (0, 1, 3, 4, 8, 7)),
-                             ('tri6', (1, 2, 3, 5, 9, 8)),
-                             ('tri6', (2, 0, 3, 6, 7, 9)),
-                             ('tri6', (0, 2, 1, 6, 5, 4))]
-    FACE_MAPPING['wedge6'] = [('quad4', (0, 1, 4, 3)), ('quad4', (1, 2, 5, 4)),
-                              ('quad4', (2, 0, 3, 5)), ('tri3', (0, 2, 1)),
-                              ('tri3', (3, 4, 5))]
-    FACE_MAPPING['wedge12'] = [('quad6', (0, 1, 4, 3, 6, 9)),
-                               ('quad6', (1, 2, 5, 4, 7, 10)),
-                               ('quad6', (2, 0, 3, 5, 8, 11)),
-                               ('tri6', (0, 2, 1, 8, 7, 6)),
-                               ('tri6', (3, 4, 5, 11, 10, 9))]
-    FACE_MAPPING['wedge15'] = [('quad8', (0, 1, 4, 3, 6, 10, 12, 9)),
-                               ('quad8', (1, 2, 5, 4, 7, 11, 13, 10)),
-                               ('quad8', (2, 0, 3, 5, 8, 9, 14, 11)),
-                               ('tri6', (0, 2, 1, 8, 7, 6)),
-                               ('tri6', (3, 4, 5, 12, 13, 14))]
-    FACE_MAPPING['wedge16'] = FACE_MAPPING['wedge15']
-    FACE_MAPPING['tri3'] = [('line2', (0, 1)), ('line2', (1, 2)),
-                            ('line2', (2, 0))]
-    FACE_MAPPING['tri6'] = [('line3', (0, 1, 3)), ('line3', (1, 2, 4)),
-                            ('line3', (2, 0, 5))]
-    FACE_MAPPING['quad4'] = [('line2', (0, 1)), ('line2', (1, 2)),
-                             ('line2', (2, 3)), ('line2', (3, 0))]
-    FACE_MAPPING['quad6'] = [('line3', (0, 1, 4)), ('line2', (1, 2)),
-                             ('line3', (2, 5, 3)), ('line2', (3, 0))]
-    FACE_MAPPING['quad8'] = [('line3', (0, 1, 4)), ('line3', (1, 2, 5)),
-                             ('line3', (2, 3, 6)), ('line3', (3, 0, 7))]
-    FACE_MAPPING['line2'] = [('point', tuple([0])), ('point', tuple([1]))]
-    FACE_MAPPING['line3'] = FACE_MAPPING['line2']
-    FACE_MAPPING['point'] = []
+    FACE_MAPPING["hex8"] = [
+        ("quad4", (0, 1, 5, 4)),
+        ("quad4", (1, 2, 6, 5)),
+        ("quad4", (2, 3, 7, 6)),
+        ("quad4", (3, 0, 4, 7)),
+        ("quad4", (0, 3, 2, 1)),
+        ("quad4", (4, 5, 6, 7)),
+    ]
+    FACE_MAPPING["hex20"] = [
+        ("quad8", (0, 1, 5, 4, 8, 13, 16, 12)),
+        ("quad8", (1, 2, 6, 5, 9, 14, 17, 13)),
+        ("quad8", (2, 3, 7, 6, 10, 15, 18, 14)),
+        ("quad8", (3, 0, 4, 7, 11, 12, 19, 15)),
+        ("quad8", (0, 3, 2, 1, 11, 10, 9, 8)),
+        ("quad8", (4, 5, 6, 7, 16, 17, 18, 19)),
+    ]
+    FACE_MAPPING["tet4"] = [
+        ("tri3", (0, 1, 3)),
+        ("tri3", (1, 2, 3)),
+        ("tri3", (2, 0, 3)),
+        ("tri3", (0, 2, 1)),
+    ]
+    FACE_MAPPING["tet10"] = [
+        ("tri6", (0, 1, 3, 4, 8, 7)),
+        ("tri6", (1, 2, 3, 5, 9, 8)),
+        ("tri6", (2, 0, 3, 6, 7, 9)),
+        ("tri6", (0, 2, 1, 6, 5, 4)),
+    ]
+    FACE_MAPPING["wedge6"] = [
+        ("quad4", (0, 1, 4, 3)),
+        ("quad4", (1, 2, 5, 4)),
+        ("quad4", (2, 0, 3, 5)),
+        ("tri3", (0, 2, 1)),
+        ("tri3", (3, 4, 5)),
+    ]
+    FACE_MAPPING["wedge12"] = [
+        ("quad6", (0, 1, 4, 3, 6, 9)),
+        ("quad6", (1, 2, 5, 4, 7, 10)),
+        ("quad6", (2, 0, 3, 5, 8, 11)),
+        ("tri6", (0, 2, 1, 8, 7, 6)),
+        ("tri6", (3, 4, 5, 11, 10, 9)),
+    ]
+    FACE_MAPPING["wedge15"] = [
+        ("quad8", (0, 1, 4, 3, 6, 10, 12, 9)),
+        ("quad8", (1, 2, 5, 4, 7, 11, 13, 10)),
+        ("quad8", (2, 0, 3, 5, 8, 9, 14, 11)),
+        ("tri6", (0, 2, 1, 8, 7, 6)),
+        ("tri6", (3, 4, 5, 12, 13, 14)),
+    ]
+    FACE_MAPPING["wedge16"] = FACE_MAPPING["wedge15"]
+    FACE_MAPPING["tri3"] = [("line2", (0, 1)), ("line2", (1, 2)), ("line2", (2, 0))]
+    FACE_MAPPING["tri6"] = [
+        ("line3", (0, 1, 3)),
+        ("line3", (1, 2, 4)),
+        ("line3", (2, 0, 5)),
+    ]
+    FACE_MAPPING["quad4"] = [
+        ("line2", (0, 1)),
+        ("line2", (1, 2)),
+        ("line2", (2, 3)),
+        ("line2", (3, 0)),
+    ]
+    FACE_MAPPING["quad6"] = [
+        ("line3", (0, 1, 4)),
+        ("line2", (1, 2)),
+        ("line3", (2, 5, 3)),
+        ("line2", (3, 0)),
+    ]
+    FACE_MAPPING["quad8"] = [
+        ("line3", (0, 1, 4)),
+        ("line3", (1, 2, 5)),
+        ("line3", (2, 3, 6)),
+        ("line3", (3, 0, 7)),
+    ]
+    FACE_MAPPING["line2"] = [("point", tuple([0])), ("point", tuple([1]))]
+    FACE_MAPPING["line3"] = FACE_MAPPING["line2"]
+    FACE_MAPPING["point"] = []
 
     # define all standard element types
     STANDARD_ELEMENT_TYPES = set(FACE_MAPPING.keys())
@@ -267,154 +308,291 @@ 

Source code for exomerge

     # for 2d elements, this flips the element normal
     # for 1d elements, this changes the direction
     INVERTED_CONNECTIVITY = dict()
-    INVERTED_CONNECTIVITY['hex8'] = (4, 5, 6, 7, 0, 1, 2, 3)
-    INVERTED_CONNECTIVITY['hex20'] = (4, 5, 6, 7, 0, 1, 2, 3, 16, 17, 18, 19,
-                                      8, 9, 10, 11, 12, 13, 14, 15)
-    INVERTED_CONNECTIVITY['tet4'] = (0, 2, 1, 3)
-    INVERTED_CONNECTIVITY['tet10'] = (0, 2, 1, 3, 6, 5, 4, 7, 9, 8)
-    INVERTED_CONNECTIVITY['wedge6'] = (3, 4, 5, 0, 1, 2)
-    INVERTED_CONNECTIVITY['wedge12'] = (3, 4, 5, 0, 1, 2, 9, 10, 11, 6, 7, 8)
-    INVERTED_CONNECTIVITY['wedge15'] = (3, 4, 5, 0, 1, 2, 12, 13, 14, 6, 7, 8,
-                                        9, 10, 11)
-    INVERTED_CONNECTIVITY['wedge16'] = (3, 4, 5, 0, 1, 2, 12, 13, 14, 6, 7, 8,
-                                        9, 10, 11, 15)
-    INVERTED_CONNECTIVITY['tri3'] = (0, 2, 1)
-    INVERTED_CONNECTIVITY['tri6'] = (0, 2, 1, 5, 4, 3)
-    INVERTED_CONNECTIVITY['quad4'] = (0, 3, 2, 1)
-    INVERTED_CONNECTIVITY['quad6'] = (3, 2, 1, 0, 5, 4)
-    INVERTED_CONNECTIVITY['quad8'] = (0, 3, 2, 1, 7, 6, 5, 4)
-    INVERTED_CONNECTIVITY['line2'] = (1, 0)
-    INVERTED_CONNECTIVITY['line3'] = (1, 0, 2)
-    INVERTED_CONNECTIVITY['point'] = tuple([0])
+    INVERTED_CONNECTIVITY["hex8"] = (4, 5, 6, 7, 0, 1, 2, 3)
+    INVERTED_CONNECTIVITY["hex20"] = (
+        4,
+        5,
+        6,
+        7,
+        0,
+        1,
+        2,
+        3,
+        16,
+        17,
+        18,
+        19,
+        8,
+        9,
+        10,
+        11,
+        12,
+        13,
+        14,
+        15,
+    )
+    INVERTED_CONNECTIVITY["tet4"] = (0, 2, 1, 3)
+    INVERTED_CONNECTIVITY["tet10"] = (0, 2, 1, 3, 6, 5, 4, 7, 9, 8)
+    INVERTED_CONNECTIVITY["wedge6"] = (3, 4, 5, 0, 1, 2)
+    INVERTED_CONNECTIVITY["wedge12"] = (3, 4, 5, 0, 1, 2, 9, 10, 11, 6, 7, 8)
+    INVERTED_CONNECTIVITY["wedge15"] = (
+        3,
+        4,
+        5,
+        0,
+        1,
+        2,
+        12,
+        13,
+        14,
+        6,
+        7,
+        8,
+        9,
+        10,
+        11,
+    )
+    INVERTED_CONNECTIVITY["wedge16"] = (
+        3,
+        4,
+        5,
+        0,
+        1,
+        2,
+        12,
+        13,
+        14,
+        6,
+        7,
+        8,
+        9,
+        10,
+        11,
+        15,
+    )
+    INVERTED_CONNECTIVITY["tri3"] = (0, 2, 1)
+    INVERTED_CONNECTIVITY["tri6"] = (0, 2, 1, 5, 4, 3)
+    INVERTED_CONNECTIVITY["quad4"] = (0, 3, 2, 1)
+    INVERTED_CONNECTIVITY["quad6"] = (3, 2, 1, 0, 5, 4)
+    INVERTED_CONNECTIVITY["quad8"] = (0, 3, 2, 1, 7, 6, 5, 4)
+    INVERTED_CONNECTIVITY["line2"] = (1, 0)
+    INVERTED_CONNECTIVITY["line3"] = (1, 0, 2)
+    INVERTED_CONNECTIVITY["point"] = tuple([0])
 
     # define a connectivity permutation which rotates the given 2d face
     ROTATED_CONNECTIVITY = dict()
-    ROTATED_CONNECTIVITY['quad4'] = (3, 0, 1, 2)
-    ROTATED_CONNECTIVITY['quad8'] = (3, 0, 1, 2, 7, 4, 5, 6)
-    ROTATED_CONNECTIVITY['tri3'] = (2, 0, 1)
-    ROTATED_CONNECTIVITY['tri6'] = (2, 0, 1, 5, 3, 4)
+    ROTATED_CONNECTIVITY["quad4"] = (3, 0, 1, 2)
+    ROTATED_CONNECTIVITY["quad8"] = (3, 0, 1, 2, 7, 4, 5, 6)
+    ROTATED_CONNECTIVITY["tri3"] = (2, 0, 1)
+    ROTATED_CONNECTIVITY["tri6"] = (2, 0, 1, 5, 3, 4)
 
     # define the topological dimension of each element
     DIMENSION = dict()
-    DIMENSION['point'] = 0
-    DIMENSION['line2'] = 1
-    DIMENSION['line3'] = 1
-    DIMENSION['tri3'] = 2
-    DIMENSION['tri6'] = 2
-    DIMENSION['quad4'] = 2
-    DIMENSION['quad6'] = 2
-    DIMENSION['quad8'] = 2
-    DIMENSION['hex8'] = 3
-    DIMENSION['hex20'] = 3
-    DIMENSION['tet4'] = 3
-    DIMENSION['tet10'] = 3
-    DIMENSION['wedge6'] = 3
-    DIMENSION['wedge12'] = 3
-    DIMENSION['wedge15'] = 3
-    DIMENSION['wedge16'] = 3
+    DIMENSION["point"] = 0
+    DIMENSION["line2"] = 1
+    DIMENSION["line3"] = 1
+    DIMENSION["tri3"] = 2
+    DIMENSION["tri6"] = 2
+    DIMENSION["quad4"] = 2
+    DIMENSION["quad6"] = 2
+    DIMENSION["quad8"] = 2
+    DIMENSION["hex8"] = 3
+    DIMENSION["hex20"] = 3
+    DIMENSION["tet4"] = 3
+    DIMENSION["tet10"] = 3
+    DIMENSION["wedge6"] = 3
+    DIMENSION["wedge12"] = 3
+    DIMENSION["wedge15"] = 3
+    DIMENSION["wedge16"] = 3
 
     # define the number of nodes per element
     NODES_PER_ELEMENT = dict(
-        (key, len(value))
-        for key, value in list(INVERTED_CONNECTIVITY.items()))
+        (key, len(value)) for key, value in list(INVERTED_CONNECTIVITY.items())
+    )
 
     # define how to triangulate faces of 3D elements
     TRIANGULATED_FACES = dict()
-    TRIANGULATED_FACES['tri3'] = [(0, 1, 2)]
-    TRIANGULATED_FACES['tri6'] = [(0, 3, 5), (1, 4, 3), (2, 5, 4), (3, 4, 5)]
-    TRIANGULATED_FACES['quad4'] = [(0, 1, (0, 1, 2, 3)), (1, 2, (0, 1, 2, 3)),
-                                   (2, 3, (0, 1, 2, 3)), (3, 0, (0, 1, 2, 3))]
-    TRIANGULATED_FACES['quad6'] = [(0, 4, (4, 5)), (4, 1, (4, 5)),
-                                   (1, 2, (4, 5)), (2, 5, (4, 5)),
-                                   (5, 3, (4, 5)), (3, 0, (4, 5))]
-    TRIANGULATED_FACES['quad8'] = [(4, 7, 0), (5, 4, 1), (6, 5, 2), (7, 6, 3),
-                                   (7, 4, (4, 5, 6, 7)), (4, 5, (4, 5, 6, 7)),
-                                   (5, 6, (4, 5, 6, 7)), (6, 7, (4, 5, 6, 7))]
+    TRIANGULATED_FACES["tri3"] = [(0, 1, 2)]
+    TRIANGULATED_FACES["tri6"] = [(0, 3, 5), (1, 4, 3), (2, 5, 4), (3, 4, 5)]
+    TRIANGULATED_FACES["quad4"] = [
+        (0, 1, (0, 1, 2, 3)),
+        (1, 2, (0, 1, 2, 3)),
+        (2, 3, (0, 1, 2, 3)),
+        (3, 0, (0, 1, 2, 3)),
+    ]
+    TRIANGULATED_FACES["quad6"] = [
+        (0, 4, (4, 5)),
+        (4, 1, (4, 5)),
+        (1, 2, (4, 5)),
+        (2, 5, (4, 5)),
+        (5, 3, (4, 5)),
+        (3, 0, (4, 5)),
+    ]
+    TRIANGULATED_FACES["quad8"] = [
+        (4, 7, 0),
+        (5, 4, 1),
+        (6, 5, 2),
+        (7, 6, 3),
+        (7, 4, (4, 5, 6, 7)),
+        (4, 5, (4, 5, 6, 7)),
+        (5, 6, (4, 5, 6, 7)),
+        (6, 7, (4, 5, 6, 7)),
+    ]
 
     # define formulas for converting between element types
     ELEMENT_CONVERSIONS = dict()
-    ELEMENT_CONVERSIONS['hex8'] = dict()
-    ELEMENT_CONVERSIONS['hex8']['hex20'] = [[
-        0, 1, 2, 3, 4, 5, 6, 7, (0, 1), (1, 2), (2, 3), (0, 3), (0, 4), (1, 5),
-        (2, 6), (3, 7), (4, 5), (5, 6), (6, 7), (4, 7)
-    ]]
-    ELEMENT_CONVERSIONS['hex20'] = dict()
-    ELEMENT_CONVERSIONS['hex20']['hex8'] = [list(range(8))]
-    ELEMENT_CONVERSIONS['tet4'] = dict()
-    ELEMENT_CONVERSIONS['tet4']['tet10'] = [[
-        0, 1, 2, 3, (0, 1), (1, 2), (0, 2), (0, 3), (1, 3), (2, 3)
-    ]]
-    ELEMENT_CONVERSIONS['tet10'] = dict()
-    ELEMENT_CONVERSIONS['tet10']['tet4'] = [list(range(4))]
-    ELEMENT_CONVERSIONS['wedge6'] = dict()
-    ELEMENT_CONVERSIONS['wedge6']['wedge15'] = [[
-        0, 1, 2, 3, 4, 5, (0, 1), (1, 2), (0, 2), (0, 3), (1, 4), (2, 5),
-        (3, 4), (4, 5), (3, 5)
-    ]]
-    ELEMENT_CONVERSIONS['wedge6']['wedge16'] = [[
-        0, 1, 2, 3, 4, 5, (0, 1), (1, 2), (0, 2), (0, 3), (1, 4), (2, 5),
-        (3, 4), (4, 5), (3, 5), (0, 1, 2, 3, 4, 5)
-    ]]
-    ELEMENT_CONVERSIONS['wedge12'] = dict()
-    ELEMENT_CONVERSIONS['wedge12']['wedge6'] = [list(range(6))]
-    ELEMENT_CONVERSIONS['wedge12']['wedge15'] = [[
-        0, 1, 2, 3, 4, 5, 6, 7, 8, (0, 3), (1, 4), (2, 5), 9, 10, 11
-    ]]
-    ELEMENT_CONVERSIONS['wedge15'] = dict()
-    ELEMENT_CONVERSIONS['wedge15']['wedge6'] = [list(range(6))]
-    ELEMENT_CONVERSIONS['wedge15']['wedge16'] = [[
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, (0, 1, 2, 3, 4, 5)
-    ]]
-    ELEMENT_CONVERSIONS['wedge16'] = dict()
-    ELEMENT_CONVERSIONS['wedge16']['wedge6'] = [list(range(6))]
-    ELEMENT_CONVERSIONS['wedge16']['wedge15'] = [list(range(15))]
+    ELEMENT_CONVERSIONS["hex8"] = dict()
+    ELEMENT_CONVERSIONS["hex8"]["hex20"] = [
+        [
+            0,
+            1,
+            2,
+            3,
+            4,
+            5,
+            6,
+            7,
+            (0, 1),
+            (1, 2),
+            (2, 3),
+            (0, 3),
+            (0, 4),
+            (1, 5),
+            (2, 6),
+            (3, 7),
+            (4, 5),
+            (5, 6),
+            (6, 7),
+            (4, 7),
+        ]
+    ]
+    ELEMENT_CONVERSIONS["hex20"] = dict()
+    ELEMENT_CONVERSIONS["hex20"]["hex8"] = [list(range(8))]
+    ELEMENT_CONVERSIONS["tet4"] = dict()
+    ELEMENT_CONVERSIONS["tet4"]["tet10"] = [
+        [0, 1, 2, 3, (0, 1), (1, 2), (0, 2), (0, 3), (1, 3), (2, 3)]
+    ]
+    ELEMENT_CONVERSIONS["tet10"] = dict()
+    ELEMENT_CONVERSIONS["tet10"]["tet4"] = [list(range(4))]
+    ELEMENT_CONVERSIONS["wedge6"] = dict()
+    ELEMENT_CONVERSIONS["wedge6"]["wedge15"] = [
+        [
+            0,
+            1,
+            2,
+            3,
+            4,
+            5,
+            (0, 1),
+            (1, 2),
+            (0, 2),
+            (0, 3),
+            (1, 4),
+            (2, 5),
+            (3, 4),
+            (4, 5),
+            (3, 5),
+        ]
+    ]
+    ELEMENT_CONVERSIONS["wedge6"]["wedge16"] = [
+        [
+            0,
+            1,
+            2,
+            3,
+            4,
+            5,
+            (0, 1),
+            (1, 2),
+            (0, 2),
+            (0, 3),
+            (1, 4),
+            (2, 5),
+            (3, 4),
+            (4, 5),
+            (3, 5),
+            (0, 1, 2, 3, 4, 5),
+        ]
+    ]
+    ELEMENT_CONVERSIONS["wedge12"] = dict()
+    ELEMENT_CONVERSIONS["wedge12"]["wedge6"] = [list(range(6))]
+    ELEMENT_CONVERSIONS["wedge12"]["wedge15"] = [
+        [0, 1, 2, 3, 4, 5, 6, 7, 8, (0, 3), (1, 4), (2, 5), 9, 10, 11]
+    ]
+    ELEMENT_CONVERSIONS["wedge15"] = dict()
+    ELEMENT_CONVERSIONS["wedge15"]["wedge6"] = [list(range(6))]
+    ELEMENT_CONVERSIONS["wedge15"]["wedge16"] = [
+        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, (0, 1, 2, 3, 4, 5)]
+    ]
+    ELEMENT_CONVERSIONS["wedge16"] = dict()
+    ELEMENT_CONVERSIONS["wedge16"]["wedge6"] = [list(range(6))]
+    ELEMENT_CONVERSIONS["wedge16"]["wedge15"] = [list(range(15))]
 
     # define the order of each element
     ELEMENT_ORDER = dict()
-    ELEMENT_ORDER['hex8'] = 1
-    ELEMENT_ORDER['hex20'] = 2
-    ELEMENT_ORDER['tet4'] = 1
-    ELEMENT_ORDER['tet10'] = 2
-    ELEMENT_ORDER['wedge6'] = 1
-    ELEMENT_ORDER['wedge12'] = 1
-    ELEMENT_ORDER['wedge15'] = 2
-    ELEMENT_ORDER['wedge16'] = 2
-    ELEMENT_ORDER['tri3'] = 1
-    ELEMENT_ORDER['tri6'] = 2
-    ELEMENT_ORDER['quad4'] = 1
-    ELEMENT_ORDER['quad6'] = 1
-    ELEMENT_ORDER['quad8'] = 2
-    ELEMENT_ORDER['line2'] = 1
-    ELEMENT_ORDER['line3'] = 2
-    ELEMENT_ORDER['point'] = 1
+    ELEMENT_ORDER["hex8"] = 1
+    ELEMENT_ORDER["hex20"] = 2
+    ELEMENT_ORDER["tet4"] = 1
+    ELEMENT_ORDER["tet10"] = 2
+    ELEMENT_ORDER["wedge6"] = 1
+    ELEMENT_ORDER["wedge12"] = 1
+    ELEMENT_ORDER["wedge15"] = 2
+    ELEMENT_ORDER["wedge16"] = 2
+    ELEMENT_ORDER["tri3"] = 1
+    ELEMENT_ORDER["tri6"] = 2
+    ELEMENT_ORDER["quad4"] = 1
+    ELEMENT_ORDER["quad6"] = 1
+    ELEMENT_ORDER["quad8"] = 2
+    ELEMENT_ORDER["line2"] = 1
+    ELEMENT_ORDER["line3"] = 2
+    ELEMENT_ORDER["point"] = 1
 
     # define components of multi-component fields
     MULTI_COMPONENT_FIELD_SUBSCRIPTS = dict()
-    MULTI_COMPONENT_FIELD_SUBSCRIPTS['vector'] = ('x', 'y', 'z')
-    MULTI_COMPONENT_FIELD_SUBSCRIPTS['symmetric_3x3_tensor'] = ('xx', 'yy',
-                                                                'zz', 'xy',
-                                                                'yz', 'zx')
-    MULTI_COMPONENT_FIELD_SUBSCRIPTS['full_3x3_tensor'] = ('xx', 'yy', 'zz',
-                                                           'xy', 'yz', 'zx',
-                                                           'yx', 'zy', 'xz')
+    MULTI_COMPONENT_FIELD_SUBSCRIPTS["vector"] = ("x", "y", "z")
+    MULTI_COMPONENT_FIELD_SUBSCRIPTS["symmetric_3x3_tensor"] = (
+        "xx",
+        "yy",
+        "zz",
+        "xy",
+        "yz",
+        "zx",
+    )
+    MULTI_COMPONENT_FIELD_SUBSCRIPTS["full_3x3_tensor"] = (
+        "xx",
+        "yy",
+        "zz",
+        "xy",
+        "yz",
+        "zx",
+        "yx",
+        "zy",
+        "xz",
+    )
     ALL_MULTI_COMPONENT_FIELD_SUBSCRIPTS = set(
-        itertools.chain(*list(MULTI_COMPONENT_FIELD_SUBSCRIPTS.values())))
+        itertools.chain(*list(MULTI_COMPONENT_FIELD_SUBSCRIPTS.values()))
+    )
 
     def __init__(self):
         """Initialize the model."""
         # (only) the first time this module is used, show an info banner
         global SHOW_BANNER
         if SHOW_BANNER:
-            print(('\n\nYou are using Exomerge v%s -- A lightweight Python '
-                   'interface for manipulating\nExodusII files. (Python-3 version)' % (VERSION)))
+            print(
+                (
+                    "\n\nYou are using Exomerge v%s -- A lightweight Python "
+                    "interface for manipulating\nExodusII files. (Python-3 version)"
+                    % (VERSION)
+                )
+            )
             # print out the exodus banner after formatting it to fit within
             # 79 characters
             exodus_text = exodus.EXODUS_PY_COPYRIGHT
-            exodus_text = exodus_text.strip().replace('\n', ' ')
-            exodus_text = exodus_text.replace('. ', '.  ')
-            exodus_text = exodus_text.replace('.   ', '.  ')
+            exodus_text = exodus_text.strip().replace("\n", " ")
+            exodus_text = exodus_text.replace(". ", ".  ")
+            exodus_text = exodus_text.replace(".   ", ".  ")
             exodus_text = textwrap.fill(exodus_text, width=79)
-            print(('\n%s\n' % exodus_text))
+            print(("\n%s\n" % exodus_text))
             SHOW_BANNER = False
         # list of [x, y, z] coordinates for each node
         self.nodes = []
@@ -464,28 +642,27 @@ 

Source code for exomerge

 
         """
         # for special methods, use default behavior
-        if name[:2] == '__':
+        if name[:2] == "__":
             raise AttributeError
         # get non-special function names
-        names = [x for x in dir(self.__class__) if x[:2] != '__']
+        names = [x for x in dir(self.__class__) if x[:2] != "__"]
         # if the name appears to be singular, search for the plural version
-        if not name.endswith('s'):
-            trial = name + 's'
+        if not name.endswith("s"):
+            trial = name + "s"
             if trial in names:
                 return getattr(self, trial)
         # if the name appears to be plural, search for the singular version
-        if name.endswith('s'):
+        if name.endswith("s"):
             trial = name[:-1]
-            if not trial.endswith('s') and trial in names:
+            if not trial.endswith("s") and trial in names:
                 return getattr(self, trial)
         # we can't find the name, so find names close to it to offer as
         # suggestions
         # filter names by closeness
-        names = dict(
-            (x, difflib.SequenceMatcher(None, x, name).ratio()) for x in names)
-        sorted_names = sorted(iter(names.items()),
-                              key=operator.itemgetter(1),
-                              reverse=True)
+        names = dict((x, difflib.SequenceMatcher(None, x, name).ratio()) for x in names)
+        sorted_names = sorted(
+            iter(names.items()), key=operator.itemgetter(1), reverse=True
+        )
         # get the closest 5 matching function names
         closest_names = [x[0] for x in sorted_names[0:5]]
         # in an interactive shell, just issue a warning, else
@@ -495,16 +672,18 @@ 

Source code for exomerge

         else:
             call = self._error
         call(
-            'Function not found.',
+            "Function not found.",
             'The function "%s" does not exist.  Perhaps you meant to '
-            'call one of the following functions:\n\n%s' %
-            (name, '\n'.join(closest_names)))
+ "call one of the following functions:\n\n%s" + % (name, "\n".join(closest_names)), + )
@staticmethod def _is_interactive(): """Return True if we're in an interactive shell.""" import __main__ as main - return not hasattr(main, '__file__') + + return not hasattr(main, "__file__") @staticmethod def _assert(condition): @@ -535,22 +714,38 @@

Source code for exomerge

         assert x1 <= x <= x2
         values = []
         # proportion of y0
-        values.append(((x - x1) * (x - x2)**2) / ((x0 - x2) * (x1 - x2)**2))
+        values.append(((x - x1) * (x - x2) ** 2) / ((x0 - x2) * (x1 - x2) ** 2))
         # proportion of y1
-        values.append(-(((x - x2) *
-                         (-(x * x1 * (x1 + 3 * x2)) - x1 *
-                          (x1**2 - 4 * x1 * x2 + x2**2) + x**2 *
-                          (x1 + x2 - 2 * x3) + x2 * (-3 * x1 + x2) * x3 + x *
-                          (3 * x1 + x2) * x3)) / ((x1 - x2)**3 * (x1 - x3))))
+        values.append(
+            -(
+                (
+                    (x - x2)
+                    * (
+                        -(x * x1 * (x1 + 3 * x2))
+                        - x1 * (x1**2 - 4 * x1 * x2 + x2**2)
+                        + x**2 * (x1 + x2 - 2 * x3)
+                        + x2 * (-3 * x1 + x2) * x3
+                        + x * (3 * x1 + x2) * x3
+                    )
+                )
+                / ((x1 - x2) ** 3 * (x1 - x3))
+            )
+        )
         # proportion of y2
         values.append(
-            ((x - x1) *
-             (x0 * x1 * (x1 - 3 * x2) + x**2 * (-2 * x0 + x1 + x2) - x2 *
-              (x1**2 - 4 * x1 * x2 + x2**2) + x *
-              (-(x2 * (3 * x1 + x2)) + x0 * (x1 + 3 * x2)))) / ((x0 - x2) *
-                                                                (-x1 + x2)**3))
+            (
+                (x - x1)
+                * (
+                    x0 * x1 * (x1 - 3 * x2)
+                    + x**2 * (-2 * x0 + x1 + x2)
+                    - x2 * (x1**2 - 4 * x1 * x2 + x2**2)
+                    + x * (-(x2 * (3 * x1 + x2)) + x0 * (x1 + 3 * x2))
+                )
+            )
+            / ((x0 - x2) * (-x1 + x2) ** 3)
+        )
         # proportion of y3
-        values.append(((x - x1)**2 * (x - x2)) / ((x1 - x2)**2 * (x3 - x1)))
+        values.append(((x - x1) ** 2 * (x - x2)) / ((x1 - x2) ** 2 * (x3 - x1)))
         return values
 
     def _new_element_block_id(self):
@@ -584,10 +779,10 @@ 

Source code for exomerge

         id_ = 1
         names = []
         for _ in range(quantity):
-            name = 'temp%d' % id_
+            name = "temp%d" % id_
             while name in self.get_element_field_names():
                 id_ += 1
-                name = 'temp%d' % id_
+                name = "temp%d" % id_
             names.append(name)
             id_ += 1
         if quantity == 1:
@@ -597,28 +792,28 @@ 

Source code for exomerge

     def _new_node_field_name(self):
         """Return a node field name which is not used in the model."""
         id_ = 1
-        name = 'temp%d' % id_
+        name = "temp%d" % id_
         while name in self.get_node_field_names():
             id_ += 1
-            name = 'temp%d' % id_
+            name = "temp%d" % id_
         return name
 
     def _new_side_set_field_name(self):
         """Return a side set field name which is not used in the model."""
         id_ = 1
-        name = 'temp%d' % id_
+        name = "temp%d" % id_
         while name in self.get_side_set_field_names():
             id_ += 1
-            name = 'temp%d' % id_
+            name = "temp%d" % id_
         return name
 
     def _new_node_set_field_name(self):
         """Return a node set field name which is not used in the model."""
         id_ = 1
-        name = 'temp%d' % id_
+        name = "temp%d" % id_
         while name in self.get_node_set_field_names():
             id_ += 1
-            name = 'temp%d' % id_
+            name = "temp%d" % id_
         return name
 
     def _delete_elements(self, element_block_id, element_indices):
@@ -634,7 +829,8 @@ 

Source code for exomerge

         """
         # validate input
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         self._input_check(element_indices, [list, 0, int])
         # get element block information
         element_count = self.get_element_count(element_block_id)
@@ -645,11 +841,11 @@ 

Source code for exomerge

         max_element_index = max(element_indices)
         if max_element_index >= element_count:
             self._error(
-                'Invalid element indices',
-                'The element index list contains invalid entries.  '
-                'There are only %d elements in this element block and '
-                'the list contains a reference to index %d.' %
-                (max_element_index))
+                "Invalid element indices",
+                "The element index list contains invalid entries.  "
+                "There are only %d elements in this element block and "
+                "the list contains a reference to index %d." % (max_element_index),
+            )
         # select valid elements
         indices_to_delete = set()
         invalid_indices = []
@@ -665,19 +861,20 @@ 

Source code for exomerge

         # warn about duplicate indices
         if duplicate_indices:
             self._warning(
-                'Duplicate element indices',
-                'The element index list contains duplicate '
-                'indices.  Elements can only be deleted once so '
-                'duplicates will be ignored.  There were %d '
-                'duplicates.' % (len(duplicate_indices)))
+                "Duplicate element indices",
+                "The element index list contains duplicate "
+                "indices.  Elements can only be deleted once so "
+                "duplicates will be ignored.  There were %d "
+                "duplicates." % (len(duplicate_indices)),
+            )
         del duplicate_indices
         # error if invalid indices encountered
         if invalid_indices:
             self._error(
-                'Invalid element indices',
-                'The element index list contains invalid entries.  '
-                'There were a total of %d invalid indices.' %
-                len(invalid_indices))
+                "Invalid element indices",
+                "The element index list contains invalid entries.  "
+                "There were a total of %d invalid indices." % len(invalid_indices),
+            )
         del invalid_indices
         # create list of nodes used by elements to delete
         nodes_per_element = self.get_nodes_per_element(element_block_id)
@@ -685,16 +882,20 @@ 

Source code for exomerge

         used_nodes = []
         for element_index in indices_to_delete:
             used_nodes.extend(
-                connectivity[element_index *
-                             nodes_per_element:(element_index + 1) *
-                             nodes_per_element])
+                connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
+                ]
+            )
         used_nodes = set(used_nodes)
         # remove references to these elements within each side set
         for id_ in self.get_side_set_ids():
             # look for members to delete
             members = self.get_side_set_members(id_)
             members_to_delete = [
-                x for x in members
+                x
+                for x in members
                 if (x[0] == element_block_id and x[1] in indices_to_delete)
             ]
             # delete those members (if any exist)
@@ -702,8 +903,7 @@ 

Source code for exomerge

                 self._delete_side_set_members(id_, members_to_delete)
         # create translation list
         element_count = self.get_element_count(element_block_id)
-        remaining_indices = sorted(
-            set(range(element_count)) - set(indices_to_delete))
+        remaining_indices = sorted(set(range(element_count)) - set(indices_to_delete))
         # create element map
         # old element i is new element new_index[i]
         new_index = [False] * element_count
@@ -713,15 +913,19 @@ 

Source code for exomerge

         del indices_to_delete
         fields = self._get_element_block_fields(element_block_id)
         for this_field in list(fields.values()):
-            this_field[:] = [[values[x] for x in remaining_indices]
-                             for values in this_field]
+            this_field[:] = [
+                [values[x] for x in remaining_indices] for values in this_field
+            ]
         # delete elements from the block
         new_connectivity = []
         for element_index in remaining_indices:
             new_connectivity.extend(
-                connectivity[element_index *
-                             nodes_per_element:(element_index + 1) *
-                             nodes_per_element])
+                connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
+                ]
+            )
         # set the new connectivity
         self.get_connectivity(element_block_id)[:] = new_connectivity
         # set the number of elements
@@ -732,8 +936,7 @@ 

Source code for exomerge

             new_members = []
             for member in members:
                 if member[0] == element_block_id:
-                    new_members.append(
-                        (member[0], new_index[member[1]], member[2]))
+                    new_members.append((member[0], new_index[member[1]], member[2]))
                 else:
                     new_members.append(member)
             members[:] = new_members
@@ -745,11 +948,13 @@ 

Source code for exomerge

         # delete those nodes
         self._delete_nodes(nodes_to_delete)
 
-
[docs] def threshold_element_blocks(self, - expression, - element_block_ids='all', - timestep='last', - new_element_block_id=None): +
[docs] def threshold_element_blocks( + self, + expression, + element_block_ids="all", + timestep="last", + new_element_block_id=None, + ): """ Delete elements which do not satisfy a condition. @@ -763,51 +968,50 @@

Source code for exomerge

         >>> model.threshold_element_block('all', 'eqps >= 0.01')
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
-        [timestep] = self._format_id_list([timestep],
-                                          self.get_timesteps(),
-                                          'timestep',
-                                          single=True)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
+        [timestep] = self._format_id_list(
+            [timestep], self.get_timesteps(), "timestep", single=True
+        )
         if new_element_block_id is not None:
             if self.element_block_exists(new_element_block_id):
-                self._exists_error(new_element_block_id, 'element block')
+                self._exists_error(new_element_block_id, "element block")
         # create a temporary field name on these elements
         name = self._new_element_field_name()
         # evaluate the expression
-        self.calculate_element_field('%s = %s' % (name, expression),
-                                     element_block_ids=element_block_ids)
+        self.calculate_element_field(
+            "%s = %s" % (name, expression), element_block_ids=element_block_ids
+        )
         # go through each element block and delete elements
         for id_ in element_block_ids:
-            values = self.get_element_field_values(name,
-                                                   element_block_id=id_,
-                                                   timestep=timestep)
+            values = self.get_element_field_values(
+                name, element_block_id=id_, timestep=timestep
+            )
             # if we're saving elements, duplicate the block, and delete the
             # ones we're keeping
             if new_element_block_id is not None:
                 indices_to_keep = [i for i, x in enumerate(values) if x]
                 temporary_element_block_id = self._new_element_block_id()
-                self.duplicate_element_block(id_,
-                                             temporary_element_block_id,
-                                             duplicate_nodes=False)
-                self._delete_elements(temporary_element_block_id,
-                                      indices_to_keep)
+                self.duplicate_element_block(
+                    id_, temporary_element_block_id, duplicate_nodes=False
+                )
+                self._delete_elements(temporary_element_block_id, indices_to_keep)
                 if temporary_element_block_id != new_element_block_id:
                     if self.element_block_exists(new_element_block_id):
                         self.combine_element_blocks(
                             [temporary_element_block_id, new_element_block_id],
-                            new_element_block_id)
+                            new_element_block_id,
+                        )
                     else:
-                        self.rename_element_block(temporary_element_block_id,
-                                                  new_element_block_id)
+                        self.rename_element_block(
+                            temporary_element_block_id, new_element_block_id
+                        )
             # delete elements which don't meet the threshold
             indices_to_delete = [i for i, x in enumerate(values) if not x]
             self._delete_elements(id_, indices_to_delete)
         # delete the temporary element field
         self.delete_element_field(name, element_block_ids=element_block_ids)
         if new_element_block_id is not None:
-            self.delete_element_field(name,
-                                      element_block_ids=new_element_block_id)
+ self.delete_element_field(name, element_block_ids=new_element_block_id)
def _get_list_ids(self, thing): """ @@ -849,8 +1053,7 @@

Source code for exomerge

                 for values in all_values:
                     self._assert(len(values) == node_count)
             # verify self.element_blocks
-            for _, info, connectivity, fields in list(
-                    self.element_blocks.values()):
+            for _, info, connectivity, fields in list(self.element_blocks.values()):
                 self._assert(len(info) == 4)
                 self._assert(len(connectivity) == info[1] * info[2])
                 if connectivity:
@@ -873,7 +1076,8 @@ 

Source code for exomerge

             # verify self.side_sets
             element_count = dict(
                 (id_, info[1])
-                for id_, (_, info, _, _) in list(self.element_blocks.items()))
+                for id_, (_, info, _, _) in list(self.element_blocks.items())
+            )
             for _, members, fields in list(self.side_sets.values()):
                 member_count = len(members)
                 if members:
@@ -903,26 +1107,26 @@ 

Source code for exomerge

             # get the code line the assertion failed on
             _, _, trace = sys.exc_info()
             error_line = traceback.extract_tb(trace)[0][3]
-            if error_line.startswith('self._assert('):
+            if error_line.startswith("self._assert("):
                 error_line = error_line[13:-1]
             error_line_number = traceback.extract_tb(trace)[0][1]
             # write out the error/warning message
             self._error(
-                'Corrupted database information.',
-                'The finite element model information failed a validity '
-                'check.  The following assertion failed:\n'
-                '\n'
-                '[%d] %s\n'
-                '\n'
-                'This resulted from one of the two scenarios:\n'
-                '* You changed information in the database '
-                'inconsistently.\n'
-                '* There is a bug within the code.\n'
-                '\n'
-                'If you believe it is the latter, please contact support '
-                'with as much information as necessary.\n'
-                '* Support contact: %s' %
-                (error_line_number, error_line, CONTACT))
+                "Corrupted database information.",
+                "The finite element model information failed a validity "
+                "check.  The following assertion failed:\n"
+                "\n"
+                "[%d] %s\n"
+                "\n"
+                "This resulted from one of the two scenarios:\n"
+                "* You changed information in the database "
+                "inconsistently.\n"
+                "* There is a bug within the code.\n"
+                "\n"
+                "If you believe it is the latter, please contact support "
+                "with as much information as necessary.\n"
+                "* Support contact: %s" % (error_line_number, error_line, CONTACT),
+            )
             exit(1)
 
     @staticmethod
@@ -951,58 +1155,58 @@ 

Source code for exomerge

             messages = [messages]
         for i, message in enumerate(messages):
             if not isinstance(message, tuple):
-                messages[i] = ('', message)
+                messages[i] = ("", message)
         # store the message width
         max_header_width = max(len(x[0]) for x in messages)
         width = max(width, max_header_width + 20 + 6)
         # print the top frame after a blank line
-        print('')
-        print(('*' * width))
-        print(('*' + (' ' * (width - 2)) + '*'))
+        print("")
+        print(("*" * width))
+        print(("*" + (" " * (width - 2)) + "*"))
         # process each message
         # *  Header: Text             *
         for message in messages:
             header = message[0]
             # format text into broken lines
-            text = ''
-            for line in message[1].split('\n'):
+            text = ""
+            for line in message[1].split("\n"):
                 text += textwrap.fill(line, width=width - 6 - len(header))
-                text += '\n'
+                text += "\n"
             # remove trailing newlines
-            while text and text[-1] == '\n':
+            while text and text[-1] == "\n":
                 text = text[:-1]
             # break into a list
-            text = text.split('\n')
+            text = text.split("\n")
             # process each line
             for i, txt in enumerate(text):
                 if i == 0:
-                    line = '%s%s' % (header, txt)
+                    line = "%s%s" % (header, txt)
                 else:
-                    line = '%s%s' % (' ' * len(header), txt)
+                    line = "%s%s" % (" " * len(header), txt)
                 if len(line) < width - 6:
-                    line += ' ' * (width - 6 - len(line))
-                print(('*  %s  *' % (line)))
-            print(('*' + (' ' * (width - 2)) + '*'))
+                    line += " " * (width - 6 - len(line))
+                print(("*  %s  *" % (line)))
+            print(("*" + (" " * (width - 2)) + "*"))
         # print the bottom frame
-        print(('*' * width))
+        print(("*" * width))
 
     @staticmethod
     def _get_trace(omitted_frames=1):
         """Return a compressed stack trace."""
-        last_file = ''
-        message = ''
+        last_file = ""
+        message = ""
         for frame in inspect.stack()[omitted_frames:]:
-            this_file = frame[1].split('/')[-1]
+            this_file = frame[1].split("/")[-1]
             if this_file != last_file:
-                message += this_file + ':'
+                message += this_file + ":"
                 last_file = this_file
             else:
-                message += ' ' * len(last_file) + ' '
-            message += frame[3] + ':' + str(frame[2])
-            message += '\n'
+                message += " " * len(last_file) + " "
+            message += frame[3] + ":" + str(frame[2])
+            message += "\n"
         return message
 
-    def _bug(self, short='Possible bug', detailed='', exit_code=1):
+    def _bug(self, short="Possible bug", detailed="", exit_code=1):
         """
         Print out an error message possibly caused by a bug and exit.
 
@@ -1010,34 +1214,38 @@ 

Source code for exomerge

         information.
 
         """
-        messages = [('  ERROR: ', short)]
+        messages = [("  ERROR: ", short)]
         if detailed:
-            messages.append(('Message: ', detailed))
+            messages.append(("Message: ", detailed))
         messages.append(
-            ('Support: ', 'This error may have been caused by a bug in the '
-             'code.  If you believe this is the case, please '
-             'contact support and provide enough information '
-             'to duplicate the issue.\n\nSupport contact: %s' % CONTACT))
-        messages.append(('  Trace: ', self._get_trace()))
+            (
+                "Support: ",
+                "This error may have been caused by a bug in the "
+                "code.  If you believe this is the case, please "
+                "contact support and provide enough information "
+                "to duplicate the issue.\n\nSupport contact: %s" % CONTACT,
+            )
+        )
+        messages.append(("  Trace: ", self._get_trace()))
         self._print_message(messages)
         exit(exit_code)
 
-    def _error(self, short='Unspecified error', detailed='', exit_code=1):
+    def _error(self, short="Unspecified error", detailed="", exit_code=1):
         """Print out an error message and exit."""
-        messages = [('  ERROR: ', short)]
+        messages = [("  ERROR: ", short)]
         if detailed:
-            messages.append(('Message: ', detailed))
-        messages.append(('  Trace: ', self._get_trace()))
+            messages.append(("Message: ", detailed))
+        messages.append(("  Trace: ", self._get_trace()))
         self._print_message(messages)
         exit(exit_code)
 
-    def _warning(self, short='Unspecified warning', detailed=''):
+    def _warning(self, short="Unspecified warning", detailed=""):
         """Print out a warning message, but don't exit."""
-        messages = [('WARNING: ', short)]
+        messages = [("WARNING: ", short)]
         if detailed:
-            messages.append(('Message: ', detailed))
+            messages.append(("Message: ", detailed))
         if EXIT_ON_WARNING:
-            messages.append(('  Trace: ', self._get_trace()))
+            messages.append(("  Trace: ", self._get_trace()))
         self._print_message(messages)
         if EXIT_ON_WARNING:
             exit(1)
@@ -1051,23 +1259,21 @@ 

Source code for exomerge

 
         """
         now = datetime.datetime.today()
-        return ('exomerge', VERSION, now.strftime('%Y/%m/%d'),
-                now.strftime('%H:%M:%S'))
+        return ("exomerge", VERSION, now.strftime("%Y/%m/%d"), now.strftime("%H:%M:%S"))
 
-    def _ensure_acceptable_id(self, this_id, acceptable_ids, entity=''):
+    def _ensure_acceptable_id(self, this_id, acceptable_ids, entity=""):
         """Ensure ID is acceptable, or error out."""
         if this_id not in acceptable_ids:
             if entity == "":
                 self._error("Reference to undefined entity.")
             else:
-                id_list = string.join([str(x) + ','
-                                       for x in acceptable_ids])[:-1]
+                id_list = string.join([str(x) + "," for x in acceptable_ids])[:-1]
                 self._error(
                     "Reference to undefined %s." % (entity),
-                    "A reference to %s \"%s\" was encountered but is "
-                    "not defined.  There are %d defined %ss: %s" %
-                    (entity, str(this_id), len(acceptable_ids), entity,
-                     id_list))
+                    'A reference to %s "%s" was encountered but is '
+                    "not defined.  There are %d defined %ss: %s"
+                    % (entity, str(this_id), len(acceptable_ids), entity, id_list),
+                )
 
     @staticmethod
     def _get_matching_strings(string_pattern, list_of_strings):
@@ -1085,8 +1291,8 @@ 

Source code for exomerge

 
         """
         # convert pattern to a regex expression
-        regex_pattern = '^' + string_pattern + '$'
-        regex_pattern = regex_pattern.replace('.', r'\.').replace('*', '.*')
+        regex_pattern = "^" + string_pattern + "$"
+        regex_pattern = regex_pattern.replace(".", r"\.").replace("*", ".*")
         matches = [x for x in list_of_strings if re.match(regex_pattern, x)]
         return matches
 
@@ -1102,77 +1308,85 @@ 

Source code for exomerge

         bunnies
 
         """
-        if name[-1] == 'y':
-            return name[:-1] + 'ies'
-        return name + 's'
+        if name[-1] == "y":
+            return name[:-1] + "ies"
+        return name + "s"
 
     def _format_element_block_id_list(self, id_list, *args, **kwargs):
         """Return a validated list of element block IDs."""
         blocks = self.element_blocks
-        entity = 'element block'
+        entity = "element block"
         # get element block translations
-        tuples = [(value[0], key) for key, value in list(blocks.items())
-                  if value[0]]
+        tuples = [(value[0], key) for key, value in list(blocks.items()) if value[0]]
         # ensure element block names are unique
         if len(set(x[0] for x in tuples)) != len(tuples):
             self._warning(
-                'Duplicate %s names' % entity,
-                'At least two %s have the same name.  '
-                'This may cause problems.' % self._plural(entity))
-        return self._format_id_list(id_list,
-                                    sorted(blocks.keys()),
-                                    entity=entity,
-                                    *args,
-                                    translator=dict(tuples),
-                                    **kwargs)
+                "Duplicate %s names" % entity,
+                "At least two %s have the same name.  "
+                "This may cause problems." % self._plural(entity),
+            )
+        return self._format_id_list(
+            id_list,
+            sorted(blocks.keys()),
+            entity=entity,
+            *args,
+            translator=dict(tuples),
+            **kwargs
+        )
 
     def _format_side_set_id_list(self, id_list, *args, **kwargs):
         """Return a validated list of side set IDs."""
         ssets = self.side_sets
-        entity = 'side set'
+        entity = "side set"
         # get element block translations
-        tuples = [(value[0], key) for key, value in list(ssets.items())
-                  if value[0]]
+        tuples = [(value[0], key) for key, value in list(ssets.items()) if value[0]]
         # ensure element block names are unique
         if len(set(x[0] for x in tuples)) != len(tuples):
             self._warning(
-                'Duplicate %s names' % entity,
-                'At least two %s have the same name.  '
-                'This may cause problems.' % self._plural(entity))
-        return self._format_id_list(id_list,
-                                    sorted(ssets.keys()),
-                                    entity=entity,
-                                    *args,
-                                    translator=dict(tuples),
-                                    **kwargs)
+                "Duplicate %s names" % entity,
+                "At least two %s have the same name.  "
+                "This may cause problems." % self._plural(entity),
+            )
+        return self._format_id_list(
+            id_list,
+            sorted(ssets.keys()),
+            entity=entity,
+            *args,
+            translator=dict(tuples),
+            **kwargs
+        )
 
     def _format_node_set_id_list(self, id_list, *args, **kwargs):
         """Return a validated list of node set IDs."""
         nsets = self.node_sets
-        entity = 'node set'
+        entity = "node set"
         # get element block translations
-        tuples = [(value[0], key) for key, value in list(nsets.items())
-                  if value[0]]
+        tuples = [(value[0], key) for key, value in list(nsets.items()) if value[0]]
         # ensure element block names are unique
         if len(set(x[0] for x in tuples)) != len(tuples):
             self._warning(
-                'Duplicate %s names' % entity,
-                'At least two %s have the same name.  '
-                'This may cause problems.' % self._plural(entity))
-        return self._format_id_list(id_list,
-                                    sorted(nsets.keys()),
-                                    entity=entity,
-                                    *args,
-                                    translator=dict(tuples),
-                                    **kwargs)
-
-    def _format_id_list(self,
-                        id_list,
-                        acceptable_ids,
-                        entity='',
-                        single=False,
-                        empty_list_okay=True,
-                        translator={}):
+                "Duplicate %s names" % entity,
+                "At least two %s have the same name.  "
+                "This may cause problems." % self._plural(entity),
+            )
+        return self._format_id_list(
+            id_list,
+            sorted(nsets.keys()),
+            entity=entity,
+            *args,
+            translator=dict(tuples),
+            **kwargs
+        )
+
+    def _format_id_list(
+        self,
+        id_list,
+        acceptable_ids,
+        entity="",
+        single=False,
+        empty_list_okay=True,
+        translator={},
+    ):
         """
         Return a validated list of IDs.
 
@@ -1190,37 +1404,39 @@ 

Source code for exomerge

         if not isinstance(id_list, list):
             id_list = [id_list]
         for id_ in id_list:
-            if id_ == 'none':
+            if id_ == "none":
                 pass
-            elif id_ == 'all':
+            elif id_ == "all":
                 new_id_list.extend(acceptable_ids)
-            elif id_ == 'first':
+            elif id_ == "first":
                 if not acceptable_ids:
                     self._error(
-                        'Empty entity list.',
+                        "Empty entity list.",
                         'The "first" identifier was used to refer to a %s '
-                        'but no %ss exist.' % (entity, entity))
+                        "but no %ss exist." % (entity, entity),
+                    )
                 new_id_list.append(acceptable_ids[0])
-            elif id_ == 'last':
+            elif id_ == "last":
                 if not acceptable_ids:
                     self._error(
-                        'Empty entity list.',
+                        "Empty entity list.",
                         'The "last" identifier was used to refer to a %s '
-                        'but no %ss exist.' % (entity, entity))
+                        "but no %ss exist." % (entity, entity),
+                    )
                 new_id_list.append(acceptable_ids[-1])
-            elif id_ == 'auto':
+            elif id_ == "auto":
                 if len(acceptable_ids) != 1:
                     self._error(
-                        'Ambiguous reference.',
+                        "Ambiguous reference.",
                         'The "auto" identifier was used to refer to a %s '
-                        'but exactly one %s does not exist.  There are %d '
-                        'defined %ss.' %
-                        (entity, entity, len(acceptable_ids), entity))
+                        "but exactly one %s does not exist.  There are %d "
+                        "defined %ss." % (entity, entity, len(acceptable_ids), entity),
+                    )
                 new_id_list.append(acceptable_ids[0])
-            elif id_ == 'last_if_any':
+            elif id_ == "last_if_any":
                 if acceptable_ids:
                     new_id_list.append(acceptable_ids[-1])
-            elif id_ == 'first_if_any':
+            elif id_ == "first_if_any":
                 if acceptable_ids:
                     new_id_list.append(acceptable_ids[-1])
             else:
@@ -1228,18 +1444,16 @@ 

Source code for exomerge

         id_list = new_id_list
         # now apply the translation list
         if translator:
-            id_list = [
-                translator[x] if x in translator else x for x in id_list
-            ]
+            id_list = [translator[x] if x in translator else x for x in id_list]
         # for ids with a wildcard, find all that match
         if id_list and isinstance(id_list[0], str):
             for i in reversed(range(len(id_list))):
                 this_id = id_list[i]
-                if '*' in this_id:
+                if "*" in this_id:
                     del id_list[i]
                     for new_id in reversed(
-                            self._get_matching_strings(this_id,
-                                                       acceptable_ids)):
+                        self._get_matching_strings(this_id, acceptable_ids)
+                    ):
                         id_list.insert(i, new_id)
         # do not allow duplicates
         # and ensure all given ids are valid
@@ -1251,37 +1465,49 @@ 

Source code for exomerge

                 if id_ in acceptable_ids:
                     unique_ids.append(id_)
                 else:
-                    id_list = ', '.join([str(x) for x in acceptable_ids])
+                    id_list = ", ".join([str(x) for x in acceptable_ids])
                     self._warning(
-                        'Reference to undefined %s.' % (entity),
-                        'A reference to %s \"%s\" was encountered but is '
-                        'not defined.  This %s will not be included in the '
-                        'operation.\n\nThere are %d defined %s: %s' %
-                        (entity, id_, entity, len(acceptable_ids),
-                         self._plural(entity), id_list))
+                        "Reference to undefined %s." % (entity),
+                        'A reference to %s "%s" was encountered but is '
+                        "not defined.  This %s will not be included in the "
+                        "operation.\n\nThere are %d defined %s: %s"
+                        % (
+                            entity,
+                            id_,
+                            entity,
+                            len(acceptable_ids),
+                            self._plural(entity),
+                            id_list,
+                        ),
+                    )
         # return the unique list
         id_list = unique_ids
         # if only a single item was requested, ensure it exists
         if single and len(id_list) != 1:
             if not id_list:
                 self._error(
-                    'No %s specified.' % entity,
-                    'A single %s is required but none '
-                    'were specified.' % entity)
+                    "No %s specified." % entity,
+                    "A single %s is required but none " "were specified." % entity,
+                )
             self._error(
-                'Multiple %ss specified.' % entity,
-                'A single %s is required but %d %ss were specified: %s' %
-                (entity, len(id_list), entity, ', '.join(
-                    [str(x) for x in id_list])))
+                "Multiple %ss specified." % entity,
+                "A single %s is required but %d %ss were specified: %s"
+                % (entity, len(id_list), entity, ", ".join([str(x) for x in id_list])),
+            )
         # if list is empty and that's a problem, error out
         if not empty_list_okay and not id_list:
             self._error(
-                'No %ss specified.' % entity,
-                'We require at least one %s to be specified for this '
-                'opration but none were specified.\n\nThere are %d '
-                'defined %s: %s' %
-                (entity, len(acceptable_ids), self._plural(entity), ', '.join(
-                    [str(x) for x in acceptable_ids])))
+                "No %ss specified." % entity,
+                "We require at least one %s to be specified for this "
+                "opration but none were specified.\n\nThere are %d "
+                "defined %s: %s"
+                % (
+                    entity,
+                    len(acceptable_ids),
+                    self._plural(entity),
+                    ", ".join([str(x) for x in acceptable_ids]),
+                ),
+            )
         return id_list
 
     def _get_standard_element_type(self, element_type, warning=True):
@@ -1303,43 +1529,44 @@ 

Source code for exomerge

 
         """
         if isinstance(element_type, bytes):
-            element_type = element_type.decode('utf8').lower()
+            element_type = element_type.decode("utf8").lower()
         else:
             element_type = element_type.lower()
 
         translation_list = {
-            'hex': 'hex8',
-            'tet': 'tet4',
-            'tetra': 'tet4',
-            'tetra10': 'tet10',
-            'tri': 'tri3',
-            'triangle': 'tri3',
-            'quad': 'quad4',
-            'shell4': 'quad4',
-            'wedge': 'wedge6'
+            "hex": "hex8",
+            "tet": "tet4",
+            "tetra": "tet4",
+            "tetra10": "tet10",
+            "tri": "tri3",
+            "triangle": "tri3",
+            "quad": "quad4",
+            "shell4": "quad4",
+            "wedge": "wedge6",
         }
         if element_type in translation_list:
             element_type = translation_list[element_type]
         if warning and element_type not in self.STANDARD_ELEMENT_TYPES:
             self._warning(
-                'Nonstandard element type',
+                "Nonstandard element type",
                 'The element type "%s" is not a standard '
-                'element type.  This may cause issues with '
-                'handling element blocks with elements of '
-                'this type.' % (element_type))
+                "element type.  This may cause issues with "
+                "handling element blocks with elements of "
+                "this type." % (element_type),
+            )
         return element_type
 
     def _get_default_field_value(self, name):
         """Return the default value for a field with the given name."""
         if self._is_displacement_field_prefix(name[:-2]):
             return 0.0
-        return float('nan')
+        return float("nan")
 
     @staticmethod
     def _is_displacement_field_prefix(name):
         """Return 'True' if name is a displacement field prefix."""
-        default_name = 'displacement'
-        if len(name) >= 3 and name.lower() == default_name[:len(name)]:
+        default_name = "displacement"
+        if len(name) >= 3 and name.lower() == default_name[: len(name)]:
             return True
         return False
 
@@ -1350,10 +1577,10 @@ 

Source code for exomerge

         If no displacement field exists, this will return the default prefix.
 
         """
-        prefix = 'disp'
+        prefix = "disp"
         for node_field_name in self.get_node_field_names():
             # if it doesn't end in "_x", it's not a prefix
-            if len(node_field_name) < 3 or node_field_name[-2] != '_':
+            if len(node_field_name) < 3 or node_field_name[-2] != "_":
                 continue
             # check against acceptable names
             this_prefix = node_field_name[:-2]
@@ -1372,7 +1599,8 @@ 

Source code for exomerge

 
         """
         element_block_ids = self._format_element_block_id_list(
-            element_block_ids, empty_list_okay=False)
+            element_block_ids, empty_list_okay=False
+        )
         members = []
         for id_ in element_block_ids:
             mapping = self._get_face_mapping_from_id(id_)
@@ -1384,10 +1612,11 @@ 

Source code for exomerge

     def _get_block_info(self, element_block_id):
         """Return the info of an element block."""
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         return self.element_blocks[element_block_id][1]
 
-    def _get_external_element_faces(self, element_block_ids='all'):
+    def _get_external_element_faces(self, element_block_ids="all"):
         """
         Return a list of external element faces.
 
@@ -1397,8 +1626,7 @@ 

Source code for exomerge

         * '(element_block_id, element_index, face_index)'
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         external_faces = dict()
         for id_ in element_block_ids:
             info = self._get_block_info(id_)
@@ -1407,19 +1635,16 @@ 

Source code for exomerge

             for element_index in range(info[1]):
                 for face_index, (_, face) in enumerate(face_mapping):
                     sorted_nodes = tuple(
-                        sorted([
-                            connectivity[element_index * info[2] + x]
-                            for x in face
-                        ]))
+                        sorted(
+                            [connectivity[element_index * info[2] + x] for x in face]
+                        )
+                    )
                     if sorted_nodes in external_faces:
                         external_faces[sorted_nodes] = None
                     else:
                         this_face = (id_, element_index, face_index)
                         external_faces[sorted_nodes] = this_face
-        return [
-            value for value in list(external_faces.values())
-            if value is not None
-        ]
+        return [value for value in list(external_faces.values()) if value is not None]
 
     @staticmethod
     def _mean(values):
@@ -1442,8 +1667,7 @@ 

Source code for exomerge

         for element_block_id, element_index, face_index in members:
             if element_block_id not in members_by_block:
                 members_by_block[element_block_id] = []
-            members_by_block[element_block_id].append(
-                (element_index, face_index))
+            members_by_block[element_block_id].append((element_index, face_index))
         return members_by_block
 
     def _get_dimension(self, element_type):
@@ -1456,14 +1680,15 @@ 

Source code for exomerge

         element_type = self._get_standard_element_type(element_type)
         if element_type not in self.TRIANGULATED_FACES:
             self._bug(
-                'Invalid element type.',
-                'We do not know how to subdivide an element of type '
-                '"%s" into triangles.' % element_type)
+                "Invalid element type.",
+                "We do not know how to subdivide an element of type "
+                '"%s" into triangles.' % element_type,
+            )
         return self.TRIANGULATED_FACES[element_type]
 
-    def _convert_side_set_to_triangle_block(self,
-                                            side_set_ids,
-                                            new_element_block_id='auto'):
+    def _convert_side_set_to_triangle_block(
+        self, side_set_ids, new_element_block_id="auto"
+    ):
         """
         Create a new 'tri3' element block composed of the given side set.
 
@@ -1471,25 +1696,26 @@ 

Source code for exomerge

 
         """
         side_set_ids = self._format_side_set_id_list(side_set_ids)
-        if new_element_block_id == 'auto':
+        if new_element_block_id == "auto":
             new_element_block_id = self._new_element_block_id()
         new_nodes = []
         # find members of all the given side sets by block
         members_by_block = self._order_element_faces_by_block(
-            itertools.chain(
-                *[self.get_side_set_members(x) for x in side_set_ids]))
+            itertools.chain(*[self.get_side_set_members(x) for x in side_set_ids])
+        )
         # ensure all blocks are 3D
         for id_ in list(members_by_block.keys()):
             element_type = self._get_element_type(id_)
             dimension = self._get_dimension(element_type)
             if dimension != 3:
                 self._error(
-                    'Incompatible element dimension.',
-                    'We expect the side set to contain faces of 3D '
-                    'elements.  However, the side set contains at '
-                    'least one face from element block %d which '
-                    'contains %dD elements of type "%s".' %
-                    (id_, dimension, element_type))
+                    "Incompatible element dimension.",
+                    "We expect the side set to contain faces of 3D "
+                    "elements.  However, the side set contains at "
+                    "least one face from element block %d which "
+                    'contains %dD elements of type "%s".'
+                    % (id_, dimension, element_type),
+                )
         # Now we need to create the triangles from each member of the side set.
         faces = dict()
         for element_block_id, members in list(members_by_block.items()):
@@ -1498,10 +1724,11 @@ 

Source code for exomerge

             face_mapping = self._get_face_mapping_from_id(element_block_id)
             for element_index, face_index in members:
                 face_element_map = face_mapping[face_index]
-                local_node = connectivity[element_index *
-                                          nodes_per_element:(element_index +
-                                                             1) *
-                                          nodes_per_element]
+                local_node = connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
+                ]
                 local_node = tuple(local_node[x] for x in face_element_map[1])
                 if face_element_map[0] not in faces:
                     faces[face_element_map[0]] = [local_node]
@@ -1519,8 +1746,7 @@ 

Source code for exomerge

                         if isinstance(index, int):
                             connectivity.append(local_face_indices[index])
                             continue
-                        averaged_nodes = tuple(local_face_indices[x]
-                                               for x in index)
+                        averaged_nodes = tuple(local_face_indices[x] for x in index)
                         if not new_nodes or new_nodes[-1] != averaged_nodes:
                             new_nodes.append(averaged_nodes)
                             next_node_index += 1
@@ -1528,9 +1754,9 @@ 

Source code for exomerge

         # create the new nodes
         self._create_averaged_nodes(new_nodes, [])
         # create the new element block
-        self.create_element_block(new_element_block_id,
-                                  ['tri3', len(connectivity) // 3, 3, 0],
-                                  connectivity)
+        self.create_element_block(
+            new_element_block_id, ["tri3", len(connectivity) // 3, 3, 0], connectivity
+        )
 
     @staticmethod
     def _sign(x):
@@ -1546,10 +1772,14 @@ 

Source code for exomerge

             return -1
         return 0
 
-    def _partition_triangle_block_from_node_field(self, element_block_id,
-                                                  new_element_block_id,
-                                                  node_field_name, timestep,
-                                                  interval_list):
+    def _partition_triangle_block_from_node_field(
+        self,
+        element_block_id,
+        new_element_block_id,
+        node_field_name,
+        timestep,
+        interval_list,
+    ):
         """
         Subdivide a 'tri3' element block based on the given field intervals.
 
@@ -1560,29 +1790,28 @@ 

Source code for exomerge

 
         """
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
-        [node_field_name] = self._format_id_list([node_field_name],
-                                                 self.get_node_field_names(),
-                                                 'node field',
-                                                 single=True)
-        [timestep] = self._format_id_list([timestep],
-                                          self.get_timesteps(),
-                                          'timestep',
-                                          single=True)
+            [element_block_id], single=True
+        )
+        [node_field_name] = self._format_id_list(
+            [node_field_name], self.get_node_field_names(), "node field", single=True
+        )
+        [timestep] = self._format_id_list(
+            [timestep], self.get_timesteps(), "timestep", single=True
+        )
         # verify block is actually a tri3 block
-        if self._get_element_type(element_block_id) != 'tri3':
+        if self._get_element_type(element_block_id) != "tri3":
             self._error(
-                'Invalid element type',
-                'This function can only be used to divide element '
-                'blocks composed of "tri3" elements.')
+                "Invalid element type",
+                "This function can only be used to divide element "
+                'blocks composed of "tri3" elements.',
+            )
         timestep_index = self.timesteps.index(timestep)
         connectivity = self.get_connectivity(element_block_id)
         element_count = self.get_element_count(element_block_id)
         new_connectivity = []
         element_interval_values = []
         triangles = [
-            tuple(connectivity[x * 3:(x + 1) * 3])
-            for x in range(element_count)
+            tuple(connectivity[x * 3: (x + 1) * 3]) for x in range(element_count)
         ]
         for index, upper_bound in enumerate(interval_list):
             # hold new vertices we have to create
@@ -1597,15 +1826,19 @@ 

Source code for exomerge

                 for d in range(3):
                     d2 = (d + 1) % 3
                     edge = (tri[d], tri[d2])
-                    if (self._sign(values[tri[d]] - upper_bound) *
-                            self._sign(values[tri[d2]] - upper_bound) == -1):
+                    if (
+                        self._sign(values[tri[d]] - upper_bound)
+                        * self._sign(values[tri[d2]] - upper_bound)
+                        == -1
+                    ):
                         if edge not in new_vertex:
                             opposite_edge = tuple(reversed(edge))
                             new_vertex[edge] = next_node_index
                             new_vertex[opposite_edge] = next_node_index
                             next_node_index += 1
                             phi = (upper_bound - values[tri[d]]) / (
-                                values[tri[d2]] - values[tri[d]])
+                                values[tri[d2]] - values[tri[d]]
+                            )
                             new_node = ((tri[d], 1.0 - phi), (tri[d2], phi))
                             new_nodes.append(new_node)
             self._create_averaged_nodes(new_nodes, [])
@@ -1614,24 +1847,30 @@ 

Source code for exomerge

             this_partition = []
             values = self.node_fields[node_field_name][timestep_index]
             for tri in triangles:
-                if (values[tri[0]] <= upper_bound
-                        and values[tri[1]] <= upper_bound
-                        and values[tri[2]] <= upper_bound):
+                if (
+                    values[tri[0]] <= upper_bound
+                    and values[tri[1]] <= upper_bound
+                    and values[tri[2]] <= upper_bound
+                ):
                     this_partition.append(tri)
-                elif (values[tri[0]] >= upper_bound
-                      and values[tri[1]] >= upper_bound
-                      and values[tri[2]] >= upper_bound):
+                elif (
+                    values[tri[0]] >= upper_bound
+                    and values[tri[1]] >= upper_bound
+                    and values[tri[2]] >= upper_bound
+                ):
                     new_triangles.append(tri)
                 else:
                     # find vertex below the bound
                     d = 0
-                    while (values[tri[d]] >= upper_bound
-                           or values[tri[(d + 1) % 3]] < upper_bound):
+                    while (
+                        values[tri[d]] >= upper_bound
+                        or values[tri[(d + 1) % 3]] < upper_bound
+                    ):
                         d += 1
                     tri = tuple(tri[(d + x) % 3] for x in range(3))
                     case = tuple(
-                        self._sign(values[tri[x]] - upper_bound)
-                        for x in range(3))
+                        self._sign(values[tri[x]] - upper_bound) for x in range(3)
+                    )
                     if case == (-1, 1, -1):
                         m1 = new_vertex[(tri[0], tri[1])]
                         m2 = new_vertex[(tri[1], tri[2])]
@@ -1661,21 +1900,21 @@ 

Source code for exomerge

                         # above triangles
                         new_triangles.append((m1, tri[1], tri[2]))
                     else:
-                        self._bug('Unknown case')
+                        self._bug("Unknown case")
             triangles = new_triangles
             new_connectivity.extend(itertools.chain(*this_partition))
-            element_interval_values.extend([float(index)] *
-                                           len(this_partition))
+            element_interval_values.extend([float(index)] * len(this_partition))
         # add rest of triangle to last partition
         new_connectivity.extend(itertools.chain(*triangles))
-        element_interval_values.extend([float(len(interval_list))] *
-                                       len(triangles))
+        element_interval_values.extend([float(len(interval_list))] * len(triangles))
         self.create_element_block(
             new_element_block_id,
-            ['tri3', len(new_connectivity) // 3, 3, 0], new_connectivity)
-        self.create_element_field('interval', new_element_block_id, 0.0)
+            ["tri3", len(new_connectivity) // 3, 3, 0],
+            new_connectivity,
+        )
+        self.create_element_field("interval", new_element_block_id, 0.0)
         fields = self._get_element_block_fields(new_element_block_id)
-        field = fields['interval']
+        field = fields["interval"]
         for index in range(len(self.timesteps)):
             field[index] = list(element_interval_values)
 
@@ -1686,33 +1925,36 @@ 

Source code for exomerge

         This includes the displacement if it exists.
 
         """
-        timestep = self._format_id_list(timestep, self.get_timesteps(),
-                                        'timestep')
+        timestep = self._format_id_list(timestep, self.get_timesteps(), "timestep")
         if len(timestep) > 1:
             self._error(
-                'Ambiguous timestep.',
-                'More than one timestep was specified.  We expected '
-                'one or zero timesteps.')
+                "Ambiguous timestep.",
+                "More than one timestep was specified.  We expected "
+                "one or zero timesteps.",
+            )
         if not timestep:
             return [tuple(x) for x in self.nodes]
         timestep_index = self.timesteps.index(timestep[0])
         displacement_values = [
             x[timestep_index] for x in self._get_displacement_field_values()
         ]
-        return [(x + dx, y + dy, z + dz)
-                for (x, y,
-                     z), dx, dy, dz in zip(self.nodes, *displacement_values)]
-
-
[docs] def export_wrl_model(self, - filename, - node_field_name, - element_block_ids='all', - timestep='last', - field_range='auto', - intervals=9, - colorspace='rgb', - displacement_timestep='auto', - export_exodus_copy=True): + return [ + (x + dx, y + dy, z + dz) + for (x, y, z), dx, dy, dz in zip(self.nodes, *displacement_values) + ] + +
[docs] def export_wrl_model( + self, + filename, + node_field_name, + element_block_ids="all", + timestep="last", + field_range="auto", + intervals=9, + colorspace="rgb", + displacement_timestep="auto", + export_exodus_copy=True, + ): """ Export the exterior of the model to a colored WRL file. @@ -1722,31 +1964,25 @@

Source code for exomerge

         >>> model.export_wrl_model('colored_eqps_model.wrl', 'eqps')
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
-        [node_field_name] = self._format_id_list([node_field_name],
-                                                 self.get_node_field_names(),
-                                                 'node field',
-                                                 single=True)
-        [timestep] = self._format_id_list([timestep],
-                                          self.get_timesteps(),
-                                          'timestep',
-                                          single=True)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
+        [node_field_name] = self._format_id_list(
+            [node_field_name], self.get_node_field_names(), "node field", single=True
+        )
+        [timestep] = self._format_id_list(
+            [timestep], self.get_timesteps(), "timestep", single=True
+        )
         timestep_index = self.timesteps.index(timestep)
-        if displacement_timestep == 'auto':
+        if displacement_timestep == "auto":
             if self.displacement_field_exists():
                 displacement_timestep = timestep
             else:
-                displacement_timestep = 'none'
+                displacement_timestep = "none"
         else:
             [displacement_timestep] = self._format_id_list(
-                [displacement_timestep],
-                self.get_timesteps(),
-                'timestep',
-                single=True)
+                [displacement_timestep], self.get_timesteps(), "timestep", single=True
+            )
         # all element blocks should either be 3D elements, or 'tri3' elements
-        element_types = set(
-            self._get_element_type(x) for x in element_block_ids)
+        element_types = set(self._get_element_type(x) for x in element_block_ids)
         element_dimensions = set(self._get_dimension(x) for x in element_types)
         # if we have all 3D elements, create a skin
         if element_dimensions == set([3]):
@@ -1754,49 +1990,50 @@ 

Source code for exomerge

             external_side_set_id = self._new_side_set_id()
             self.create_side_set(
                 external_side_set_id,
-                self._get_external_element_faces(element_block_ids))
+                self._get_external_element_faces(element_block_ids),
+            )
             self._convert_side_set_to_triangle_block(
-                external_side_set_id, triangle_element_block_id)
+                external_side_set_id, triangle_element_block_id
+            )
             self.delete_side_set(external_side_set_id)
-        elif element_dimensions == set([2]) and element_types == set(['tri3']):
+        elif element_dimensions == set([2]) and element_types == set(["tri3"]):
             # merge all blocks into another block
             ids_to_merge = []
             for id_ in element_block_ids:
                 ids_to_merge.append(self._new_element_block_id())
                 self.duplicate_element_block(id_, ids_to_merge[-1])
             triangle_element_block_id = self._new_element_block_id()
-            self.combine_element_blocks(ids_to_merge,
-                                        triangle_element_block_id)
+            self.combine_element_blocks(ids_to_merge, triangle_element_block_id)
             # these blocks better form a watertight enclosure
-            external_sides = self._get_external_element_faces(
-                triangle_element_block_id)
+            external_sides = self._get_external_element_faces(triangle_element_block_id)
             if external_sides:
                 self._warning(
-                    'Enclosure is not watertight.',
+                    "Enclosure is not watertight.",
                     'The "tri3" element blocks passed to this function do not '
-                    'form a watertight enclosure.  An output file will still '
-                    'be created, but it is unlikely to be useful as a WRL '
-                    'model.  We found %d unmatched sides.' %
-                    len(external_sides))
+                    "form a watertight enclosure.  An output file will still "
+                    "be created, but it is unlikely to be useful as a WRL "
+                    "model.  We found %d unmatched sides." % len(external_sides),
+                )
         else:
             self._error(
-                'Invalid input.',
-                'We expect a list of 3D element blocks or a list of '
-                '2D element blocks composed of triangles.')
+                "Invalid input.",
+                "We expect a list of 3D element blocks or a list of "
+                "2D element blocks composed of triangles.",
+            )
         # now that we have a triangle block, subdivide it
         subdivided_element_block_id = self._new_element_block_id()
         # set up intervals
-        if field_range == 'auto':
-            indices = self.get_nodes_in_element_block(
-                triangle_element_block_id)
+        if field_range == "auto":
+            indices = self.get_nodes_in_element_block(triangle_element_block_id)
             values = self.node_fields[node_field_name][timestep_index]
             this_values = [values[x] for x in indices]
             field_range = [min(this_values), max(this_values)]
         if field_range[0] >= field_range[1]:
             self._error(
-                'Invalid field range.',
-                'The given field range [%g - %g] was not valid.' %
-                (field_range[0], field_range[1]))
+                "Invalid field range.",
+                "The given field range [%g - %g] was not valid."
+                % (field_range[0], field_range[1]),
+            )
         if isinstance(intervals, int):
             intervals = [
                 (1 - phi) * field_range[0] + phi * field_range[1]
@@ -1804,87 +2041,95 @@ 

Source code for exomerge

             ]
         # partition that block based on the node field
         self._partition_triangle_block_from_node_field(
-            triangle_element_block_id, subdivided_element_block_id,
-            node_field_name, timestep, intervals)
+            triangle_element_block_id,
+            subdivided_element_block_id,
+            node_field_name,
+            timestep,
+            intervals,
+        )
         # save model as an ExodusII file so we can view it
         if export_exodus_copy:
             temp_nodes = self.nodes
             self.nodes = self._get_coordinates_at_time(displacement_timestep)
-            exodus_filename = filename.rsplit('.', 1)[0] + '_wrl.e'
-            self.export_model(exodus_filename,
-                              element_block_ids=subdivided_element_block_id,
-                              element_field_names='interval',
-                              node_field_names='none',
-                              node_set_ids='none',
-                              side_set_ids='none',
-                              global_variable_names='none',
-                              timesteps=[timestep])
+            exodus_filename = filename.rsplit(".", 1)[0] + "_wrl.e"
+            self.export_model(
+                exodus_filename,
+                element_block_ids=subdivided_element_block_id,
+                element_field_names="interval",
+                node_field_names="none",
+                node_set_ids="none",
+                side_set_ids="none",
+                global_variable_names="none",
+                timesteps=[timestep],
+            )
             self.nodes = temp_nodes
         # save triangles to the WRL file
-        with open(filename, 'w') as output:
-            output.write('#VRML V2.0 utf8\n')
-            output.write('Transform {\n')
-            output.write('  translation 0.0 0.0 0.0\n')
-            output.write('  children Shape {\n')
-            output.write('    appearance Appearance {material Material {} }\n')
-            output.write('    geometry IndexedFaceSet {\n')
-            output.write('      coord Coordinate {\n')
-            output.write('        point [\n')
-            for position in self._get_coordinates_at_time(
-                    displacement_timestep):
-                output.write(','.join(str(x) for x in position))
-                output.write(',')
-            output.write('\n        ]\n')
-            output.write('      }\n')
-            output.write('      coordIndex [\n')
+        with open(filename, "w") as output:
+            output.write("#VRML V2.0 utf8\n")
+            output.write("Transform {\n")
+            output.write("  translation 0.0 0.0 0.0\n")
+            output.write("  children Shape {\n")
+            output.write("    appearance Appearance {material Material {} }\n")
+            output.write("    geometry IndexedFaceSet {\n")
+            output.write("      coord Coordinate {\n")
+            output.write("        point [\n")
+            for position in self._get_coordinates_at_time(displacement_timestep):
+                output.write(",".join(str(x) for x in position))
+                output.write(",")
+            output.write("\n        ]\n")
+            output.write("      }\n")
+            output.write("      coordIndex [\n")
             connectivity = self.get_connectivity(subdivided_element_block_id)
             element_count = self.get_element_count(subdivided_element_block_id)
             for element_index in range(element_count):
-                output.write('%d,%d,%d,-1,' %
-                             (connectivity[element_index * 3 + 0],
-                              connectivity[element_index * 3 + 1],
-                              connectivity[element_index * 3 + 2]))
-            output.write('\n      ]\n')
-            output.write('      color Color {\n')
-            output.write('        color [\n')
-            if colorspace == 'rgb':
+                output.write(
+                    "%d,%d,%d,-1,"
+                    % (
+                        connectivity[element_index * 3 + 0],
+                        connectivity[element_index * 3 + 1],
+                        connectivity[element_index * 3 + 2],
+                    )
+                )
+            output.write("\n      ]\n")
+            output.write("      color Color {\n")
+            output.write("        color [\n")
+            if colorspace == "rgb":
                 colorspace = [
-                    colorsys.hls_to_rgb(2.0 / 3 - 2.0 / 3 * x / len(intervals),
-                                        0.5, 1)
+                    colorsys.hls_to_rgb(2.0 / 3 - 2.0 / 3 * x / len(intervals), 0.5, 1)
                     for x in range(len(intervals) + 1)
                 ]
             if len(colorspace) != len(intervals) + 1:
                 self._error(
-                    'Unrecognized colorspace.',
-                    'The given colorspace was not recognized.  We '
+                    "Unrecognized colorspace.",
+                    "The given colorspace was not recognized.  We "
                     'expected a string such as "rgb" or a list of '
-                    'length %d with RGB triplets.  Instead, we found '
-                    '"%s".' % (len(intervals) + 1, str(colorspace)))
+                    "length %d with RGB triplets.  Instead, we found "
+                    '"%s".' % (len(intervals) + 1, str(colorspace)),
+                )
             for color in colorspace:
-                output.write('          %s,\n' %
-                             ' '.join(str(x) for x in color))
-            output.write('        ]\n')
-            output.write('      }\n')
-            output.write('      colorIndex [\n')
-            output.write('        ')
+                output.write("          %s,\n" % " ".join(str(x) for x in color))
+            output.write("        ]\n")
+            output.write("      }\n")
+            output.write("      colorIndex [\n")
+            output.write("        ")
             values = self.get_element_field_values(
-                'interval', subdivided_element_block_id,
-                self.timesteps[timestep_index])
-            output.write(','.join(str(int(x)) for x in values))
-            output.write('\n')
-            output.write('      ]\n')
-            output.write('      colorPerVertex FALSE\n')
-            output.write('    }\n')
-            output.write('  }\n')
-            output.write('}\n')
+                "interval", subdivided_element_block_id, self.timesteps[timestep_index]
+            )
+            output.write(",".join(str(int(x)) for x in values))
+            output.write("\n")
+            output.write("      ]\n")
+            output.write("      colorPerVertex FALSE\n")
+            output.write("    }\n")
+            output.write("  }\n")
+            output.write("}\n")
         # delete the temporary element blocks
         self.delete_element_block(
-            [triangle_element_block_id, subdivided_element_block_id])
+ [triangle_element_block_id, subdivided_element_block_id] + )
-
[docs] def export_stl_file(self, - filename, - element_block_ids='all', - displacement_timestep='auto'): +
[docs] def export_stl_file( + self, filename, element_block_ids="all", displacement_timestep="auto" + ): """ Export the exterior of the model to an STL file. @@ -1895,47 +2140,46 @@

Source code for exomerge

         >>> model.export_stl_file('mesh_surface.stl')
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
-        if displacement_timestep == 'auto':
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
+        if displacement_timestep == "auto":
             if self.timesteps and self.displacement_field_exists():
-                displacement_timestep = 'last'
+                displacement_timestep = "last"
             else:
-                displacement_timestep = 'none'
+                displacement_timestep = "none"
         # create a new element block composed of triangles
         triangle_element_block_id = self._new_element_block_id()
         external_side_set_id = self._new_side_set_id()
         self.create_side_set(
-            external_side_set_id,
-            self._get_external_element_faces(element_block_ids))
-        self._convert_side_set_to_triangle_block(external_side_set_id,
-                                                 triangle_element_block_id)
+            external_side_set_id, self._get_external_element_faces(element_block_ids)
+        )
+        self._convert_side_set_to_triangle_block(
+            external_side_set_id, triangle_element_block_id
+        )
         # export that set
-        displacement_timestep = self._format_id_list(displacement_timestep,
-                                                     self.get_timesteps(),
-                                                     'timestep')
+        displacement_timestep = self._format_id_list(
+            displacement_timestep, self.get_timesteps(), "timestep"
+        )
         # get coordinates at the time we care about
         c = self._get_coordinates_at_time(displacement_timestep)
         # create the STL file
         connectivity = self.get_connectivity(triangle_element_block_id)
-        with open(filename, 'wb') as output:
-            output.write(b' ' * 80)
-            output.write(struct.pack('<l', len(connectivity) // 3))
+        with open(filename, "wb") as output:
+            output.write(b" " * 80)
+            output.write(struct.pack("<l", len(connectivity) // 3))
             for element_index in range(len(connectivity) // 3):
-                tri = connectivity[element_index * 3:(element_index + 1) * 3]
-                normal = (c[tri[1]][1] * c[tri[2]][2] -
-                          c[tri[2]][1] * c[tri[1]][2],
-                          c[tri[1]][2] * c[tri[2]][0] -
-                          c[tri[2]][2] * c[tri[1]][0],
-                          c[tri[1]][0] * c[tri[2]][1] -
-                          c[tri[2]][0] * c[tri[1]][1])
-                scale = (normal[0]**2 + normal[1]**2 + normal[2]**2)**0.5
+                tri = connectivity[element_index * 3: (element_index + 1) * 3]
+                normal = (
+                    c[tri[1]][1] * c[tri[2]][2] - c[tri[2]][1] * c[tri[1]][2],
+                    c[tri[1]][2] * c[tri[2]][0] - c[tri[2]][2] * c[tri[1]][0],
+                    c[tri[1]][0] * c[tri[2]][1] - c[tri[2]][0] * c[tri[1]][1],
+                )
+                scale = (normal[0] ** 2 + normal[1] ** 2 + normal[2] ** 2) ** 0.5
                 if scale > 0.0:
                     normal = tuple(x / scale for x in normal)
-                output.write(struct.pack('<3f', *normal))
+                output.write(struct.pack("<3f", *normal))
                 for vertex in tri:
-                    output.write(struct.pack('<3f', *c[vertex]))
-                output.write(struct.pack('<h', 0))
+                    output.write(struct.pack("<3f", *c[vertex]))
+                output.write(struct.pack("<h", 0))
         # delete the temporary block we created
         self.delete_element_block(triangle_element_block_id)
@@ -1957,47 +2201,62 @@

Source code for exomerge

 
         """
         exporters = dict()
-        exporters['wrl'] = self.export_wrl_model
-        exporters['stl'] = self.export_stl_file
-        exporters['e'] = self.export_model
-        exporters['g'] = self.export_model
-        exporters['exo'] = self.export_model
-        extension = filename.rsplit('.', 1)[-1].lower()
+        exporters["wrl"] = self.export_wrl_model
+        exporters["stl"] = self.export_stl_file
+        exporters["e"] = self.export_model
+        exporters["g"] = self.export_model
+        exporters["exo"] = self.export_model
+        extension = filename.rsplit(".", 1)[-1].lower()
         if extension not in exporters:
             self._error(
-                'Unrecognized file extension.',
+                "Unrecognized file extension.",
                 'The filename extension "%s" was not recognized.  The '
-                'list of recognized extensions is : %s' %
-                (extension, ', '.join(list(exporters.keys()))))
+                "list of recognized extensions is : %s"
+                % (extension, ", ".join(list(exporters.keys()))),
+            )
         exporters[extension](filename, *args, **kwargs)
def _error_evaluating_expression(self, expression, var): """Throw an error saying we could not evaluate the given expression.""" self._error( - 'Invalid expression', - 'An error occurred while trying to evaluate the given ' - 'expression. It is likely that this expression is ' - 'ill-formed, or that the variables it uses do not ' - 'exist:\n\n%s\n\nDefined variables: %s' % - (expression, ', '.join(sorted(var.keys())))) + "Invalid expression", + "An error occurred while trying to evaluate the given " + "expression. It is likely that this expression is " + "ill-formed, or that the variables it uses do not " + "exist:\n\n%s\n\nDefined variables: %s" + % (expression, ", ".join(sorted(var.keys()))), + ) @staticmethod def _transform_eval_expression(expression, variable_names): """Transform a string expression into one usable by eval.""" - eval_expression = ' %s ' % expression + eval_expression = " %s " % expression for name in variable_names: - eval_expression = re.sub('([^a-zA-Z0-9_])%s([^a-zA-Z0-9_])' % name, - r"\1var['%s']\2" % name, eval_expression) + eval_expression = re.sub( + "([^a-zA-Z0-9_])%s([^a-zA-Z0-9_])" % name, + r"\1var['%s']\2" % name, + eval_expression, + ) # add "math." to supported mathematical functions # Note: abs is a built-in function, it is not math.abs for name in [ - 'atan', 'sinh', 'cosh', 'tanh', 'exp', 'sqrt', 'sin', 'cos', - 'tan' + "atan", + "sinh", + "cosh", + "tanh", + "exp", + "sqrt", + "sin", + "cos", + "tan", ]: - eval_expression = re.sub('([^a-zA-Z0-9_])%s([^a-zA-Z0-9_])' % name, - r'\1math.%s\2' % name, eval_expression) + eval_expression = re.sub( + "([^a-zA-Z0-9_])%s([^a-zA-Z0-9_])" % name, + r"\1math.%s\2" % name, + eval_expression, + ) # convert powers to from "^" to "**" format - eval_expression = re.sub(r'\^', '**', eval_expression) + eval_expression = re.sub(r"\^", "**", eval_expression) return eval_expression.strip()
[docs] def get_element_block_dimension(self, element_block_id): @@ -2007,10 +2266,10 @@

Source code for exomerge

         If this cannot be determined, return -1.
         """
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         element_type = self._get_element_type(element_block_id)
-        element_type = self._get_standard_element_type(element_type,
-                                                       warning=False)
+        element_type = self._get_standard_element_type(element_type, warning=False)
         if element_type in self.DIMENSION:
             return self.DIMENSION[element_type]
         return -1
@@ -2018,7 +2277,8 @@

Source code for exomerge

 
[docs] def get_nodes_per_element(self, element_block_id): """Return the nodes per element in the given element block.""" [element_block_id] = self._format_element_block_id_list( - [element_block_id], single=True) + [element_block_id], single=True + ) return self.element_blocks[element_block_id][1][2]
def _get_element_type(self, element_block_id): @@ -2031,42 +2291,47 @@

Source code for exomerge

 
         """
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         e_type = self.element_blocks[element_block_id][1][0]
         if isinstance(e_type, bytes):
-            return e_type.decode('utf8')
+            return e_type.decode("utf8")
         return e_type
 
-    def _calculate_element_field_extreme(self,
-                                         element_field_names,
-                                         element_block_ids,
-                                         function,
-                                         function_name,
-                                         calculate_block_id=False,
-                                         calculate_location=False):
+    def _calculate_element_field_extreme(
+        self,
+        element_field_names,
+        element_block_ids,
+        function,
+        function_name,
+        calculate_block_id=False,
+        calculate_location=False,
+    ):
         """Store an element field extreme as a global variable."""
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         element_field_names = self._format_id_list(
             element_field_names,
-            self.get_element_field_names(element_block_ids), 'element field')
+            self.get_element_field_names(element_block_ids),
+            "element field",
+        )
         for element_field_name in element_field_names:
             for element_block_id in element_block_ids:
-                if not self.element_field_exists(element_field_name,
-                                                 element_block_ids):
-                    self._missing_on_entity_error(element_field_name,
-                                                  'element field',
-                                                  element_block_id,
-                                                  'element block')
+                if not self.element_field_exists(element_field_name, element_block_ids):
+                    self._missing_on_entity_error(
+                        element_field_name,
+                        "element field",
+                        element_block_id,
+                        "element block",
+                    )
         for element_field_name in element_field_names:
-            name = element_field_name + '_' + function_name
+            name = element_field_name + "_" + function_name
             self.create_global_variable(name)
             if calculate_location:
-                self.create_global_variable(name + '_x')
-                self.create_global_variable(name + '_y')
-                self.create_global_variable(name + '_z')
+                self.create_global_variable(name + "_x")
+                self.create_global_variable(name + "_y")
+                self.create_global_variable(name + "_z")
             if calculate_block_id:
-                self.create_global_variable(name + '_block_id')
+                self.create_global_variable(name + "_block_id")
             for index in range(len(self.timesteps)):
                 extreme = None
                 extreme_block_id = None
@@ -2077,45 +2342,47 @@ 

Source code for exomerge

                     if not values:
                         continue
                     this_extreme = function(values)
-                    if (extreme is None or function([extreme, this_extreme
-                                                     ]) == this_extreme):
+                    if (
+                        extreme is None
+                        or function([extreme, this_extreme]) == this_extreme
+                    ):
                         extreme = this_extreme
                         extreme_block_id = element_block_id
                         connectivity = self.get_connectivity(element_block_id)
-                        nodes_per_element = self.get_nodes_per_element(
-                            element_block_id)
+                        nodes_per_element = self.get_nodes_per_element(element_block_id)
                         element_index = values.index(extreme)
-                        extreme_node_indices = connectivity[element_index *
-                                                            nodes_per_element:
-                                                            (element_index +
-                                                             1) *
-                                                            nodes_per_element]
+                        extreme_node_indices = connectivity[
+                            element_index
+                            * nodes_per_element: (element_index + 1)
+                            * nodes_per_element
+                        ]
                 if extreme is None:
                     self._warning(
-                        'No values encountered',
-                        'The element field extreme cannot be '
-                        'calculated because no values are present.')
+                        "No values encountered",
+                        "The element field extreme cannot be "
+                        "calculated because no values are present.",
+                    )
                     continue
                 self.global_variables[name][index] = extreme
                 if calculate_block_id:
-                    self.global_variables[name + '_block_id'][index] = float(
-                        extreme_block_id)
+                    self.global_variables[name + "_block_id"][index] = float(
+                        extreme_block_id
+                    )
                 if calculate_location:
-                    coords = self._get_coordinates_at_time(
-                        self.timesteps[index])
+                    coords = self._get_coordinates_at_time(self.timesteps[index])
                     locations = [coords[x] for x in extreme_node_indices]
-                    centroid = [
-                        self._mean([x[i] for x in locations]) for i in range(3)
-                    ]
-                    self.global_variables[name + '_x'][index] = centroid[0]
-                    self.global_variables[name + '_y'][index] = centroid[1]
-                    self.global_variables[name + '_z'][index] = centroid[2]
-
-
[docs] def calculate_element_field_maximum(self, - element_field_names, - element_block_ids='all', - calculate_location=False, - calculate_block_id=False): + centroid = [self._mean([x[i] for x in locations]) for i in range(3)] + self.global_variables[name + "_x"][index] = centroid[0] + self.global_variables[name + "_y"][index] = centroid[1] + self.global_variables[name + "_z"][index] = centroid[2] + +
[docs] def calculate_element_field_maximum( + self, + element_field_names, + element_block_ids="all", + calculate_location=False, + calculate_block_id=False, + ): """ Store an element field maximum as a global variable. @@ -2134,15 +2401,18 @@

Source code for exomerge

             element_field_names,
             element_block_ids,
             max,
-            'max',
+            "max",
             calculate_location=calculate_location,
-            calculate_block_id=calculate_block_id)
+ calculate_block_id=calculate_block_id, + )
-
[docs] def calculate_element_field_minimum(self, - element_field_names, - element_block_ids='all', - calculate_location=False, - calculate_block_id=False): +
[docs] def calculate_element_field_minimum( + self, + element_field_names, + element_block_ids="all", + calculate_location=False, + calculate_block_id=False, + ): """ Store an element field minimum as a global variable. @@ -2161,54 +2431,55 @@

Source code for exomerge

             element_field_names,
             element_block_ids,
             min,
-            'min',
+            "min",
             calculate_location=calculate_location,
-            calculate_block_id=calculate_block_id)
- - def _calculate_node_field_extreme(self, - node_field_names, - function, - function_name, - element_block_ids='auto', - calculate_location=False): + calculate_block_id=calculate_block_id, + )
+ + def _calculate_node_field_extreme( + self, + node_field_names, + function, + function_name, + element_block_ids="auto", + calculate_location=False, + ): """Store a node field extreme as a global variable.""" - node_field_names = self._format_id_list(node_field_names, - self.get_node_field_names(), - 'node field') - if element_block_ids == 'auto': + node_field_names = self._format_id_list( + node_field_names, self.get_node_field_names(), "node field" + ) + if element_block_ids == "auto": node_indices = list(range(len(self.nodes))) else: node_indices = self.get_nodes_in_element_block(element_block_ids) if not node_indices: self._error( - 'No node values', - 'No nodes were specified, so we cannot calculate the ' - 'extreme value.') + "No node values", + "No nodes were specified, so we cannot calculate the " "extreme value.", + ) for node_field_name in node_field_names: - name = node_field_name + '_' + function_name + name = node_field_name + "_" + function_name self.create_global_variable(name) if calculate_location: - self.create_global_variable(name + '_x') - self.create_global_variable(name + '_y') - self.create_global_variable(name + '_z') + self.create_global_variable(name + "_x") + self.create_global_variable(name + "_y") + self.create_global_variable(name + "_z") for index in range(len(self.timesteps)): values = self.node_fields[node_field_name][index] values = [values[x] for x in node_indices] extreme = function(values) self.global_variables[name][index] = extreme if calculate_location: - coords = self._get_coordinates_at_time( - self.timesteps[index]) + coords = self._get_coordinates_at_time(self.timesteps[index]) node_index = node_indices[values.index(extreme)] location = coords[node_index] - self.global_variables[name + '_x'][index] = location[0] - self.global_variables[name + '_y'][index] = location[1] - self.global_variables[name + '_z'][index] = location[2] + self.global_variables[name + "_x"][index] = location[0] + self.global_variables[name + "_y"][index] = location[1] + self.global_variables[name + "_z"][index] = location[2] -
[docs] def calculate_node_field_maximum(self, - node_field_names, - element_block_ids='auto', - calculate_location=False): +
[docs] def calculate_node_field_maximum( + self, node_field_names, element_block_ids="auto", calculate_location=False + ): """ Store a node field maximum as a global variable. @@ -2223,14 +2494,14 @@

Source code for exomerge

         self._calculate_node_field_extreme(
             node_field_names,
             max,
-            'max',
+            "max",
             element_block_ids=element_block_ids,
-            calculate_location=calculate_location)
+ calculate_location=calculate_location, + )
-
[docs] def calculate_node_field_minimum(self, - node_field_names, - element_block_ids='auto', - calculate_location=False): +
[docs] def calculate_node_field_minimum( + self, node_field_names, element_block_ids="auto", calculate_location=False + ): """ Store a node field minimum as a global variable. @@ -2245,14 +2516,14 @@

Source code for exomerge

         self._calculate_node_field_extreme(
             node_field_names,
             min,
-            'min',
+            "min",
             element_block_ids=element_block_ids,
-            calculate_location=calculate_location)
+ calculate_location=calculate_location, + )
-
[docs] def output_global_variables(self, - filename=None, - global_variable_names='all', - timesteps='all'): +
[docs] def output_global_variables( + self, filename=None, global_variable_names="all", timesteps="all" + ): """ Output global variables in CSV format. @@ -2269,24 +2540,23 @@

Source code for exomerge

 
         """
         global_variable_names = self._format_id_list(
-            global_variable_names, self.get_global_variable_names(),
-            'global variable')
-        timesteps = self._format_id_list(timesteps, self.get_timesteps(),
-                                         'timestep')
+            global_variable_names, self.get_global_variable_names(), "global variable"
+        )
+        timesteps = self._format_id_list(timesteps, self.get_timesteps(), "timestep")
         # output header
-        names = ['time']
+        names = ["time"]
         names.extend(global_variable_names)
-        output = ', '.join(names) + '\n'
+        output = ", ".join(names) + "\n"
         # output values
         for timestep in timesteps:
             index = self.timesteps.index(timestep)
             values = [timestep]
             for name in global_variable_names:
                 values.append(self.global_variables[name][index])
-            output += ', '.join(str(x) for x in values) + '\n'
+            output += ", ".join(str(x) for x in values) + "\n"
         # output to file or screen
         if filename:
-            open(filename, 'w').write(output)
+            open(filename, "w").write(output)
         else:
             if output:
                 output = output[:-1]
@@ -2305,31 +2575,32 @@ 

Source code for exomerge

         >>> model.calculate_global_variable('total = potential + kinetic')
 
         """
-        if '=' not in expression:
+        if "=" not in expression:
             self._error(
-                'Invalid expression',
+                "Invalid expression",
                 'A "=" sign must be present in the expression but '
-                'was not found.\n\nExpression: %s' % expression)
-        (name, expression) = expression.split('=', 1)
+                "was not found.\n\nExpression: %s" % expression,
+            )
+        (name, expression) = expression.split("=", 1)
         new_name = name.strip()
         self.create_global_variable(new_name)
         # create list of variable names and modify them in the expression
-        variable_names = set(['time'])
+        variable_names = set(["time"])
         variable_names.update(self.get_global_variable_names())
-        eval_expression = self._transform_eval_expression(
-            expression, variable_names)
-        function = eval('lambda var: ' + eval_expression)
+        eval_expression = self._transform_eval_expression(expression, variable_names)
+        function = eval("lambda var: " + eval_expression)
         var = dict()
         try:
             for index, time in enumerate(self.timesteps):
-                var['time'] = time
+                var["time"] = time
                 for name, values in list(self.global_variables.items()):
                     var[name] = values[index]
                 value = float(function(var))
                 self.global_variables[new_name][index] = value
         except (SyntaxError, NameError):
             self._error_evaluating_expression(
-                "%s = %s" % (new_name, eval_expression), var)
+ "%s = %s" % (new_name, eval_expression), var + )
[docs] def calculate_node_field(self, expression): """ @@ -2345,37 +2616,37 @@

Source code for exomerge

         >>> model.calculate_node_field('temp_C = temp_K - 273.15')
 
         """
-        if '=' not in expression:
+        if "=" not in expression:
             self._error(
-                'Invalid expression',
+                "Invalid expression",
                 'A "=" sign must be present in the expression but '
-                'was not found.\n\nExpression: %s' % expression)
-        (name, expression) = expression.split('=', 1)
+                "was not found.\n\nExpression: %s" % expression,
+            )
+        (name, expression) = expression.split("=", 1)
         new_name = name.strip()
         self.create_node_field(new_name)
         new_values = self.node_fields[new_name]
         # create list of variable names and modify them in the expression
-        variable_names = set(['time'])
-        variable_names.update(['X', 'Y', 'Z'])
+        variable_names = set(["time"])
+        variable_names.update(["X", "Y", "Z"])
         variable_names.update(self.get_global_variable_names())
         variable_names.update(self.get_node_field_names())
-        eval_expression = self._transform_eval_expression(
-            expression, variable_names)
+        eval_expression = self._transform_eval_expression(expression, variable_names)
         var = dict()
-        function = eval('lambda var: ' + eval_expression)
+        function = eval("lambda var: " + eval_expression)
         try:
             for time_index, time in enumerate(self.timesteps):
                 # set time
-                var['time'] = time
+                var["time"] = time
                 # set global variables
                 for name, values in list(self.global_variables.items()):
                     var[name] = values[time_index]
                 # go through each node
                 for node_index in range(len(self.nodes)):
                     # set coordinate values
-                    var['X'] = self.nodes[node_index][0]
-                    var['Y'] = self.nodes[node_index][1]
-                    var['Z'] = self.nodes[node_index][2]
+                    var["X"] = self.nodes[node_index][0]
+                    var["Y"] = self.nodes[node_index][1]
+                    var["Z"] = self.nodes[node_index][2]
                     # set node field values
                     for name, values in list(self.node_fields.items()):
                         var[name] = values[time_index][node_index]
@@ -2383,9 +2654,10 @@ 

Source code for exomerge

                     new_values[time_index][node_index] = value
         except (SyntaxError, NameError):
             self._error_evaluating_expression(
-                "%s = %s" % (new_name, eval_expression), var)
+ "%s = %s" % (new_name, eval_expression), var + )
-
[docs] def calculate_node_set_field(self, expression, node_set_ids='all'): +
[docs] def calculate_node_set_field(self, expression, node_set_ids="all"): """ Store a node set field calculated from the given expression. @@ -2401,12 +2673,13 @@

Source code for exomerge

 
         """
         node_set_ids = self._format_node_set_id_list(node_set_ids)
-        if '=' not in expression:
+        if "=" not in expression:
             self._error(
-                'Invalid expression',
+                "Invalid expression",
                 'A "=" sign must be present in the expression but '
-                'was not found.\n\nExpression: %s' % expression)
-        (name, expression) = expression.split('=', 1)
+                "was not found.\n\nExpression: %s" % expression,
+            )
+        (name, expression) = expression.split("=", 1)
         new_name = name.strip()
         # for each node set
         for node_set_id in node_set_ids:
@@ -2415,28 +2688,29 @@ 

Source code for exomerge

             fields = self._get_node_set_fields(node_set_id)
             new_values = fields[new_name]
             # create list of variable names and modify them in the expression
-            variable_names = set(['time'])
-            variable_names.update(['X', 'Y', 'Z'])
+            variable_names = set(["time"])
+            variable_names.update(["X", "Y", "Z"])
             variable_names.update(self.get_global_variable_names())
             variable_names.update(self.get_node_field_names())
             variable_names.update(list(fields.keys()))
             eval_expression = self._transform_eval_expression(
-                expression, variable_names)
-            function = eval('lambda var: ' + eval_expression)
+                expression, variable_names
+            )
+            function = eval("lambda var: " + eval_expression)
             var = dict()
             try:
                 for time_index, time in enumerate(self.timesteps):
                     # set time
-                    var['time'] = time
+                    var["time"] = time
                     # set global variables
                     for name, values in list(self.global_variables.items()):
                         var[name] = values[time_index]
                     # go through each node
                     for member_index, node_index in enumerate(members):
                         # set coordinate values
-                        var['X'] = self.nodes[node_index][0]
-                        var['Y'] = self.nodes[node_index][1]
-                        var['Z'] = self.nodes[node_index][2]
+                        var["X"] = self.nodes[node_index][0]
+                        var["Y"] = self.nodes[node_index][1]
+                        var["Z"] = self.nodes[node_index][2]
                         # set node fields
                         for name, values in list(self.node_fields.items()):
                             var[name] = values[time_index][node_index]
@@ -2447,9 +2721,10 @@ 

Source code for exomerge

                         new_values[time_index][member_index] = value
             except (SyntaxError, NameError):
                 self._error_evaluating_expression(
-                    "%s = %s" % (new_name, eval_expression), var)
+ "%s = %s" % (new_name, eval_expression), var + )
-
[docs] def calculate_side_set_field(self, expression, side_set_ids='all'): +
[docs] def calculate_side_set_field(self, expression, side_set_ids="all"): """ Store a side set field calculated from the given expression. @@ -2462,12 +2737,13 @@

Source code for exomerge

 
         """
         side_set_ids = self._format_side_set_id_list(side_set_ids)
-        if '=' not in expression:
+        if "=" not in expression:
             self._error(
-                'Invalid expression',
+                "Invalid expression",
                 'A "=" sign must be present in the expression but '
-                'was not found.\n\nExpression: %s' % expression)
-        (name, expression) = expression.split('=', 1)
+                "was not found.\n\nExpression: %s" % expression,
+            )
+        (name, expression) = expression.split("=", 1)
         new_name = name.strip()
         # for each side set
         for side_set_id in side_set_ids:
@@ -2476,17 +2752,18 @@ 

Source code for exomerge

             fields = self._get_side_set_fields(side_set_id)
             new_values = fields[new_name]
             # create list of variable names and modify them in the expression
-            variable_names = set(['time'])
+            variable_names = set(["time"])
             variable_names.update(self.get_global_variable_names())
             variable_names.update(list(fields.keys()))
             eval_expression = self._transform_eval_expression(
-                expression, variable_names)
-            function = eval('lambda var: ' + eval_expression)
+                expression, variable_names
+            )
+            function = eval("lambda var: " + eval_expression)
             var = dict()
             try:
                 for time_index, time in enumerate(self.timesteps):
                     # set time
-                    var['time'] = time
+                    var["time"] = time
                     # set global variables
                     for name, values in list(self.global_variables.items()):
                         var[name] = values[time_index]
@@ -2499,9 +2776,10 @@ 

Source code for exomerge

                         new_values[time_index][member_index] = value
             except (SyntaxError, NameError):
                 self._error_evaluating_expression(
-                    "%s = %s" % (new_name, eval_expression), var)
+ "%s = %s" % (new_name, eval_expression), var + )
-
[docs] def calculate_element_field(self, expression, element_block_ids='all'): +
[docs] def calculate_element_field(self, expression, element_block_ids="all"): """ Store an element field calculated from the given expression. @@ -2515,14 +2793,14 @@

Source code for exomerge

         ...                               'stress_yy + stress_zz) / -3')
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
-        if '=' not in expression:
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
+        if "=" not in expression:
             self._error(
-                'Invalid expression',
+                "Invalid expression",
                 'A "=" sign must be present in the expression but '
-                'was not found.\n\nExpression: %s' % expression)
-        (name, expression) = expression.split('=', 1)
+                "was not found.\n\nExpression: %s" % expression,
+            )
+        (name, expression) = expression.split("=", 1)
         new_name = name.strip()
         # for each element block
         for element_block_id in element_block_ids:
@@ -2531,17 +2809,18 @@ 

Source code for exomerge

             element_count = self.get_element_count(element_block_id)
             new_values = fields[new_name]
             # create list of variable names and modify them in the expression
-            variable_names = set(['time'])
+            variable_names = set(["time"])
             variable_names.update(self.get_global_variable_names())
             variable_names.update(list(fields.keys()))
             eval_expression = self._transform_eval_expression(
-                expression, variable_names)
-            function = eval('lambda var: ' + eval_expression)
+                expression, variable_names
+            )
+            function = eval("lambda var: " + eval_expression)
             var = dict()
             try:
                 for time_index, time in enumerate(self.timesteps):
                     # set time
-                    var['time'] = time
+                    var["time"] = time
                     # set global variables
                     for name, values in list(self.global_variables.items()):
                         var[name] = values[time_index]
@@ -2554,7 +2833,8 @@ 

Source code for exomerge

                         new_values[time_index][index] = value
             except (SyntaxError, NameError):
                 self._error_evaluating_expression(
-                    "%s = %s" % (new_name, eval_expression), var)
+ "%s = %s" % (new_name, eval_expression), var + )
[docs] def to_lowercase(self): """ @@ -2595,44 +2875,50 @@

Source code for exomerge

         """
         # validity check the inputs
         valid_element_block_translation_list = []
-        for (id_, new_element_type) in element_block_translation_list:
+        for id_, new_element_type in element_block_translation_list:
             # check if element block exists
             if not self.element_block_exists(id_):
-                self._missing_warning(id_, 'element block')
+                self._missing_warning(id_, "element block")
                 continue
             old_element_type = self._get_standard_element_type(
-                self._get_element_type(id_))
+                self._get_element_type(id_)
+            )
             # check if any schemes exist for this element block
             if old_element_type not in self.ELEMENT_CONVERSIONS:
                 self._error(
-                    'No element conversion schemes',
-                    'There are no element conversion schemes to '
+                    "No element conversion schemes",
+                    "There are no element conversion schemes to "
                     'convert elements of type "%s" into any other '
-                    'element type.' % (old_element_type))
+                    "element type." % (old_element_type),
+                )
                 continue
             # check if the given scheme exists for this element block
             conversions = self.ELEMENT_CONVERSIONS[old_element_type]
             if new_element_type not in conversions:
                 self._error(
-                    'Invalid target element type',
-                    'There are no element conversion schemes to '
+                    "Invalid target element type",
+                    "There are no element conversion schemes to "
                     'convert elements of type "%s" into elements of '
                     'type "%s".  Conversions are available to the '
-                    'following element types: "%s".' %
-                    (old_element_type, new_element_type, '", "'.join(
-                        list(conversions.keys()))))
+                    'following element types: "%s".'
+                    % (
+                        old_element_type,
+                        new_element_type,
+                        '", "'.join(list(conversions.keys())),
+                    ),
+                )
                 continue
             # all is good, keep this one on the list
-            valid_element_block_translation_list.append(
-                [id_, new_element_type])
+            valid_element_block_translation_list.append([id_, new_element_type])
         # if we have nothing to do, just exit
         if not valid_element_block_translation_list:
             return
         # now we need to find the new nodes to create, if any
         averaged_nodes = set()
-        for (id_, new_element_type) in valid_element_block_translation_list:
+        for id_, new_element_type in valid_element_block_translation_list:
             old_element_type = self._get_standard_element_type(
-                self._get_element_type(id_))
+                self._get_element_type(id_)
+            )
             scheme = self.ELEMENT_CONVERSIONS[old_element_type]
             scheme = scheme[new_element_type]
             # find new nodes which need created
@@ -2650,8 +2936,8 @@ 

Source code for exomerge

             nodes_per_element = self.get_nodes_per_element(id_)
             # iterate over each element
             for local_node in [
-                    connectivity[x:x + nodes_per_element]
-                    for x in range(0, len(connectivity), nodes_per_element)
+                connectivity[x: x + nodes_per_element]
+                for x in range(0, len(connectivity), nodes_per_element)
             ]:
                 # iterate over each new averaged node formula
                 for formula in averaged_node_list:
@@ -2659,15 +2945,16 @@ 

Source code for exomerge

                     averaged_nodes.add(node_list)
         # create the averaged node mapping
         averaged_nodes = sorted(averaged_nodes)
-        averaged_node_map = dict((x, len(self.nodes) + index)
-                                 for index, x in enumerate(averaged_nodes))
+        averaged_node_map = dict(
+            (x, len(self.nodes) + index) for index, x in enumerate(averaged_nodes)
+        )
         # create new averaged nodes
         self._create_averaged_nodes(averaged_nodes, [])
         # now create the new element blocks
-        for (element_block_id,
-             new_element_type) in valid_element_block_translation_list:
+        for element_block_id, new_element_type in valid_element_block_translation_list:
             old_element_type = self._get_standard_element_type(
-                self._get_element_type(element_block_id))
+                self._get_element_type(element_block_id)
+            )
             scheme = self.ELEMENT_CONVERSIONS[old_element_type]
             scheme = scheme[new_element_type]
             # rename some things
@@ -2676,37 +2963,42 @@ 

Source code for exomerge

             # create the connectivity for the new element block
             new_connectivity = []
             for local_node in [
-                    connectivity[x:x + nodes_per_element]
-                    for x in range(0, len(connectivity), nodes_per_element)
+                connectivity[x: x + nodes_per_element]
+                for x in range(0, len(connectivity), nodes_per_element)
             ]:
                 for new_element in scheme:
                     for new_node in new_element:
                         if isinstance(new_node, int):
                             new_connectivity.append(local_node[new_node])
                         else:
-                            node_list = tuple(
-                                sorted(local_node[x] for x in new_node))
-                            new_connectivity.append(
-                                averaged_node_map[node_list])
+                            node_list = tuple(sorted(local_node[x] for x in new_node))
+                            new_connectivity.append(averaged_node_map[node_list])
             # create a temporary element block
             temporary_element_block_id = self._new_element_block_id()
             new_nodes_per_element = self.NODES_PER_ELEMENT[new_element_type]
-            self.create_element_block(temporary_element_block_id, [
-                new_element_type,
-                len(new_connectivity) // new_nodes_per_element,
-                new_nodes_per_element, 0
-            ], new_connectivity)
+            self.create_element_block(
+                temporary_element_block_id,
+                [
+                    new_element_type,
+                    len(new_connectivity) // new_nodes_per_element,
+                    new_nodes_per_element,
+                    0,
+                ],
+                new_connectivity,
+            )
             temporary_fields = self._get_element_block_fields(
-                temporary_element_block_id)
+                temporary_element_block_id
+            )
             element_multiplier = len(scheme)
             # transfer element values
             fields = self._get_element_block_fields(element_block_id)
             for field_name in self.get_element_field_names(element_block_id):
                 values = fields[field_name]
                 new_values = [list(x) for x in values]
-                new_values = [[
-                    x for x in these_values for _ in range(element_multiplier)
-                ] for these_values in new_values]
+                new_values = [
+                    [x for x in these_values for _ in range(element_multiplier)]
+                    for these_values in new_values
+                ]
                 temporary_fields[field_name] = new_values
             # for each face in the old scheme, find all of its nodes
             old_face_mapping = self._get_face_mapping(old_element_type)
@@ -2714,8 +3006,7 @@ 

Source code for exomerge

             new_face_mapping = self._get_face_mapping(new_element_type)
             face_translation = [[] for _ in range(len(old_face_nodes))]
             for new_element_index, new_element in enumerate(scheme):
-                for new_face_index, (
-                        _, face_members) in enumerate(new_face_mapping):
+                for new_face_index, (_, face_members) in enumerate(new_face_mapping):
                     # find all nodes used by this new face
                     used_nodes = set()
                     for face_member in face_members:
@@ -2724,25 +3015,29 @@ 

Source code for exomerge

                         else:
                             used_nodes.update(new_element[face_member])
                     # see if these are a subset of nodes in the old set
-                    for (old_face_index,
-                         old_members) in enumerate(old_face_nodes):
+                    for old_face_index, old_members in enumerate(old_face_nodes):
                         if used_nodes <= old_members:
                             face_translation[old_face_index].append(
-                                (new_element_index, new_face_index))
+                                (new_element_index, new_face_index)
+                            )
             # update self.side_sets
             for id_ in self.get_side_set_ids():
                 members = self.get_side_set_members(id_)
                 fields = self._get_side_set_fields(id_)
                 old_members = list(members)
-                for member_index, (block_id, element_index,
-                                   face_index) in enumerate(old_members):
+                for member_index, (block_id, element_index, face_index) in enumerate(
+                    old_members
+                ):
                     if block_id == element_block_id:
                         # add some new faces
                         for new_faces in face_translation[face_index]:
                             members.append(
-                                (temporary_element_block_id,
-                                 element_index * len(scheme) + new_faces[0],
-                                 new_faces[1]))
+                                (
+                                    temporary_element_block_id,
+                                    element_index * len(scheme) + new_faces[0],
+                                    new_faces[1],
+                                )
+                            )
                         # add values for the new faces
                         for all_values in list(fields.values()):
                             for values in all_values:
@@ -2751,16 +3046,13 @@ 

Source code for exomerge

             # delete the old block
             self.delete_element_block(element_block_id)
             # rename the temporary element block
-            self.rename_element_block(temporary_element_block_id,
-                                      element_block_id)
+            self.rename_element_block(temporary_element_block_id, element_block_id)
 
 
[docs] def convert_element_blocks(self, element_block_ids, new_element_type): """Convert elements within a block to a new element type.""" - element_block_ids = self._format_element_block_id_list( - element_block_ids) + element_block_ids = self._format_element_block_id_list(element_block_ids) # form the conversion list - conversion_list = [(id_, new_element_type) - for id_ in element_block_ids] + conversion_list = [(id_, new_element_type) for id_ in element_block_ids] # convert each block self._translate_element_blocks(conversion_list)
@@ -2774,21 +3066,20 @@

Source code for exomerge

         the fewest nodes.
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # find all element types we need to convert
         element_types = set()
         for element_block_id in element_block_ids:
             element_types.add(self._get_element_type(element_block_id))
         element_types = sorted(
-            self._get_standard_element_type(x) for x in element_types)
+            self._get_standard_element_type(x) for x in element_types
+        )
         # ignore non-standard element types
-        element_types = [
-            x for x in element_types if x in self.STANDARD_ELEMENT_TYPES
-        ]
+        element_types = [x for x in element_types if x in self.STANDARD_ELEMENT_TYPES]
         # find all elements of the target order
         target_element_types = [
-            x for x in self.STANDARD_ELEMENT_TYPES
+            x
+            for x in self.STANDARD_ELEMENT_TYPES
             if self.ELEMENT_ORDER[x] == target_order
         ]
         # for each element type, find the optimal target type
@@ -2800,26 +3091,29 @@ 

Source code for exomerge

                 if self.ELEMENT_ORDER[element_type] == target_order:
                     continue
                 self._error(
-                    'Unable to convert',
-                    'There is no valid scheme to convert elements '
+                    "Unable to convert",
+                    "There is no valid scheme to convert elements "
                     'of type "%s" to an element type of order '
-                    '%d.' % (element_type, target_order))
+                    "%d." % (element_type, target_order),
+                )
             scheme = self.ELEMENT_CONVERSIONS[element_type]
-            possible_types = set(
-                scheme.keys()).intersection(target_element_types)
+            possible_types = set(scheme.keys()).intersection(target_element_types)
             if not possible_types:
                 # if element type is already the desired order, no warning
                 if self.ELEMENT_ORDER[element_type] == target_order:
                     continue
                 self._error(
-                    'Unable to convert',
-                    'There is no valid scheme to convert elements '
+                    "Unable to convert",
+                    "There is no valid scheme to convert elements "
                     'of type "%s" to an element type of order '
-                    '%d.' % (element_type, target_order))
+                    "%d." % (element_type, target_order),
+                )
             # out of the given options, choose the one that first creates the
             # least number of elements, and secondly the least number of nodes
-            ranking = [(len(scheme[x]), len(scheme[x]) * len(scheme[x][0]), x)
-                       for x in possible_types]
+            ranking = [
+                (len(scheme[x]), len(scheme[x]) * len(scheme[x][0]), x)
+                for x in possible_types
+            ]
             ranking = sorted(ranking)
             element_type_map[element_type] = ranking[0][-1]
         # create the conversion list
@@ -2829,11 +3123,12 @@ 

Source code for exomerge

             element_type = self._get_standard_element_type(element_type)
             if element_type in element_type_map:
                 conversion_list.append(
-                    (element_block_id, element_type_map[element_type]))
+                    (element_block_id, element_type_map[element_type])
+                )
         # now translate the elements
         self._translate_element_blocks(conversion_list)
 
-
[docs] def make_elements_linear(self, element_block_ids='all'): +
[docs] def make_elements_linear(self, element_block_ids="all"): """ Convert elements in one or more element blocks to a linear type. @@ -2845,7 +3140,7 @@

Source code for exomerge

         """
         self._change_element_order(element_block_ids, 1)
-
[docs] def make_elements_quadratic(self, element_block_ids='all'): +
[docs] def make_elements_quadratic(self, element_block_ids="all"): """ Convert elements in one or more element blocks to a quadratic type. @@ -2857,13 +3152,14 @@

Source code for exomerge

         """
         self._change_element_order(element_block_ids, 2)
- def _translate_element_type(self, element_block_id, new_element_type, - scheme): + def _translate_element_type(self, element_block_id, new_element_type, scheme): """Convert elements within a block to a new type.""" [element_block_id] = self._format_element_block_id_list( - [element_block_id], single=True) + [element_block_id], single=True + ) old_element_type = self._get_standard_element_type( - self._get_element_type(element_block_id)) + self._get_element_type(element_block_id) + ) new_element_type = self._get_standard_element_type(new_element_type) old_nodes_per_element = self.NODES_PER_ELEMENT[old_element_type] new_nodes_per_element = self.NODES_PER_ELEMENT[new_element_type] @@ -2876,17 +3172,17 @@

Source code for exomerge

         connectivity = self.get_connectivity(element_block_id)
         element_count = self.get_element_count(element_block_id)
         for element_index in range(element_count):
-            local_node = connectivity[element_index *
-                                      old_nodes_per_element:(element_index +
-                                                             1) *
-                                      old_nodes_per_element]
+            local_node = connectivity[
+                element_index
+                * old_nodes_per_element: (element_index + 1)
+                * old_nodes_per_element
+            ]
             for new_element in scheme:
                 for new_node in new_element:
                     if isinstance(new_node, int):
                         duplicate_nodes.add(local_node[new_node])
                     else:
-                        averaged_nodes.add(
-                            tuple(local_node[x] for x in new_node))
+                        averaged_nodes.add(tuple(local_node[x] for x in new_node))
         # create new nodes
         next_node_index = len(self.nodes)
         duplicate_nodes = sorted(duplicate_nodes)
@@ -2894,43 +3190,53 @@ 

Source code for exomerge

         self._duplicate_nodes(duplicate_nodes, [])
         self._create_averaged_nodes(averaged_nodes, [])
         # assign node indices
-        duplicate_nodes = dict((x, next_node_index + index)
-                               for index, x in enumerate(duplicate_nodes))
+        duplicate_nodes = dict(
+            (x, next_node_index + index) for index, x in enumerate(duplicate_nodes)
+        )
         next_node_index += len(duplicate_nodes)
-        averaged_nodes = dict((x, next_node_index + index)
-                              for index, x in enumerate(averaged_nodes))
+        averaged_nodes = dict(
+            (x, next_node_index + index) for index, x in enumerate(averaged_nodes)
+        )
         # create the connectivity for the new element block
         new_connectivity = []
         for element_index in range(element_count):
-            local_node = connectivity[element_index *
-                                      old_nodes_per_element:(element_index +
-                                                             1) *
-                                      old_nodes_per_element]
+            local_node = connectivity[
+                element_index
+                * old_nodes_per_element: (element_index + 1)
+                * old_nodes_per_element
+            ]
             for new_element in scheme:
                 for new_node in new_element:
                     if isinstance(new_node, int):
-                        new_connectivity.append(
-                            duplicate_nodes[local_node[new_node]])
+                        new_connectivity.append(duplicate_nodes[local_node[new_node]])
                     else:
-                        new_connectivity.append(averaged_nodes[tuple(
-                            local_node[x] for x in new_node)])
+                        new_connectivity.append(
+                            averaged_nodes[tuple(local_node[x] for x in new_node)]
+                        )
         # create the new block
         temporary_element_block_id = self._new_element_block_id()
-        self.create_element_block(temporary_element_block_id, [
-            new_element_type,
-            len(new_connectivity) // new_nodes_per_element,
-            new_nodes_per_element, 0
-        ], new_connectivity)
+        self.create_element_block(
+            temporary_element_block_id,
+            [
+                new_element_type,
+                len(new_connectivity) // new_nodes_per_element,
+                new_nodes_per_element,
+                0,
+            ],
+            new_connectivity,
+        )
         temporary_element_fields = self._get_element_block_fields(
-            temporary_element_block_id)
+            temporary_element_block_id
+        )
         # transfer element values
         fields = self._get_element_block_fields(element_block_id)
         for field_name in self.get_element_field_names(element_block_id):
             values = fields[field_name]
             new_values = [list(x) for x in values]
-            new_values = [[
-                x for x in these_values for _ in range(element_multiplier)
-            ] for these_values in new_values]
+            new_values = [
+                [x for x in these_values for _ in range(element_multiplier)]
+                for these_values in new_values
+            ]
             temporary_element_fields[field_name] = new_values
         # for each face in the old scheme, find all of its nodes
         old_face_mapping = self._get_face_mapping(old_element_type)
@@ -2938,8 +3244,7 @@ 

Source code for exomerge

         new_face_mapping = self._get_face_mapping(new_element_type)
         face_translation = [[] for _ in range(len(old_face_nodes))]
         for new_element_index, new_element in enumerate(scheme):
-            for new_face_index, (_,
-                                 face_members) in enumerate(new_face_mapping):
+            for new_face_index, (_, face_members) in enumerate(new_face_mapping):
                 # find all nodes used by this new face
                 used_nodes = set()
                 for face_member in face_members:
@@ -2951,21 +3256,26 @@ 

Source code for exomerge

                 for old_face_index, old_members in enumerate(old_face_nodes):
                     if used_nodes <= old_members:
                         face_translation[old_face_index].append(
-                            (new_element_index, new_face_index))
+                            (new_element_index, new_face_index)
+                        )
         # update self.side_sets
         for side_set_id in self.get_side_set_ids():
             members = self.get_side_set_members(side_set_id)
             fields = self._get_side_set_fields(side_set_id)
             old_members = list(members)
-            for member_index, (block_id, element_index,
-                               face_index) in enumerate(old_members):
+            for member_index, (block_id, element_index, face_index) in enumerate(
+                old_members
+            ):
                 if block_id == element_block_id:
                     # add some new faces
                     for new_faces in face_translation[face_index]:
                         members.append(
-                            (temporary_element_block_id,
-                             element_index * len(scheme) + new_faces[0],
-                             new_faces[1]))
+                            (
+                                temporary_element_block_id,
+                                element_index * len(scheme) + new_faces[0],
+                                new_faces[1],
+                            )
+                        )
                     # add values for the new faces
                     for all_values in list(fields.values()):
                         for values in all_values:
@@ -2975,9 +3285,7 @@ 

Source code for exomerge

         self.delete_element_block(element_block_id)
         self.rename_element_block(temporary_element_block_id, element_block_id)
 
-
[docs] def convert_hex8_block_to_tet4_block(self, - element_block_id, - scheme='hex24tet'): +
[docs] def convert_hex8_block_to_tet4_block(self, element_block_id, scheme="hex24tet"): """ Convert a block of 'hex8' elements to a block of 'tet4' elements. @@ -2993,32 +3301,40 @@

Source code for exomerge

 
         """
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         # ensure source block is actually hex8
         source_element_type = self._get_standard_element_type(
-            self._get_element_type(element_block_id))
-        if source_element_type != 'hex8':
+            self._get_element_type(element_block_id)
+        )
+        if source_element_type != "hex8":
             self._error(
-                'Incompatible element type.',
-                'We were expecting an element block composed of '
+                "Incompatible element type.",
+                "We were expecting an element block composed of "
                 '"hex8" element but instead encountered one with "%s" '
-                'elements.' % source_element_type)
+                "elements." % source_element_type,
+            )
         # get the chosen scheme
-        if scheme != 'hex24tet':
-            self._error('Unsupported scheme.',
-                        'The scheme "%s" was not recognized.' % scheme)
+        if scheme != "hex24tet":
+            self._error(
+                "Unsupported scheme.", 'The scheme "%s" was not recognized.' % scheme
+            )
         # create the scheme
         scheme = []
-        for _, face in self._get_face_mapping('hex8'):
+        for _, face in self._get_face_mapping("hex8"):
             for index in range(4):
                 scheme.append(
-                    tuple([
-                        face[(index + 1) % 4], face[index],
-                        tuple(sorted(face)),
-                        tuple(range(8))
-                    ]))
+                    tuple(
+                        [
+                            face[(index + 1) % 4],
+                            face[index],
+                            tuple(sorted(face)),
+                            tuple(range(8)),
+                        ]
+                    )
+                )
         # apply it
-        self._translate_element_type(element_block_id, 'tet4', scheme)
+ self._translate_element_type(element_block_id, "tet4", scheme)
[docs] def displacement_field_exists(self): """ @@ -3029,9 +3345,11 @@

Source code for exomerge

 
         """
         prefix = self._get_displacement_field_prefix()
-        return (self.node_field_exists(prefix + '_x')
-                and self.node_field_exists(prefix + '_y')
-                and self.node_field_exists(prefix + '_z'))
+ return ( + self.node_field_exists(prefix + "_x") + and self.node_field_exists(prefix + "_y") + and self.node_field_exists(prefix + "_z") + )
[docs] def create_displacement_field(self): """ @@ -3042,8 +3360,8 @@

Source code for exomerge

 
         """
         prefix = self._get_displacement_field_prefix()
-        for component in ['x', 'y', 'z']:
-            this_name = prefix + '_' + component
+        for component in ["x", "y", "z"]:
+            this_name = prefix + "_" + component
             if not self.node_field_exists(this_name):
                 self.create_node_field(this_name)
@@ -3057,12 +3375,12 @@

Source code for exomerge

         self.create_displacement_field()
         prefix = self._get_displacement_field_prefix()
         displacement_field_list = []
-        for component in ['x', 'y', 'z']:
-            this_name = prefix + '_' + component
+        for component in ["x", "y", "z"]:
+            this_name = prefix + "_" + component
             displacement_field_list.append(self.node_fields[this_name])
         return displacement_field_list
 
-    def _apply_displacements(self, timestep='last', scale_factor=1.0):
+    def _apply_displacements(self, timestep="last", scale_factor=1.0):
         """
         Apply the displacements to each node.
 
@@ -3076,13 +3394,13 @@ 

Source code for exomerge

         is unchanged.
 
         """
-        timestep = self._format_id_list(timestep, self.get_timesteps(),
-                                        'timestep')
+        timestep = self._format_id_list(timestep, self.get_timesteps(), "timestep")
         if len(timestep) > 1:
             self._error(
-                'Ambiguous timestep.',
-                'More than one timestep was specified.  We expected '
-                'one or zero timesteps.')
+                "Ambiguous timestep.",
+                "More than one timestep was specified.  We expected "
+                "one or zero timesteps.",
+            )
         if not timestep:
             return [tuple(x) for x in self.nodes]
         timestep_index = self.timesteps.index(timestep[0])
@@ -3090,13 +3408,12 @@ 

Source code for exomerge

             x[timestep_index] for x in self._get_displacement_field_values()
         ]
         new_nodes = [
-            (x + dx * scale_factor, y + dy * scale_factor,
-             z + dz * scale_factor)
+            (x + dx * scale_factor, y + dy * scale_factor, z + dz * scale_factor)
             for (x, y, z), dx, dy, dz in zip(self.nodes, *displacement_values)
         ]
         self.nodes = new_nodes
 
-    def _get_local_index(self, this_id, id_list, entity='entity'):
+    def _get_local_index(self, this_id, id_list, entity="entity"):
         """
         Return the local index corresponding to the given id.
 
@@ -3109,33 +3426,35 @@ 

Source code for exomerge

         10
 
         """
-        if this_id == 'first':
+        if this_id == "first":
             if not id_list:
                 self._error(
-                    'Undefined %s reference.' % entity,
-                    'A reference to the first %s was encountered but '
-                    'no %ss are defined.' % (entity, entity))
+                    "Undefined %s reference." % entity,
+                    "A reference to the first %s was encountered but "
+                    "no %ss are defined." % (entity, entity),
+                )
             return 0
-        if this_id == 'last':
+        if this_id == "last":
             if not id_list:
                 self._error(
-                    'Undefined %s reference.' % entity,
-                    'A reference to the last %s was encountered but '
-                    'no %ss are defined.' % (entity, entity))
+                    "Undefined %s reference." % entity,
+                    "A reference to the last %s was encountered but "
+                    "no %ss are defined." % (entity, entity),
+                )
             return len(id_list) - 1
         if this_id not in id_list:
-            entity_list = ', '.join([str(x) for x in id_list])
+            entity_list = ", ".join([str(x) for x in id_list])
             self._error(
-                'Reference to undefined %s.' % entity,
+                "Reference to undefined %s." % entity,
                 'A reference to %s "%s" was encountered but is not '
-                'defined in the model.  There are %d defined %ss: %s' %
-                (entity, str(this_id), len(id_list), entity, entity_list))
+                "defined in the model.  There are %d defined %ss: %s"
+                % (entity, str(this_id), len(id_list), entity, entity_list),
+            )
         return id_list.index(this_id)
 
-
[docs] def get_element_field_values(self, - element_field_name, - element_block_id='auto', - timestep='last'): +
[docs] def get_element_field_values( + self, element_field_name, element_block_id="auto", timestep="last" + ): """ Return the list of element field values. @@ -3153,25 +3472,26 @@

Source code for exomerge

         [element_field_name] = self._format_id_list(
             [element_field_name],
             self.get_element_field_names(),
-            'element field',
-            single=True)
+            "element field",
+            single=True,
+        )
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
-        [timestep] = self._format_id_list([timestep],
-                                          self.get_timesteps(),
-                                          'timestep',
-                                          single=True)
+            [element_block_id], single=True
+        )
+        [timestep] = self._format_id_list(
+            [timestep], self.get_timesteps(), "timestep", single=True
+        )
         timestep_index = self._get_internal_timestep_index(timestep)
         if not self.element_field_exists(element_field_name, element_block_id):
-            self._missing_on_entity_error(element_field_name, 'element field',
-                                          element_block_id, 'element block')
+            self._missing_on_entity_error(
+                element_field_name, "element field", element_block_id, "element block"
+            )
         fields = self._get_element_block_fields(element_block_id)
         return fields[element_field_name][timestep_index]
-
[docs] def get_side_set_field_values(self, - side_set_field_name, - side_set_id='auto', - timestep='last'): +
[docs] def get_side_set_field_values( + self, side_set_field_name, side_set_id="auto", timestep="last" + ): """ Return the list of side set field values. @@ -3190,24 +3510,23 @@

Source code for exomerge

         [side_set_field_name] = self._format_id_list(
             [side_set_field_name],
             self.get_side_set_field_names(),
-            'side set field',
-            single=True)
-        [timestep] = self._format_id_list([timestep],
-                                          self.get_timesteps(),
-                                          'timestep',
-                                          single=True)
+            "side set field",
+            single=True,
+        )
+        [timestep] = self._format_id_list(
+            [timestep], self.get_timesteps(), "timestep", single=True
+        )
         timestep_index = self._get_internal_timestep_index(timestep)
         if not self.side_set_field_exists(side_set_field_name, side_set_id):
-            self._missing_on_entity_error(side_set_field_name,
-                                          'side set field', side_set_id,
-                                          'side set')
+            self._missing_on_entity_error(
+                side_set_field_name, "side set field", side_set_id, "side set"
+            )
         fields = self._get_side_set_fields(side_set_id)
         return fields[side_set_field_name][timestep_index]
-
[docs] def get_node_set_field_values(self, - node_set_field_name, - node_set_id='auto', - timestep='last'): +
[docs] def get_node_set_field_values( + self, node_set_field_name, node_set_id="auto", timestep="last" + ): """ Return the list of node set field values. @@ -3226,17 +3545,17 @@

Source code for exomerge

         [node_set_field_name] = self._format_id_list(
             [node_set_field_name],
             self.get_node_set_field_names(),
-            'node set field',
-            single=True)
-        [timestep] = self._format_id_list([timestep],
-                                          self.get_timesteps(),
-                                          'timestep',
-                                          single=True)
+            "node set field",
+            single=True,
+        )
+        [timestep] = self._format_id_list(
+            [timestep], self.get_timesteps(), "timestep", single=True
+        )
         timestep_index = self._get_internal_timestep_index(timestep)
         if not self.node_set_field_exists(node_set_field_name, node_set_id):
-            self._missing_on_entity_error(node_set_field_name,
-                                          'node set field', node_set_id,
-                                          'node set')
+            self._missing_on_entity_error(
+                node_set_field_name, "node set field", node_set_id, "node set"
+            )
         fields = self._get_node_set_fields(node_set_id)
         return fields[node_set_field_name][timestep_index]
@@ -3264,7 +3583,8 @@

Source code for exomerge

 
         """
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         return self.element_blocks[element_block_id][0]
[docs] def get_all_element_block_names(self): @@ -3286,7 +3606,8 @@

Source code for exomerge

 
         """
         return [
-            x for x in self.get_element_block_ids()
+            x
+            for x in self.get_element_block_ids()
             if self._is_standard_element_type(self._get_element_type(x))
         ]
 
@@ -3320,7 +3641,7 @@ 

Source code for exomerge

         """
         return self._sort_field_names(list(self.node_fields.keys()))
-
[docs] def get_node_set_field_names(self, node_set_ids='all'): +
[docs] def get_node_set_field_names(self, node_set_ids="all"): """ Return a list of all node set field names. @@ -3339,7 +3660,7 @@

Source code for exomerge

             names.update(list(self.node_sets[id_][-1].keys()))
         return self._sort_field_names(list(names))
-
[docs] def get_side_set_field_names(self, side_set_ids='all'): +
[docs] def get_side_set_field_names(self, side_set_ids="all"): """ Return a list of all side set field names. @@ -3358,7 +3679,7 @@

Source code for exomerge

             names.update(list(self._get_side_set_fields(id_).keys()))
         return self._sort_field_names(list(names))
-
[docs] def get_element_field_names(self, element_block_ids='all'): +
[docs] def get_element_field_names(self, element_block_ids="all"): """ Return a list of all element field names. @@ -3371,8 +3692,7 @@

Source code for exomerge

         >>> model.get_element_field_names(1)
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         names = set()
         for id_ in element_block_ids:
             names.update(list(self.element_blocks[id_][-1].keys()))
@@ -3400,14 +3720,12 @@ 

Source code for exomerge

 
     def _get_internal_timestep_index(self, timestep):
         """Return the local timestep index."""
-        [timestep] = self._format_id_list([timestep],
-                                          self.get_timesteps(),
-                                          'timestep',
-                                          single=True)
+        [timestep] = self._format_id_list(
+            [timestep], self.get_timesteps(), "timestep", single=True
+        )
         return self.timesteps.index(timestep)
 
-    def _create_element_field_truth_table(self, element_block_ids,
-                                          field_names):
+    def _create_element_field_truth_table(self, element_block_ids, field_names):
         """
         Return the element field truth table.
 
@@ -3438,7 +3756,8 @@ 

Source code for exomerge

         # go through each case and set values to True if they exist
         truth_table = [
             self.side_set_field_exists(field_name, side_set_id)
-            for side_set_id in side_set_ids for field_name in field_names
+            for side_set_id in side_set_ids
+            for field_name in field_names
         ]
         return truth_table
 
@@ -3455,11 +3774,12 @@ 

Source code for exomerge

         # go through each case and set values to True if they exist
         truth_table = [
             self.node_set_field_exists(field_name, node_set_id)
-            for node_set_id in node_set_ids for field_name in field_names
+            for node_set_id in node_set_ids
+            for field_name in field_names
         ]
         return truth_table
 
-
[docs] def get_connectivity(self, element_block_id='auto'): +
[docs] def get_connectivity(self, element_block_id="auto"): """ Return the connectivity list of an element block. @@ -3468,10 +3788,11 @@

Source code for exomerge

 
         """
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         return self.element_blocks[element_block_id][2]
-
[docs] def get_element_block_connectivity(self, element_block_id='auto'): +
[docs] def get_element_block_connectivity(self, element_block_id="auto"): """Alias for 'get_connectivity()'.""" return self.get_connectivity(element_block_id)
@@ -3484,21 +3805,22 @@

Source code for exomerge

         >>> model.get_nodes_in_element_block([1, 3])
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         node_list = set()
         for id_ in element_block_ids:
             connectivity = self.get_connectivity(id_)
             node_list.update(connectivity)
         return sorted(node_list)
- def _rotate_nodes(self, - axis, - angle_in_degrees, - node_indices='all', - adjust_displacement_field='auto'): + def _rotate_nodes( + self, + axis, + angle_in_degrees, + node_indices="all", + adjust_displacement_field="auto", + ): """Rotate nodes about an axis by the given angle.""" - if adjust_displacement_field == 'auto': + if adjust_displacement_field == "auto": adjust_displacement_field = self.displacement_field_exists() # Create rotation matrix. # x --> R * x @@ -3522,38 +3844,51 @@

Source code for exomerge

         rzy = uz * uy * (1 - cost) + ux * sint
         rzz = cost + uz * uz * (1 - cost)
         # Rotate nodes.
-        if node_indices == 'all':
-            self.nodes = [[
-                rxx * x + rxy * y + rxz * z, ryx * x + ryy * y + ryz * z,
-                rzx * x + rzy * y + rzz * z
-            ] for x, y, z in self.nodes]
+        if node_indices == "all":
+            self.nodes = [
+                [
+                    rxx * x + rxy * y + rxz * z,
+                    ryx * x + ryy * y + ryz * z,
+                    rzx * x + rzy * y + rzz * z,
+                ]
+                for x, y, z in self.nodes
+            ]
         else:
             for index in node_indices:
                 n = self.nodes[index]
                 self.nodes[index] = [
                     rxx * n[0] + rxy * n[1] + rxz * n[2],
                     ryx * n[0] + ryy * n[1] + ryz * n[2],
-                    rzx * n[0] + rzy * n[1] + rzz * n[2]
+                    rzx * n[0] + rzy * n[1] + rzz * n[2],
                 ]
         # Rotate the displacement field.
         if adjust_displacement_field:
             (disp_x, disp_y, disp_z) = self._get_displacement_field_values()
             for timestep_index in range(len(self.timesteps)):
-                if node_indices == 'all':
+                if node_indices == "all":
                     new_disp_x = [
-                        rxx * x + rxy * y + rxz * z for x, y, z in zip(
-                            disp_x[timestep_index], disp_y[timestep_index],
-                            disp_z[timestep_index])
+                        rxx * x + rxy * y + rxz * z
+                        for x, y, z in zip(
+                            disp_x[timestep_index],
+                            disp_y[timestep_index],
+                            disp_z[timestep_index],
+                        )
                     ]
                     new_disp_y = [
-                        ryx * x + ryy * y + ryz * z for x, y, z in zip(
-                            disp_x[timestep_index], disp_y[timestep_index],
-                            disp_z[timestep_index])
+                        ryx * x + ryy * y + ryz * z
+                        for x, y, z in zip(
+                            disp_x[timestep_index],
+                            disp_y[timestep_index],
+                            disp_z[timestep_index],
+                        )
                     ]
                     new_disp_z = [
-                        rzx * x + rzy * y + rzz * z for x, y, z in zip(
-                            disp_x[timestep_index], disp_y[timestep_index],
-                            disp_z[timestep_index])
+                        rzx * x + rzy * y + rzz * z
+                        for x, y, z in zip(
+                            disp_x[timestep_index],
+                            disp_y[timestep_index],
+                            disp_z[timestep_index],
+                        )
                     ]
                     disp_x[timestep_index] = new_disp_x
                     disp_y[timestep_index] = new_disp_y
@@ -3566,16 +3901,16 @@ 

Source code for exomerge

                         (x, y, z) = [
                             rxx * x + rxy * y + rxz * z,
                             ryx * x + ryy * y + ryz * z,
-                            rzx * x + rzy * y + rzz * z
+                            rzx * x + rzy * y + rzz * z,
                         ]
                         disp_x[timestep_index][index] = x
                         disp_y[timestep_index][index] = y
                         disp_z[timestep_index][index] = z
 
-    def _translate_nodes(self, offset, node_indices='all'):
+    def _translate_nodes(self, offset, node_indices="all"):
         """Translate nodes by the given offset."""
         (dx, dy, dz) = [float(x) for x in offset]
-        if node_indices == 'all':
+        if node_indices == "all":
             self.nodes = [[x + dx, y + dy, z + dz] for x, y, z in self.nodes]
         else:
             for index in node_indices:
@@ -3583,36 +3918,30 @@ 

Source code for exomerge

                 self.nodes[index][1] += dy
                 self.nodes[index][2] += dz
 
-    def _scale_nodes(self,
-                     scale_factor,
-                     node_indices='all',
-                     adjust_displacement_field='auto'):
+    def _scale_nodes(
+        self, scale_factor, node_indices="all", adjust_displacement_field="auto"
+    ):
         """Scale nodes in the list by the given scale factor."""
         scale_factor = float(scale_factor)
-        if adjust_displacement_field == 'auto':
+        if adjust_displacement_field == "auto":
             adjust_displacement_field = self.displacement_field_exists()
         # Scale the nodal coordinates.
-        if node_indices == 'all':
+        if node_indices == "all":
             self.nodes = [[x * scale_factor for x in n] for n in self.nodes]
         else:
             for index in node_indices:
-                self.nodes[index] = [
-                    x * scale_factor for x in self.nodes[index]
-                ]
+                self.nodes[index] = [x * scale_factor for x in self.nodes[index]]
         # Scale the displacement field.
         if adjust_displacement_field:
             for all_values in self._get_displacement_field_values():
                 for values in all_values:
-                    if node_indices == 'all':
+                    if node_indices == "all":
                         values[:] = [x * scale_factor for x in values]
                     else:
                         for index in node_indices:
                             values[index] *= scale_factor
 
-
[docs] def rotate_geometry(self, - axis, - angle_in_degrees, - adjust_displacement_field='auto'): +
[docs] def rotate_geometry(self, axis, angle_in_degrees, adjust_displacement_field="auto"): """ Rotate the model about an axis by the given angle. @@ -3623,9 +3952,9 @@

Source code for exomerge

         >>> model.rotate_geometry([1, 0, 0], 90)
 
         """
-        self._rotate_nodes(axis,
-                           angle_in_degrees,
-                           adjust_displacement_field=adjust_displacement_field)
+ self._rotate_nodes( + axis, angle_in_degrees, adjust_displacement_field=adjust_displacement_field + )
[docs] def translate_geometry(self, offset): """ @@ -3637,7 +3966,7 @@

Source code for exomerge

         """
         self._translate_nodes(offset)
-
[docs] def scale_geometry(self, scale_factor, adjust_displacement_field='auto'): +
[docs] def scale_geometry(self, scale_factor, adjust_displacement_field="auto"): """ Scale the model by the given factor. @@ -3648,8 +3977,9 @@

Source code for exomerge

         >>> model.scale_geometry(0.0254)
 
         """
-        self._scale_nodes(scale_factor,
-                          adjust_displacement_field=adjust_displacement_field)
+ self._scale_nodes( + scale_factor, adjust_displacement_field=adjust_displacement_field + )
def _ensure_no_shared_nodes(self, element_block_ids): """ @@ -3659,34 +3989,33 @@

Source code for exomerge

         other element block then an error message is output.
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         affected_nodes = self.get_nodes_in_element_block(element_block_ids)
         nodes_in_other_blocks = self.get_nodes_in_element_block(
-            list(set(self.get_element_block_ids()) - set(element_block_ids)))
+            list(set(self.get_element_block_ids()) - set(element_block_ids))
+        )
         shared_nodes = sorted(
-            set.intersection(set(affected_nodes), set(nodes_in_other_blocks)))
+            set.intersection(set(affected_nodes), set(nodes_in_other_blocks))
+        )
         if shared_nodes:
             max_nodes_to_display = 20
-            node_list = ', '.join(
-                [str(x) for x in shared_nodes[:max_nodes_to_display]])
+            node_list = ", ".join([str(x) for x in shared_nodes[:max_nodes_to_display]])
             if len(shared_nodes) > max_nodes_to_display:
-                node_list += ', ...'
+                node_list += ", ..."
             self._error(
-                'Unable to operate on merged nodes.',
-                'You are attempting to operate on some element blocks '
-                'while keeping others unaffected.  Because some nodes '
-                'are shared between the two groups, this cannot be '
-                'done.  Use unmerge_element_blocks() to unmerge the '
-                'blocks if that is desired.\n'
-                '\n'
-                'There are %d shared nodes: %s' %
-                (len(shared_nodes), node_list))
-
-
[docs] def translate_element_blocks(self, - element_block_ids, - offset, - check_for_merged_nodes=True): + "Unable to operate on merged nodes.", + "You are attempting to operate on some element blocks " + "while keeping others unaffected. Because some nodes " + "are shared between the two groups, this cannot be " + "done. Use unmerge_element_blocks() to unmerge the " + "blocks if that is desired.\n" + "\n" + "There are %d shared nodes: %s" % (len(shared_nodes), node_list), + ) + +
[docs] def translate_element_blocks( + self, element_block_ids, offset, check_for_merged_nodes=True + ): """ Translate the specified element blocks by the given offset. @@ -3694,19 +4023,20 @@

Source code for exomerge

         >>> model.translate_element_blocks(1, [1.0, 2.0, 3.0])
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         if check_for_merged_nodes:
             self._ensure_no_shared_nodes(element_block_ids)
         affected_nodes = self.get_nodes_in_element_block(element_block_ids)
         self._translate_nodes(offset, affected_nodes)
-
[docs] def reflect_element_blocks(self, - element_block_ids, - point, - normal, - check_for_merged_nodes=True, - adjust_displacement_field='auto'): +
[docs] def reflect_element_blocks( + self, + element_block_ids, + point, + normal, + check_for_merged_nodes=True, + adjust_displacement_field="auto", + ): """ Reflect the specified element blocks about the given plane. @@ -3717,9 +4047,8 @@

Source code for exomerge

         >>> model.reflect_element_blocks(1, [0, 0, 0], [1, 0, 0])
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
-        if adjust_displacement_field == 'auto':
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
+        if adjust_displacement_field == "auto":
             adjust_displacement_field = self.displacement_field_exists()
         point = [float(x) for x in point]
         scale = math.sqrt(sum(x * x for x in normal))
@@ -3729,8 +4058,8 @@ 

Source code for exomerge

         affected_nodes = self.get_nodes_in_element_block(element_block_ids)
         for index in affected_nodes:
             distance = sum(
-                (a - p) * n
-                for a, p, n in zip(self.nodes[index], point, normal))
+                (a - p) * n for a, p, n in zip(self.nodes[index], point, normal)
+            )
             self.nodes[index] = [
                 a - 2 * distance * n for a, n in zip(self.nodes[index], normal)
             ]
@@ -3752,11 +4081,13 @@ 

Source code for exomerge

         # uninvert elements
         self._invert_element_blocks(element_block_ids)
-
[docs] def scale_element_blocks(self, - element_block_ids, - scale_factor, - check_for_merged_nodes=True, - adjust_displacement_field='auto'): +
[docs] def scale_element_blocks( + self, + element_block_ids, + scale_factor, + check_for_merged_nodes=True, + adjust_displacement_field="auto", + ): """ Scale all nodes in the given element blocks by the given amount. @@ -3767,23 +4098,26 @@

Source code for exomerge

         >>> model.scale_element_blocks(1, 0.0254)
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
-        if adjust_displacement_field == 'auto':
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
+        if adjust_displacement_field == "auto":
             adjust_displacement_field = self.displacement_field_exists()
         if check_for_merged_nodes:
             self._ensure_no_shared_nodes(element_block_ids)
         affected_nodes = self.get_nodes_in_element_block(element_block_ids)
-        self._scale_nodes(scale_factor,
-                          affected_nodes,
-                          adjust_displacement_field=adjust_displacement_field)
- -
[docs] def rotate_element_blocks(self, - element_block_ids, - axis, - angle_in_degrees, - check_for_merged_nodes=True, - adjust_displacement_field='auto'): + self._scale_nodes( + scale_factor, + affected_nodes, + adjust_displacement_field=adjust_displacement_field, + )
+ +
[docs] def rotate_element_blocks( + self, + element_block_ids, + axis, + angle_in_degrees, + check_for_merged_nodes=True, + adjust_displacement_field="auto", + ): """ Rotate all nodes in the given element blocks by the given amount. @@ -3797,23 +4131,22 @@

Source code for exomerge

         >>> model.rotate_element_blocks(1, [1, 0, 0], 90)
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
-        if adjust_displacement_field == 'auto':
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
+        if adjust_displacement_field == "auto":
             adjust_displacement_field = self.displacement_field_exists()
         if check_for_merged_nodes:
             self._ensure_no_shared_nodes(element_block_ids)
         affected_nodes = self.get_nodes_in_element_block(element_block_ids)
-        self._rotate_nodes(axis,
-                           angle_in_degrees,
-                           affected_nodes,
-                           adjust_displacement_field=adjust_displacement_field)
+ self._rotate_nodes( + axis, + angle_in_degrees, + affected_nodes, + adjust_displacement_field=adjust_displacement_field, + )
-
[docs] def displace_element_blocks(self, - element_block_ids, - offset, - timesteps='all', - check_for_merged_nodes=True): +
[docs] def displace_element_blocks( + self, element_block_ids, offset, timesteps="all", check_for_merged_nodes=True + ): """ Displace all nodes in the given element blocks. @@ -3826,10 +4159,8 @@

Source code for exomerge

         >>> model.displace_element_blocks('all', [1.0, 2.0, 3.0])
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
-        timesteps = self._format_id_list(timesteps, self.get_timesteps(),
-                                         'timestep')
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
+        timesteps = self._format_id_list(timesteps, self.get_timesteps(), "timestep")
         if check_for_merged_nodes:
             self._ensure_no_shared_nodes(element_block_ids)
         timestep_indices = [self.timesteps.index(x) for x in timesteps]
@@ -3837,10 +4168,11 @@ 

Source code for exomerge

         # if no timesteps exist, issue an error
         if not self.timesteps:
             self._error(
-                'No timesteps defined',
-                'A displacement field cannot exist if no timesteps '
-                'are defined.  To avoid this error, create a timestep '
-                'before calling this function.')
+                "No timesteps defined",
+                "A displacement field cannot exist if no timesteps "
+                "are defined.  To avoid this error, create a timestep "
+                "before calling this function.",
+            )
         # get displacement field indices
         displacement_fields = self._get_displacement_field_values()
         # get affected nodes
@@ -3852,39 +4184,46 @@ 

Source code for exomerge

                 for index in node_list:
                     values[index] += offset[dimension]
- def _rename_field_on_entity(self, field_type, field_name, new_field_name, - field_name_list_function, entity_type, - entity_list, entity_list_function, - entity_objects): + def _rename_field_on_entity( + self, + field_type, + field_name, + new_field_name, + field_name_list_function, + entity_type, + entity_list, + entity_list_function, + entity_objects, + ): """Rename a field defined on an entity.""" - entity_list = self._format_id_list(entity_list, entity_list_function(), - entity_type) + entity_list = self._format_id_list( + entity_list, entity_list_function(), entity_type + ) [field_name] = self._format_id_list( - [field_name], - field_name_list_function(entity_list), - field_type, - single=True) + [field_name], field_name_list_function(entity_list), field_type, single=True + ) for id_ in entity_list: fields = entity_objects[id_][-1] if field_name not in fields: self._warning( - field_type + ' not defined.', 'The given %s "%s" is not ' - 'defined on %s %s. It cannot ' - 'be renamed.' % - (field_type, field_name, entity_type, str(id_))) + field_type + " not defined.", + 'The given %s "%s" is not ' + "defined on %s %s. It cannot " + "be renamed." % (field_type, field_name, entity_type, str(id_)), + ) continue if field_name == new_field_name: continue if new_field_name in fields: - self._exists_on_entity_warning(new_field_name, field_type, id_, - entity_type) + self._exists_on_entity_warning( + new_field_name, field_type, id_, entity_type + ) fields[new_field_name] = fields[field_name] del fields[field_name] -
[docs] def rename_element_field(self, - element_field_name, - new_element_field_name, - element_block_ids='all'): +
[docs] def rename_element_field( + self, element_field_name, new_element_field_name, element_block_ids="all" + ): """ Rename an element field. @@ -3892,17 +4231,20 @@

Source code for exomerge

         >>> model.rename_element_field('p', 'pressure')
 
         """
-        self._rename_field_on_entity('element field', element_field_name,
-                                     new_element_field_name,
-                                     self.get_element_field_names,
-                                     'element block', element_block_ids,
-                                     self.get_element_block_ids,
-                                     self.element_blocks)
+ self._rename_field_on_entity( + "element field", + element_field_name, + new_element_field_name, + self.get_element_field_names, + "element block", + element_block_ids, + self.get_element_block_ids, + self.element_blocks, + )
-
[docs] def rename_side_set_field(self, - side_set_field_name, - new_side_set_field_name, - side_set_ids='all'): +
[docs] def rename_side_set_field( + self, side_set_field_name, new_side_set_field_name, side_set_ids="all" + ): """ Rename a side set field. @@ -3910,11 +4252,16 @@

Source code for exomerge

         >>> model.rename_side_set_field('cp', 'contact_pressure')
 
         """
-        self._rename_field_on_entity('side set field', side_set_field_name,
-                                     new_side_set_field_name,
-                                     self.get_side_set_field_names, 'side set',
-                                     side_set_ids, self.get_side_set_ids,
-                                     self.side_sets)
+ self._rename_field_on_entity( + "side set field", + side_set_field_name, + new_side_set_field_name, + self.get_side_set_field_names, + "side set", + side_set_ids, + self.get_side_set_ids, + self.side_sets, + )
[docs] def get_side_set_name(self, side_set_id): """Return the name of a side set.""" @@ -3935,10 +4282,9 @@

Source code for exomerge

         [side_set_id] = self._format_side_set_id_list([side_set_id], single=True)
         return self.side_sets[side_set_id][-1]
 
-
[docs] def rename_node_set_field(self, - node_set_field_name, - new_node_set_field_name, - node_set_ids='all'): +
[docs] def rename_node_set_field( + self, node_set_field_name, new_node_set_field_name, node_set_ids="all" + ): """ Rename a node set field. @@ -3946,19 +4292,29 @@

Source code for exomerge

         >>> model.rename_node_set_field('cp', 'contact_pressure')
 
         """
-        self._rename_field_on_entity('node set field', node_set_field_name,
-                                     new_node_set_field_name,
-                                     self.get_node_set_field_names, 'node set',
-                                     node_set_ids, self.get_node_set_ids,
-                                     self.node_sets)
- - def _rename_entity(self, entity_type, entity_name, new_entity_name, - entity_name_list_function, entity_objects): + self._rename_field_on_entity( + "node set field", + node_set_field_name, + new_node_set_field_name, + self.get_node_set_field_names, + "node set", + node_set_ids, + self.get_node_set_ids, + self.node_sets, + )
+ + def _rename_entity( + self, + entity_type, + entity_name, + new_entity_name, + entity_name_list_function, + entity_objects, + ): """Rename an entity.""" - [entity_name] = self._format_id_list([entity_name], - entity_name_list_function(), - entity_type, - single=True) + [entity_name] = self._format_id_list( + [entity_name], entity_name_list_function(), entity_type, single=True + ) if new_entity_name == entity_name: return if new_entity_name in entity_name_list_function(): @@ -3974,11 +4330,15 @@

Source code for exomerge

         >>> model.rename_node_field('temp', 'temperature')
 
         """
-        self._rename_entity('node field', node_field_name, new_node_field_name,
-                            self.get_node_field_names, self.node_fields)
+ self._rename_entity( + "node field", + node_field_name, + new_node_field_name, + self.get_node_field_names, + self.node_fields, + )
-
[docs] def rename_global_variable(self, global_variable_name, - new_global_variable_name): +
[docs] def rename_global_variable(self, global_variable_name, new_global_variable_name): """ Rename a global variable. @@ -3986,10 +4346,13 @@

Source code for exomerge

         >>> model.rename_global_variable('ke', 'kinetic_energy')
 
         """
-        self._rename_entity('global variable', global_variable_name,
-                            new_global_variable_name,
-                            self.get_global_variable_names,
-                            self.global_variables)
+ self._rename_entity( + "global variable", + global_variable_name, + new_global_variable_name, + self.get_global_variable_names, + self.global_variables, + )
[docs] def rename_element_block(self, element_block_id, new_element_block_id): """ @@ -4005,25 +4368,28 @@

Source code for exomerge

 
         """
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         # if we're just changing the name
         if isinstance(new_element_block_id, str):
             # if the same name already, just exit
-            if (self.element_blocks[element_block_id][0] ==
-                    new_element_block_id):
+            if self.element_blocks[element_block_id][0] == new_element_block_id:
                 return
             # if the name already exists, issue a warning
             if self.element_block_exists(new_element_block_id):
-                self._exists_warning('"' + new_element_block_id + '"',
-                                     'element block')
+                self._exists_warning('"' + new_element_block_id + '"', "element block")
             # rename it
             self.element_blocks[element_block_id][0] = new_element_block_id
             return
         assert isinstance(new_element_block_id, int)
         # rename the block
-        self._rename_entity('element block', element_block_id,
-                            new_element_block_id, self.get_element_block_ids,
-                            self.element_blocks)
+        self._rename_entity(
+            "element block",
+            element_block_id,
+            new_element_block_id,
+            self.get_element_block_ids,
+            self.element_blocks,
+        )
         # adjust side sets
         for side_set_id in self.get_side_set_ids():
             members = self.get_side_set_members(side_set_id)
@@ -4057,13 +4423,18 @@ 

Source code for exomerge

                 return
             # if the name already exists, issue a warning
             if self.node_set_exists(new_node_set_id):
-                self._exists_warning('"' + new_node_set_id + '"', 'node set')
+                self._exists_warning('"' + new_node_set_id + '"', "node set")
             # rename it
             self.node_sets[node_set_id][0] = new_node_set_id
             return
         # rename it
-        self._rename_entity('node set', node_set_id, new_node_set_id,
-                            self.get_node_set_ids, self.node_sets)
+ self._rename_entity( + "node set", + node_set_id, + new_node_set_id, + self.get_node_set_ids, + self.node_sets, + )
[docs] def rename_side_set(self, side_set_id, new_side_set_id): """ @@ -4086,31 +4457,36 @@

Source code for exomerge

                 return
             # if the name already exists, issue a warning
             if self.side_set_exists(new_side_set_id):
-                self._exists_warning('"' + new_side_set_id + '"', 'side set')
+                self._exists_warning('"' + new_side_set_id + '"', "side set")
             # rename it
             self.side_sets[side_set_id][0] = new_side_set_id
             return
-        self._rename_entity('side set', side_set_id, new_side_set_id,
-                            self.get_side_set_ids, self.side_sets)
+ self._rename_entity( + "side set", + side_set_id, + new_side_set_id, + self.get_side_set_ids, + self.side_sets, + )
def _empty_field_warning(self): """Issue a warning if no timesteps exist.""" assert not self.get_timesteps() self._warning( - 'Creating an empty field', - 'No timesteps are defined. Because fields are only ' - 'defined at each timestep, creating a field when no ' - 'timesteps are defined will allow let the field to ' - 'have any values. By default, empty fields are not ' - 'exported.\n' - '\n' - 'To avoid this warning, create a timestep before ' - 'creating a field.') - -
[docs] def create_element_field(self, - element_field_name, - element_block_ids='all', - value='auto'): + "Creating an empty field", + "No timesteps are defined. Because fields are only " + "defined at each timestep, creating a field when no " + "timesteps are defined will allow let the field to " + "have any values. By default, empty fields are not " + "exported.\n" + "\n" + "To avoid this warning, create a timestep before " + "creating a field.", + ) + +
[docs] def create_element_field( + self, element_field_name, element_block_ids="all", value="auto" + ): """ Create an element field on one or more element blocks. @@ -4126,19 +4502,20 @@

Source code for exomerge

         if not self.get_timesteps():
             self._empty_field_warning()
         # get list of block ids
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # get the value to assign
-        if value == 'auto':
+        if value == "auto":
             value = self._get_default_field_value(element_field_name)
         # for each block
         for element_block_id in element_block_ids:
             # if it exists, no need to do anything
             if self.element_field_exists(element_field_name, element_block_id):
-                self._exists_on_entity_warning(element_field_name,
-                                               'element field',
-                                               element_block_id,
-                                               'element block')
+                self._exists_on_entity_warning(
+                    element_field_name,
+                    "element field",
+                    element_block_id,
+                    "element block",
+                )
             # get the element block info
             element_count = self.get_element_count(element_block_id)
             # create an empty field
@@ -4149,7 +4526,7 @@ 

Source code for exomerge

             fields = self._get_element_block_fields(element_block_id)
             fields[element_field_name] = values
-
[docs] def create_node_field(self, node_field_name, value='auto'): +
[docs] def create_node_field(self, node_field_name, value="auto"): """ Create a node field and assign it a default value. @@ -4166,10 +4543,10 @@

Source code for exomerge

             self._empty_field_warning()
         # if it exists, no need to do anything
         if self.node_field_exists(node_field_name):
-            self._exists_warning(node_field_name, 'node field')
+            self._exists_warning(node_field_name, "node field")
             return
         # get the value
-        if value == 'auto':
+        if value == "auto":
             value = self._get_default_field_value(node_field_name)
         # create the new field
         new_field_values = []
@@ -4177,10 +4554,9 @@ 

Source code for exomerge

             new_field_values.append([value] * len(self.nodes))
         self.node_fields[node_field_name] = new_field_values
-
[docs] def create_node_set_field(self, - node_set_field_name, - node_set_ids='all', - value='auto'): +
[docs] def create_node_set_field( + self, node_set_field_name, node_set_ids="all", value="auto" + ): """ Create a node set field on the given node sets. @@ -4193,7 +4569,7 @@

Source code for exomerge

 
         """
         node_set_ids = self._format_node_set_id_list(node_set_ids)
-        if value == 'auto':
+        if value == "auto":
             value = self._get_default_field_value(node_set_field_name)
         for node_set_id in node_set_ids:
             members = self.get_node_set_members(node_set_id)
@@ -4201,19 +4577,18 @@ 

Source code for exomerge

             member_count = len(members)
             # if it exists, warn about overwriting
             if self.node_set_field_exists(node_set_field_name, [node_set_id]):
-                self._exists_on_entity_warning(node_set_field_name,
-                                               'node set field', node_set_id,
-                                               'node set')
+                self._exists_on_entity_warning(
+                    node_set_field_name, "node set field", node_set_id, "node set"
+                )
             # create the new field
             new_field_values = []
             for _ in range(len(self.timesteps)):
                 new_field_values.append([value] * member_count)
             fields[node_set_field_name] = new_field_values
-
[docs] def create_side_set_field(self, - side_set_field_name, - side_set_ids='all', - value='auto'): +
[docs] def create_side_set_field( + self, side_set_field_name, side_set_ids="all", value="auto" + ): """ Create a side set field. @@ -4228,7 +4603,7 @@

Source code for exomerge

 
         """
         side_set_ids = self._format_side_set_id_list(side_set_ids)
-        if value == 'auto':
+        if value == "auto":
             value = self._get_default_field_value(side_set_field_name)
         for side_set_id in side_set_ids:
             members = self.get_side_set_members(side_set_id)
@@ -4236,9 +4611,9 @@ 

Source code for exomerge

             member_count = len(members)
             # if it exists, warn about overwriting
             if self.side_set_field_exists(side_set_field_name, side_set_id):
-                self._exists_on_entity_warning(side_set_field_name,
-                                               'side set field', side_set_id,
-                                               'side set')
+                self._exists_on_entity_warning(
+                    side_set_field_name, "side set field", side_set_id, "side set"
+                )
             # create the new field
             new_field_values = []
             for _ in range(len(self.timesteps)):
@@ -4304,21 +4679,21 @@ 

Source code for exomerge

         """
         # if it exists, warn that it will be overwritten
         if self.node_set_exists(node_set_id):
-            self._exists_warning(node_set_id, 'node set')
+            self._exists_warning(node_set_id, "node set")
         # reformat members if necessary
         if not node_set_members:
             node_set_members = []
         # do not allow duplicates
-        new_members = self._remove_duplicates(node_set_members,
-                                              preserve_order=True)
+        new_members = self._remove_duplicates(node_set_members, preserve_order=True)
         if len(new_members) != len(node_set_members):
             self._warning(
-                'Duplicate nodes in set.',
-                'The node set member list contains multiple copies '
-                'of some nodes.  These nodes will only be added '
-                'once.')
+                "Duplicate nodes in set.",
+                "The node set member list contains multiple copies "
+                "of some nodes.  These nodes will only be added "
+                "once.",
+            )
         # add the new set
-        self.node_sets[node_set_id] = ['', new_members, {}]
+ self.node_sets[node_set_id] = ["", new_members, {}]
[docs] def add_nodes_to_node_set(self, node_set_id, new_node_set_members): """ @@ -4329,23 +4704,26 @@

Source code for exomerge

 
         """
         if not self.node_set_exists(node_set_id):
-            self._warning('Node set does not exist.'
-                          'The specified node set "%s% does not exist.  It '
-                          'will be created.' % node_set_id)
+            self._warning(
+                "Node set does not exist."
+                'The specified node set "%s% does not exist.  It '
+                "will be created." % node_set_id
+            )
             self.create_node_set(node_set_id, new_node_set_members)
             return
         members = self.get_node_set_members(node_set_id)
         fields = self._get_node_set_fields(node_set_id)
         # Remove duplicate nodes.
-        new_nodes = self._remove_duplicates(new_node_set_members,
-                                            other_list=members,
-                                            preserve_order=True)
+        new_nodes = self._remove_duplicates(
+            new_node_set_members, other_list=members, preserve_order=True
+        )
         if len(new_nodes) != len(new_node_set_members):
             self._warning(
-                'Duplicates nodes in set',
-                'The node set already contains some of the nodes '
-                'in the list.  These members will not be '
-                'duplicated.')
+                "Duplicates nodes in set",
+                "The node set already contains some of the nodes "
+                "in the list.  These members will not be "
+                "duplicated.",
+            )
         # Add the members.
         members.extend(new_nodes)
         # Add new values to each field.
@@ -4363,32 +4741,33 @@ 

Source code for exomerge

         """
         # create transformation dictionary by precedence order
         transforms = []
-        transforms.append(('||', 'min(abs(L), abs(R))'))
-        transforms.append(('&&', 'max(abs(L), abs(R))'))
-        transforms.append(('>=', '((L) - (R)) - abs((L) - (R))'))
-        transforms.append(('>', '((L) - (R)) - abs((L) - (R))'))
-        transforms.append(('<=', '((R) - (L)) - abs((R) - (L))'))
-        transforms.append(('<', '((R) - (L)) - abs((R) - (L))'))
-        transforms.append(('==', 'abs((L) - (R))'))
-        transforms.append(('=', 'abs((L) - (R))'))
+        transforms.append(("||", "min(abs(L), abs(R))"))
+        transforms.append(("&&", "max(abs(L), abs(R))"))
+        transforms.append((">=", "((L) - (R)) - abs((L) - (R))"))
+        transforms.append((">", "((L) - (R)) - abs((L) - (R))"))
+        transforms.append(("<=", "((R) - (L)) - abs((R) - (L))"))
+        transforms.append(("<", "((R) - (L)) - abs((R) - (L))"))
+        transforms.append(("==", "abs((L) - (R))"))
+        transforms.append(("=", "abs((L) - (R))"))
         # replace occurrences of each transform
         for separator, transform in transforms:
             while separator in expression:
                 # ensure parenthesis count is identical
-                if expression.count('(') != expression.count(')'):
+                if expression.count("(") != expression.count(")"):
                     self._error(
-                        'Unbalances parenthesis.',
-                        'We cannot transform the given expression '
-                        'becuase it contains unbalanced '
-                        'parenthesis:\n%s' % expression)
+                        "Unbalances parenthesis.",
+                        "We cannot transform the given expression "
+                        "becuase it contains unbalanced "
+                        "parenthesis:\n%s" % expression,
+                    )
                 # get parenthesis depth on each character
                 next_depth = 0
                 depth = []
                 for c in expression:
-                    if c == '(':
+                    if c == "(":
                         depth.append(next_depth)
                         next_depth += 1
-                    elif c == ')':
+                    elif c == ")":
                         next_depth -= 1
                         depth.append(next_depth)
                     else:
@@ -4398,25 +4777,30 @@ 

Source code for exomerge

                 left_index = separator_index
                 right_index = separator_index + len(separator)
                 while left_index > 0 and (
-                        depth[left_index - 1] > depth[separator_index] or
-                        (depth[left_index - 1] == depth[separator_index]
-                         and expression[left_index - 1] != ',')):
+                    depth[left_index - 1] > depth[separator_index]
+                    or (
+                        depth[left_index - 1] == depth[separator_index]
+                        and expression[left_index - 1] != ","
+                    )
+                ):
                     left_index -= 1
                 while right_index < len(expression) and (
-                        depth[right_index] > depth[separator_index] or
-                        (depth[right_index] == depth[separator_index]
-                         and expression[right_index] != ',')):
+                    depth[right_index] > depth[separator_index]
+                    or (
+                        depth[right_index] == depth[separator_index]
+                        and expression[right_index] != ","
+                    )
+                ):
                     right_index += 1
                 new_expression = expression[:left_index]
-                left_expression = expression[left_index:separator_index].strip(
-                )
-                right_expression = expression[separator_index +
-                                              len(separator
-                                                  ):right_index].strip()
+                left_expression = expression[left_index:separator_index].strip()
+                right_expression = expression[
+                    separator_index + len(separator): right_index
+                ].strip()
                 for c in transform:
-                    if c == 'L':
+                    if c == "L":
                         new_expression += left_expression
-                    elif c == 'R':
+                    elif c == "R":
                         new_expression += right_expression
                     else:
                         new_expression += c
@@ -4425,13 +4809,15 @@ 

Source code for exomerge

         # return the result
         return expression
 
-
[docs] def create_side_set_from_expression(self, - side_set_id, - expression, - element_block_ids='all', - tolerance='auto', - timesteps='last_if_any', - zero_member_warning=True): +
[docs] def create_side_set_from_expression( + self, + side_set_id, + expression, + element_block_ids="all", + tolerance="auto", + timesteps="last_if_any", + zero_member_warning=True, + ): """ Create a side set from faces which satisfy an expression. @@ -4444,41 +4830,40 @@

Source code for exomerge

         >>> model.create_side_set_from_expression(1, 'Y == 0')
 
         """
-        timesteps = self._format_id_list(timesteps, self.get_timesteps(),
-                                         'timestep')
+        timesteps = self._format_id_list(timesteps, self.get_timesteps(), "timestep")
         if len(timesteps) > 2:
             self._error(
-                'Too many timesteps specified.',
-                'We were expecting zero or one timesteps but instead '
-                'found %d specified.' % len(timesteps))
-        if tolerance == 'auto':
+                "Too many timesteps specified.",
+                "We were expecting zero or one timesteps but instead "
+                "found %d specified." % len(timesteps),
+            )
+        if tolerance == "auto":
             tolerance = self.get_length_scale() * 1e-6
         if self.side_set_exists(side_set_id):
-            self._exists_warning(side_set_id, 'side set')
+            self._exists_warning(side_set_id, "side set")
         external_faces_by_block = self._order_element_faces_by_block(
-            self._get_external_element_faces(element_block_ids))
+            self._get_external_element_faces(element_block_ids)
+        )
         members = []
         # create list of variable names and modify them in the expression
-        variable_names = set(['X', 'Y', 'Z'])
+        variable_names = set(["X", "Y", "Z"])
         if timesteps:
             timestep_index = self._get_internal_timestep_index(timesteps[0])
-            variable_names.update(['time'])
+            variable_names.update(["time"])
             variable_names.update(self.get_global_variable_names())
             variable_names.update(self.get_node_field_names())
         expression = self._transform_expression(expression)
-        eval_expression = self._transform_eval_expression(
-            expression, variable_names)
+        eval_expression = self._transform_eval_expression(expression, variable_names)
         var = dict()
-        function = eval('lambda var: ' + eval_expression)
+        function = eval("lambda var: " + eval_expression)
         if timesteps:
-            var['time'] = timesteps[0]
+            var["time"] = timesteps[0]
             for name, values in list(self.global_variables.items()):
                 var[name] = values[timestep_index]
         try:
             for id_, external_faces in list(external_faces_by_block.items()):
                 connectivity = self.get_connectivity(id_)
-                face_mapping = self._get_face_mapping(
-                    self._get_element_type(id_))
+                face_mapping = self._get_face_mapping(self._get_element_type(id_))
                 nodes_per_element = self.get_nodes_per_element(id_)
                 for element_index, face_index in external_faces:
                     node_indices = [
@@ -4488,9 +4873,9 @@ 

Source code for exomerge

                     all_passed = True
                     for node_index in node_indices:
                         # set coordinate values
-                        var['X'] = self.nodes[node_index][0]
-                        var['Y'] = self.nodes[node_index][1]
-                        var['Z'] = self.nodes[node_index][2]
+                        var["X"] = self.nodes[node_index][0]
+                        var["Y"] = self.nodes[node_index][1]
+                        var["Z"] = self.nodes[node_index][2]
                         # set node field values
                         if timesteps:
                             for name, values in list(self.node_fields.items()):
@@ -4507,9 +4892,10 @@ 

Source code for exomerge

         self.create_side_set(side_set_id, members)
         if zero_member_warning and not members:
             self._warning(
-                'Empty side set.',
-                'No external element faces satisfied the given '
-                'expression.  An empty side set was created.')
+ "Empty side set.", + "No external element faces satisfied the given " + "expression. An empty side set was created.", + )
[docs] def create_side_set(self, side_set_id, side_set_members=None): """ @@ -4531,16 +4917,16 @@

Source code for exomerge

             side_set_members = []
         # ensure set set id doesn't exist
         if self.side_set_exists(side_set_id):
-            self._exists_warning(side_set_id, 'side set')
-        unique_members = self._remove_duplicates(side_set_members,
-                                                 preserve_order=True)
+            self._exists_warning(side_set_id, "side set")
+        unique_members = self._remove_duplicates(side_set_members, preserve_order=True)
         if len(unique_members) != len(side_set_members):
             self._warning(
-                'Duplicate faces in set.',
-                'The face set member list contains multiple copies '
-                'of some faces.  These faces will only be added '
-                'once.')
-        self.side_sets[side_set_id] = ['', unique_members, {}]
+ "Duplicate faces in set.", + "The face set member list contains multiple copies " + "of some faces. These faces will only be added " + "once.", + ) + self.side_sets[side_set_id] = ["", unique_members, {}]
[docs] def add_faces_to_side_set(self, side_set_id, new_side_set_members): """ @@ -4555,23 +4941,26 @@

Source code for exomerge

 
         """
         if not self.side_set_exists(side_set_id):
-            self._warning('Side set does not exist.'
-                          'The specified side set "%s% does not exist.  It '
-                          'will be created.' % side_set_id)
+            self._warning(
+                "Side set does not exist."
+                'The specified side set "%s% does not exist.  It '
+                "will be created." % side_set_id
+            )
             self.create_side_set(side_set_id, new_side_set_members)
             return
         members = self.get_side_set_members(side_set_id)
         fields = self._get_side_set_fields(side_set_id)
         # remove duplicate faces
-        new_members = self._remove_duplicates(new_side_set_members,
-                                              other_list=members,
-                                              preserve_order=True)
+        new_members = self._remove_duplicates(
+            new_side_set_members, other_list=members, preserve_order=True
+        )
         if len(new_members) != len(new_side_set_members):
             self._warning(
-                'Duplicates faces in set',
-                'The node set already contains some nodes of the '
-                'faces in the list to add.  These members will not '
-                'be duplicated.')
+                "Duplicates faces in set",
+                "The node set already contains some nodes of the "
+                "faces in the list to add.  These members will not "
+                "be duplicated.",
+            )
         # add the members
         members.extend(new_members)
         # add new values to each field
@@ -4590,9 +4979,9 @@ 

Source code for exomerge

         >>> model.delete_node_field('disp_*')
 
         """
-        node_field_names = self._format_id_list(node_field_names,
-                                                self.get_node_field_names(),
-                                                'node field')
+        node_field_names = self._format_id_list(
+            node_field_names, self.get_node_field_names(), "node field"
+        )
         for node_field_name in node_field_names:
             del self.node_fields[node_field_name]
@@ -4608,11 +4997,9 @@

Source code for exomerge

         >>> model.delete_timestep('all')
 
         """
-        timesteps = self._format_id_list(timesteps, self.get_timesteps(),
-                                         'timestep')
+        timesteps = self._format_id_list(timesteps, self.get_timesteps(), "timestep")
         # get list of deleted indices in descending order
-        deleted_indices = reversed(
-            sorted([self.timesteps.index(x) for x in timesteps]))
+        deleted_indices = reversed(sorted([self.timesteps.index(x) for x in timesteps]))
         for index in deleted_indices:
             # process element fields
             for element_block_id in self.get_element_block_ids():
@@ -4638,9 +5025,7 @@ 

Source code for exomerge

             # delete the timestep
             del self.timesteps[index]
-
[docs] def delete_element_block(self, - element_block_ids, - delete_orphaned_nodes=True): +
[docs] def delete_element_block(self, element_block_ids, delete_orphaned_nodes=True): """ Delete one or more element blocks. @@ -4656,8 +5041,7 @@

Source code for exomerge

         >>> model.delete_element_block([1, 3, 4])
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # if we're not deleting anything, skip some computations.
         if not element_block_ids:
             return
@@ -4689,13 +5073,12 @@ 

Source code for exomerge

         if delete_orphaned_nodes:
             new_unreferenced_nodes = self._get_unreferenced_nodes()
             nodes_to_delete = sorted(
-                set(new_unreferenced_nodes) - set(unreferenced_nodes))
+                set(new_unreferenced_nodes) - set(unreferenced_nodes)
+            )
             if nodes_to_delete:
                 self._delete_nodes(nodes_to_delete)
-
[docs] def delete_element_field(self, - element_field_names, - element_block_ids='all'): +
[docs] def delete_element_field(self, element_field_names, element_block_ids="all"): """ Delete one or more element fields. @@ -4704,11 +5087,10 @@

Source code for exomerge

         >>> model.delete_element_field('all')
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         element_field_names = self._format_id_list(
-            element_field_names, self.get_element_field_names(),
-            'element field')
+            element_field_names, self.get_element_field_names(), "element field"
+        )
         # for each field
         for element_field_name in element_field_names:
             any_deleted = False
@@ -4720,12 +5102,13 @@ 

Source code for exomerge

                     del fields[element_field_name]
             if not any_deleted:
                 self._warning(
-                    'Element field not defined.',
+                    "Element field not defined.",
                     'The element field "%s" was not defined on any '
-                    'of the given element blocks.  It cannot be '
-                    'deleted.' % element_field_name)
+ "of the given element blocks. It cannot be " + "deleted." % element_field_name, + )
-
[docs] def delete_node_set_field(self, node_set_field_names, node_set_ids='all'): +
[docs] def delete_node_set_field(self, node_set_field_names, node_set_ids="all"): """ Delete one or more node set fields. @@ -4735,8 +5118,8 @@

Source code for exomerge

         """
         node_set_ids = self._format_node_set_id_list(node_set_ids)
         node_set_field_names = self._format_id_list(
-            node_set_field_names, self.get_node_set_field_names(),
-            'node set field')
+            node_set_field_names, self.get_node_set_field_names(), "node set field"
+        )
         # for each field
         for name in node_set_field_names:
             any_deleted = False
@@ -4748,12 +5131,13 @@ 

Source code for exomerge

                     del fields[name]
             if not any_deleted:
                 self._warning(
-                    'Node set field not defined.',
+                    "Node set field not defined.",
                     'The node set field "%s" was not defined on any '
-                    'of the given node sets.  It cannot be '
-                    'deleted.' % name)
+ "of the given node sets. It cannot be " + "deleted." % name, + )
-
[docs] def delete_side_set_field(self, side_set_field_names, side_set_ids='all'): +
[docs] def delete_side_set_field(self, side_set_field_names, side_set_ids="all"): """ Delete one or more side set fields. @@ -4763,8 +5147,8 @@

Source code for exomerge

         """
         side_set_ids = self._format_side_set_id_list(side_set_ids)
         side_set_field_names = self._format_id_list(
-            side_set_field_names, self.get_side_set_field_names(),
-            'side set field')
+            side_set_field_names, self.get_side_set_field_names(), "side set field"
+        )
         # for each field
         for name in side_set_field_names:
             any_deleted = False
@@ -4776,10 +5160,11 @@ 

Source code for exomerge

                     del fields[name]
             if not any_deleted:
                 self._warning(
-                    'Side set field not defined.',
+                    "Side set field not defined.",
                     'The side set field "%s" was not defined on any '
-                    'of the given side sets.  It cannot be '
-                    'deleted.' % name)
+ "of the given side sets. It cannot be " + "deleted." % name, + )
[docs] def global_variable_exists(self, global_variable_name): """ @@ -4791,7 +5176,7 @@

Source code for exomerge

         """
         return global_variable_name in self.global_variables
-
[docs] def side_set_field_exists(self, side_set_field_name, side_set_ids='all'): +
[docs] def side_set_field_exists(self, side_set_field_name, side_set_ids="all"): """ Return 'True' if the side set field exists on the side sets. @@ -4806,7 +5191,7 @@

Source code for exomerge

                 return False
         return True
-
[docs] def node_set_field_exists(self, node_set_field_name, node_set_ids='all'): +
[docs] def node_set_field_exists(self, node_set_field_name, node_set_ids="all"): """ Return 'True' if the node set field is defined on the node sets. @@ -4821,8 +5206,7 @@

Source code for exomerge

                 return False
         return True
-
[docs] def element_field_exists(self, element_field_name, - element_block_ids='all'): +
[docs] def element_field_exists(self, element_field_name, element_block_ids="all"): """ Return 'True' if the element field exists on the element blocks. @@ -4830,8 +5214,7 @@

Source code for exomerge

         >>> model.element_field_exists('eqps')
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         for id_ in element_block_ids:
             fields = self.element_blocks[id_][-1]
             if element_field_name not in fields:
@@ -4897,7 +5280,7 @@ 

Source code for exomerge

         """
         return timestep in self.timesteps
-
[docs] def get_node_field_values(self, node_field_name, timestep='last'): +
[docs] def get_node_field_values(self, node_field_name, timestep="last"): """ Return the list of node field values for the given field and timestep. @@ -4909,10 +5292,9 @@

Source code for exomerge

         >>> model.get_node_field_values('disp_x', 0.0)
 
         """
-        [node_field_name] = self._format_id_list([node_field_name],
-                                                 self.get_node_field_names(),
-                                                 'node field',
-                                                 single=True)
+        [node_field_name] = self._format_id_list(
+            [node_field_name], self.get_node_field_names(), "node field", single=True
+        )
         timestep_index = self._get_internal_timestep_index(timestep)
         return self.node_fields[node_field_name][timestep_index]
@@ -4948,20 +5330,22 @@

Source code for exomerge

         element_type = self._get_standard_element_type(element_name)
         if element_type not in self.FACE_MAPPING:
             self._error(
-                'Undefined face mapping.',
-                'The mapping defining which nodes belong to a given '
-                'face has not been defined for the \"%s\" element '
-                'type.  This could be because it has not been '
-                'implemented or because the element type is '
-                'invalid.  Mappings for the following element types '
-                'are defined: %s' %
-                (element_name, ', '.join(list(self.FACE_MAPPING.keys()))))
+                "Undefined face mapping.",
+                "The mapping defining which nodes belong to a given "
+                'face has not been defined for the "%s" element '
+                "type.  This could be because it has not been "
+                "implemented or because the element type is "
+                "invalid.  Mappings for the following element types "
+                "are defined: %s"
+                % (element_name, ", ".join(list(self.FACE_MAPPING.keys()))),
+            )
         return self.FACE_MAPPING[element_type]
 
     def _get_face_mapping_from_id(self, element_block_id):
         """Return the face mapping from the element block id."""
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         element_type = self._get_element_type(element_block_id)
         element_type = self._get_standard_element_type(element_type)
         return self._get_face_mapping(element_type)
@@ -4985,13 +5369,12 @@ 

Source code for exomerge

             if block_id != last_element_block_id or face_mapping is None:
                 last_element_block_id = block_id
                 nodes_per_element = self.get_nodes_per_element(block_id)
-                face_mapping = self._get_face_mapping(
-                    self._get_element_type(block_id))
+                face_mapping = self._get_face_mapping(self._get_element_type(block_id))
                 connectivity = self.get_connectivity(block_id)
             for local_index in face_mapping[face_index][1]:
                 included_nodes.append(
-                    connectivity[element_index * nodes_per_element +
-                                 local_index])
+                    connectivity[element_index * nodes_per_element + local_index]
+                )
         # return list after deleting duplicates
         included_nodes = sorted(set(included_nodes))
         return included_nodes
@@ -5037,7 +5420,7 @@

Source code for exomerge

             face = self._rotate_face(face, face_type)
         return best, best_count
 
-    def _get_internal_faces(self, element_block_ids='all', set_of_nodes=None):
+    def _get_internal_faces(self, element_block_ids="all", set_of_nodes=None):
         """
         Return a list of internal element faces.
 
@@ -5047,8 +5430,7 @@ 

Source code for exomerge

         TODO: Not sure this handles 'element_block_ids' correctly.
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # hold internal faces
         internal_faces = dict()
         # hold faces which need matched
@@ -5068,12 +5450,12 @@ 

Source code for exomerge

             element_count = self.get_element_count(id_)
             nodes_per_element = self.get_nodes_per_element(id_)
             for element_index in range(element_count):
-                local_node = connectivity[element_index *
-                                          nodes_per_element:(element_index +
-                                                             1) *
-                                          nodes_per_element]
-                for face_index, (face_type,
-                                 face_mapping) in enumerate(face_mappings):
+                local_node = connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
+                ]
+                for face_index, (face_type, face_mapping) in enumerate(face_mappings):
                     this_member = (id_, element_index, face_index)
                     this_face = tuple(local_node[x] for x in face_mapping)
                     # skip the face if no nodes are relevant
@@ -5082,7 +5464,8 @@ 

Source code for exomerge

                             continue
                     # transform into lowest form
                     unique_face, unique_offset = self._minimum_face(
-                        this_face, face_type)
+                        this_face, face_type
+                    )
                     # match if possible
                     match = faces_to_match.pop((face_type, unique_face), None)
                     # if no match, add it
@@ -5090,11 +5473,13 @@ 

Source code for exomerge

                         # invert and transform into lowest form
                         inverted_face = self._invert_face(this_face, face_type)
                         inverted_face, inverted_offset = self._minimum_face(
-                            inverted_face, face_type)
+                            inverted_face, face_type
+                        )
                         # add it and continue
-                        faces_to_match[(face_type,
-                                        inverted_face)] = (this_member,
-                                                           inverted_offset)
+                        faces_to_match[(face_type, inverted_face)] = (
+                            this_member,
+                            inverted_offset,
+                        )
                         continue
                     # set first mapping
                     transform = (match[1] - unique_offset) % len(this_face)
@@ -5112,8 +5497,7 @@ 

Source code for exomerge

         This function is slow.
 
         """
-        face_mapping = self._get_face_mapping(self._get_element_type(
-            member[0]))
+        face_mapping = self._get_face_mapping(self._get_element_type(member[0]))
         nodes_per_element = self.get_nodes_per_element(member[0])
         connectivity = self.get_connectivity(member[0])
         return [
@@ -5121,8 +5505,7 @@ 

Source code for exomerge

             for x in face_mapping[member[2]][1]
         ]
 
-
[docs] def convert_side_set_to_cohesive_zone(self, side_set_ids, - new_element_block_id): +
[docs] def convert_side_set_to_cohesive_zone(self, side_set_ids, new_element_block_id): """ Convert the given side sets into a block of cohesive zone elements. @@ -5143,8 +5526,8 @@

Source code for exomerge

             return
         # order all faces by element block
         members_by_block = self._order_element_faces_by_block(
-            itertools.chain(
-                *[self.get_side_set_members(x) for x in side_set_ids]))
+            itertools.chain(*[self.get_side_set_members(x) for x in side_set_ids])
+        )
         # find face shape
         face_type = set()
         element_types = set()
@@ -5156,18 +5539,20 @@ 

Source code for exomerge

         # ensure single face type
         if len(face_type) != 1:
             self._error(
-                'Multiple face types',
-                'The side set contains multiple types of faces and '
-                'cannot be converted into a cohesive zone.')
+                "Multiple face types",
+                "The side set contains multiple types of faces and "
+                "cannot be converted into a cohesive zone.",
+            )
         # ensure face type is supported
         face_type = sorted(face_type)[0]
         if face_type not in self.COHESIVE_FORMULA:
             self._bug(
-                'Unsupported face type',
+                "Unsupported face type",
                 'The side set chosen has elements of face type "%s".  '
-                'At this time, only the following face types are '
-                'supported:\n* %s' %
-                (face_type, '\n* '.join(sorted(self.COHESIVE_FORMULA.keys()))))
+                "At this time, only the following face types are "
+                "supported:\n* %s"
+                % (face_type, "\n* ".join(sorted(self.COHESIVE_FORMULA.keys()))),
+            )
         # for each element type, find adjacent faces
         # (adjacent faces in this context are faces which share one or more
         # nodes)
@@ -5180,7 +5565,8 @@ 

Source code for exomerge

             for face_one in range(face_count):
                 for face_two in range(face_count):
                     if set(face_mapping[face_one][1]).intersection(
-                            face_mapping[face_two][1]):
+                        face_mapping[face_two][1]
+                    ):
                         adjacent_face[face_one].append(face_two)
             adjacent_faces[element_type] = adjacent_face
         # create a set of all nodes in the side set
@@ -5189,7 +5575,8 @@ 

Source code for exomerge

             nodes_on_surface.update(self.get_nodes_in_side_set(side_set_id))
         # find all relevant internal faces
         internal_faces = self._get_internal_faces(
-            list(members_by_block.keys()), set_of_nodes=nodes_on_surface)
+            list(members_by_block.keys()), set_of_nodes=nodes_on_surface
+        )
         # create a set of all free faces
         free_faces = set()
         for id_, members in list(members_by_block.items()):
@@ -5199,10 +5586,11 @@ 

Source code for exomerge

                 matching_face = internal_faces.get(face, None)
                 if not matching_face:
                     self._error(
-                        'Invalid face',
-                        'One or more members of the side set are '
-                        'external faces which cannot be converted '
-                        'to cohesive elements.')
+                        "Invalid face",
+                        "One or more members of the side set are "
+                        "external faces which cannot be converted "
+                        "to cohesive elements.",
+                    )
                 free_faces.add(matching_face[0])
         # count the number of times each node is used
         node_use_count = [0] * len(self.nodes)
@@ -5213,8 +5601,7 @@ 

Source code for exomerge

         # hold a list of all nodes to duplicate
         nodes_to_duplicate = []
         for node_index in nodes_on_surface:
-            nodes_to_duplicate.extend([node_index] *
-                                      node_use_count[node_index])
+            nodes_to_duplicate.extend([node_index] * node_use_count[node_index])
         nodes_to_duplicate.sort()
         # duplicate nodes
         first_new_node_index = len(self.nodes)
@@ -5227,9 +5614,7 @@ 

Source code for exomerge

                 next_index[old_index] = new_index
         # for faster lookup, create a vector to see if a given node
         # is on the cohesive zone
-        node_in_zone = [
-            x in nodes_on_surface for x in range(first_new_node_index)
-        ]
+        node_in_zone = [x in nodes_on_surface for x in range(first_new_node_index)]
         # for each element, unmerge nodes on the cohesive zone
         for id_ in self.get_element_block_ids():
             connectivity = self.get_connectivity(id_)
@@ -5239,8 +5624,7 @@ 

Source code for exomerge

                     next_index[value] += 1
         # find pairs of nodes which need merged
         node_pairs = set()
-        for old_face, (new_face,
-                       transform_count) in list(internal_faces.items()):
+        for old_face, (new_face, transform_count) in list(internal_faces.items()):
             # since the list is duplicated, only operate on one
             if old_face > new_face:
                 continue
@@ -5253,16 +5637,15 @@ 

Source code for exomerge

             original = self._invert_face(original, face_type)
             for _ in range(transform_count):
                 original = self._rotate_face(original, face_type)
-            node_pairs.update((min(x, y), max(x, y))
-                              for x, y in zip(original, target) if x != y)
+            node_pairs.update(
+                (min(x, y), max(x, y)) for x, y in zip(original, target) if x != y
+            )
         # merge nodes
         self._merge_node_pairs(node_pairs)
         # delete nodes we created that are no longer referenced as well as the
         # original nodes which are no longer used
         nodes_to_delete = self._get_unreferenced_nodes()
-        nodes_to_delete = [
-            x for x in nodes_to_delete if x >= first_new_node_index
-        ]
+        nodes_to_delete = [x for x in nodes_to_delete if x >= first_new_node_index]
         nodes_to_delete.extend(nodes_on_surface)
         self._delete_nodes(nodes_to_delete)
         # get the formula for converting two faces into a cohesive element
@@ -5285,15 +5668,15 @@ 

Source code for exomerge

             # add this element to the connectivity list
             connectivity.extend(this_connectivity)
         # create the actual element block
-        self.create_element_block(new_element_block_id, [
-            formula[0],
-            len(connectivity) // nodes_per_element, nodes_per_element, 0
-        ], connectivity)
+ self.create_element_block( + new_element_block_id, + [formula[0], len(connectivity) // nodes_per_element, nodes_per_element, 0], + connectivity, + )
-
[docs] def create_averaged_element_field(self, - from_element_field_names, - new_element_field_name, - element_block_ids='all'): +
[docs] def create_averaged_element_field( + self, from_element_field_names, new_element_field_name, element_block_ids="all" + ): """ Create an element field by averaging the given field values. @@ -5305,10 +5688,9 @@

Source code for exomerge

         """
         # format the arguments
         from_element_field_names = self._format_id_list(
-            from_element_field_names, self.get_element_field_names(),
-            'element field')
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+            from_element_field_names, self.get_element_field_names(), "element field"
+        )
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # for each timestep
         for element_block_id in element_block_ids:
             fields = self._get_element_block_fields(element_block_id)
@@ -5320,21 +5702,22 @@ 

Source code for exomerge

                     break
             if not all_defined:
                 self._warning(
-                    'Fields not defined.',
-                    'Not all of the requested element fields are '
-                    'defined on element block %s.  The averaged '
-                    'field will not be created.' % element_block_id)
+                    "Fields not defined.",
+                    "Not all of the requested element fields are "
+                    "defined on element block %s.  The averaged "
+                    "field will not be created." % element_block_id,
+                )
                 continue
             # create the field if it doesn't exist
-            if self.element_field_exists(new_element_field_name,
-                                         element_block_id):
-                self._exists_on_entity_warning(new_element_field_name,
-                                               'element field',
-                                               element_block_id,
-                                               'element block')
+            if self.element_field_exists(new_element_field_name, element_block_id):
+                self._exists_on_entity_warning(
+                    new_element_field_name,
+                    "element field",
+                    element_block_id,
+                    "element block",
+                )
             else:
-                self.create_element_field(new_element_field_name,
-                                          element_block_id)
+                self.create_element_field(new_element_field_name, element_block_id)
             # get lists to average
             field_list = []
             for name in from_element_field_names:
@@ -5344,14 +5727,12 @@ 

Source code for exomerge

             field_count = len(from_element_field_names)
             for timestep_index in range(len(self.timesteps)):
                 lists_to_average = [x[timestep_index] for x in field_list]
-                averaged_field = [
-                    sum(x) / field_count for x in zip(*lists_to_average)
-                ]
+                averaged_field = [sum(x) / field_count for x in zip(*lists_to_average)]
                 new_element_field[timestep_index] = averaged_field
-
[docs] def convert_element_field_to_node_field(self, - element_field_name, - node_field_name='auto'): +
[docs] def convert_element_field_to_node_field( + self, element_field_name, node_field_name="auto" + ): """ Convert an element field to a node field by performing. @@ -5369,10 +5750,11 @@

Source code for exomerge

         [element_field_name] = self._format_id_list(
             [element_field_name],
             self.get_element_field_names(),
-            'element field',
-            single=True)
+            "element field",
+            single=True,
+        )
         # format the arguments
-        if node_field_name == 'auto':
+        if node_field_name == "auto":
             node_field_name = element_field_name
         # create the field
         self.create_node_field(node_field_name)
@@ -5388,40 +5770,36 @@ 

Source code for exomerge

             # for each element block
             for element_block_id in self.get_element_block_ids():
                 # if field doesn't exist on this element, skip it
-                if not self.element_field_exists(element_field_name,
-                                                 element_block_id):
+                if not self.element_field_exists(element_field_name, element_block_id):
                     continue
                 # store connectivity
                 connectivity = self.get_connectivity(element_block_id)
                 # for each node within each element
                 fields = self._get_element_block_fields(element_block_id)
-                element_field_values = fields[element_field_name][
-                    timestep_index]
-                nodes_per_element = self.get_nodes_per_element(
-                    element_block_id)
+                element_field_values = fields[element_field_name][timestep_index]
+                nodes_per_element = self.get_nodes_per_element(element_block_id)
                 element_count = self.get_element_count(element_block_id)
                 for element_index in range(element_count):
                     for node_index in range(nodes_per_element):
-                        this_node = connectivity[element_index *
-                                                 nodes_per_element +
-                                                 node_index]
+                        this_node = connectivity[
+                            element_index * nodes_per_element + node_index
+                        ]
                         node_field_values[this_node] += element_field_values[
-                            element_index]
+                            element_index
+                        ]
                         node_field_elements[this_node] += 1
             # average each value, or replace with default value
             for node_index in range(len(self.nodes)):
                 if node_field_elements[node_index] == 0:
                     node_field_values[node_index] = default_value
                 else:
-                    node_field_values[node_index] /= node_field_elements[
-                        node_index]
+                    node_field_values[node_index] /= node_field_elements[node_index]
             # replace field values with generated values
             node_field[timestep_index] = node_field_values
-
[docs] def convert_node_field_to_element_field(self, - node_field_name, - element_field_name='auto', - element_block_ids='all'): +
[docs] def convert_node_field_to_element_field( + self, node_field_name, element_field_name="auto", element_block_ids="all" + ): """ Convert a node field to an element field. @@ -5432,14 +5810,12 @@

Source code for exomerge

         >>> model.convert_node_field_to_element_field('temperature')
 
         """
-        [node_field_name] = self._format_id_list([node_field_name],
-                                                 self.get_node_field_names(),
-                                                 'node field',
-                                                 single=True)
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        [node_field_name] = self._format_id_list(
+            [node_field_name], self.get_node_field_names(), "node field", single=True
+        )
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # format the arguments
-        if element_field_name == 'auto':
+        if element_field_name == "auto":
             element_field_name = node_field_name
         # store the node field
         node_field = self.node_fields[node_field_name]
@@ -5459,8 +5835,9 @@ 

Source code for exomerge

                 # for each node within each element
                 for connectivity_index, node_index in enumerate(connectivity):
                     element_index = connectivity_index // nodes_per_element
-                    element_field_values[element_index] += node_field[
-                        timestep_index][node_index]
+                    element_field_values[element_index] += node_field[timestep_index][
+                        node_index
+                    ]
                 # average each value
                 element_field_values = [
                     x / float(nodes_per_element) for x in element_field_values
@@ -5483,14 +5860,14 @@ 

Source code for exomerge

         invalid_entries = members_to_delete_set - all_members_set
         if invalid_entries:
             self._warning(
-                'Invalid members',
-                'The member list contains entries that were not '
-                'members.  There were %d such occurrences.  These '
-                'will be ignored.' % (len(invalid_entries)))
+                "Invalid members",
+                "The member list contains entries that were not "
+                "members.  There were %d such occurrences.  These "
+                "will be ignored." % (len(invalid_entries)),
+            )
         # find members to delete
         indices_to_keep = [
-            i for i, x in enumerate(all_members)
-            if x not in members_to_delete_set
+            i for i, x in enumerate(all_members) if x not in members_to_delete_set
         ]
         return indices_to_keep
 
@@ -5508,12 +5885,12 @@ 

Source code for exomerge

         members = self.get_side_set_members(side_set_id)
         fields = self._get_side_set_fields(side_set_id)
         # find members to keep
-        indices_to_keep = self._find_member_indices_to_keep(
-            members, side_set_members)
+        indices_to_keep = self._find_member_indices_to_keep(members, side_set_members)
         # delete members from node set fields
         for all_values in list(fields.values()):
-            all_values[:] = [[values[x] for x in indices_to_keep]
-                             for values in all_values]
+            all_values[:] = [
+                [values[x] for x in indices_to_keep] for values in all_values
+            ]
         # delete members
         members[:] = [members[x] for x in indices_to_keep]
 
@@ -5531,10 +5908,12 @@ 

Source code for exomerge

         node_set = self.node_sets[node_set_id]
         # find members to keep
         indices_to_keep = self._find_member_indices_to_keep(
-            node_set[0], node_set_members)
+            node_set[0], node_set_members
+        )
         # delete members from node set fields
-        node_set[-1] = [[these_values[x] for x in indices_to_keep]
-                        for these_values in node_set[1]]
+        node_set[-1] = [
+            [these_values[x] for x in indices_to_keep] for these_values in node_set[1]
+        ]
         # delete members
         node_set[0] = [node_set[0][x] for x in indices_to_keep]
 
@@ -5572,17 +5951,16 @@ 

Source code for exomerge

             new_connectivity = [node_map[x] for x in connectivity]
             if None in new_connectivity:
                 self._error(
-                    'Node still used.',
-                    'A node in the list of nodes to delete is still '
-                    'used by elements in element block %d and cannot '
-                    'be deleted.' % element_block_id)
+                    "Node still used.",
+                    "A node in the list of nodes to delete is still "
+                    "used by elements in element block %d and cannot "
+                    "be deleted." % element_block_id,
+                )
             connectivity[:] = new_connectivity
         # update node fields
         for field in list(self.node_fields.values()):
             for timestep_index in range(len(self.timesteps)):
-                new_values = [
-                    field[timestep_index][x] for x in reverse_node_map
-                ]
+                new_values = [field[timestep_index][x] for x in reverse_node_map]
                 field[timestep_index] = new_values
         # delete nodes from node sets and fields
         for node_set_id in self.get_node_set_ids():
@@ -5610,9 +5988,7 @@ 

Source code for exomerge

             connectivity = self.get_connectivity(id_)
             for node_index in connectivity:
                 used_node[node_index] = True
-        unused_nodes = [
-            index for index, used in enumerate(used_node) if not used
-        ]
+        unused_nodes = [index for index, used in enumerate(used_node) if not used]
         return unused_nodes
 
 
[docs] def delete_unused_nodes(self): @@ -5639,8 +6015,8 @@

Source code for exomerge

 
         """
         global_variable_names = self._format_id_list(
-            global_variable_names, self.get_global_variable_names(),
-            'global variable')
+            global_variable_names, self.get_global_variable_names(), "global variable"
+        )
         for name in global_variable_names:
             del self.global_variables[name]
@@ -5707,25 +6083,24 @@

Source code for exomerge

         >>> model.summarize()
 
         """
-        print('The model contains the following:')
-        print(('  %d elements' % (self.get_element_count())))
-        print(('  %d timesteps' % (len(self.timesteps))))
-        print(('  %d global variables' % (len(self.global_variables))))
-        print(('  %d nodes' % (len(self.nodes))))
-        print(('  %d node fields' % (len(self.node_fields))))
-        print(('  %d element blocks' % (len(self.element_blocks))))
-        print(('  %d element fields' % (len(self.get_element_field_names()))))
-        print(('  %d node sets' % (len(self.node_sets))))
-        print(
-            ('  %d node set fields' % (len(self.get_node_set_field_names()))))
-        print(('  %d side sets' % (len(self.side_sets))))
-        print(
-            ('  %d side set fields' % (len(self.get_side_set_field_names()))))
+ print("The model contains the following:") + print((" %d elements" % (self.get_element_count()))) + print((" %d timesteps" % (len(self.timesteps)))) + print((" %d global variables" % (len(self.global_variables)))) + print((" %d nodes" % (len(self.nodes)))) + print((" %d node fields" % (len(self.node_fields)))) + print((" %d element blocks" % (len(self.element_blocks)))) + print((" %d element fields" % (len(self.get_element_field_names())))) + print((" %d node sets" % (len(self.node_sets)))) + print((" %d node set fields" % (len(self.get_node_set_field_names())))) + print((" %d side sets" % (len(self.side_sets)))) + print((" %d side set fields" % (len(self.get_side_set_field_names()))))
def _get_element_block_fields(self, element_block_id): """Return the dictionary of element block field values.""" [element_block_id] = self._format_element_block_id_list( - [element_block_id], single=True) + [element_block_id], single=True + ) return self.element_blocks[element_block_id][-1] def _get_node_set_fields(self, node_set_id): @@ -5733,7 +6108,7 @@

Source code for exomerge

         [node_set_id] = self._format_node_set_id_list([node_set_id], single=True)
         return self.node_sets[node_set_id][-1]
 
-
[docs] def get_element_count(self, element_block_ids='all'): +
[docs] def get_element_count(self, element_block_ids="all"): """ Return the total number of elements in the given element blocks. @@ -5741,11 +6116,10 @@

Source code for exomerge

         >>> print((' %d elements' % (object.get_element_count())))
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         return int(sum(self.element_blocks[x][1][1] for x in element_block_ids))
-
[docs] def process_element_fields(self, element_block_ids='all'): +
[docs] def process_element_fields(self, element_block_ids="all"): """ Process element field information to create node based fields. @@ -5763,42 +6137,37 @@

Source code for exomerge

         >>> model.process_element_fields()
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # for each element block
         for block_id in element_block_ids:
             element_field_names = self.get_element_field_names(block_id)
             for element_field_name in element_field_names:
                 # if it's the first integration point, count the total number
                 # and process accordingly
-                if re.match('^.*_1$', element_field_name):
+                if re.match("^.*_1$", element_field_name):
                     prefix = element_field_name[:-1]
                     points = 1
-                    while self.element_field_exists(prefix + str(points + 1),
-                                                    block_id):
+                    while self.element_field_exists(prefix + str(points + 1), block_id):
                         points += 1
                     if points == 9:
-                        self.rename_element_field(prefix + '1', prefix[:-1],
-                                                  block_id)
+                        self.rename_element_field(prefix + "1", prefix[:-1], block_id)
                         for i in range(2, 10):
-                            self.delete_element_field(prefix + str(i),
-                                                      block_id)
+                            self.delete_element_field(prefix + str(i), block_id)
                     elif points == 8:
                         self.create_averaged_element_field(
                             [prefix + str(x) for x in range(1, 9)],
-                            prefix[:-1], block_id)
+                            prefix[:-1],
+                            block_id,
+                        )
                         for i in range(1, 9):
-                            self.delete_element_field(prefix + str(i),
-                                                      block_id)
+                            self.delete_element_field(prefix + str(i), block_id)
         # nodal average all fields
         for element_field_name in self.get_element_field_names():
             self.convert_element_field_to_node_field(element_field_name)
         # delete element fields
-        self.delete_element_field('all')
+ self.delete_element_field("all")
-
[docs] def combine_element_blocks(self, - element_block_ids, - target_element_block_id='auto'): +
[docs] def combine_element_blocks(self, element_block_ids, target_element_block_id="auto"): """ Combine multiple element blocks into a single block. @@ -5812,35 +6181,39 @@

Source code for exomerge

 
         """
         element_block_ids = self._format_element_block_id_list(
-            element_block_ids, empty_list_okay=False)
-        if target_element_block_id == 'auto':
+            element_block_ids, empty_list_okay=False
+        )
+        if target_element_block_id == "auto":
             target_element_block_id = min(element_block_ids)
         if len(element_block_ids) == 1:
-            self.rename_element_block(element_block_ids[0],
-                                      target_element_block_id)
+            self.rename_element_block(element_block_ids[0], target_element_block_id)
             return
         # ensure all blocks have the same number of nodes per element
         nodes_per_element = set(
-            self.get_nodes_per_element(x) for x in element_block_ids)
+            self.get_nodes_per_element(x) for x in element_block_ids
+        )
         if len(nodes_per_element) != 1:
             self._error(
-                'Incompatible element types.',
-                'The number of nodes per element on each element '
-                'block to be merged must by the same.  This is an '
-                'ExodusII file requirement.')
+                "Incompatible element types.",
+                "The number of nodes per element on each element "
+                "block to be merged must by the same.  This is an "
+                "ExodusII file requirement.",
+            )
         # ensure all blocks are the same type
         element_types = set(
             self._get_standard_element_type(self._get_element_type(x))
-            for x in element_block_ids)
+            for x in element_block_ids
+        )
         if len(element_types) != 1:
             self._warning(
-                'Element types vary.',
-                'The element types of the merged blocks differ.  '
-                'This may cause issues.')
+                "Element types vary.",
+                "The element types of the merged blocks differ.  "
+                "This may cause issues.",
+            )
         # create new connectivity
         new_connectivity = list(
-            itertools.chain(
-                *[self.get_connectivity(x) for x in element_block_ids]))
+            itertools.chain(*[self.get_connectivity(x) for x in element_block_ids])
+        )
         # create new info
         new_info = list(self._get_block_info(element_block_ids[0]))
         # set element count to zero
@@ -5849,8 +6222,7 @@ 

Source code for exomerge

         temporary_element_block_id = self._new_element_block_id()
         # create translation list for elements
         # new_block[old_block_id] = (new_block_id, element_offset)
-        new_block_info = dict(
-            (id_, (id_, 0)) for id_ in self.get_element_block_ids())
+        new_block_info = dict((id_, (id_, 0)) for id_ in self.get_element_block_ids())
         for id_ in element_block_ids:
             new_block_info[id_] = (temporary_element_block_id, new_info[1])
             new_info[1] += self.element_blocks[id_][1][1]
@@ -5862,12 +6234,13 @@ 

Source code for exomerge

                 if not self.element_field_exists(name, id_):
                     if give_nonexistant_field_warning:
                         self._warning(
-                            'Inconsistent element fields.',
+                            "Inconsistent element fields.",
                             'The element field "%s" is not defined '
-                            'on all element blocks included in the '
-                            'merging operation.  It will be '
-                            'created.  Future warnings of this type '
-                            'will be suppressed.' % name)
+                            "on all element blocks included in the "
+                            "merging operation.  It will be "
+                            "created.  Future warnings of this type "
+                            "will be suppressed." % name,
+                        )
                         give_nonexistant_field_warning = False
                     self.create_element_field(name, id_)
         # create new field information
@@ -5875,37 +6248,36 @@ 

Source code for exomerge

         for name in element_field_names:
             new_values = [[] for _ in self.timesteps]
             for id_ in element_block_ids:
-                for index, values in enumerate(
-                        self.element_blocks[id_][-1][name]):
+                for index, values in enumerate(self.element_blocks[id_][-1][name]):
                     new_values[index].extend(values)
             new_fields[name] = new_values
         # create new block
-        self.create_element_block(temporary_element_block_id, new_info,
-                                  new_connectivity)
+        self.create_element_block(
+            temporary_element_block_id, new_info, new_connectivity
+        )
         self.element_blocks[temporary_element_block_id][-1] = new_fields
         # translate side set members
         for side_set_id in self.get_side_set_ids():
             members = self.get_side_set_members(side_set_id)
             new_members = [
-                (new_block_info[element_block_id][0],
-                 element_index + new_block_info[element_block_id][1],
-                 face_index)
+                (
+                    new_block_info[element_block_id][0],
+                    element_index + new_block_info[element_block_id][1],
+                    face_index,
+                )
                 for element_block_id, element_index, face_index in members
             ]
             members[:] = new_members
         # delete old blocks
         # (nodes can not be orphaned by this procedure)
         for element_block_id in element_block_ids:
-            self.delete_element_block(element_block_id,
-                                      delete_orphaned_nodes=False)
+            self.delete_element_block(element_block_id, delete_orphaned_nodes=False)
         # rename element block
-        self.rename_element_block(temporary_element_block_id,
-                                  target_element_block_id)
+ self.rename_element_block(temporary_element_block_id, target_element_block_id)
-
[docs] def duplicate_element_block(self, - element_block_id, - new_element_block_id, - duplicate_nodes=True): +
[docs] def duplicate_element_block( + self, element_block_id, new_element_block_id, duplicate_nodes=True + ): """ Create an duplicate of the given element block. @@ -5917,7 +6289,8 @@

Source code for exomerge

 
         """
         [element_block_id] = self._format_element_block_id_list(
-            [element_block_id], single=True)
+            [element_block_id], single=True
+        )
         info = list(self._get_block_info(element_block_id))
         old_connectivity = self.get_connectivity(element_block_id)
         # create new nodes
@@ -5926,7 +6299,8 @@ 

Source code for exomerge

             new_node_indices = []
             self._duplicate_nodes(unique_node_indices, new_node_indices)
             new_node_indices = dict(
-                (x, y) for x, y in zip(unique_node_indices, new_node_indices))
+                (x, y) for x, y in zip(unique_node_indices, new_node_indices)
+            )
             new_connectivity = [new_node_indices[x] for x in old_connectivity]
         else:
             new_connectivity = list(old_connectivity)
@@ -5935,7 +6309,8 @@ 

Source code for exomerge

         # copy fields
         fields = dict()
         for name, all_values in list(
-                self._get_element_block_fields(element_block_id).items()):
+            self._get_element_block_fields(element_block_id).items()
+        ):
             fields[name] = [list(x) for x in all_values]
         self.element_blocks[new_element_block_id][-1] = fields
         # update side sets and side set fields
@@ -5946,8 +6321,7 @@ 

Source code for exomerge

             source_face = []
             for index, member in enumerate(members):
                 if member[0] == element_block_id:
-                    new_members.append(
-                        (new_element_block_id, member[1], member[2]))
+                    new_members.append((new_element_block_id, member[1], member[2]))
                     source_face.append(index)
             members.extend(new_members)
             for all_values in list(fields.values()):
@@ -5960,9 +6334,10 @@ 

Source code for exomerge

         element_type = self._get_standard_element_type(element_type)
         if element_type not in self.INVERTED_CONNECTIVITY:
             self._error(
-                'Unknown inversion algorithm.',
-                'The required numbering to invert an element of type '
-                '"%s" is not defined.' % element_type)
+                "Unknown inversion algorithm.",
+                "The required numbering to invert an element of type "
+                '"%s" is not defined.' % element_type,
+            )
         return self.INVERTED_CONNECTIVITY[element_type]
 
     def _get_inverted_face_mapping(self, element_type):
@@ -5970,28 +6345,27 @@ 

Source code for exomerge

         face_mapping = self._get_face_mapping(element_type)
         inversion_mapping = self._get_inverted_connectivity(element_type)
         original_face = [set(face) for _, face in face_mapping]
-        new_face = [
-            set(inversion_mapping[x] for x in face) for _, face in face_mapping
-        ]
+        new_face = [set(inversion_mapping[x] for x in face) for _, face in face_mapping]
         try:
             new_face = [original_face.index(x) for x in new_face]
         except ValueError:
             self._bug(
-                'Unable to determine face mapping.',
-                'We were unable to determine how to map faces when '
-                'inverting an element of type "%s".' % element_type)
+                "Unable to determine face mapping.",
+                "We were unable to determine how to map faces when "
+                'inverting an element of type "%s".' % element_type,
+            )
         return new_face
 
     def _invert_element_blocks(self, element_block_ids):
         """Invert all elements within one or more element blocks."""
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         for id_ in element_block_ids:
             element_count = self.get_element_count(id_)
             nodes_per_element = self.get_nodes_per_element(id_)
             # invert the connectivity
             inverted_mapping = self._get_inverted_connectivity(
-                self._get_element_type(id_))
+                self._get_element_type(id_)
+            )
             connectivity = self.get_connectivity(id_)
             new_connectivity = [
                 connectivity[element_index * nodes_per_element + x]
@@ -6001,13 +6375,13 @@ 

Source code for exomerge

             connectivity[:] = new_connectivity
             # adjust side set members
             new_face_indices = self._get_inverted_face_mapping(
-                self._get_element_type(id_))
+                self._get_element_type(id_)
+            )
             for side_set_id in self.get_side_set_ids():
                 members = self.get_side_set_members(side_set_id)
                 for index, member in enumerate(members):
                     if member[0] == id_:
-                        members[index] = (id_, member[1],
-                                          new_face_indices[member[2]])
+                        members[index] = (id_, member[1], new_face_indices[member[2]])
 
 
[docs] def create_element_block(self, element_block_id, info, connectivity=None): """ @@ -6033,12 +6407,12 @@

Source code for exomerge

         """
         # make sure it doesn't exist already
         if self.element_block_exists(element_block_id):
-            self._exists_error(element_block_id, 'element block')
+            self._exists_error(element_block_id, "element block")
         # set up an empty connectivity if none is given
         if not connectivity:
             connectivity = []
         # create the actual block
-        self.element_blocks[element_block_id] = ['', info, connectivity, {}]
+ self.element_blocks[element_block_id] = ["", info, connectivity, {}]
[docs] def create_nodes(self, new_nodes): """ @@ -6063,46 +6437,51 @@

Source code for exomerge

     def _exists_error(self, name, entity):
         """Warn the user something already exists and exit."""
         self._error(
-            entity[0].upper() + entity[1:] + ' already exists.',
+            entity[0].upper() + entity[1:] + " already exists.",
             'The specified %s "%s" already exists.  This operation cannot '
-            'be completed.' % (entity, str(name)))
+            "be completed." % (entity, str(name)),
+        )
 
     def _exists_warning(self, name, entity):
         """Warn the user something already exists."""
         self._warning(
-            entity[0].upper() + entity[1:] + ' already exists.',
+            entity[0].upper() + entity[1:] + " already exists.",
             'The specified %s "%s" already exists.  Information may be '
-            'overwritten.' % (entity, str(name)))
+            "overwritten." % (entity, str(name)),
+        )
 
     def _exists_on_entity_warning(self, name, entity, base_name, base_entity):
         """Warn the user something already exists on a given entity."""
         self._warning(
-            entity[0].upper() + entity[1:] + ' already exists.',
+            entity[0].upper() + entity[1:] + " already exists.",
             'The specified %s "%s" already exists on %s %s.  Information may '
-            'be overwritten.' %
-            (entity, str(name), base_entity, str(base_name)))
+            "be overwritten." % (entity, str(name), base_entity, str(base_name)),
+        )
 
     def _missing_error(self, name, entity):
         """Tell the user something does not exist and exit."""
         self._error(
-            entity[0].upper() + entity[1:] + ' does not exist.',
-            'The specified %s "%s" does not exist.' % (entity, str(name)))
+            entity[0].upper() + entity[1:] + " does not exist.",
+            'The specified %s "%s" does not exist.' % (entity, str(name)),
+        )
 
     def _missing_warning(self, name, entity):
         """Warn the user something does not exist."""
         self._error(
-            entity[0].upper() + entity[1:] + ' does not exist.',
-            'The specified %s "%s" does not exist and will be ignored.' %
-            (entity, str(name)))
+            entity[0].upper() + entity[1:] + " does not exist.",
+            'The specified %s "%s" does not exist and will be ignored.'
+            % (entity, str(name)),
+        )
 
     def _missing_on_entity_error(self, name, entity, base_name, base_entity):
         """Tell the user something does not exist on an entity and exit."""
         self._error(
-            entity[0].upper() + entity[1:] + ' does not exist.',
-            'The specified %s "%s" does not exist on %s %s.' %
-            (entity, str(name), base_entity, str(base_name)))
+            entity[0].upper() + entity[1:] + " does not exist.",
+            'The specified %s "%s" does not exist on %s %s.'
+            % (entity, str(name), base_entity, str(base_name)),
+        )
 
-
[docs] def create_global_variable(self, global_variable_name, value='auto'): +
[docs] def create_global_variable(self, global_variable_name, value="auto"): """ Create a new global variable. @@ -6111,15 +6490,15 @@

Source code for exomerge

 
         """
         if self.global_variable_exists(global_variable_name):
-            self._exists_warning(global_variable_name, 'global variable')
-        if value == 'auto':
+            self._exists_warning(global_variable_name, "global variable")
+        if value == "auto":
             value = self._get_default_field_value(global_variable_name)
         values = [value] * len(self.timesteps)
         self.global_variables[global_variable_name] = values
-
[docs] def calculate_element_centroids(self, - element_field_name_prefix='centroid_', - element_block_ids='all'): +
[docs] def calculate_element_centroids( + self, element_field_name_prefix="centroid_", element_block_ids="all" + ): """ Calculate and store the centroid of each element. @@ -6136,22 +6515,21 @@

Source code for exomerge

         >>> model.calculate_element_centroids()
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         if not self.timesteps:
             self.create_timestep(0.0)
         if isinstance(element_field_name_prefix, str):
             centroid_field_names = [
-                element_field_name_prefix + x for x in ['x', 'y', 'z']
+                element_field_name_prefix + x for x in ["x", "y", "z"]
             ]
         else:
             centroid_field_names = element_field_name_prefix
         for element_block_id in element_block_ids:
             for name in centroid_field_names:
                 if self.element_field_exists(name, element_block_id):
-                    self._exists_on_entity_warning(name, 'element field',
-                                                   element_block_id,
-                                                   'element block')
+                    self._exists_on_entity_warning(
+                        name, "element field", element_block_id, "element block"
+                    )
             # calculate centroids
             centroid = [[], [], []]
             element_count = self.get_element_count(element_block_id)
@@ -6160,8 +6538,9 @@ 

Source code for exomerge

             for element_index in range(element_count):
                 this_centroid = [0.0, 0.0, 0.0]
                 for connectivity_index in range(nodes_per_element):
-                    node_index = connectivity[element_index * nodes_per_element
-                                              + connectivity_index]
+                    node_index = connectivity[
+                        element_index * nodes_per_element + connectivity_index
+                    ]
                     for i in range(3):
                         this_centroid[i] += self.nodes[node_index][i]
                 for i in range(3):
@@ -6173,9 +6552,9 @@ 

Source code for exomerge

                     values.append(list(centroid[index]))
                 fields[name] = values
-
[docs] def calculate_element_volumes(self, - element_field_name='volume', - element_block_ids='all'): +
[docs] def calculate_element_volumes( + self, element_field_name="volume", element_block_ids="all" + ): """ Calculate and store the volume of each element. @@ -6190,76 +6569,81 @@

Source code for exomerge

         >>> model.calculate_element_volumes()
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         if not self.timesteps:
             self.create_timestep(0.0)
         for element_block_id in element_block_ids:
             # get the element type
             element_type = self._get_standard_element_type(
-                self._get_element_type(element_block_id))
+                self._get_element_type(element_block_id)
+            )
             if element_type not in self.VOLUME_FORMULA:
                 self._warning(
-                    'Unrecognized element type',
-                    'The formula for calculating the volume of '
+                    "Unrecognized element type",
+                    "The formula for calculating the volume of "
                     'element type "%s" is not implemented or not '
-                    'known.  This block will be skipped.' % (element_type))
+                    "known.  This block will be skipped." % (element_type),
+                )
                 continue
             # warn if field already exists
             if self.element_field_exists(element_field_name, element_block_id):
-                self._exists_on_entity_warning(element_field_name,
-                                               'element field',
-                                               element_block_id,
-                                               'element block')
+                self._exists_on_entity_warning(
+                    element_field_name,
+                    "element field",
+                    element_block_id,
+                    "element block",
+                )
             # get the formula
             formula = self.VOLUME_FORMULA[element_type]
             if len(formula) == 2:
                 # distance between two points
-                equation = ('(x[0] ** 2.0 + '
-                            'x[1] ** 2.0 + '
-                            'x[2] ** 2.0) ** 0.5')
+                equation = "(x[0] ** 2.0 + " "x[1] ** 2.0 + " "x[2] ** 2.0) ** 0.5"
             elif len(formula) == 3:
                 # magnitude of cross product
-                equation = ('((x[0] * x[4] - x[1] * x[3]) ** 2.0 + '
-                            '(x[2] * x[3] - x[0] * x[5]) ** 2.0 + '
-                            '(x[1] * x[5] - x[2] * x[4]) ** 2.0) ** 0.5')
+                equation = (
+                    "((x[0] * x[4] - x[1] * x[3]) ** 2.0 + "
+                    "(x[2] * x[3] - x[0] * x[5]) ** 2.0 + "
+                    "(x[1] * x[5] - x[2] * x[4]) ** 2.0) ** 0.5"
+                )
             elif len(formula) == 4:
                 # triple product
-                equation = ('(x[1] * x[5] - x[2] * x[4]) * x[6] + '
-                            '(x[2] * x[3] - x[0] * x[5]) * x[7] + '
-                            '(x[0] * x[4] - x[1] * x[3]) * x[8]')
+                equation = (
+                    "(x[1] * x[5] - x[2] * x[4]) * x[6] + "
+                    "(x[2] * x[3] - x[0] * x[5]) * x[7] + "
+                    "(x[0] * x[4] - x[1] * x[3]) * x[8]"
+                )
             else:
-                self._bug('Unknown case')
+                self._bug("Unknown case")
             # process the formula to account for averaged nodes
             transforms = []
             for i, rule in enumerate(formula[1:]):
                 for d in range(3):
-                    value = '('
+                    value = "("
                     node_list = rule[1]
                     if isinstance(node_list, int):
-                        value += 'n[%d]' % (node_list * 3 + d)
+                        value += "n[%d]" % (node_list * 3 + d)
                     else:
-                        value += '('
-                        value += 'n[%d]' % (node_list[0] * 3 + d)
+                        value += "("
+                        value += "n[%d]" % (node_list[0] * 3 + d)
                         for x in node_list[1:]:
-                            value += ' + n[%d]' % (x * 3 + d)
-                        value += ') / %d.0' % len(node_list)
-                    value += ' - '
+                            value += " + n[%d]" % (x * 3 + d)
+                        value += ") / %d.0" % len(node_list)
+                    value += " - "
                     node_list = rule[0]
                     if isinstance(node_list, int):
-                        value += 'n[%d]' % (node_list * 3 + d)
+                        value += "n[%d]" % (node_list * 3 + d)
                     else:
-                        value += '('
-                        value += 'n[%d]' % (node_list[0] * 3 + d)
+                        value += "("
+                        value += "n[%d]" % (node_list[0] * 3 + d)
                         for x in node_list[1:]:
-                            value += ' + n[%d]' % (x * 3 + d)
-                        value += ') / %d.0' % len(node_list)
-                    value += ')'
-                    transforms.append(('x[%d]' % (i * 3 + d), value))
+                            value += " + n[%d]" % (x * 3 + d)
+                        value += ") / %d.0" % len(node_list)
+                    value += ")"
+                    transforms.append(("x[%d]" % (i * 3 + d), value))
             for transform in transforms:
                 equation = equation.replace(transform[0], transform[1])
             # store coordinates of nodes into x, y, z lists
-            function = eval('lambda n: ' + equation)
+            function = eval("lambda n: " + equation)
             # store some element block values
             element_count = self.get_element_count(element_block_id)
             nodes_per_element = self.get_nodes_per_element(element_block_id)
@@ -6267,10 +6651,11 @@ 

Source code for exomerge

             volumes = []
             for element_index in range(int(element_count)):
                 # get local node values
-                local_node = connectivity[element_index *
-                                          nodes_per_element:(element_index +
-                                                             1) *
-                                          nodes_per_element]
+                local_node = connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
+                ]
                 # get local coordinates
                 n = [x for i in local_node for x in self.nodes[i]]
                 # add the volume
@@ -6281,17 +6666,16 @@ 

Source code for exomerge

             fields = self._get_element_block_fields(element_block_id)
             fields[element_field_name] = values
-
[docs] def get_element_block_volume(self, - element_block_ids, - element_volume_field_name=None): +
[docs] def get_element_block_volume( + self, element_block_ids, element_volume_field_name=None + ): """Return the total volume of the given element blocks. Example: >>> model.get_element_block_volume('all') """ - element_block_ids = self._format_element_block_id_list( - element_block_ids) + element_block_ids = self._format_element_block_id_list(element_block_ids) # create a timestep if none exist created_timestep = False if not self.timesteps: @@ -6302,8 +6686,7 @@

Source code for exomerge

         if element_volume_field_name is None:
             created_volume_field = True
             element_volume_field_name = self._new_element_field_name()
-            self.calculate_element_volumes(element_volume_field_name,
-                                           element_block_ids)
+            self.calculate_element_volumes(element_volume_field_name, element_block_ids)
         # add up the volumes
         volume = 0.0
         for id_ in element_block_ids:
@@ -6314,14 +6697,15 @@ 

Source code for exomerge

             self.delete_timestep(0.0)
         # delete the temporary field
         if created_volume_field:
-            self.delete_element_field(element_volume_field_name,
-                                      element_block_ids)
+            self.delete_element_field(element_volume_field_name, element_block_ids)
         return volume
-
[docs] def get_element_block_centroid(self, - element_block_ids, - element_volume_field_name=None, - element_centroid_field_names=None): +
[docs] def get_element_block_centroid( + self, + element_block_ids, + element_volume_field_name=None, + element_centroid_field_names=None, + ): """Return the centroid of the given element blocks. Example: @@ -6330,8 +6714,7 @@

Source code for exomerge

 
         """
         # format inputs
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # create a timestep if none exist
         created_timestep = False
         if not self.timesteps:
@@ -6342,30 +6725,27 @@ 

Source code for exomerge

         if element_volume_field_name is None:
             created_volume_field = True
             element_volume_field_name = self._new_element_field_name()
-            self.calculate_element_volumes(element_volume_field_name,
-                                           element_block_ids)
+            self.calculate_element_volumes(element_volume_field_name, element_block_ids)
         # calculate temporary field with element centroids
         created_centroid_fields = False
         if element_centroid_field_names is None:
             created_centroid_fields = True
             element_centroid_field_names = self._new_element_field_name(3)
-            self.calculate_element_centroids(element_centroid_field_names,
-                                             element_block_ids)
+            self.calculate_element_centroids(
+                element_centroid_field_names, element_block_ids
+            )
         # calculate the centroid
         total_volume = 0.0
         centroid = [0.0, 0.0, 0.0]
         for id_ in element_block_ids:
             fields = self._get_element_block_fields(id_)
             volumes = fields[element_volume_field_name][0]
-            centroids = [
-                fields[element_centroid_field_names[x]][0] for x in range(3)
-            ]
+            centroids = [fields[element_centroid_field_names[x]][0] for x in range(3)]
             for x in range(3):
-                centroid[x] += sum(a * b
-                                   for a, b in zip(volumes, centroids[x]))
+                centroid[x] += sum(a * b for a, b in zip(volumes, centroids[x]))
             total_volume += sum(volumes)
         if total_volume == 0.0:
-            centroid = [float('nan')] * 3
+            centroid = [float("nan")] * 3
         else:
             centroid = [x / total_volume for x in centroid]
         # delete the temporary timestep
@@ -6373,14 +6753,13 @@ 

Source code for exomerge

             self.delete_timestep(0.0)
         # delete the temporary fields
         if created_volume_field:
-            self.delete_element_field(element_volume_field_name,
-                                      element_block_ids)
+            self.delete_element_field(element_volume_field_name, element_block_ids)
         if created_centroid_fields:
             for name in element_centroid_field_names:
                 self.delete_element_field(name, element_block_ids)
         return centroid
-
[docs] def create_interpolated_timestep(self, timestep, interpolation='cubic'): +
[docs] def create_interpolated_timestep(self, timestep, interpolation="cubic"): """ Create a new timestep by interpolating neighboring steps. @@ -6396,26 +6775,31 @@

Source code for exomerge

 
         """
         if timestep in self.timesteps:
-            self._exists_warning(timestep, 'timestep')
+            self._exists_warning(timestep, "timestep")
             return
         # find neighboring timesteps and how to form the new step
         steps = self.get_timesteps()
         # make sure enough steps exist
         if len(steps) < 2:
             self._error(
-                'Invalid interpolation.',
-                'A timestep cannot be interpolated unless 2 or '
-                'more timesteps already exist.  There are %d defined '
-                'timesteps: %s' % (len(self.timesteps), ', '.join(
-                    [str(x) for x in self.get_timesteps()])))
+                "Invalid interpolation.",
+                "A timestep cannot be interpolated unless 2 or "
+                "more timesteps already exist.  There are %d defined "
+                "timesteps: %s"
+                % (
+                    len(self.timesteps),
+                    ", ".join([str(x) for x in self.get_timesteps()]),
+                ),
+            )
         # make sure value lies within time bounds
         if steps[0] > timestep or steps[-1] < timestep:
             self._error(
-                'Invalid interpolation.',
-                'The specified timestep %s does not lie within the '
-                'range of timesteps already defined: [%s, %s].' %
-                (str(timestep), str(steps[0]), str(steps[-1])))
-        if interpolation == 'linear':
+                "Invalid interpolation.",
+                "The specified timestep %s does not lie within the "
+                "range of timesteps already defined: [%s, %s]."
+                % (str(timestep), str(steps[0]), str(steps[-1])),
+            )
+        if interpolation == "linear":
             # find two bounding timesteps
             nearby = min(steps, key=lambda x: abs(x - timestep))
             if nearby < timestep:
@@ -6425,7 +6809,7 @@ 

Source code for exomerge

             # find proportion of each one to use
             phi = (timestep - nearby[0]) / (nearby[1] - nearby[0])
             formula = [(nearby[0], 1.0 - phi), (nearby[1], phi)]
-        elif interpolation == 'cubic':
+        elif interpolation == "cubic":
             # find four bounding timesteps
             # if step is within first or last segment, create
             # an imaginary point to do the interpolation
@@ -6446,8 +6830,10 @@ 

Source code for exomerge

                 four_steps[3] = steps[index + 2]
             # find interpolation coefficients
             coefficients = self._cubic_interpolation(timestep, *four_steps)
-            formula = [[steps[index], coefficients[1]],
-                       [steps[index + 1], coefficients[2]]]
+            formula = [
+                [steps[index], coefficients[1]],
+                [steps[index + 1], coefficients[2]],
+            ]
             if index == 0:
                 formula[0][1] += 2 * coefficients[0]
                 formula[1][1] -= coefficients[0]
@@ -6460,20 +6846,22 @@ 

Source code for exomerge

                 formula.append([steps[index + 2], coefficients[3]])
         else:
             self._error(
-                'Unknown interpolation technique',
+                "Unknown interpolation technique",
                 'The specified interpolation technique "%s" is not '
-                'recognized.' % interpolation)
+                "recognized." % interpolation,
+            )
         # create the new timestep
         self.create_timestep(timestep)
         # use the given formula to create the new step
         # formula = list of (timestep_index, contribution)
-        formula = [(self._get_internal_timestep_index(x[0]), x[1])
-                   for x in formula]
+        formula = [(self._get_internal_timestep_index(x[0]), x[1]) for x in formula]
         this_index = self._get_internal_timestep_index(timestep)
         # element fields, side set fields, node set fields
-        for thing in itertools.chain(list(self.element_blocks.values()),
-                                     list(self.node_sets.values()),
-                                     list(self.side_sets.values())):
+        for thing in itertools.chain(
+            list(self.element_blocks.values()),
+            list(self.node_sets.values()),
+            list(self.side_sets.values()),
+        ):
             fields = thing[-1]
             for values in list(fields.values()):
                 new_values = [0.0] * len(values[0])
@@ -6522,12 +6910,11 @@ 

Source code for exomerge

         object.copy_timestep(0.0, 1.0)
 
         """
-        [timestep] = self._format_id_list([timestep],
-                                          self.get_timesteps(),
-                                          'timestep',
-                                          single=True)
+        [timestep] = self._format_id_list(
+            [timestep], self.get_timesteps(), "timestep", single=True
+        )
         if self.timestep_exists(new_timestep):
-            self._exists_warning(new_timestep, 'timestep')
+            self._exists_warning(new_timestep, "timestep")
             return
         # find the index at which to insert the new timestep
         new_index = self._find_new_timestep_index(new_timestep)
@@ -6543,9 +6930,11 @@ 

Source code for exomerge

         for values in list(self.global_variables.values()):
             values.insert(new_index, values[old_index])
         # adjust self.element_blocks, self.node_sets, self.side_sets
-        for thing in itertools.chain(list(self.element_blocks.values()),
-                                     list(self.node_sets.values()),
-                                     list(self.side_sets.values())):
+        for thing in itertools.chain(
+            list(self.element_blocks.values()),
+            list(self.node_sets.values()),
+            list(self.side_sets.values()),
+        ):
             fields = thing[-1]
             for field in list(fields.values()):
                 field.insert(new_index, list(field[old_index]))
@@ -6562,7 +6951,7 @@

Source code for exomerge

         """
         timestep = float(timestep)
         if self.timestep_exists(timestep):
-            self._exists_warning(timestep, 'timestep')
+            self._exists_warning(timestep, "timestep")
             return
         # find the index at which to to insert this
         timestep_index = self._find_new_timestep_index(timestep)
@@ -6611,16 +7000,18 @@ 

Source code for exomerge

         original_case = dict((x.lower(), x) for x in original_list)
         if len(original_case) != len(original_list):
             self._warning(
-                'Ambiguous string case.',
-                'There are multiple strings in the list which have '
-                'identical lowercase representations.  One will be '
-                'chosen at random.')
+                "Ambiguous string case.",
+                "There are multiple strings in the list which have "
+                "identical lowercase representations.  One will be "
+                "chosen at random.",
+            )
         for item in new_list:
             if item.lower() not in original_case:
                 self._bug(
-                    'Unrecognized string.',
+                    "Unrecognized string.",
                     'The string "%s" appears in the new list but '
-                    'not in the original list.' % item)
+                    "not in the original list." % item,
+                )
         return [original_case[x.lower()] for x in new_list]
 
     def _sort_field_names(self, original_field_names):
@@ -6643,55 +7034,58 @@ 

Source code for exomerge

         multicomponent_fields = set()
         for name in field_names:
             # see if it has an integration point
-            if re.match('.*_[0-9]+$', name):
-                (name, integration_point) = name.rsplit('_', 1)
+            if re.match(".*_[0-9]+$", name):
+                (name, integration_point) = name.rsplit("_", 1)
                 integration_point = int(integration_point)
             else:
                 integration_point = None
             # see if it possibly has a component
-            if re.match('.*_.+$', name):
-                component = name.rsplit('_', 1)[1]
+            if re.match(".*_.+$", name):
+                component = name.rsplit("_", 1)[1]
                 if component in self.ALL_MULTI_COMPONENT_FIELD_SUBSCRIPTS:
-                    name = name.rsplit('_', 1)[0]
-                    multicomponent_fields.add(
-                        (name, component, integration_point))
+                    name = name.rsplit("_", 1)[0]
+                    multicomponent_fields.add((name, component, integration_point))
         # now sort multi-component fields
         base_names = set(x for x, _, _ in multicomponent_fields)
         sorted_field_names = dict()
         field_names = set(field_names)
         for base_name in base_names:
             # find all components of this form
-            components = set(x for name, x, _ in multicomponent_fields
-                             if name == base_name)
+            components = set(
+                x for name, x, _ in multicomponent_fields if name == base_name
+            )
             # find max integration point value
-            integration_points = set(x for name, _, x in multicomponent_fields
-                                     if name == base_name and x is not None)
+            integration_points = set(
+                x
+                for name, _, x in multicomponent_fields
+                if name == base_name and x is not None
+            )
             if integration_points:
                 integration_point_count = max(
-                    x for name, _, x in multicomponent_fields
-                    if name == base_name and x is not None)
+                    x
+                    for name, _, x in multicomponent_fields
+                    if name == base_name and x is not None
+                )
             else:
                 integration_point_count = None
 
             # see if the components match the form of something
             matching_form = None
-            for form, included_components in (list(
-                    self.MULTI_COMPONENT_FIELD_SUBSCRIPTS.items())):
+            for form, included_components in list(
+                self.MULTI_COMPONENT_FIELD_SUBSCRIPTS.items()
+            ):
                 if set(included_components) == components:
                     matching_form = form
             if not matching_form:
                 continue
             # see if all components and integration points are present
             mid = [
-                '_' + x
-                for x in self.MULTI_COMPONENT_FIELD_SUBSCRIPTS[matching_form]
+                "_" + x for x in self.MULTI_COMPONENT_FIELD_SUBSCRIPTS[matching_form]
             ]
             if integration_point_count is None:
-                last = ['']
+                last = [""]
             else:
-                last = [
-                    '_' + str(x + 1) for x in range(integration_point_count)
-                ]
+                last = ["_" + str(x + 1) for x in range(integration_point_count)]
             all_names = [base_name + m + s for s in last for m in mid]
             if set(all_names).issubset(field_names):
                 sorted_field_names[all_names[0]] = all_names
@@ -6826,19 +7220,18 @@ 

Source code for exomerge

         first_word = None
         for line in self.info_records:
             if not continuation:
-                first_word = line.strip().split(' ', 1)[0].lower()
-            if not continuation and first_word == 'begin':
+                first_word = line.strip().split(" ", 1)[0].lower()
+            if not continuation and first_word == "begin":
                 begin_depth += 1
             if begin_depth > 0:
                 if continuation:
                     input_deck[-1] = input_deck[-1][:-1] + line
                 else:
                     input_deck.append(line)
-            continuation = (begin_depth > 0 and len(line) == 80
-                            and line[-1] == '\\')
-            if not continuation and first_word == 'end':
+            continuation = begin_depth > 0 and len(line) == 80 and line[-1] == "\\"
+            if not continuation and first_word == "end":
                 begin_depth -= 1
-        return '\n'.join(input_deck)
+ return "\n".join(input_deck)
[docs] def get_length_scale(self): """ @@ -6883,16 +7276,20 @@

Source code for exomerge

     @staticmethod
     def _distance_squared_between(point_one, point_two):
         """Return the distance squared between two three-dimensional points."""
-        return ((point_two[0] - point_one[0])**2 +
-                (point_two[1] - point_one[1])**2 +
-                (point_two[2] - point_one[2])**2)
+        return (
+            (point_two[0] - point_one[0]) ** 2
+            + (point_two[1] - point_one[1]) ** 2
+            + (point_two[2] - point_one[2]) ** 2
+        )
 
     @staticmethod
     def _distance_between(point_one, point_two):
         """Return the distance between two three-dimensional points."""
-        return math.sqrt((point_two[0] - point_one[0])**2 +
-                         (point_two[1] - point_one[1])**2 +
-                         (point_two[2] - point_one[2])**2)
+        return math.sqrt(
+            (point_two[0] - point_one[0]) ** 2
+            + (point_two[1] - point_one[1]) ** 2
+            + (point_two[2] - point_one[2]) ** 2
+        )
 
     @staticmethod
     def _values_match(value, list_of_values):
@@ -6939,31 +7336,34 @@ 

Source code for exomerge

                 for index in slaves:
                     if index in duplicated_slave_nodes:
                         problem_groups[master] = slaves
-            groups = '\n  '.join(
-                str(x) + ': ' + str(y)
-                for x, y in list(problem_groups.items()))
+            groups = "\n  ".join(
+                str(x) + ": " + str(y) for x, y in list(problem_groups.items())
+            )
             self._bug(
-                'Invalid merged node groups.',
-                'Slaves nodes were found in multiple merged groups.  '
-                'Conflicting merged node groups:\n  %s' % (groups))
+                "Invalid merged node groups.",
+                "Slaves nodes were found in multiple merged groups.  "
+                "Conflicting merged node groups:\n  %s" % (groups),
+            )
         # ensure validity of input
         # slave nodes are not repeated
         # master nodes are never slave nodes
         master_nodes = sorted(node_groups.keys())
-        slave_nodes = sorted(list(
-            itertools.chain(*list(node_groups.values()))))
+        slave_nodes = sorted(list(itertools.chain(*list(node_groups.values()))))
         slave_nodes_set = set(slave_nodes)
         # ensure master nodes are not slave nodes
         for master in master_nodes:
             if master in slave_nodes_set:
                 self._bug(
-                    'Invalid merged node groups.',
-                    'The master node %d is also found in a slave node '
-                    'group.' % (master))
+                    "Invalid merged node groups.",
+                    "The master node %d is also found in a slave node "
+                    "group." % (master),
+                )
         # ensure slave nodes are not in multiple groups
         if not sorted(slave_nodes_set) == slave_nodes:
-            self._bug('Invalid merged node groups.',
-                      'Slave nodes are duplicated in multiple groups.')
+            self._bug(
+                "Invalid merged node groups.",
+                "Slave nodes are duplicated in multiple groups.",
+            )
         # First, remap all nodes such that slave nodes appear at the very
         # end.
         next_master_index = 0
@@ -6975,8 +7375,7 @@ 

Source code for exomerge

             if slave_node != index:
                 count = slave_node - index
                 assert count > 0
-                node_map.extend(
-                    range(next_master_index, next_master_index + count))
+                node_map.extend(range(next_master_index, next_master_index + count))
                 index += count
                 next_master_index += count
             node_map.append(next_slave_index)
@@ -6993,8 +7392,10 @@ 

Source code for exomerge

         # apply this node map
         self._apply_node_map(node_map)
         # apply the mapping to node_groups
-        node_groups = dict((node_map[key], [node_map[x] for x in values])
-                           for key, values in list(node_groups.items()))
+        node_groups = dict(
+            (node_map[key], [node_map[x] for x in values])
+            for key, values in list(node_groups.items())
+        )
         for master, slaves in list(node_groups.items()):
             assert master < first_slave_index
             assert min(slaves) >= first_slave_index
@@ -7015,19 +7416,20 @@ 

Source code for exomerge

                     master_value = values[master]
                     slave_values = [values[x] for x in slaves]
                     if not self._values_match(master_value, slave_values):
-                        if (not node_field_value_warnings
-                                and not suppress_warnings):
+                        if not node_field_value_warnings and not suppress_warnings:
                             self._warning(
-                                'Node field values do not match.',
-                                'Nodes are being merged but values at these '
+                                "Node field values do not match.",
+                                "Nodes are being merged but values at these "
                                 'nodes for node field "%s" do not match.  An '
-                                'averaged value will be used.\n'
-                                '\n'
-                                'Future warnings of this type will be '
-                                'suppressed.' % (name))
+                                "averaged value will be used.\n"
+                                "\n"
+                                "Future warnings of this type will be "
+                                "suppressed." % (name),
+                            )
                         node_field_value_warnings += 1
-                        values[master] = (values[master] + sum(slave_values)
-                                          ) / float(1 + len(slaves))
+                        values[master] = (values[master] + sum(slave_values)) / float(
+                            1 + len(slaves)
+                        )
                 del values[first_slave_index:]
         # change self.node_sets
         node_set_member_warnings = 0
@@ -7052,13 +7454,14 @@ 

Source code for exomerge

                 if not master_included or slaves_not_included:
                     if not node_set_member_warnings and not suppress_warnings:
                         self._warning(
-                            'Ambiguous merge of nodes.',
-                            'Node are being merged, but only some of these '
-                            'nodes belong to a given node set.  The operation '
-                            'is therefore ambiguous on whether or not to '
-                            'include the merged node in the set.  The merged '
-                            'node will be included in the set.\n\nFuture '
-                            'warnings of this type will be suppressed.')
+                            "Ambiguous merge of nodes.",
+                            "Node are being merged, but only some of these "
+                            "nodes belong to a given node set.  The operation "
+                            "is therefore ambiguous on whether or not to "
+                            "include the merged node in the set.  The merged "
+                            "node will be included in the set.\n\nFuture "
+                            "warnings of this type will be suppressed.",
+                        )
                     node_set_member_warnings += 1
                 # if master node is not included, steal the position of a
                 # slave node
@@ -7076,20 +7479,20 @@ 

Source code for exomerge

                 for name, all_values in list(fields.items()):
                     for values in all_values:
                         slave_values = [values[x] for x in slave_indices]
-                        if not self._values_match(values[master_index],
-                                                  slave_values):
-                            if (not node_set_value_warnings
-                                    and not suppress_warnings):
+                        if not self._values_match(values[master_index], slave_values):
+                            if not node_set_value_warnings and not suppress_warnings:
                                 self._warning(
-                                    'Node set field values do not match.',
-                                    'Nodes are being merged but values at '
-                                    'these nodes for node set field %s do '
-                                    'not match.  An averaged values will '
-                                    'be used.\n\nFuture warnings of this '
-                                    'type will be suppressed.' % (name))
+                                    "Node set field values do not match.",
+                                    "Nodes are being merged but values at "
+                                    "these nodes for node set field %s do "
+                                    "not match.  An averaged values will "
+                                    "be used.\n\nFuture warnings of this "
+                                    "type will be suppressed." % (name),
+                                )
                             node_set_value_warnings += 1
-                        new_value = (values[master_index] + sum(slave_values)
-                                     ) / float(1 + len(slave_indices))
+                        new_value = (values[master_index] + sum(slave_values)) / float(
+                            1 + len(slave_indices)
+                        )
                         values[master_index] = new_value
             # delete slave members
             for index in sorted(member_indices_to_delete, reverse=True):
@@ -7139,7 +7542,7 @@ 

Source code for exomerge

             group_to_merge[master] = sorted(set(group) - set([master]))
         self._merge_node_groups(group_to_merge)
 
-
[docs] def delete_duplicate_elements(self, element_block_ids='all'): +
[docs] def delete_duplicate_elements(self, element_block_ids="all"): """ Delete duplicate elements. @@ -7147,8 +7550,7 @@

Source code for exomerge

         all of its nodes with another element.
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         # go through each block and delete elements
         for id_ in element_block_ids:
             nodes_per_element = self.get_nodes_per_element(id_)
@@ -7160,7 +7562,7 @@ 

Source code for exomerge

             duplicates = []
             for x in range(0, element_count):
                 start = x * nodes_per_element
-                element = set(connectivity[start:start + nodes_per_element])
+                element = set(connectivity[start: start + nodes_per_element])
                 element = tuple(sorted(element))
                 if element in elements:
                     duplicates.append(x)
@@ -7192,25 +7594,32 @@ 

Source code for exomerge

         scale = math.sqrt(sum([x * x for x in sorting_vector]))
         sorting_vector = [x / scale for x in sorting_vector]
         # create a list of node indices sorted by distance along that vector
-        sorted_nodal_distances = sorted([(self._dot(x, sorting_vector), i)
-                                         for i, x in enumerate(self.nodes)])
+        sorted_nodal_distances = sorted(
+            [(self._dot(x, sorting_vector), i) for i, x in enumerate(self.nodes)]
+        )
         # go through the list to find node groups
         node_count = len(self.nodes)
         lower_index = 0
         upper_index = 1
         master_nodes = list(range(len(self.nodes)))
         while lower_index < node_count:
-            if (upper_index >= node_count
-                    or sorted_nodal_distances[upper_index][0] -
-                    sorted_nodal_distances[lower_index][0] > tolerance):
+            if (
+                upper_index >= node_count
+                or sorted_nodal_distances[upper_index][0]
+                - sorted_nodal_distances[lower_index][0]
+                > tolerance
+            ):
                 lower_index += 1
                 upper_index = lower_index + 1
                 continue
             lower_element = sorted_nodal_distances[lower_index]
             upper_element = sorted_nodal_distances[upper_index]
-            if self._distance_between(
-                    self.nodes[lower_element[1]],
-                    self.nodes[upper_element[1]]) <= tolerance:
+            if (
+                self._distance_between(
+                    self.nodes[lower_element[1]], self.nodes[upper_element[1]]
+                )
+                <= tolerance
+            ):
                 one, two = sorted([lower_element[1], upper_element[1]])
                 master_nodes[two] = one
             upper_index += 1
@@ -7227,10 +7636,9 @@ 

Source code for exomerge

         # return the result
         return close_node_groups
 
-
[docs] def merge_nodes(self, - tolerance=1e-6, - relative_tolerance=True, - suppress_warnings=False): +
[docs] def merge_nodes( + self, tolerance=1e-6, relative_tolerance=True, suppress_warnings=False + ): """ Merge nodes that are closer than the given tolerance. @@ -7251,8 +7659,7 @@

Source code for exomerge

         # find the node groups
         close_node_groups = self._find_close_nodes(tolerance)
         # merge these node groups
-        self._merge_node_groups(close_node_groups,
-                                suppress_warnings=suppress_warnings)
+ self._merge_node_groups(close_node_groups, suppress_warnings=suppress_warnings)
def _duplicate_nodes(self, node_indices, new_node_indices): """ @@ -7263,8 +7670,9 @@

Source code for exomerge

         the node set.
 
         """
-        new_node_indices[:] = range(len(self.nodes),
-                                    len(self.nodes) + len(node_indices))
+        new_node_indices[:] = range(
+            len(self.nodes), len(self.nodes) + len(node_indices)
+        )
         # update self.nodes
         new_nodes = [list(self.nodes[x]) for x in node_indices]
         self.create_nodes(new_nodes)
@@ -7300,8 +7708,8 @@ 

Source code for exomerge

         """
         first_node_index = len(self.nodes)
         new_node_indices[:] = list(
-            range(len(self.nodes),
-                  len(self.nodes) + len(node_indices)))
+            range(len(self.nodes), len(self.nodes) + len(node_indices))
+        )
         # format node_indices such that each value is of the given form:
         # ((index, weight), (index2, weight2), ...)
         new_node_indices = []
@@ -7323,16 +7731,16 @@ 

Source code for exomerge

             total = sum(x[1] for x in index_list)
             if abs(total - 1.0) > 1e-14:
                 self._bug(
-                    'Incorrect weights.',
-                    'The given node averaging weights do not add up '
-                    'to 1.')
+                    "Incorrect weights.",
+                    "The given node averaging weights do not add up " "to 1.",
+                )
         # create the new nodes
         first_new_node_index = len(self.nodes)
         new_nodes = []
         for index_list in node_indices:
             this_new_node = [
-                sum(weight * self.nodes[index][d]
-                    for index, weight in index_list) for d in range(3)
+                sum(weight * self.nodes[index][d] for index, weight in index_list)
+                for d in range(3)
             ]
             new_nodes.append(this_new_node)
         self.create_nodes(new_nodes)
@@ -7350,8 +7758,8 @@ 

Source code for exomerge

             fields = self._get_node_set_fields(node_set_id)
             members_set = set(members)
             index_from_member_index = dict(
-                (node_index, index)
-                for index, node_index in enumerate(members))
+                (node_index, index) for index, node_index in enumerate(members)
+            )
             for node_index, index_list in enumerate(node_indices):
                 check = set(x in members_set for x, _ in index_list)
                 if False in check:
@@ -7361,12 +7769,13 @@ 

Source code for exomerge

                 # and calculate its value for all fields
                 for all_values in list(fields.values()):
                     for values in all_values:
-                        new_value = sum(weight *
-                                        values[index_from_member_index[index]]
-                                        for index, weight in index_list)
+                        new_value = sum(
+                            weight * values[index_from_member_index[index]]
+                            for index, weight in index_list
+                        )
                         values.append(new_value)
 
-
[docs] def unmerge_element_blocks(self, element_block_ids='all'): +
[docs] def unmerge_element_blocks(self, element_block_ids="all"): """ Duplicate nodes to unmerge element blocks. @@ -7381,8 +7790,7 @@

Source code for exomerge

         >>> model.unmerge_element_blocks()
 
         """
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         if len(element_block_ids) <= 1:
             return
         # Separate each pair of blocks.  Keep nodes on block id1 the same and
@@ -7392,7 +7800,8 @@ 

Source code for exomerge

         for id1, id2 in itertools.combinations(element_block_ids, 2):
             shared_nodes_set = set.intersection(
                 set(self.get_nodes_in_element_block(id1)),
-                set(self.get_nodes_in_element_block(id2)))
+                set(self.get_nodes_in_element_block(id2)),
+            )
             shared_nodes = sorted(shared_nodes_set)
             if not shared_nodes:
                 continue
@@ -7405,24 +7814,28 @@ 

Source code for exomerge

             connectivity = self.get_connectivity(id2)
             for index, node_index in enumerate(connectivity):
                 if node_index in shared_nodes_set:
-                    connectivity[index] = new_shared_nodes[shared_nodes.index(
-                        node_index)]
+                    connectivity[index] = new_shared_nodes[
+                        shared_nodes.index(node_index)
+                    ]
             # blocks should no longer share nodes
             assert not set.intersection(
                 set(self.get_nodes_in_element_block(id1)),
-                set(self.get_nodes_in_element_block(id2)))
- -
[docs] def import_model(self, - filename, - element_block_ids='all', - timesteps='all', - node_field_names='all', - element_field_names='all', - side_set_ids='all', - node_set_ids='all', - global_variable_names='all', - node_set_field_names='all', - side_set_field_names='all'): + set(self.get_nodes_in_element_block(id2)), + )
+ +
[docs] def import_model( + self, + filename, + element_block_ids="all", + timesteps="all", + node_field_names="all", + element_field_names="all", + side_set_ids="all", + node_set_ids="all", + global_variable_names="all", + node_set_field_names="all", + side_set_field_names="all", + ): """ Import information from an ExodusII file. @@ -7449,73 +7862,76 @@

Source code for exomerge

         """
         # open the file for read
         if not os.path.isfile(filename):
-            self._error('File not found',
-                        'The specified file "%s" was not found.' % filename)
+            self._error(
+                "File not found", 'The specified file "%s" was not found.' % filename
+            )
         if SUPPRESS_EXODUS_OUTPUT:
             save_stdout = sys.stdout
             sys.stdout = DummyFile()
-        exodus_file = exodus.exodus(filename, mode='r')
+        exodus_file = exodus.exodus(filename, mode="r")
         if SUPPRESS_EXODUS_OUTPUT:
             sys.stdout = save_stdout
         # format timesteps to retrieve
         file_timesteps = list(exodus_file.get_times())
-        if timesteps == 'last_if_any':
+        if timesteps == "last_if_any":
             if file_timesteps:
-                timesteps = 'last'
+                timesteps = "last"
             else:
-                timesteps = 'none'
-        timesteps = self._format_id_list(timesteps, file_timesteps, 'timestep')
+                timesteps = "none"
+        timesteps = self._format_id_list(timesteps, file_timesteps, "timestep")
         # format block id list
         file_element_block_ids = list(exodus_file.get_elem_blk_ids())
         file_element_block_names = []
         if file_element_block_ids:
             file_element_block_names = list(exodus_file.get_elem_blk_names())
         element_block_ids = self._format_id_list(
-            element_block_ids, sorted(file_element_block_ids), 'element block')
+            element_block_ids, sorted(file_element_block_ids), "element block"
+        )
         # format other id lists
         node_field_names = self._format_id_list(
             node_field_names,
-            sorted(list(exodus_file.get_node_variable_names())), 'node field')
-        file_element_field_names = list(
-            exodus_file.get_element_variable_names())
+            sorted(list(exodus_file.get_node_variable_names())),
+            "node field",
+        )
+        file_element_field_names = list(exodus_file.get_element_variable_names())
         element_field_names = self._format_id_list(
-            element_field_names, sorted(file_element_field_names),
-            'element field')
+            element_field_names, sorted(file_element_field_names), "element field"
+        )
         file_side_set_ids = list(exodus_file.get_side_set_ids())
         file_side_set_names = []
         if file_side_set_ids:
             file_side_set_names = list(exodus_file.get_side_set_names())
-        side_set_ids = self._format_id_list(side_set_ids,
-                                            sorted(file_side_set_ids),
-                                            'side set')
+        side_set_ids = self._format_id_list(
+            side_set_ids, sorted(file_side_set_ids), "side set"
+        )
         file_node_set_ids = list(exodus_file.get_node_set_ids())
         file_node_set_names = []
         if file_node_set_ids:
             file_node_set_names = list(exodus_file.get_node_set_names())
-        node_set_ids = self._format_id_list(node_set_ids,
-                                            sorted(file_node_set_ids),
-                                            'node set')
+        node_set_ids = self._format_id_list(
+            node_set_ids, sorted(file_node_set_ids), "node set"
+        )
         global_variable_names = self._format_id_list(
             global_variable_names,
             sorted(list(exodus_file.get_global_variable_names())),
-            'global variable')
-        file_node_set_field_names = list(
-            exodus_file.get_node_set_variable_names())
+            "global variable",
+        )
+        file_node_set_field_names = list(exodus_file.get_node_set_variable_names())
         node_set_field_names = self._format_id_list(
-            node_set_field_names, sorted(file_node_set_field_names),
-            'node set field')
-        file_side_set_field_names = list(
-            exodus_file.get_side_set_variable_names())
+            node_set_field_names, sorted(file_node_set_field_names), "node set field"
+        )
+        file_side_set_field_names = list(exodus_file.get_side_set_variable_names())
         side_set_field_names = self._format_id_list(
-            side_set_field_names, sorted(file_side_set_field_names),
-            'node set field')
+            side_set_field_names, sorted(file_side_set_field_names), "node set field"
+        )
         # ensure element blocks in this file do not already exist
         for element_block_id in element_block_ids:
             if self.element_block_exists(element_block_id):
                 self._error(
-                    'Element block already exists.',
-                    'Cannot import element block \"%d\" since it already '
-                    'exists in the model.' % element_block_id)
+                    "Element block already exists.",
+                    'Cannot import element block "%d" since it already '
+                    "exists in the model." % element_block_id,
+                )
         # create new nodes used in this file
         node_offset = len(self.nodes)
         # store nodes we are going to import
@@ -7530,8 +7946,7 @@ 

Source code for exomerge

             new_used_nodes = [False] * exodus_file.num_nodes()
             # add nodes in blocks we are importing
             for element_block_id in element_block_ids:
-                connectivity = exodus_file.get_elem_connectivity(
-                    element_block_id)[0]
+                connectivity = exodus_file.get_elem_connectivity(element_block_id)[0]
                 for i in connectivity:
                     new_used_nodes[i - 1] = True
             # save indices for nodes we want to import
@@ -7568,17 +7983,20 @@ 

Source code for exomerge

         # create new element blocks
         for element_block_id in element_block_ids:
             new_connectivity = list(
-                exodus_file.get_elem_connectivity(element_block_id))[0]
+                exodus_file.get_elem_connectivity(element_block_id)
+            )[0]
             # apply node map
             new_connectivity = [node_map[x] for x in new_connectivity]
             # get the element block name
             element_block_name = file_element_block_names[
-                file_element_block_ids.index(element_block_id)]
+                file_element_block_ids.index(element_block_id)
+            ]
             # create the element block
             self.create_element_block(
                 element_block_id,
                 list(exodus_file.elem_blk_info(element_block_id)),
-                connectivity=new_connectivity)
+                connectivity=new_connectivity,
+            )
             if element_block_name:
                 self.rename_element_block(element_block_id, element_block_name)
         # get indices of each timestep and create new timesteps
@@ -7591,8 +8009,11 @@ 

Source code for exomerge

             else:
                 duplicate_timesteps = True
             timestep_indices.append(
-                (file_timesteps.index(timestep) + 1,
-                 self._get_internal_timestep_index(timestep)))
+                (
+                    file_timesteps.index(timestep) + 1,
+                    self._get_internal_timestep_index(timestep),
+                )
+            )
         # get list of timestep indices present in the model but not included
         # in the import
         included_timestep_indices = [x[1] for x in timestep_indices]
@@ -7609,9 +8030,10 @@ 

Source code for exomerge

             for timestep_index in timestep_indices:
                 file_node_field_values = list(
                     exodus_file.get_node_variable_values(
-                        node_field_name, timestep_index[0]))
-                model_values = self.node_fields[node_field_name][
-                    timestep_index[1]]
+                        node_field_name, timestep_index[0]
+                    )
+                )
+                model_values = self.node_fields[node_field_name][timestep_index[1]]
                 for i in new_used_nodes:
                     model_values[node_map[i]] = file_node_field_values[i - 1]
         # populate node sets
@@ -7627,8 +8049,7 @@ 

Source code for exomerge

                 self.create_node_set(node_set_id, model_node_set_members)
             else:
                 self.add_nodes_to_node_set(node_set_id, model_node_set_members)
-            node_set_name = file_node_set_names[file_node_set_ids.index(
-                node_set_id)]
+            node_set_name = file_node_set_names[file_node_set_ids.index(node_set_id)]
             if node_set_name:
                 self.rename_node_set(node_set_id, node_set_name)
         # populate side sets
@@ -7639,16 +8060,18 @@ 

Source code for exomerge

             for element_index, side_number in zip(*file_side_set_members):
                 if file_block_from_element[element_index] is not None:
                     model_side_set_members.append(
-                        (file_block_from_element[element_index],
-                         file_index_from_element[element_index],
-                         side_number - 1))
+                        (
+                            file_block_from_element[element_index],
+                            file_index_from_element[element_index],
+                            side_number - 1,
+                        )
+                    )
             # create the side set or add to an existing set
             if not self.side_set_exists(side_set_id):
                 self.create_side_set(side_set_id, model_side_set_members)
             else:
                 self.add_faces_to_side_set(side_set_id, model_side_set_members)
-            side_set_name = file_side_set_names[file_side_set_ids.index(
-                side_set_id)]
+            side_set_name = file_side_set_names[file_side_set_ids.index(side_set_id)]
             if side_set_name:
                 self.rename_side_set(side_set_id, side_set_name)
         # store truth table for node set field info
@@ -7656,15 +8079,15 @@ 

Source code for exomerge

             file_node_set_truth_table = []
             for file_node_set_id in file_node_set_ids:
                 file_node_set_truth_table.append(
-                    exodus_file.get_node_set_variable_truth_table(
-                        file_node_set_id))
+                    exodus_file.get_node_set_variable_truth_table(file_node_set_id)
+                )
         # populate node set fields
         for node_set_field_name in node_set_field_names:
             for node_set_id in node_set_ids:
                 # don't process if field does not exist in file
                 field_exists = file_node_set_truth_table[
-                    file_node_set_ids.index(node_set_id)][
-                        file_node_set_field_names.index(node_set_field_name)]
+                    file_node_set_ids.index(node_set_id)
+                ][file_node_set_field_names.index(node_set_field_name)]
                 if not field_exists:
                     continue
                 # process each included timestep
@@ -7672,13 +8095,13 @@ 

Source code for exomerge

                 for timestep_index in timestep_indices:
                     file_values = list(
                         exodus_file.get_node_set_variable_values(
-                            node_set_id, node_set_field_name,
-                            timestep_index[0]))
+                            node_set_id, node_set_field_name, timestep_index[0]
+                        )
+                    )
                     model_values[timestep_index[1]] = file_values
                 # add default field value to excluded timestep
                 for timestep_index in excluded_timestep_indices:
-                    default_value = self._get_default_field_value(
-                        node_set_field_name)
+                    default_value = self._get_default_field_value(node_set_field_name)
                     node_count = len(self.get_node_set_members(node_set_id))
                     field = [default_value] * node_count
                     model_values[timestep_index] = field
@@ -7690,15 +8113,15 @@ 

Source code for exomerge

             file_side_set_truth_table = []
             for file_side_set_id in file_side_set_ids:
                 file_side_set_truth_table.append(
-                    exodus_file.get_side_set_variable_truth_table(
-                        file_side_set_id))
+                    exodus_file.get_side_set_variable_truth_table(file_side_set_id)
+                )
         # populate side set fields
         for side_set_field_name in side_set_field_names:
             for side_set_id in side_set_ids:
                 # don't process if field does not exist in file
                 field_exists = file_side_set_truth_table[
-                    file_side_set_ids.index(side_set_id)][
-                        file_side_set_field_names.index(side_set_field_name)]
+                    file_side_set_ids.index(side_set_id)
+                ][file_side_set_field_names.index(side_set_field_name)]
                 if not field_exists:
                     continue
                 # process each included timestep
@@ -7706,13 +8129,13 @@ 

Source code for exomerge

                 for timestep_index in timestep_indices:
                     file_values = list(
                         exodus_file.get_side_set_variable_values(
-                            side_set_id, side_set_field_name,
-                            timestep_index[0]))
+                            side_set_id, side_set_field_name, timestep_index[0]
+                        )
+                    )
                     model_values[timestep_index[1]] = file_values
                 # add default field value to excluded timestep
                 for timestep_index in excluded_timestep_indices:
-                    default_value = self._get_default_field_value(
-                        side_set_field_name)
+                    default_value = self._get_default_field_value(side_set_field_name)
                     side_count = len(self.get_side_set_members(side_set_id))
                     field = [default_value] * side_count
                     model_values[timestep_index] = field
@@ -7724,15 +8147,15 @@ 

Source code for exomerge

             file_truth_table = []
             for file_element_block_id in file_element_block_ids:
                 file_truth_table.append(
-                    exodus_file.get_element_variable_truth_table(
-                        file_element_block_id))
+                    exodus_file.get_element_variable_truth_table(file_element_block_id)
+                )
         # populate element fields
         for element_field_name in element_field_names:
             for element_block_id in element_block_ids:
                 # don't process if field does not exist in file
-                field_exists = file_truth_table[file_element_block_ids.index(
-                    element_block_id)][file_element_field_names.index(
-                        element_field_name)]
+                field_exists = file_truth_table[
+                    file_element_block_ids.index(element_block_id)
+                ][file_element_field_names.index(element_field_name)]
                 if not field_exists:
                     continue
                 # process each included timestep
@@ -7740,13 +8163,13 @@ 

Source code for exomerge

                 for timestep_index in timestep_indices:
                     file_values = list(
                         exodus_file.get_element_variable_values(
-                            element_block_id, element_field_name,
-                            timestep_index[0]))
+                            element_block_id, element_field_name, timestep_index[0]
+                        )
+                    )
                     model_values[timestep_index[1]] = file_values
                 # add default field value to excluded timestep
                 for timestep_index in excluded_timestep_indices:
-                    default_value = self._get_default_field_value(
-                        element_field_name)
+                    default_value = self._get_default_field_value(element_field_name)
                     element_count = self.get_element_count(element_block_id)
                     field = [default_value] * element_count
                     model_values[timestep_index] = field
@@ -7760,29 +8183,28 @@ 

Source code for exomerge

                 self.create_global_variable(global_variable_name)
             else:
                 if duplicate_timesteps:
-                    self._exists_warning(global_variable_name,
-                                         'global variable')
+                    self._exists_warning(global_variable_name, "global variable")
             # get values
             model_values = self.global_variables[global_variable_name]
             for timestep_index in timestep_indices:
                 file_value = exodus_file.get_global_variable_value(
-                    global_variable_name, timestep_index[0])
+                    global_variable_name, timestep_index[0]
+                )
                 model_values[timestep_index[1]] = file_value
         # add info records
-        if (exodus_file.num_info_records() > 0):
+        if exodus_file.num_info_records() > 0:
             self.info_records += exodus_file.get_info_records()
         # add qa records
-        if (exodus_file.num_qa_records() > 0):
+        if exodus_file.num_qa_records() > 0:
             self.qa_records += exodus_file.get_qa_records()
         # add title if one does not already exist
         # else add it to an info record
         if not self.title:
             self.title = exodus_file.title()
         else:
-            self.info_records.append('Discarded title from the '
-                                     'following file:')
+            self.info_records.append("Discarded title from the " "following file:")
             # split filename string if filename is larger than 79 characters
-            filename_wrap_list = textwrap.fill(filename, width=79).split('\n')
+            filename_wrap_list = textwrap.fill(filename, width=79).split("\n")
             # append interpreter continuation char "\\" to end of continuation line while splitting
             for i in range(len(filename_wrap_list) - 1):
                 filename_wrap_list[i] += "\\"
@@ -7799,17 +8221,19 @@ 

Source code for exomerge

         if SUPPRESS_EXODUS_OUTPUT:
             sys.stdout = save_stdout
-
[docs] def export_model(self, - filename='output_exomerge.e', - element_block_ids='all', - timesteps='all', - side_set_ids='all', - node_set_ids='all', - global_variable_names='auto', - node_field_names='auto', - element_field_names='auto', - side_set_field_names='auto', - node_set_field_names='auto'): +
[docs] def export_model( + self, + filename="output_exomerge.e", + element_block_ids="all", + timesteps="all", + side_set_ids="all", + node_set_ids="all", + global_variable_names="auto", + node_field_names="auto", + element_field_names="auto", + side_set_field_names="auto", + node_set_field_names="auto", + ): """ Export the current model to an ExodusII file. @@ -7820,78 +8244,81 @@

Source code for exomerge

         # verify information is valid
         self._verify()
         # format subset of data to export
-        element_block_ids = self._format_element_block_id_list(
-            element_block_ids)
+        element_block_ids = self._format_element_block_id_list(element_block_ids)
         side_set_ids = self._format_side_set_id_list(side_set_ids)
         node_set_ids = self._format_node_set_id_list(node_set_ids)
-        timesteps = self._format_id_list(timesteps, self.get_timesteps(),
-                                         'timestep')
+        timesteps = self._format_id_list(timesteps, self.get_timesteps(), "timestep")
         # If no timesteps are exported, or if no nodes are defined, then no
         # fields can be exported.
-        if element_field_names == 'auto':
+        if element_field_names == "auto":
             if timesteps:
-                element_field_names = self.get_element_field_names(
-                    element_block_ids)
+                element_field_names = self.get_element_field_names(element_block_ids)
             else:
-                element_field_names = 'none'
-        if global_variable_names == 'auto':
+                element_field_names = "none"
+        if global_variable_names == "auto":
             if timesteps:
-                global_variable_names = 'all'
+                global_variable_names = "all"
             else:
-                global_variable_names = 'none'
-        if node_field_names == 'auto':
+                global_variable_names = "none"
+        if node_field_names == "auto":
             if timesteps and self.nodes:
-                node_field_names = 'all'
+                node_field_names = "all"
             else:
-                node_field_names = 'none'
-        if node_set_field_names == 'auto':
+                node_field_names = "none"
+        if node_set_field_names == "auto":
             if timesteps and self.nodes:
-                node_set_field_names = self.get_node_set_field_names(
-                    node_set_ids)
+                node_set_field_names = self.get_node_set_field_names(node_set_ids)
             else:
-                node_set_field_names = 'none'
-        if side_set_field_names == 'auto':
+                node_set_field_names = "none"
+        if side_set_field_names == "auto":
             if timesteps:
-                side_set_field_names = self.get_side_set_field_names(
-                    side_set_ids)
+                side_set_field_names = self.get_side_set_field_names(side_set_ids)
             else:
-                side_set_field_names = 'none'
+                side_set_field_names = "none"
         # format each list
         global_variable_names = self._format_id_list(
-            global_variable_names, self.get_global_variable_names(),
-            'global variable')
+            global_variable_names, self.get_global_variable_names(), "global variable"
+        )
         element_field_names = self._format_id_list(
-            element_field_names, self.get_element_field_names(),
-            'element field')
-        node_field_names = self._format_id_list(node_field_names,
-                                                self.get_node_field_names(),
-                                                'node field')
+            element_field_names, self.get_element_field_names(), "element field"
+        )
+        node_field_names = self._format_id_list(
+            node_field_names, self.get_node_field_names(), "node field"
+        )
         node_set_field_names = self._format_id_list(
-            node_set_field_names, self.get_node_set_field_names(),
-            'node set field')
+            node_set_field_names, self.get_node_set_field_names(), "node set field"
+        )
         side_set_field_names = self._format_id_list(
-            side_set_field_names, self.get_side_set_field_names(),
-            'side set field')
+            side_set_field_names, self.get_side_set_field_names(), "side set field"
+        )
         # delete the file if it exists
         if os.path.isfile(filename):
             os.remove(filename)
         # create file
-        if self.title == '':
-            self.title = '<no title supplied>'
+        if self.title == "":
+            self.title = "<no title supplied>"
 
         if SUPPRESS_EXODUS_OUTPUT:
             save_stdout = sys.stdout
             sys.stdout = DummyFile()
-        new_file = exodus.exodus(filename, 'w', 'ctype', self.title, 3,
-                                 len(self.nodes),
-                                 self.get_element_count(element_block_ids),
-                                 len(element_block_ids), len(node_set_ids),
-                                 len(side_set_ids))
+        new_file = exodus.exodus(
+            filename,
+            "w",
+            "ctype",
+            self.title,
+            3,
+            len(self.nodes),
+            self.get_element_count(element_block_ids),
+            len(element_block_ids),
+            len(node_set_ids),
+            len(side_set_ids),
+        )
         if SUPPRESS_EXODUS_OUTPUT:
             sys.stdout = save_stdout
         # put timesteps into chronological order
-        timestep_indices = [(self.timesteps.index(x), index + 1)
-                            for index, x in enumerate(timesteps)]
+        timestep_indices = [
+            (self.timesteps.index(x), index + 1) for index, x in enumerate(timesteps)
+        ]
         # write times
         for index, timestep in enumerate(timesteps):
             new_file.put_time(index + 1, timestep)
@@ -7901,20 +8328,24 @@ 

Source code for exomerge

             new_file.put_global_variable_name(name, index + 1)
             values = self.global_variables[name]
             for timestep_index in timestep_indices:
-                new_file.put_global_variable_value(name, timestep_index[1],
-                                                   values[timestep_index[0]])
+                new_file.put_global_variable_value(
+                    name, timestep_index[1], values[timestep_index[0]]
+                )
         # write nodes
-        new_file.put_coords([x[0] for x in self.nodes],
-                            [x[1] for x in self.nodes],
-                            [x[2] for x in self.nodes])
+        new_file.put_coords(
+            [x[0] for x in self.nodes],
+            [x[1] for x in self.nodes],
+            [x[2] for x in self.nodes],
+        )
         # write node fields
         new_file.set_node_variable_number(len(node_field_names))
         for index, name in enumerate(node_field_names):
             new_file.put_node_variable_name(name, index + 1)
             values = self.node_fields[name]
             for timestep_index in timestep_indices:
-                new_file.put_node_variable_values(name, timestep_index[1],
-                                                  values[timestep_index[0]])
+                new_file.put_node_variable_values(
+                    name, timestep_index[1], values[timestep_index[0]]
+                )
         # write element blocks
         for id_ in element_block_ids:
             name, info, connectivity, fields = self.element_blocks[id_]
@@ -7930,7 +8361,8 @@ 

Source code for exomerge

             new_file.put_element_variable_name(name, index + 1)
         if element_field_names:
             truth_table = self._create_element_field_truth_table(
-                element_block_ids, element_field_names)
+                element_block_ids, element_field_names
+            )
             new_file.set_element_variable_truth_table(truth_table)
         for block_id in element_block_ids:
             fields = self._get_element_block_fields(block_id)
@@ -7940,17 +8372,15 @@ 

Source code for exomerge

                 field = fields[name]
                 for timestep_index in timestep_indices:
                     new_file.put_element_variable_values(
-                        block_id, name, timestep_index[1],
-                        field[timestep_index[0]])
+                        block_id, name, timestep_index[1], field[timestep_index[0]]
+                    )
         # get first element in each block
-        element_count = [
-            self.get_element_count(id_) for id_ in element_block_ids
-        ]
-        first_element = [
-            sum(element_count[:i]) + 1 for i in range(len(element_count))
-        ]
-        first_element = dict((element_block_ids[i], first_element[i])
-                             for i in range(len(element_block_ids)))
+        element_count = [self.get_element_count(id_) for id_ in element_block_ids]
+        first_element = [sum(element_count[:i]) + 1 for i in range(len(element_count))]
+        first_element = dict(
+            (element_block_ids[i], first_element[i])
+            for i in range(len(element_block_ids))
+        )
         # write side sets
         for id_ in side_set_ids:
             name = self.get_side_set_name(id_)
@@ -7958,8 +8388,7 @@ 

Source code for exomerge

             new_file.put_side_set_params(id_, len(members), 0)
             if members:
                 elements = [
-                    first_element[block_id] + index
-                    for block_id, index, _ in members
+                    first_element[block_id] + index for block_id, index, _ in members
                 ]
                 sides = [x[2] + 1 for x in members]
                 new_file.put_side_set(id_, elements, sides)
@@ -7971,7 +8400,8 @@ 

Source code for exomerge

             new_file.put_side_set_variable_name(name, index + 1)
         if side_set_field_names:
             truth_table = self._create_side_set_field_truth_table(
-                side_set_ids, side_set_field_names)
+                side_set_ids, side_set_field_names
+            )
             new_file.set_side_set_variable_truth_table(truth_table)
         for side_set_id in side_set_ids:
             members = self.get_side_set_members(side_set_id)
@@ -7984,8 +8414,8 @@ 

Source code for exomerge

                 field = fields[name]
                 for timestep_index in timestep_indices:
                     new_file.put_side_set_variable_values(
-                        side_set_id, name, timestep_index[1],
-                        field[timestep_index[0]])
+                        side_set_id, name, timestep_index[1], field[timestep_index[0]]
+                    )
         # write node sets
         for id_ in node_set_ids:
             name = self.get_node_set_name(id_)
@@ -8003,7 +8433,8 @@ 

Source code for exomerge

             new_file.put_node_set_variable_name(name, index + 1)
         if node_set_field_names:
             truth_table = self._create_node_set_field_truth_table(
-                node_set_ids, node_set_field_names)
+                node_set_ids, node_set_field_names
+            )
             new_file.set_node_set_variable_truth_table(truth_table)
         for node_set_id in node_set_ids:
             members = self.get_node_set_members(node_set_id)
@@ -8016,8 +8447,8 @@ 

Source code for exomerge

                 field = fields[name]
                 for timestep_index in timestep_indices:
                     new_file.put_node_set_variable_values(
-                        node_set_id, name, timestep_index[1],
-                        field[timestep_index[0]])
+                        node_set_id, name, timestep_index[1], field[timestep_index[0]]
+                    )
         # write info records
         new_file.put_info_records(self.info_records)
         # write qa records (and append one for this program)
@@ -8058,7 +8489,7 @@ 

Source code for exomerge

         # max phi (for a sphere) is 6^(-1/3) * pi^(-1/6)
         phi = math.pow(volume, 1 / 3.0) / math.pow(area, 1 / 2.0)
         # find a solution, if possible
-        max_alpha = math.pi**(-1.0 / 6) * 6.0**(-1.0 / 3)
+        max_alpha = math.pi ** (-1.0 / 6) * 6.0 ** (-1.0 / 3)
         low = 0.0
         high = max_alpha
         a = 1.0
@@ -8076,9 +8507,9 @@ 

Source code for exomerge

                 low = mid
         # in the case this fails, return NaN
         if low == 0 or high == max_alpha:
-            return float('nan')
+            return float("nan")
         alpha = (low + high) / 2.0
-        height = (volume * 4 * alpha**2 / math.pi)**(1.0 / 3)
+        height = (volume * 4 * alpha**2 / math.pi) ** (1.0 / 3)
         return height
 
     def _calculate_element_block_thickness(self, element_block_ids):
@@ -8091,15 +8522,17 @@ 

Source code for exomerge

 
         """
         element_block_ids = self._format_element_block_id_list(
-            element_block_ids, empty_list_okay=False)
+            element_block_ids, empty_list_okay=False
+        )
         # delete any element blocks which are not of dimension 3
         new_ids = []
         for id_ in element_block_ids:
             if self.get_element_block_dimension(id_) != 3:
                 self._warning(
-                    'Unexpected element block dimension',
-                    'Element blocks used to determine element edge '
-                    'length are expected to be of dimension 3.')
+                    "Unexpected element block dimension",
+                    "Element blocks used to determine element edge "
+                    "length are expected to be of dimension 3.",
+                )
             else:
                 new_ids.append(id_)
         # get the volume
@@ -8113,7 +8546,7 @@ 

Source code for exomerge

         self.delete_side_set(side_set_id)
         return self._get_thickness_from_volume_and_area(volume, area)
 
-
[docs] def get_element_block_extents(self, element_block_ids='all'): +
[docs] def get_element_block_extents(self, element_block_ids="all"): """ Return the extents of the element blocks as a list. @@ -8122,17 +8555,21 @@

Source code for exomerge

 
         """
         element_block_ids = self._format_element_block_id_list(
-            element_block_ids, empty_list_okay=False)
+            element_block_ids, empty_list_okay=False
+        )
         # get a set of all nodes within the given element blocks
         all_nodes = set()
         for id_ in element_block_ids:
             connectivity = self.get_connectivity(id_)
             all_nodes.update(set(connectivity))
         # find the extents of that set
-        extents = [[
-            min(self.nodes[x][d] for x in all_nodes),
-            max(self.nodes[x][d] for x in all_nodes)
-        ] for d in range(3)]
+        extents = [
+            [
+                min(self.nodes[x][d] for x in all_nodes),
+                max(self.nodes[x][d] for x in all_nodes),
+            ]
+            for d in range(3)
+        ]
         return extents
def _create_element_blocks_from_side_sets(self, side_set_ids): @@ -8154,19 +8591,20 @@

Source code for exomerge

             these_members = self._order_element_faces_by_block(members)
             for element_block_id, members in list(these_members.items()):
                 connectivity = self.get_connectivity(element_block_id)
-                nodes_per_element = self.get_nodes_per_element(
-                    element_block_id)
+                nodes_per_element = self.get_nodes_per_element(element_block_id)
                 face_mapping = self._get_face_mapping_from_id(element_block_id)
                 for element_index, face_index in members:
                     face_type = face_mapping[face_index][0]
                     if face_type not in new_elements:
                         new_elements[face_type] = []
-                    local_node = connectivity[element_index *
-                                              nodes_per_element:
-                                              (element_index + 1) *
-                                              nodes_per_element]
+                    local_node = connectivity[
+                        element_index
+                        * nodes_per_element: (element_index + 1)
+                        * nodes_per_element
+                    ]
                     new_elements[face_type].extend(
-                        [local_node[x] for x in face_mapping[face_index][1]])
+                        [local_node[x] for x in face_mapping[face_index][1]]
+                    )
         # now that we have the face elements in a local format, we create
         # the elements
         new_block_ids = []
@@ -8176,7 +8614,9 @@ 

Source code for exomerge

             nodes_per_element = self.NODES_PER_ELEMENT[element_type]
             info = [
                 element_type,
-                len(connectivity) // nodes_per_element, nodes_per_element, 0
+                len(connectivity) // nodes_per_element,
+                nodes_per_element,
+                0,
             ]
             self.create_element_block(new_id, info, connectivity)
             new_block_ids.append(new_id)
@@ -8198,9 +8638,7 @@ 

Source code for exomerge

             return []
         # create a mock element
         elements = dict()
-        elements[element_type] = [
-            list(range(self.NODES_PER_ELEMENT[element_type]))
-        ]
+        elements[element_type] = [list(range(self.NODES_PER_ELEMENT[element_type]))]
         iterations = self._get_dimension(element_type) - 1
         # iterate until dimensions are zero
         for _ in range(iterations):
@@ -8212,7 +8650,8 @@ 

Source code for exomerge

                         new_elements[face_type] = []
                     for local_nodes in connectivities:
                         new_elements[face_type].append(
-                            [local_nodes[x] for x in indices])
+                            [local_nodes[x] for x in indices]
+                        )
             elements = new_elements
         # now find the endpoints using the volume formula
         edges = []
@@ -8226,7 +8665,7 @@ 

Source code for exomerge

         unique_edges = set(tuple(sorted(x)) for x in edges)
         return unique_edges
 
-
[docs] def get_element_edge_length_info(self, element_block_ids='all'): +
[docs] def get_element_edge_length_info(self, element_block_ids="all"): """ Return the minimum and average element edge lengths. @@ -8237,33 +8676,36 @@

Source code for exomerge

 
         """
         element_block_ids = self._format_element_block_id_list(
-            element_block_ids, empty_list_okay=False)
+            element_block_ids, empty_list_okay=False
+        )
         minimum = sys.float_info.max
         total = 0.0
         edge_count = 0
         for element_block_id in element_block_ids:
             # get the edge endpoint info
             endpoints = self._get_element_edge_indices(
-                self._get_element_type(element_block_id))
+                self._get_element_type(element_block_id)
+            )
             # form all element edges
             element_count = self.get_element_count(element_block_id)
             connectivity = self.get_connectivity(element_block_id)
             nodes_per_element = self.get_nodes_per_element(element_block_id)
             edge_count += element_count * len(endpoints)
             for element_index in range(element_count):
-                local_node = connectivity[element_index *
-                                          nodes_per_element:(element_index +
-                                                             1) *
-                                          nodes_per_element]
+                local_node = connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
+                ]
                 for edge in endpoints:
                     this_distance = self._distance_between(
-                        self.nodes[local_node[edge[0]]],
-                        self.nodes[local_node[edge[1]]])
+                        self.nodes[local_node[edge[0]]], self.nodes[local_node[edge[1]]]
+                    )
                     total += this_distance
                     if this_distance < minimum:
                         minimum = this_distance
         if edge_count == 0:
-            return [float('nan')] * 2
+            return [float("nan")] * 2
         return [minimum, total / edge_count]
def _get_closest_point_distance_brute(self, points): @@ -8289,32 +8731,34 @@

Source code for exomerge

         if low == mid or mid == high:
             if trials >= 2:
                 return self._get_closest_point_distance_brute(points)
-            return self._get_closest_point_distance(points,
-                                                    (sorting_coord + 1) % 3,
-                                                    trials + 1)
+            return self._get_closest_point_distance(
+                points, (sorting_coord + 1) % 3, trials + 1
+            )
         # sort into two lists
         low_points = [x for x in points if x[sorting_coord] <= mid]
         high_points = [x for x in points if x[sorting_coord] > mid]
         assert len(low_points) < point_count
         assert len(high_points) < point_count
         # find closest pair within each set
-        dist = min(self._get_closest_point_distance(low_points),
-                   self._get_closest_point_distance(high_points))
+        dist = min(
+            self._get_closest_point_distance(low_points),
+            self._get_closest_point_distance(high_points),
+        )
         del low_points
         del high_points
         # find points sufficiently close to centerline
         mid_low = mid - dist
         mid_high = mid - dist
         mid_points = [
-            x for x in points
+            x
+            for x in points
             if x[sorting_coord] >= mid_low and x[sorting_coord] <= mid_high
         ]
         if len(mid_points) == point_count:
             return self._get_closest_point_distance_brute(points)
         dist = min(
-            dist,
-            self._get_closest_point_distance(mid_points,
-                                             (sorting_coord + 1) % 3))
+            dist, self._get_closest_point_distance(mid_points, (sorting_coord + 1) % 3)
+        )
         return dist
 
 
[docs] def get_closest_node_distance(self): @@ -8331,19 +8775,20 @@

Source code for exomerge

         places.
 
         """
-        argument_string = '%s' % argument
+        argument_string = "%s" % argument
         if len(argument_string) > 50:
-            argument_string = argument_string[:47] + '...'
-        format_string = '%s' % arg_format
+            argument_string = argument_string[:47] + "..."
+        format_string = "%s" % arg_format
         if len(format_string) > 50:
-            format_string = format_string[:47] + '...'
+            format_string = format_string[:47] + "..."
         self._error(
-            'Unexpected argument type',
-            'The argument to a function failed an input check.  This '
-            'is most likely due to passing an invalid argument to '
-            'the function.\n\n'
-            'Argument: %s\n'
-            'Expected type: %s' % (argument_string, format_string))
+            "Unexpected argument type",
+            "The argument to a function failed an input check.  This "
+            "is most likely due to passing an invalid argument to "
+            "the function.\n\n"
+            "Argument: %s\n"
+            "Expected type: %s" % (argument_string, format_string),
+        )
 
     def _input_check(self, argument, arg_format):
         """
@@ -8389,10 +8834,7 @@ 

Source code for exomerge

                 if not isinstance(argument, arg_format[0]):
                     self._input_check_error(argument, arg_format)
 
-
[docs] def build_hex8_cube(self, - element_block_id='auto', - extents=1.0, - divisions=3): +
[docs] def build_hex8_cube(self, element_block_id="auto", extents=1.0, divisions=3): """ Create an element block in the shape of a cuboid. @@ -8408,7 +8850,7 @@

Source code for exomerge

 
         """
         # process shortcuts on arguments
-        if element_block_id == 'auto':
+        if element_block_id == "auto":
             element_block_id = self._new_element_block_id()
         if not isinstance(extents, list):
             self._input_check(extents, [float])
@@ -8451,11 +8893,13 @@ 

Source code for exomerge

         # now create the actual nodes
         self.create_nodes(new_nodes)
         # now create the actual block
-        self.create_element_block(element_block_id,
-                                  ['hex8', dimx * dimy * dimz, 8, 0],
-                                  connectivity=connectivity)
+ self.create_element_block( + element_block_id, + ["hex8", dimx * dimy * dimz, 8, 0], + connectivity=connectivity, + )
-
[docs] def count_degenerate_elements(self, element_block_ids='all'): +
[docs] def count_degenerate_elements(self, element_block_ids="all"): """ Return the number of degenerate elements in the given element blocks. @@ -8464,22 +8908,24 @@

Source code for exomerge

 
         """
         element_block_ids = self._format_element_block_id_list(
-            element_block_ids, empty_list_okay=False)
+            element_block_ids, empty_list_okay=False
+        )
         degenerate_element_count = 0
         for element_block_id in element_block_ids:
             _, _, connectivity, _ = self.element_blocks[element_block_id]
             nodes_per_element = self.get_nodes_per_element(element_block_id)
             element_count = len(connectivity) // nodes_per_element
             for element_index in range(element_count):
-                local_node = connectivity[element_index *
-                                          nodes_per_element:(element_index +
-                                                             1) *
-                                          nodes_per_element]
+                local_node = connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
+                ]
                 if len(set(local_node)) != nodes_per_element:
                     degenerate_element_count += 1
         return degenerate_element_count
-
[docs] def count_disconnected_blocks(self, element_block_ids='all'): +
[docs] def count_disconnected_blocks(self, element_block_ids="all"): """ Return the number of disconnected blocks. @@ -8488,7 +8934,8 @@

Source code for exomerge

 
         """
         element_block_ids = self._format_element_block_id_list(
-            element_block_ids, empty_list_okay=False)
+            element_block_ids, empty_list_okay=False
+        )
         nodes = self.get_nodes_in_element_block(element_block_ids)
         # for each node, find the lowest index node that it's connected to
         master = list(range(len(self.nodes)))
@@ -8497,8 +8944,9 @@ 

Source code for exomerge

             nodes_per_element = self.get_nodes_per_element(element_block_id)
             element_count = self.get_element_count(element_block_id)
             for i in range(element_count):
-                local_node = connectivity[i * nodes_per_element:(i + 1) *
-                                          nodes_per_element]
+                local_node = connectivity[
+                    i * nodes_per_element: (i + 1) * nodes_per_element
+                ]
                 # find lowest index master out of these
                 low = min(local_node)
                 for x in local_node:
@@ -8531,10 +8979,8 @@ 

Source code for exomerge

 
         """
         # order by element block
-        members_one_by_block = self._order_element_faces_by_block(
-            side_set_members_one)
-        members_two_by_block = self._order_element_faces_by_block(
-            side_set_members_two)
+        members_one_by_block = self._order_element_faces_by_block(side_set_members_one)
+        members_two_by_block = self._order_element_faces_by_block(side_set_members_two)
         # find the nodes within set two and create a set of them
         faces_to_match = set()
         for id_, members in list(members_two_by_block.items()):
@@ -8542,13 +8988,12 @@ 

Source code for exomerge

             connectivity = self.get_connectivity(id_)
             face_mapping = self._get_face_mapping_from_id(id_)
             for element_index, face_index in members:
-                local_node = connectivity[element_index *
-                                          nodes_per_element:(element_index +
-                                                             1) *
-                                          nodes_per_element]
-                face_nodes = [
-                    local_node[x] for x in face_mapping[face_index][1]
+                local_node = connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
                 ]
+                face_nodes = [local_node[x] for x in face_mapping[face_index][1]]
                 faces_to_match.add(tuple(sorted(face_nodes)))
         # now look through the original list for duplicates
         mating_faces = []
@@ -8557,13 +9002,12 @@ 

Source code for exomerge

             connectivity = self.get_connectivity(id_)
             face_mapping = self._get_face_mapping_from_id(id_)
             for element_index, face_index in members:
-                local_node = connectivity[element_index *
-                                          nodes_per_element:(element_index +
-                                                             1) *
-                                          nodes_per_element]
-                face_nodes = [
-                    local_node[x] for x in face_mapping[face_index][1]
+                local_node = connectivity[
+                    element_index
+                    * nodes_per_element: (element_index + 1)
+                    * nodes_per_element
                 ]
+                face_nodes = [local_node[x] for x in face_mapping[face_index][1]]
                 if tuple(sorted(face_nodes)) in faces_to_match:
                     mating_faces.append((id_, element_index, face_index))
         return mating_faces
@@ -8579,12 +9023,16 @@ 

Source code for exomerge

             timestep_created = True
             self.create_timestep(0.0)
         # print out general info
-        print('\nMODEL SUMMARY\n')
+        print("\nMODEL SUMMARY\n")
         ids = self.get_element_block_ids()
         element_block_count = len(ids)
         element_count = self.get_element_count(ids)
-        print(('- Model contains %d element blocks and %d elements' %
-               (element_block_count, element_count)))
+        print(
+            (
+                "- Model contains %d element blocks and %d elements"
+                % (element_block_count, element_count)
+            )
+        )
         # if any elements exist...
         if element_count:
             # calculate element volume field
@@ -8596,93 +9044,112 @@ 

Source code for exomerge

         # print out element block info
         if element_count:
             extents = self.get_element_block_extents(ids)
-            print('- Extents are:')
+            print("- Extents are:")
             for d in range(3):
-                print(('  - %s: %g to %g, range of %g' %
-                       ('XYZ' [d], extents[d][0], extents[d][1],
-                        extents[d][1] - extents[d][0])))
+                print(
+                    (
+                        "  - %s: %g to %g, range of %g"
+                        % (
+                            "XYZ"[d],
+                            extents[d][0],
+                            extents[d][1],
+                            extents[d][1] - extents[d][0],
+                        )
+                    )
+                )
             # print center of mass
-            cg = self.get_element_block_centroid(ids,
-                                                 element_volume_field_name,
-                                                 element_centroid_field_names)
-            cg = ['%g' % x for x in cg]
-            print(('- Center of volume is at [%s]' % (', '.join(cg))))
+            cg = self.get_element_block_centroid(
+                ids, element_volume_field_name, element_centroid_field_names
+            )
+            cg = ["%g" % x for x in cg]
+            print(("- Center of volume is at [%s]" % (", ".join(cg))))
             # print total volume
-            volume = self.get_element_block_volume(ids,
-                                                   element_volume_field_name)
-            print(('- Total volume is %g' % volume))
+            volume = self.get_element_block_volume(ids, element_volume_field_name)
+            print(("- Total volume is %g" % volume))
             # print total surface area
             side_set_id = self._new_side_set_id()
-            self.create_side_set(side_set_id,
-                                 self._get_external_element_faces(ids))
+            self.create_side_set(side_set_id, self._get_external_element_faces(ids))
             area = self.get_side_set_area(side_set_id)
             self.delete_side_set(side_set_id)
-            print(('- Total surface area is %d' % area))
+            print(("- Total surface area is %d" % area))
             # print number of disconnected blocks
-            connected_blocks = self.count_disconnected_blocks('all')
-            print(('- Contains %d disconnected blocks' % (connected_blocks)))
+            connected_blocks = self.count_disconnected_blocks("all")
+            print(("- Contains %d disconnected blocks" % (connected_blocks)))
             # print element edge length stats
             minimum, average = self.get_element_edge_length_info(ids)
-            print(('- Average element edge length is %g' % (average)))
-            print(('- Smallest element edge length is %g' % (minimum)))
+            print(("- Average element edge length is %g" % (average)))
+            print(("- Smallest element edge length is %g" % (minimum)))
         if self.nodes:
             node_distance = self.get_closest_node_distance()
-            print(('- The closest node pair is %g apart' % (node_distance)))
+            print(("- The closest node pair is %g apart" % (node_distance)))
         print()
-        print('ELEMENT BLOCK INFO')
+        print("ELEMENT BLOCK INFO")
         # find external faces for each element block
         if element_count:
-            external_faces = dict((id_, self._get_external_element_faces(id_))
-                                  for id_ in self.get_element_block_ids())
+            external_faces = dict(
+                (id_, self._get_external_element_faces(id_))
+                for id_ in self.get_element_block_ids()
+            )
         # print info on each element block
         for id_ in self.get_element_block_ids():
             print()
             name = self.get_element_block_name(id_)
-            print(('Element block ID %d%s:' % (id_, (' "%s"' %
-                                                     (name)) if name else '')))
+            print(
+                ("Element block ID %d%s:" % (id_, (' "%s"' % (name)) if name else ""))
+            )
             dim = self.get_element_block_dimension(id_)
             element_count = self.get_element_count(id_)
             element_type = self._get_element_type(id_)
-            dim_name = ' %d-dimensional' % dim if dim != -1 else ''
-            print(('- Contains %d "%s"%s elements' %
-                   (element_count, element_type, dim_name)))
+            dim_name = " %d-dimensional" % dim if dim != -1 else ""
+            print(
+                (
+                    '- Contains %d "%s"%s elements'
+                    % (element_count, element_type, dim_name)
+                )
+            )
             # if no elements, skip detailed info on this block
             if not element_count:
                 continue
             extents = self.get_element_block_extents(id_)
-            print('- Extents are:')
+            print("- Extents are:")
             for d in range(3):
-                print(('  - %s: %g to %g, range of %g' %
-                       ('XYZ' [d], extents[d][0], extents[d][1],
-                        extents[d][1] - extents[d][0])))
+                print(
+                    (
+                        "  - %s: %g to %g, range of %g"
+                        % (
+                            "XYZ"[d],
+                            extents[d][0],
+                            extents[d][1],
+                            extents[d][1] - extents[d][0],
+                        )
+                    )
+                )
             # print center of mass
-            cg = self.get_element_block_centroid(id_,
-                                                 element_volume_field_name,
-                                                 element_centroid_field_names)
-            cg = ['%g' % x for x in cg]
-            print(('- Center of volume is at [%s]' % (', '.join(cg))))
+            cg = self.get_element_block_centroid(
+                id_, element_volume_field_name, element_centroid_field_names
+            )
+            cg = ["%g" % x for x in cg]
+            print(("- Center of volume is at [%s]" % (", ".join(cg))))
             # print total volume
-            volume = self.get_element_block_volume(id_,
-                                                   element_volume_field_name)
-            print(('- Total volume is %g' % (volume)))
+            volume = self.get_element_block_volume(id_, element_volume_field_name)
+            print(("- Total volume is %g" % (volume)))
             # print total surface area
             side_set_id = self._new_side_set_id()
             self.create_side_set(side_set_id, external_faces[id_])
             area = self.get_side_set_area(side_set_id)
             self.delete_side_set(side_set_id)
-            print(('- Total surface area is %g' % (area)))
+            print(("- Total surface area is %g" % (area)))
             # print number of disconnected blocks
             connected_blocks = self.count_disconnected_blocks(id_)
-            print(('- Contains %d disconnected blocks' % (connected_blocks)))
+            print(("- Contains %d disconnected blocks" % (connected_blocks)))
             # print element edge length stats
             if dim == 3:
                 minimum, average = self.get_element_edge_length_info(id_)
-                print(('- Average element edge length is %g' % (average)))
-                print(('- Smallest element edge length is %g' % (minimum)))
+                print(("- Average element edge length is %g" % (average)))
+                print(("- Smallest element edge length is %g" % (minimum)))
                 # print thickness
-                thickness = self._get_thickness_from_volume_and_area(
-                    volume, area)
-                print(('- Approximate thickness is %g' % (thickness)))
+                thickness = self._get_thickness_from_volume_and_area(volume, area)
+                print(("- Approximate thickness is %g" % (thickness)))
             # print surface connectivity to other blocks
             # find faces connected to other blocks
             remaining_faces = set(external_faces[id_])
@@ -8690,8 +9157,9 @@ 

Source code for exomerge

             for other_id in self.get_element_block_ids():
                 if other_id == id_:
                     continue
-                mating_faces = self._get_mating_faces(external_faces[id_],
-                                                      external_faces[other_id])
+                mating_faces = self._get_mating_faces(
+                    external_faces[id_], external_faces[other_id]
+                )
                 if mating_faces:
                     remaining_faces -= set(mating_faces)
                     side_set_id = self._new_side_set_id()
@@ -8699,69 +9167,73 @@ 

Source code for exomerge

                     area = self.get_side_set_area(side_set_id)
                     self.delete_side_set(side_set_id)
                     if not header_output:
-                        print('- Connected to the following element blocks:')
+                        print("- Connected to the following element blocks:")
                         header_output = True
                     print(
-                        ('  - To element block %d though %d faces '
-                         '(area of %g)' % (other_id, len(mating_faces), area)))
+                        (
+                            "  - To element block %d though %d faces "
+                            "(area of %g)" % (other_id, len(mating_faces), area)
+                        )
+                    )
             if header_output and remaining_faces:
                 remaining_faces = list(remaining_faces)
                 side_set_id = self._new_side_set_id()
                 self.create_side_set(side_set_id, remaining_faces)
                 area = self.get_side_set_area(side_set_id)
                 self.delete_side_set(side_set_id)
-                print(('  - To the outside through %d faces '
-                       '(area of %g)' % (len(remaining_faces), area)))
+                print(
+                    (
+                        "  - To the outside through %d faces "
+                        "(area of %g)" % (len(remaining_faces), area)
+                    )
+                )
             if not header_output:
-                print('- Not connected to any element blocks')
+                print("- Not connected to any element blocks")
         # print node set info
-        print('\nNODE SET INFO\n')
+        print("\nNODE SET INFO\n")
         ids = self.get_node_set_ids()
-        print(('There are %d node sets defined.' % (len(ids))))
+        print(("There are %d node sets defined." % (len(ids))))
         for id_ in ids:
             print()
             name = self.get_node_set_name(id_)
-            print(('Node set ID %d%s:' % (id_,
-                                          (' "%s"' % (name)) if name else '')))
-            print(('- Contains %d members' %
-                   (len(self.get_node_set_members(id_)))))
+            print(("Node set ID %d%s:" % (id_, (' "%s"' % (name)) if name else "")))
+            print(("- Contains %d members" % (len(self.get_node_set_members(id_)))))
             field_names = self.get_node_set_field_names(id_)
             if field_names:
-                print(('- Has %d fields defined:' % (len(field_names))))
+                print(("- Has %d fields defined:" % (len(field_names))))
                 for name in field_names:
                     print(('  - "%s"' % (name)))
         # print node set info
-        print('\nSIDE SET INFO\n')
+        print("\nSIDE SET INFO\n")
         ids = self.get_side_set_ids()
-        print(('There are %d side sets defined.' % (len(ids))))
+        print(("There are %d side sets defined." % (len(ids))))
         for id_ in ids:
             print()
             name = self.get_side_set_name(id_)
-            print(('Side set ID %d%s:' % (id_,
-                                          (' "%s"' % (name)) if name else '')))
+            print(("Side set ID %d%s:" % (id_, (' "%s"' % (name)) if name else "")))
             members = self.get_side_set_members(id_)
             member_count = len(members)
-            print(('- Contains %d members' % (member_count)))
+            print(("- Contains %d members" % (member_count)))
             parent_blocks = sorted(set(x[0] for x in members))
-            parent_string = ', '.join('%s' % (x) for x in parent_blocks)
-            print(('- Parent element block IDs: %s' % (parent_string)))
+            parent_string = ", ".join("%s" % (x) for x in parent_blocks)
+            print(("- Parent element block IDs: %s" % (parent_string)))
             face_types = []
             members_by_block = self._order_element_faces_by_block(members)
             for block_id, these_members in list(members_by_block.items()):
                 element_type = self._get_element_type(block_id)
                 if not self._is_standard_element_type(element_type):
-                    face_types.append('unknown')
+                    face_types.append("unknown")
                     continue
                 face_mapping = self._get_face_mapping_from_id(block_id)
                 face_indices = set(x[1] for x in these_members)
                 face_types.extend(face_mapping[x][0] for x in face_indices)
             face_types = sorted(set(face_types))
-            print(('- Face types: %s' % (', '.join(face_types))))
+            print(("- Face types: %s" % (", ".join(face_types))))
             area = self.get_side_set_area(id_)
-            print(('- Total area of %g' % (area)))
+            print(("- Total area of %g" % (area)))
             field_names = self.get_side_set_field_names(id_)
             if field_names:
-                print(('- Has %d fields defined:' % (len(field_names))))
+                print(("- Has %d fields defined:" % (len(field_names))))
                 for name in field_names:
                     print(('  - "%s"' % (name)))
         # delete temporary timestep if created
diff --git a/_build/html/exodus.html b/_build/html/exodus.html
index 9cfc92ec60..1a7e1c7f24 100644
--- a/_build/html/exodus.html
+++ b/_build/html/exodus.html
@@ -3375,7 +3375,7 @@
 
get_num_map(mapType, idx)[source]

get user-defined map of exodus element/node/edge/face index to user- or -application- defined element/node/edge/face values. Map values are arbitary integers

+application- defined element/node/edge/face values. Map values are arbitrary integers

>>> elem_num_map = exo.get_num_map('EX_ELEM_MAP', 1)
 
@@ -5363,7 +5363,7 @@
put_num_map(mapType, idx, num_map)[source]

put user-defined map of exodus element/node/edge/face index to user- or -application- defined element/node/edge/face values. Map values are arbitary integers

+application- defined element/node/edge/face values. Map values are arbitrary integers

Parameters:
    diff --git a/_build/html/searchindex.js b/_build/html/searchindex.js index 3dfa4f522b..6b237e9ed8 100644 --- a/_build/html/searchindex.js +++ b/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["IO_Modify", "README", "Slice", "exodus", "exomerge", "index"], "filenames": ["IO_Modify.md", "README.md", "Slice.md", "exodus.rst", "exomerge.rst", "index.rst"], "titles": ["IO_MODIFY Valid Commands", "seacas-docs", "<no title>", "exodus module", "exomerge module", "SEACAS"], "terms": {"io": [0, 5], "_": [0, 2], "modifi": [0, 2, 3, 4, 5], "list": [0, 3, 4, 5], "assembli": [0, 3, 5], "graph": [0, 2, 5], "attribut": [0, 3, 4, 5], "regex": 0, "end": 0, "exit": [0, 2], "input": [0, 2, 3, 4, 5], "output": [0, 2, 3, 4, 5], "chang": [0, 3, 4, 5], "definit": [0, 3, 5], "ani": [0, 3, 4, 5], "quit": 0, "databas": [0, 2, 3, 5], "allow": [0, 3, 5], "modif": [0, 4, 5], "By": [0, 3, 4], "default": [0, 2, 3, 4, 5], "onli": [0, 2, 3, 4, 5], "creation": 0, "new": [0, 3, 4, 5], "If": [0, 2, 3, 4, 5], "thi": [0, 2, 3, 4, 5], "i": [0, 2, 3, 4, 5], "specifi": [0, 2, 3, 4, 5], "can": [0, 2, 3, 4, 5], "alreadi": [0, 3, 4], "exist": [0, 3, 4, 5], "caus": 0, "rewritten": 0, "without": [0, 4], "option": [0, 2, 3, 4, 5], "updat": [0, 3, 4, 5], "place": 0, "elementblock": 0, "block": [0, 3, 4, 5], "structuredblock": 0, "nodeset": [0, 3, 5], "sideset": [0, 3, 5], "blob": [0, 3, 5], "time": [0, 2, 3, 4, 5], "summari": [0, 2, 3, 4, 5], "name": [0, 2, 3, 4, 5], "match": [0, 3, 4, 5], "For": [0, 3, 4, 5], "all": [0, 3, 4, 5], "an": [0, 2, 3, 4, 5], "doe": [0, 3, 4], "creat": [0, 2, 3, 4, 5], "empti": [0, 3], "add": [0, 3, 4, 5], "name1": 0, "name2": 0, "namel": 0, "entiti": [0, 3, 4, 5], "must": [0, 3, 4, 5], "same": [0, 3, 4, 5], "type": [0, 2, 3, 4, 5], "remov": 0, "from": [0, 2, 3, 4, 5], "whose": 0, "ad": [0, 3, 4, 5], "one": [0, 2, 3, 4, 5], "more": [0, 3, 4, 5], "ar": [0, 2, 3, 4, 5], "rang": [0, 3, 4, 5], "id": [0, 3, 4, 5], "TO": [0, 3], "BY": 0, "step": [0, 3, 4, 5], "No": 0, "messag": [0, 3], "id2": 0, "idl": 0, "A": [0, 2, 3, 4, 5], "warn": [0, 3], "request": [0, 3, 4], "delet": [0, 4, 5], "current": [0, 2, 4, 5], "support": [0, 2, 3, 4, 5], "dure": [0, 3], "execut": [0, 3, 4, 5], "filenam": [0, 3, 4], "dot": 0, "file": [0, 2, 3, 4, 5], "structur": [0, 3, 5], "given": [0, 3, 4], "check": [0, 4], "cycl": [0, 3], "ent": 0, "att": 0, "string": [0, 2, 3, 4, 5], "valu": [0, 2, 3, 4, 5], "doubl": [0, 3], "integ": [0, 2, 3, 4, 5], "ent_nam": 0, "The": [0, 2, 3, 4, 5], "att_nam": 0, "": [0, 3, 4, 5], "also": [0, 2, 3, 4, 5], "select": [0, 4, 5], "geometri": [0, 5], "rotat": [0, 4, 5], "x": [0, 3, 4, 5], "y": [0, 3, 4, 5], "z": [0, 3, 4], "angl": [0, 4], "scale": [0, 3, 4, 5], "offset": [0, 4, 5], "t": [0, 4], "out": [0, 5], "us": [0, 2, 3, 4, 5], "posix": 0, "extend": 0, "syntax": [0, 4], "see": [0, 3, 4, 5], "http": [0, 5], "www": 0, "info": [0, 3, 4], "html": 0, "quickstart": 0, "pattern": 0, "zero": [0, 3, 4], "occurr": 0, "anyth": 0, "except": [0, 5], "start": [0, 3, 4], "capit": 0, "letter": 0, "document": [1, 4, 5], "both": [1, 3, 5], "doxygen": [1, 5], "gener": [1, 3, 5], "written": [1, 2, 3, 5], "repositori": 1, "slice": 2, "code": [2, 3, 4, 5], "decompos": [2, 5], "finit": [2, 5], "element": [2, 3, 4, 5], "mesh": [2, 3, 4, 5], "run": [2, 4, 5], "parallel": [2, 5], "analys": [2, 5], "version": [2, 3, 4, 5], "0": [2, 3, 4, 5], "9": [2, 3, 4], "99": 2, "2021": 2, "03": 2, "10": [2, 3, 4, 5], "usag": 2, "split": 2, "help": [2, 5], "print": [2, 4, 5], "val": 2, "format": [2, 3, 4, 5], "exodu": [2, 4], "processor": [2, 5], "number": [2, 3, 4], "method": [2, 3, 4, 5], "decomposit": [2, 5], "linear": [2, 3, 4], "elem": [2, 3], "proc": 2, "each": [2, 3, 4, 5], "scatter": 2, "shuffl": 2, "cyclic": 2, "random": [2, 5], "distribut": [2, 3], "maintain": [2, 5], "balanc": [2, 5], "rb": 2, "meti": 2, "multilevel": [2, 5], "recurs": [2, 5], "bisect": 2, "kwai": 2, "k": [2, 5], "wai": [2, 3, 5], "partit": [2, 5], "variabl": [2, 3, 4, 5], "read": [2, 3, 5], "assign": [2, 4, 5], "map": [2, 3, 5], "processor_id": 2, "decomposition_nam": 2, "contain": [2, 4, 5], "follow": [2, 3, 4], "auto": [2, 4], "entri": [2, 3], "divid": [2, 3], "int": [2, 3, 5], "max_entri": 2, "1": [2, 3, 4, 5], "proc_count": 2, "decomposition_fil": 2, "when": [2, 3, 4, 5], "multipl": [2, 3, 4, 5], "line": [2, 3, 4, 5], "ha": [2, 3, 5], "2": [2, 3, 4, 5], "singl": [2, 3, 4, 5], "two": [2, 3, 4, 5], "count": [2, 3, 4, 5], "thei": [2, 4, 5], "next": 2, "contiguous_decomposit": 2, "contigu": 2, "output_path": 2, "path": 2, "where": [2, 3, 5], "p": [2, 3, 4], "replac": [2, 5], "m": 2, "locat": [2, 3, 4, 5], "partial_read_count": 2, "coordin": [2, 3, 4, 5], "connect": [2, 3, 4, 5], "maximum": [2, 4], "mani": [2, 3, 4, 5], "node": [2, 3, 4, 5], "reduc": [2, 5], "memori": [2, 4, 5], "max": 2, "write": [2, 3, 4, 5], "usual": [2, 5], "typic": [2, 3, 5], "debug": [2, 3], "netcdf4": 2, "hdf5": 2, "base": [2, 3, 4, 5], "instead": [2, 3, 5], "classic": 2, "netcdf": 2, "netcdf5": 2, "cdf5": 2, "64": [2, 5], "bit": [2, 5], "mode": [2, 3], "compress": 2, "zlib": 2, "libz": 2, "enabl": 2, "szip": 2, "4": [2, 3, 4, 5], "level": [2, 5], "d": [2, 4], "copyright": [2, 3, 4], "show": 2, "licens": [2, 3, 4], "data": [2, 3, 5], "set": [2, 3, 4, 5], "via": [2, 3, 5], "slice_opt": 2, "environ": 2, "send": 2, "email": 2, "gsjaardema": 2, "gmail": 2, "com": [2, 5], "py": [3, 5], "v": 3, "21": 3, "seaca": [3, 4], "py3": 3, "python": [3, 4], "wrapper": [3, 4], "some": [3, 5], "librari": 3, "3": [3, 4, 5], "common": 3, "applic": [3, 4, 5], "analysi": [3, 5], "visual": [3, 5], "softwar": [3, 4, 5], "etc": [3, 5], "afford": 3, "flexibl": [3, 5], "robust": 3, "develop": [3, 5], "user": [3, 4, 5], "model": [3, 4, 5], "inherit": 3, "larg": [3, 5], "arrai": [3, 5], "includ": [3, 4, 5], "vendor": 3, "suppli": [3, 5], "which": [3, 4, 5], "access": [3, 4, 5], "directli": 3, "translat": [3, 4, 5], "problem": [3, 4, 5], "specif": [3, 5], "boundari": [3, 5], "condit": [3, 4, 5], "load": [3, 4, 5], "materi": [3, 5], "simul": 3, "result": [3, 4, 5], "verif": 3, "postprocess": [3, 5], "interrog": 3, "track": 3, "three": [3, 4, 5], "primari": 3, "categori": [3, 5], "initi": 3, "size": [3, 5], "paramet": [3, 4, 5], "qualiti": [3, 5], "assur": 3, "inform": [3, 4, 5], "have": [3, 4, 5], "oper": [3, 4, 5], "text": [3, 5], "describ": [3, 5], "static": 3, "do": [3, 4], "through": [3, 4], "nodal": [3, 4, 5], "side": [3, 4], "aid": 3, "appli": [3, 4, 5], "constraint": 3, "five": 3, "global": [3, 4, 5], "store": [3, 4, 5], "exampl": [3, 4, 5], "displac": [3, 4], "direct": [3, 4, 5], "stress": [3, 5], "mai": [3, 4, 5], "anoth": [3, 4, 5], "record": [3, 5], "statu": [3, 5], "binari": [3, 5], "flag": [3, 5], "indic": [3, 4, 5], "whether": 3, "aliv": 3, "dead": 3, "properti": [3, 5], "momentum": 3, "acceler": 3, "particular": [3, 4, 5], "point": [3, 4, 5], "although": 3, "correspond": [3, 4], "fe": 3, "enough": [3, 5], "accommod": 3, "spectrum": 3, "c": [3, 4, 5], "1999": [3, 4], "2023": [3, 4], "nation": [3, 4, 5], "technologi": [3, 4], "engin": [3, 4, 5], "solut": [3, 4, 5], "sandia": [3, 4, 5], "llc": [3, 4], "ntess": [3, 4], "under": [3, 4], "term": [3, 4, 5], "contract": [3, 4], "de": [3, 4], "na0003525": [3, 4], "u": [3, 4], "govern": [3, 4], "retain": [3, 4], "certain": [3, 4, 5], "right": [3, 4], "packag": [3, 4, 5], "detail": [3, 4, 5], "add_vari": 3, "exo": [3, 4], "global_var": 3, "none": [3, 4], "nodal_var": 3, "element_var": 3, "node_set_var": 3, "side_set_var": 3, "sourc": [3, 4, 5], "function": [3, 4, 5], "object": [3, 4], "so": [3, 4, 5], "popul": 3, "them": [3, 4, 5], "later": [3, 5], "tupl": [3, 4], "blkid": 3, "setid": 3, "return": [3, 4], "copy_mesh": 3, "capabl": [3, 5], "class": [3, 4, 5], "basenam": 3, "file_nam": 3, "extract": 3, "test": 3, "e": [3, 4, 5], "num_entri": 3, "collectelemconnect": 3, "exodushandl": 3, "repres": [3, 5], "g": [3, 4, 5], "r": 3, "collectlocalelemtolocalelem": 3, "localnodetolocalelem": 3, "localelemtolocalelem": 3, "go": 3, "local": [3, 4], "assum": [3, 4], "fill": [3, 5], "collectlocalnodetolocalelem": 3, "copytransf": 3, "fromfilenam": 3, "tofilenam": 3, "array_typ": 3, "ctype": 3, "additionalglobalvari": 3, "additionalnodalvari": 3, "additionalelementvari": 3, "additionalnodesetvari": 3, "additionalsidesetvari": 3, "additionalelementattribut": 3, "copi": [3, 4], "everyth": 3, "handl": [3, 5], "addit": [3, 4, 5], "space": 3, "alloc": 3, "numpi": 3, "import": [3, 4], "should": [3, 4, 5], "make": 3, "differ": [3, 5], "command": [3, 4, 5], "within": [3, 4, 5], "correctli": [3, 5], "addglobalvari": 3, "node_dummy1": 3, "node_dummy2": 3, "addnodevari": 3, "elem_dummy1": 3, "elem_dummy2": 3, "addelementvari": 3, "elem_attr_dummy1": 3, "elem_attr_dummy2": 3, "addelementattribut": 3, "tofilehandl": 3, "close": 3, "exofromobj": 3, "ignor": [3, 4], "exo_to": 3, "process": [3, 4, 5], "perman": 3, "mean": [3, 5], "ctype_to_numpi": 3, "c_arrai": 3, "convert": [3, 4, 5], "np_arrai": 3, "ex_assembli": 3, "defin": [3, 4, 5], "int64_t": 3, "char": 3, "ex_entity_typ": 3, "entity_count": 3, "entity_list": 3, "void_int": 3, "union": [3, 5], "member": [3, 4], "ex_attribut": 3, "underli": [3, 5], "entity_typ": 3, "entity_id": 3, "257": 3, "ex_typ": 3, "value_count": 3, "void": 3, "ex_blob": 3, "qualnam": 3, "enum": 3, "exodusii": [3, 4], "h": [3, 5], "ex_nod": 3, "ex_node_block": 3, "alia": [3, 4], "ex_node_set": 3, "ex_edge_block": 3, "edg": [3, 4, 5], "ex_edge_set": 3, "ex_face_block": 3, "face": [3, 4, 5], "ex_face_set": 3, "ex_elem_block": 3, "ex_elem_set": 3, "ex_side_set": 3, "ex_elem_map": 3, "ex_node_map": 3, "ex_edge_map": 3, "ex_face_map": 3, "ex_glob": 3, "ex_coordin": 3, "kluge": 3, "intern": [3, 4, 5], "work": [3, 5], "collect": [3, 5], "other": [3, 4, 5], "arbitrari": [3, 5], "ex_invalid": 3, "invalid": 3, "16": [3, 4], "17": [3, 4], "15": [3, 4], "6": [3, 4], "11": [3, 4], "7": [3, 4, 5], "8": [3, 4, 5], "12": [3, 4], "13": [3, 4], "14": [3, 4], "5": [3, 4, 5], "classmethod": 3, "__contains__": 3, "true": [3, 4], "rais": 3, "typeerror": 3, "note": [3, 4], "longer": [3, 5], "__getitem__": 3, "__iter__": 3, "order": [3, 4, 5], "__len__": 3, "alias": 3, "ex_entity_type_to_objtyp": 3, "ex_init_param": 3, "dimens": [3, 4, 5], "num_dim": 3, "num_nod": 3, "num_edg": 3, "num_edge_blk": 3, "num_fac": 3, "num_face_blk": 3, "num_elem": 3, "num_elem_blk": 3, "num_node_set": 3, "num_edge_set": 3, "num_face_set": 3, "num_side_set": 3, "num_elem_set": 3, "num_node_map": 3, "num_edge_map": 3, "num_face_map": 3, "num_elem_map": 3, "num_assembli": 3, "num_blob": 3, "titl": 3, "ex_inquiri": 3, "ex_inq_api_v": 3, "ex_inq_assembli": 3, "60": 3, "ex_inq_blob": 3, "61": 3, "ex_inq_coord_fram": 3, "47": 3, "ex_inq_db_float_s": 3, "51": 3, "ex_inq_db_max_allowed_name_length": 3, "48": 3, "ex_inq_db_max_used_name_length": 3, "49": 3, "ex_inq_db_v": 3, "ex_inq_dim": 3, "ex_inq_eb_prop": 3, "ex_inq_edg": 3, "27": 3, "ex_inq_edge_blk": 3, "28": 3, "ex_inq_edge_map": 3, "45": 3, "ex_inq_edge_prop": 3, "32": [3, 5], "ex_inq_edge_set": 3, "29": 3, "ex_inq_elem": 3, "ex_inq_elem_blk": 3, "ex_inq_elem_map": 3, "25": 3, "ex_inq_elem_set": 3, "41": 3, "ex_inq_els_df_len": 3, "43": 3, "ex_inq_els_len": 3, "42": 3, "ex_inq_els_prop": 3, "44": 3, "ex_inq_em_prop": 3, "23": 3, "ex_inq_es_df_len": 3, "31": 3, "ex_inq_es_len": 3, "30": [3, 5], "ex_inq_es_prop": 3, "33": 3, "ex_inq_fac": 3, "34": 3, "ex_inq_face_blk": 3, "35": 3, "ex_inq_face_map": 3, "46": 3, "ex_inq_face_prop": 3, "39": 3, "ex_inq_face_set": 3, "36": 3, "ex_inq_file_typ": 3, "ex_inq_fs_df_len": 3, "38": 3, "ex_inq_fs_len": 3, "37": 3, "ex_inq_fs_prop": 3, "40": 3, "ex_inq_info": 3, "ex_inq_invalid": 3, "ex_inq_lib_v": 3, "22": 3, "ex_inq_max_read_name_length": 3, "50": 3, "ex_inq_nm_prop": 3, "24": [3, 4], "ex_inq_nod": 3, "ex_inq_node_map": 3, "26": 3, "ex_inq_node_set": 3, "ex_inq_ns_df_len": 3, "20": [3, 4], "ex_inq_ns_node_len": 3, "ex_inq_ns_prop": 3, "18": [3, 4], "ex_inq_qa": 3, "ex_inq_side_set": 3, "ex_inq_ss_df_len": 3, "ex_inq_ss_elem_len": 3, "ex_inq_ss_node_len": 3, "ex_inq_ss_prop": 3, "19": [3, 4], "ex_inq_tim": 3, "ex_inq_titl": 3, "ex_inquiry_map": 3, "inquiri": 3, "ex_obj_to_inq": 3, "objtyp": 3, "pass": [3, 4], "get": [3, 4], "ex_opt": 3, "OR": 3, "ed": 3, "exopt": 3, "ex_default": 3, "respons": 3, "call": [3, 4, 5], "ex_err": 3, "error": 3, "quiet": 3, "ex_verbos": 3, "verbos": 3, "ex_debug": 3, "ex_abort": 3, "detect": [3, 5], "abort": 3, "let": 3, "decid": 3, "ex_nullverbos": 3, "null": 3, "ex_char": 3, "ex_doubl": 3, "ex_integ": 3, "ex_type_map": 3, "numdim": 3, "numnod": 3, "numelem": 3, "numblock": 3, "numnodeset": 3, "numsideset": 3, "numassembli": 3, "numblob": 3, "init_param": 3, "io_siz": 3, "abstract": 3, "onc": 3, "becom": [3, 4], "inoper": 3, "include_transi": 3, "fals": [3, 4], "open": 3, "need": [3, 5], "done": 3, "being": [3, 5], "exo_copi": 3, "str": 3, "append": [3, 5], "copy_fil": 3, "file_id": 3, "fileid": 3, "w": 3, "exofil": 3, "bool": 3, "transient": [3, 5], "origin": [3, 4, 5], "just": 3, "non": [3, 5], "portion": [3, 5], "elem_blk_info": 3, "object_id": 3, "elem_typ": 3, "num_blk_elem": 3, "num_elem_nod": 3, "num_elem_attr": 3, "elem_blk_id": 3, "ex_entity_id": 3, "index": [3, 4, 5], "hex8": [3, 4], "per": [3, 4, 5], "get_all_global_variable_valu": 3, "get_global_variable_nam": [3, 4], "gvar_val": 3, "time_step": 3, "get_all_node_set_param": 3, "total": [3, 4], "factor": [3, 4], "weight": [3, 5], "combin": [3, 4, 5], "among": 3, "tot_num_ns_nod": 3, "tot_num_ns_dist_fact": 3, "get_all_side_set_param": 3, "tot_num_ss_sid": 3, "tot_num_ss_nod": 3, "tot_num_ss_dist_fact": 3, "sum": 3, "than": [3, 4, 5], "belong": [3, 4], "get_assembli": 3, "get_attr_valu": 3, "elem_attr_nam": 3, "elem_attr": 3, "get_elem_attr": 3, "queri": [3, 5], "get_attribute_count": 3, "objid": 3, "BE": 3, "num_attribut": 3, "100": [3, 4], "get_attribute_nam": 3, "attr_nam": 3, "get_attribut": 3, "get_blob": 3, "get_block_id_map": 3, "obj_typ": 3, "found": [3, 4, 5], "system": [3, 5], "elem_block": 3, "storag": [3, 5], "separ": [3, 5], "elem_id_map": 3, "elem_block_id_map": 3, "get_coord": 3, "x_coord": 3, "y_coord": 3, "z_coord": 3, "node_index": 3, "equival": [3, 4], "get_coord_nam": 3, "length": [3, 4, 5], "num_dimens": 3, "coord_nam": 3, "c_doubl": 3, "first": [3, 4, 5], "second": [3, 5], "get_elem_attr_valu": 3, "get_elem_blk_id": 3, "num_blk": 3, "get_elem_blk_nam": 3, "elem_blk_nam": 3, "get_id": 3, "explan": 3, "between": [3, 4, 5], "get_elem_connect": 3, "elem_conn": 3, "get_id_map": 3, "versu": [3, 5], "get_elem_id_map": 3, "get_elem_num_map": 3, "deprec": 3, "c_int": 3, "get_elem_order_map": 3, "optim": [3, 5], "elem_order_map": 3, "solver": 3, "perform": [3, 4, 5], "get_element_attribute_nam": 3, "get_element_property_nam": 3, "eprop_nam": 3, "get_element_property_valu": 3, "eprop_v": 3, "get_element_variable_nam": 3, "evar_nam": 3, "get_element_variable_numb": 3, "num_evar": 3, "get_element_variable_truth_t": 3, "entid": 3, "get_variable_truth_t": 3, "get_element_variable_valu": 3, "blockid": 3, "evar_v": 3, "get_entity_count": 3, "entityid": 3, "callabl": [3, 5], "gvar_nam": 3, "get_global_variable_numb": 3, "num_gvar": 3, "get_global_variable_valu": 3, "over": 3, "maptyp": 3, "id_map": 3, "number_set_or_block": 3, "node_set_id": [3, 4], "get_info_record": 3, "deck": [3, 4], "info_rec": 3, "get_nam": 3, "object_typ": 3, "blk_name": 3, "get_node_id_map": 3, "node_id_map": 3, "get_node_num_map": 3, "get_node_set_dist_fact": 3, "ns_dist_fact": 3, "get_node_set_id": [3, 4], "get_node_set_nam": [3, 4], "node_set_nam": 3, "get_node_set_nod": 3, "ns_node": 3, "get_node_set_param": 3, "put_set_param": 3, "get_node_set_property_nam": 3, "nsprop_nam": 3, "get_node_set_property_valu": 3, "nsprop_val": 3, "get_node_set_variable_nam": 3, "nsvar_nam": 3, "get_node_set_variable_numb": 3, "num_nsvar": 3, "get_node_set_variable_truth_t": 3, "get_node_set_variable_valu": 3, "nsvar_val": 3, "get_node_variable_nam": 3, "nvar_nam": 3, "get_node_variable_numb": 3, "num_nvar": 3, "get_node_variable_valu": 3, "nvar_val": 3, "get_num_map": 3, "idx": 3, "arbitari": 3, "elem_num_map": 3, "inquir": 3, "num_map": 3, "em_cnt": 3, "em": 3, "get_partial_element_variable_valu": 3, "start_index": 3, "num_el": 3, "get_partial_node_set_variable_valu": 3, "get_partial_node_variable_valu": 3, "partial": [3, 5], "get_partial_side_set_variable_valu": 3, "num_sid": 3, "ssvar_val": 3, "get_side_set_variable_valu": 3, "side_set_id": [3, 4], "ssvar_nam": 3, "get_qa_record": 3, "qa": 3, "descriptor": 3, "stamp": 3, "qa_rec": 3, "get_reduction_variable_nam": 3, "varid": 3, "reduct": 3, "nar_nam": 3, "ex_assembl": 3, "get_reduction_variable_numb": 3, "get_reduction_variable_valu": 3, "get_set_param": 3, "num_ns_nod": 3, "num_ns_dist_fact": 3, "set_id": 3, "num_set_ent": 3, "num_set_dist_fact": 3, "get_side_set": 3, "togeth": [3, 5], "ss_elem": 3, "ss_side": 3, "get_side_set_dist_fact": 3, "ss_dist_fact": 3, "get_side_set_id": [3, 4], "get_side_set_nam": [3, 4], "side_set_nam": 3, "get_side_set_node_list": 3, "concaten": [3, 5], "ss_num_nodes_per_sid": 3, "ss_node": 3, "ss_num_side_nod": 3, "get_side_set_param": 3, "num_ss_sid": 3, "num_ss_dist_fact": 3, "get_side_set_property_nam": 3, "ssprop_nam": 3, "get_side_set_property_valu": 3, "ssprop_val": 3, "get_side_set_variable_nam": 3, "get_side_set_variable_numb": 3, "num_ssvar": 3, "get_side_set_variable_truth_t": 3, "get_sierra_input": 3, "inpfilenam": 3, "pars": [3, 5], "sierra": [3, 4], "inp_file_nam": 3, "otherwis": [3, 4], "inp": [3, 5], "provid": [3, 4, 5], "get_tim": 3, "time_v": 3, "get_variable_nam": 3, "get_variable_numb": 3, "truth": 3, "tabl": 3, "faster": [3, 5], "ssvar_truth_tab": 3, "sidesetid": 3, "begin": 3, "truth_tab": 3, "get_variable_valu": 3, "get_variable_values_tim": 3, "var_nam": 3, "start_step": 3, "end_step": 3, "about": [3, 4, 5], "variou": [3, 5], "inq_r": 3, "num_attr": 3, "spatial": 3, "num_elems_in_blk": 3, "num_faces_in_side_set": 3, "num_ss_fac": 3, "num_info_record": 3, "num_info_rec": 3, "num_nodes_in_node_set": 3, "num_nodes_per_elem": 3, "num_qa_record": 3, "num_qa_rec": 3, "num_tim": 3, "put_all_global_variable_valu": 3, "success": 3, "put_assembli": 3, "put_attribut": 3, "put_attribute_nam": 3, "put_concat_elem_blk": 3, "definemap": 3, "put_elem_blk_info": 3, "put_coord_nam": 3, "put_coord": 3, "xcoord": 3, "ycoord": 3, "zcoord": 3, "put_elem_attr": 3, "put_elem_attr_valu": 3, "n_elem": 3, "cap": 3, "put_elem_blk_nam": 3, "put_elem_connect": 3, "put_elem_face_conn": 3, "elemfaceconn": 3, "put": 3, "ravel": 3, "flat": 3, "put_elem_id_map": 3, "put_element_attribute_nam": 3, "put_element_property_valu": 3, "its": [3, 4, 5], "put_element_variable_nam": 3, "goe": 3, "evar_index": 3, "often": 3, "sequenc": [3, 5], "new_evar_index": 3, "set_element_variable_numb": 3, "new_evar": 3, "put_element_variable_valu": 3, "put_face_count_per_polyhedra": 3, "entitycount": 3, "polyhedra": 3, "put_face_node_conn": 3, "facenodeconn": 3, "put_global_variable_nam": 3, "gvar_index": 3, "new_gvar_index": 3, "set_global_variable_numb": 3, "new_gvar": 3, "put_global_variable_valu": 3, "put_id_map": 3, "map_typ": 3, "num_xxx": 3, "put_info": 3, "numelemblk": 3, "metadata": 3, "num_block": 3, "num_n": 3, "num_ss": 3, "put_info_ext": 3, "info_struct": 3, "put_info_record": 3, "put_map_param": 3, "node_map_cnt": 3, "elem_map_cnt": 3, "put_nam": 3, "block_nam": [3, 4], "put_node_count_per_fac": 3, "polygon": 3, "put_node_id_map": 3, "put_node_set": 3, "nodesetnod": 3, "put_node_set_dist_fact": 3, "nodesetdistfact": 3, "put_node_set_nam": 3, "put_node_set_param": 3, "numsetnod": 3, "numsetdistfact": 3, "put_node_set_property_valu": 3, "put_node_set_variable_nam": 3, "nsvar_index": 3, "new_nsvar_index": 3, "set_node_set_variable_numb": 3, "new_nsvar": 3, "put_node_set_variable_valu": 3, "put_node_variable_nam": 3, "nvar_index": 3, "new_nvar_index": 3, "set_node_variable_numb": 3, "new_nvar_nam": 3, "put_node_variable_valu": 3, "put_num_map": 3, "prior": 3, "nm_cnt": 3, "nm": 3, "my_node_map": 3, "scale_map": 3, "put_polyhedra_elem_blk": 3, "num_elems_this_blk": 3, "num_attr_per_elem": 3, "polyhedr": [3, 5], "put_polyhedra_face_blk": 3, "num_faces_this_blk": 3, "num_attr_per_fac": 3, "put_qa_record": 3, "put_reduction_variable_nam": 3, "assemvar_nam": 3, "assemvar_index": 3, "num_assem_var": 3, "new_assem_var_index": 3, "set_reduction_variable_numb": 3, "new_assem_var_nam": 3, "put_reduction_variable_valu": 3, "put_redcution_variable_valu": 3, "numsetent": 3, "num_dist_fact": 3, "equal": 3, "put_side_set": 3, "sidesetel": 3, "sidesetsid": 3, "put_side_set_dist_fact": 3, "sidesetdistfact": 3, "put_side_set_nam": 3, "put_side_set_param": 3, "numsetsid": 3, "put_side_set_property_valu": 3, "put_side_set_variable_nam": 3, "ssvar_index": 3, "new_ssvar_index": 3, "set_side_set_variable_numb": 3, "new_ssvar": 3, "put_side_set_variable_valu": 3, "put_tim": 3, "put_variable_nam": 3, "set_variable_numb": 3, "put_variable_valu": 3, "set_element_variable_truth_t": 3, "set_variable_truth_t": 3, "set_node_set_variable_truth_t": 3, "set_side_set_variable_truth_t": 3, "nsvar_truth_tab": 3, "summar": [3, 4], "similar": [3, 4, 5], "base_ioshell_copi": 3, "331": 3, "000": 3, "363": 3, "300": 3, "version_num": 3, "represent": [3, 5], "getexodusvers": 3, "header": 3, "get_entity_typ": 3, "vartyp": 3, "internal_add_vari": 3, "entvar": 3, "debugprint": 3, "internal_transfer_vari": 3, "exofrom": 3, "additionalvari": 3, "transfer_vari": 3, "setup_ex_assembli": 3, "transfer": [3, 5], "lightweight": [4, 5], "interfac": [4, 5], "manipul": [4, 5], "2020": 4, "2022": 4, "author": 4, "tim": 4, "kostka": 4, "tdkostk": 4, "gov": 4, "2012": [4, 5], "simpl": 4, "import_model": 4, "delete_element_block": 4, "export_model": 4, "most_result": 4, "onlin": 4, "pydoc": 4, "util": [4, 5], "exodusmodel": 4, "sampl": 4, "script": [4, 5], "report": [4, 5], "manual": [4, 5], "sand2013": 4, "0725": 4, "feedback": 4, "featur": [4, 5], "pleas": [4, 5], "contact": 4, "dummyfil": 4, "dummi": 4, "suppress": 4, "stdout": 4, "hold": 4, "all_multi_component_field_subscript": 4, "xx": 4, "xy": 4, "xz": 4, "yx": 4, "yy": 4, "yz": 4, "zx": 4, "zy": 4, "zz": 4, "cohesive_formula": 4, "quad4": 4, "tri3": 4, "wedge6": 4, "tri6": 4, "wedge12": 4, "hex20": 4, "line2": 4, "line3": 4, "quad6": 4, "quad8": 4, "tet10": 4, "tet4": 4, "wedge15": 4, "wedge16": 4, "element_convers": 4, "element_ord": 4, "face_map": 4, "inverted_connect": 4, "multi_component_field_subscript": 4, "full_3x3_tensor": 4, "symmetric_3x3_tensor": 4, "vector": [4, 5], "nodes_per_el": 4, "rotated_connect": 4, "standard_element_typ": 4, "triangulated_fac": 4, "volume_formula": 4, "16666666666666666": 4, "__getattr__": 4, "try": [4, 5], "find": [4, 5], "special": 4, "cannot": [4, 5], "we": 4, "suggest": [4, 5], "case": [4, 5], "made": 4, "typo": 4, "plural": 4, "form": [4, 5], "add_faces_to_side_set": 4, "new_side_set_memb": 4, "element_block_id": 4, "local_element_index": 4, "element_side_index": 4, "add_nodes_to_node_set": 4, "new_node_set_memb": 4, "build_hex8_cub": 4, "extent": 4, "divis": 4, "shape": [4, 5], "cuboid": 4, "minx": 4, "maxx": 4, "mini": 4, "maxi": 4, "minz": 4, "maxz": 4, "minimum": 4, "cube": 4, "min": 4, "calculate_element_centroid": 4, "element_field_name_prefix": 4, "centroid_": 4, "calcul": [4, 5], "centroid": 4, "approxim": 4, "averag": 4, "field": 4, "sinc": [4, 5], "timestep": [4, 5], "centroid_x": 4, "centroid_i": 4, "centroid_z": 4, "altern": 4, "prefix": 4, "calculate_element_field": 4, "express": [4, 5], "refer": [4, 5], "pressur": 4, "stress_xx": 4, "stress_yi": 4, "stress_zz": 4, "calculate_element_field_maximum": 4, "element_field_nam": 4, "calculate_loc": 4, "calculate_block_id": 4, "eqp": 4, "global_vari": 4, "eqps_max": 4, "calculate_element_field_minimum": 4, "eqps_min": 4, "calculate_element_volum": 4, "volum": 4, "dimension": [4, 5], "area": 4, "calculate_global_vari": 4, "time_squar": 4, "potenti": [4, 5], "kinet": 4, "calculate_node_field": 4, "temp_c": 4, "temp_k": 4, "273": 4, "calculate_node_field_maximum": 4, "node_field_nam": 4, "temp": 4, "temp_max": 4, "calculate_node_field_minimum": 4, "temp_min": 4, "calculate_node_set_field": 4, "calculate_side_set_field": 4, "combine_element_block": 4, "target_element_block_id": 4, "target": [4, 5], "smallest": 4, "merg": 4, "convert_element_block": 4, "new_element_typ": 4, "convert_element_field_to_node_field": 4, "everi": 4, "share": [4, 5], "temperatur": 4, "convert_hex8_block_to_tet4_block": 4, "scheme": 4, "hex24tet": 4, "accordingli": 4, "implement": [4, 5], "eeach": 4, "convert_node_field_to_element_field": 4, "convert_side_set_to_cohesive_zon": 4, "new_element_block_id": 4, "cohes": 4, "zone": 4, "exactli": [4, 5], "copy_timestep": 4, "new_timestep": 4, "old": 4, "count_degenerate_el": 4, "degener": 4, "duplic": [4, 5], "count_disconnected_block": 4, "disconnect": 4, "group": 4, "create_averaged_element_field": 4, "from_element_field_nam": 4, "new_element_field_nam": 4, "temp_1": 4, "temp_2": 4, "temp_avg": 4, "temp_": 4, "create_displacement_field": 4, "doesn": 4, "create_element_block": 4, "been": [4, 5], "compris": [4, 5], "element_typ": 4, "element_count": 4, "would": [4, 5], "valid": 4, "shallow": 4, "unnam": 4, "To": [4, 5], "rename_element_block": 4, "create_element_field": 4, "appear": 4, "nan": 4, "create_global_vari": 4, "global_variable_nam": 4, "gravitational_acceler": 4, "create_interpolated_timestep": 4, "interpol": [4, 5], "cubic": 4, "neighbor": 4, "extrapol": 4, "lie": 4, "desir": [4, 5], "create_node_field": 4, "298": 4, "create_node_set": 4, "node_set_memb": 4, "rename_node_set": 4, "create_node_set_field": 4, "node_set_field_nam": 4, "create_node_set_from_side_set": 4, "create_nod": 4, "new_nod": 4, "tripl": 4, "create_side_set": 4, "side_set_memb": 4, "rename_side_set": 4, "create_side_set_field": 4, "side_set_field_nam": 4, "create_side_set_from_express": 4, "toler": 4, "last_if_ani": 4, "zero_member_warn": 4, "satisfi": 4, "extern": [4, 5], "had": 4, "symmetri": [4, 5], "plane": 4, "create_timestep": 4, "delete_duplicate_el": 4, "delete_orphaned_nod": 4, "unus": 4, "prevent": 4, "delete_element_field": 4, "delete_empty_node_set": 4, "delete_empty_side_set": 4, "delete_global_vari": 4, "internal_energi": 4, "delete_node_field": 4, "disp_": 4, "delete_node_set": 4, "delete_node_set_field": 4, "contact_pressur": 4, "delete_side_set": 4, "delete_side_set_field": 4, "delete_timestep": 4, "becaus": 4, "delete_unused_nod": 4, "displace_element_block": 4, "check_for_merged_nod": 4, "rather": 4, "translate_element_block": 4, "displacement_field_exist": 4, "duplicate_element_block": 4, "duplicate_nod": 4, "ones": 4, "element_block_exist": 4, "element_field_exist": 4, "export": 4, "arg": 4, "kwarg": 4, "extens": [4, 5], "appropri": [4, 5], "wrl": 4, "export_wrl_model": 4, "stl": 4, "export_stl_fil": 4, "argument": [4, 5], "output_exomerg": 4, "displacement_timestep": 4, "exterior": 4, "last": 4, "mesh_surfac": 4, "field_rang": 4, "interv": 4, "colorspac": 4, "rgb": 4, "export_exodus_copi": 4, "color": 4, "3d": 4, "colored_eqps_model": 4, "get_all_element_block_nam": 4, "get_all_node_set_nam": 4, "get_all_side_set_nam": 4, "get_closest_node_dist": 4, "distanc": [4, 5], "closest": 4, "get_connect": 4, "get_element_block_centroid": 4, "element_volume_field_nam": 4, "element_centroid_field_nam": 4, "get_element_block_connect": 4, "get_element_block_dimens": 4, "determin": 4, "get_element_block_ext": 4, "min_x": 4, "max_x": 4, "min_i": 4, "max_i": 4, "min_z": 4, "max_z": 4, "get_element_block_id": 4, "get_element_block_nam": 4, "get_element_block_volum": 4, "get_element_count": 4, "get_element_edge_length_info": 4, "get_element_field_nam": 4, "get_element_field_valu": 4, "actual": 4, "strain": [4, 5], "get_input_deck": 4, "retriev": [4, 5], "due": [4, 5], "restrict": 4, "get_length_scal": 4, "largest": 4, "absolut": 4, "compon": [4, 5], "get_node_field_nam": 4, "get_node_field_valu": 4, "disp_x": 4, "get_node_set_field_nam": 4, "get_node_set_field_valu": 4, "get_node_set_memb": 4, "get_nodes_in_element_block": 4, "get_nodes_in_side_set": 4, "get_nodes_per_el": 4, "get_side_set_area": 4, "get_side_set_field_nam": 4, "get_side_set_field_valu": 4, "get_side_set_memb": 4, "get_timestep": 4, "global_variable_exist": 4, "act": 4, "As": 4, "shortcut": 4, "part": [4, 5], "mesh_fil": 4, "results_fil": 4, "make_elements_linear": 4, "attempt": 4, "best": 4, "convers": [4, 5], "involv": 4, "choos": 4, "produc": [4, 5], "fewest": 4, "make_elements_quadrat": 4, "quadrat": 4, "merge_nod": 4, "1e": 4, "06": 4, "relative_toler": 4, "suppress_warn": 4, "closer": [4, 5], "exact": 4, "relative_tolerac": 4, "multipli": 4, "obtain": 4, "node_field_exist": 4, "node_set_exist": 4, "nodeset_nam": 4, "node_set_field_exist": 4, "output_global_vari": 4, "csv": 4, "sent": 4, "els": 4, "process_element_field": 4, "integr": 4, "take": [4, 5], "fulli": 4, "deviator": 4, "sm": 4, "q1p0": 4, "conveni": 4, "post": [4, 5], "reflect_element_block": 4, "normal": 4, "adjust_displacement_field": 4, "reflect": [4, 5], "invert": 4, "across": 4, "uninvert": 4, "either": [4, 5], "block_1": 4, "rename_element_field": 4, "renam": [4, 5], "rename_global_vari": 4, "new_global_variable_nam": 4, "ke": 4, "kinetic_energi": 4, "rename_node_field": 4, "new_node_field_nam": 4, "new_node_set_id": 4, "node_group_1": 4, "rename_node_set_field": 4, "new_node_set_field_nam": 4, "cp": 4, "new_side_set_id": 4, "surface_1": 4, "rename_side_set_field": 4, "new_side_set_field_nam": 4, "rotate_element_block": 4, "axi": [4, 5], "angle_in_degre": 4, "amount": 4, "90": 4, "rotate_geometri": 4, "scale_element_block": 4, "scale_factor": 4, "0254": 4, "scale_geometri": 4, "side_set_exist": 4, "sideset_nam": 4, "side_set_field_exist": 4, "threshold_element_block": 4, "don": 4, "threshold": 4, "move": 4, "01": 4, "timestep_exist": 4, "to_lowercas": 4, "lowercas": 4, "affect": 4, "translate_geometri": 4, "unmerge_element_block": 4, "unmerg": 4, "b": 4, "around": 4, "statement": 4, "laboratori": 5, "snl": 5, "preprocess": 5, "graphic": 5, "It": 5, "analyst": 5, "elsewher": 5, "laptop": 5, "hpc": 5, "wiki": 5, "faq": 5, "like": 5, "answer": 5, "propos": 5, "recent": 5, "yet": 5, "cover": 5, "comput": 5, "date": 5, "still": 5, "instruct": 5, "download": 5, "build": 5, "github": 5, "sandialab": 5, "well": 5, "machin": 5, "independ": 5, "fortran": 5, "routin": 5, "program": 5, "disk": 5, "frame": 5, "cleanup": 5, "api": 5, "full": 5, "topologi": 5, "chapter": 5, "sand2007": 5, "0525": 5, "novel": 5, "differenti": 5, "equat": 5, "discret": 5, "wa": 5, "permit": 5, "billion": 5, "million": 5, "long": 5, "now": 5, "shorter": 5, "charact": 5, "In": 5, "most": 5, "lead": 5, "ne_": 5, "ex_": 5, "There": 5, "few": 5, "complet": 5, "avail": 5, "lower": 5, "exomerg": 5, "subsystem": 5, "high": 5, "design": 5, "give": 5, "agnost": 5, "o": 5, "specic": 5, "backend": 5, "cgn": 5, "heartbeat": 5, "histori": 5, "adios2": 5, "faodel": 5, "simultan": 5, "possibl": 5, "third": 5, "restart": 5, "schedul": 5, "what": 5, "iosystem": 5, "pdf": 5, "medium": 5, "low": 5, "view": 5, "who": 5, "could": 5, "look": 5, "how": 5, "control": 5, "behavior": 5, "subprogram": 5, "frequent": 5, "numer": 5, "servic": 5, "programm": 5, "77": 5, "dynam": 5, "manag": 5, "depend": 5, "standard": 5, "while": 5, "sever": 5, "backward": 5, "compat": 5, "older": 5, "you": 5, "enhanc": 5, "unstructur": 5, "facilit": 5, "scalar": 5, "serial": 5, "onto": 5, "compromis": 5, "zoltan2": 5, "fundament": 5, "scientif": 5, "context": 5, "small": 5, "These": 5, "inerti": 5, "spectral": 5, "kernighan": 5, "lin": 5, "simpler": 5, "strategi": 5, "approach": 5, "four": 5, "eight": 5, "piec": 5, "improv": 5, "algorithm": 5, "brief": 5, "descript": 5, "along": 5, "relev": 5, "literatur": 5, "address": 5, "briefli": 5, "varieti": 5, "discuss": 5, "offer": 5, "short": 5, "768": 5, "chaco_version_major": 5, "chaco_version_minor": 5, "chaco_version_patch": 5, "befor": 5, "plot": 5, "veloc": 5, "evalu": 5, "preprocessor": 5, "interpret": 5, "mathemat": 5, "flow": 5, "construct": 5, "unit": 5, "major": 5, "deform": 5, "contour": 5, "paint": 5, "symbol": 5, "crack": 5, "pathlin": 5, "drawn": 5, "birth": 5, "death": 5, "displai": 5, "mirror": 5, "curv": 5, "accumul": 5, "pair": 5, "center": 5, "metric": 5, "comparison": 5, "judg": 5, "join": 5, "tempor": 5, "overlap": 5, "colloc": 5, "similarli": 5, "meta": 5, "bulk": 5, "conex": 5, "rank": 5, "recombin": 5, "disjoint": 5, "That": 5, "unless": 5, "never": 5, "even": 5, "ident": 5, "One": 5, "own": 5, "submesh": 5, "subset": 5, "entir": 5, "commun": 5, "respect": 5, "n": 5, "dataset": 5, "want": 5, "purpos": 5, "correct": 5, "discard": 5, "requir": 5, "float": 5, "variant": 5, "config": 5, "parti": 5, "configur": 5, "compar": 5, "ex": 5, "odu": 5, "main": 5, "matlab": 5, "edit": 5, "back": 5, "ncdump": 5, "ncgen": 5, "examin": 5, "termin": 5, "interact": 5, "power": 5, "effici": 5, "tool": 5, "capac": 5, "good": 5, "techniqu": 5, "emploi": 5, "higher": 5, "primit": 5, "automat": 5, "commonli": 5, "encount": 5, "triangl": 5, "semi": 5, "circl": 5, "transit": 5, "coars": 5, "fine": 5, "built": 5, "layer": 5, "rue": 5, "geometr": 5, "adjust": 5, "incorpor": 5, "memo": 5, "pave": 5, "sand": 5, "accord": 5, "transform": 5, "spheric": 5, "surfac": 5, "cylindr": 5, "reorient": 5, "revolv": 5, "axisymmetr": 5, "planar": 5, "importantli": 5, "complex": 5, "compos": 5, "section": 5, "shell": 5, "quadrilater": 5, "ellipsoid": 5, "spline": 5, "further": 5, "identif": 5, "newer": 5, "reposit": 5, "orient": 5, "explod": 5, "enter": 5, "were": 5, "instal": 5, "possibli": 5, "datbas": 5, "in_typ": 5, "1x1x1": 5, "buggi": 5, "ok": 5, "howev": 5, "issu": 5, "draw": 5, "heavili": 5, "merlin": 5, "ii": 5, "speed": 5, "keep": 5, "present": 5, "demonstr": 5, "effect": 5, "almost": 5, "search": 5, "much": 5, "situat": 5, "slower": 5, "mat": 5, "invers": 5, "nastran": 5, "fem": 5, "spread": 5, "taken": 5, "companion": 5, "here": 5, "limit": 5, "hexahedr": 5, "consist": 5, "skin": 5, "experiment": 5, "cell": 5, "templat": 5, "tile": 5, "j": 5, "interior": 5, "lattic": 5, "arrang": 5, "self": 5, "unlimit": 5, "multi": 5, "real": 5, "byte": 5, "accompani": 5, "ancillari": 5, "measur": 5, "prescrib": 5, "unlik": 5, "fix": 5, "therefor": 5, "resid": 5, "unidata": 5}, "objects": {"": [[3, 0, 0, "-", "exodus"], [4, 0, 0, "-", "exomerge"]], "exodus": [[3, 1, 1, "", "add_variables"], [3, 2, 1, "", "assembly"], [3, 2, 1, "", "attribute"], [3, 1, 1, "", "basename"], [3, 2, 1, "", "blob"], [3, 1, 1, "", "collectElemConnectivity"], [3, 1, 1, "", "collectLocalElemToLocalElems"], [3, 1, 1, "", "collectLocalNodeToLocalElems"], [3, 1, 1, "", "copyTransfer"], [3, 1, 1, "", "copy_mesh"], [3, 1, 1, "", "ctype_to_numpy"], [3, 2, 1, "", "ex_assembly"], [3, 2, 1, "", "ex_attribute"], [3, 2, 1, "", "ex_blob"], [3, 2, 1, "", "ex_entity_type"], [3, 1, 1, "", "ex_entity_type_to_objType"], [3, 2, 1, "", "ex_init_params"], [3, 2, 1, "", "ex_inquiry"], [3, 1, 1, "", "ex_inquiry_map"], [3, 1, 1, "", "ex_obj_to_inq"], [3, 2, 1, "", "ex_options"], [3, 2, 1, "", "ex_type"], [3, 1, 1, "", "ex_type_map"], [3, 2, 1, "", "exodus"], [3, 1, 1, "", "getExodusVersion"], [3, 1, 1, "", "get_entity_type"], [3, 1, 1, "", "internal_add_variables"], [3, 1, 1, "", "internal_transfer_variables"], [3, 1, 1, "", "setup_ex_assembly"], [3, 1, 1, "", "transfer_variables"]], "exodus.ex_assembly": [[3, 3, 1, "id0", "entity_count"], [3, 3, 1, "id1", "entity_list"], [3, 3, 1, "id2", "id"], [3, 3, 1, "id3", "name"], [3, 3, 1, "id4", "type"]], "exodus.ex_attribute": [[3, 3, 1, "id5", "entity_id"], [3, 3, 1, "id6", "entity_type"], [3, 3, 1, "id7", "name"], [3, 3, 1, "id8", "type"], [3, 3, 1, "id9", "value_count"], [3, 3, 1, "id10", "values"]], "exodus.ex_blob": [[3, 3, 1, "id11", "id"], [3, 3, 1, "id12", "name"], [3, 3, 1, "id13", "num_entry"]], "exodus.ex_entity_type": [[3, 3, 1, "id14", "EX_ASSEMBLY"], [3, 3, 1, "id15", "EX_BLOB"], [3, 3, 1, "id16", "EX_COORDINATE"], [3, 3, 1, "id17", "EX_EDGE_BLOCK"], [3, 3, 1, "id18", "EX_EDGE_MAP"], [3, 3, 1, "id19", "EX_EDGE_SET"], [3, 3, 1, "id20", "EX_ELEM_BLOCK"], [3, 3, 1, "id21", "EX_ELEM_MAP"], [3, 3, 1, "id22", "EX_ELEM_SET"], [3, 3, 1, "id23", "EX_FACE_BLOCK"], [3, 3, 1, "id24", "EX_FACE_MAP"], [3, 3, 1, "id25", "EX_FACE_SET"], [3, 3, 1, "id26", "EX_GLOBAL"], [3, 3, 1, "id27", "EX_INVALID"], [3, 3, 1, "id28", "EX_NODAL"], [3, 3, 1, "id29", "EX_NODE_BLOCK"], [3, 3, 1, "id30", "EX_NODE_MAP"], [3, 3, 1, "id31", "EX_NODE_SET"], [3, 3, 1, "id32", "EX_SIDE_SET"], [3, 4, 1, "", "__contains__"], [3, 4, 1, "", "__getitem__"], [3, 4, 1, "", "__iter__"], [3, 4, 1, "", "__len__"]], "exodus.ex_init_params": [[3, 3, 1, "id33", "num_assembly"], [3, 3, 1, "id34", "num_blob"], [3, 3, 1, "id35", "num_dim"], [3, 3, 1, "id36", "num_edge"], [3, 3, 1, "id37", "num_edge_blk"], [3, 3, 1, "id38", "num_edge_maps"], [3, 3, 1, "id39", "num_edge_sets"], [3, 3, 1, "id40", "num_elem"], [3, 3, 1, "id41", "num_elem_blk"], [3, 3, 1, "id42", "num_elem_maps"], [3, 3, 1, "id43", "num_elem_sets"], [3, 3, 1, "id44", "num_face"], [3, 3, 1, "id45", "num_face_blk"], [3, 3, 1, "id46", "num_face_maps"], [3, 3, 1, "id47", "num_face_sets"], [3, 3, 1, "id48", "num_node_maps"], [3, 3, 1, "id49", "num_node_sets"], [3, 3, 1, "id50", "num_nodes"], [3, 3, 1, "id51", "num_side_sets"], [3, 3, 1, "", "title"]], "exodus.ex_inquiry": [[3, 3, 1, "", "EX_INQ_API_VERS"], [3, 3, 1, "", "EX_INQ_ASSEMBLY"], [3, 3, 1, "", "EX_INQ_BLOB"], [3, 3, 1, "", "EX_INQ_COORD_FRAMES"], [3, 3, 1, "", "EX_INQ_DB_FLOAT_SIZE"], [3, 3, 1, "", "EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH"], [3, 3, 1, "", "EX_INQ_DB_MAX_USED_NAME_LENGTH"], [3, 3, 1, "", "EX_INQ_DB_VERS"], [3, 3, 1, "", "EX_INQ_DIM"], [3, 3, 1, "", "EX_INQ_EB_PROP"], [3, 3, 1, "", "EX_INQ_EDGE"], [3, 3, 1, "", "EX_INQ_EDGE_BLK"], [3, 3, 1, "", "EX_INQ_EDGE_MAP"], [3, 3, 1, "", "EX_INQ_EDGE_PROP"], [3, 3, 1, "", "EX_INQ_EDGE_SETS"], [3, 3, 1, "", "EX_INQ_ELEM"], [3, 3, 1, "", "EX_INQ_ELEM_BLK"], [3, 3, 1, "", "EX_INQ_ELEM_MAP"], [3, 3, 1, "", "EX_INQ_ELEM_SETS"], [3, 3, 1, "", "EX_INQ_ELS_DF_LEN"], [3, 3, 1, "", "EX_INQ_ELS_LEN"], [3, 3, 1, "", "EX_INQ_ELS_PROP"], [3, 3, 1, "", "EX_INQ_EM_PROP"], [3, 3, 1, "", "EX_INQ_ES_DF_LEN"], [3, 3, 1, "", "EX_INQ_ES_LEN"], [3, 3, 1, "", "EX_INQ_ES_PROP"], [3, 3, 1, "", "EX_INQ_FACE"], [3, 3, 1, "", "EX_INQ_FACE_BLK"], [3, 3, 1, "", "EX_INQ_FACE_MAP"], [3, 3, 1, "", "EX_INQ_FACE_PROP"], [3, 3, 1, "", "EX_INQ_FACE_SETS"], [3, 3, 1, "", "EX_INQ_FILE_TYPE"], [3, 3, 1, "", "EX_INQ_FS_DF_LEN"], [3, 3, 1, "", "EX_INQ_FS_LEN"], [3, 3, 1, "", "EX_INQ_FS_PROP"], [3, 3, 1, "", "EX_INQ_INFO"], [3, 3, 1, "", "EX_INQ_INVALID"], [3, 3, 1, "", "EX_INQ_LIB_VERS"], [3, 3, 1, "", "EX_INQ_MAX_READ_NAME_LENGTH"], [3, 3, 1, "", "EX_INQ_NM_PROP"], [3, 3, 1, "", "EX_INQ_NODES"], [3, 3, 1, "", "EX_INQ_NODE_MAP"], [3, 3, 1, "", "EX_INQ_NODE_SETS"], [3, 3, 1, "", "EX_INQ_NS_DF_LEN"], [3, 3, 1, "", "EX_INQ_NS_NODE_LEN"], [3, 3, 1, "", "EX_INQ_NS_PROP"], [3, 3, 1, "", "EX_INQ_QA"], [3, 3, 1, "", "EX_INQ_SIDE_SETS"], [3, 3, 1, "", "EX_INQ_SS_DF_LEN"], [3, 3, 1, "", "EX_INQ_SS_ELEM_LEN"], [3, 3, 1, "", "EX_INQ_SS_NODE_LEN"], [3, 3, 1, "", "EX_INQ_SS_PROP"], [3, 3, 1, "", "EX_INQ_TIME"], [3, 3, 1, "", "EX_INQ_TITLE"], [3, 4, 1, "", "__contains__"], [3, 4, 1, "", "__getitem__"], [3, 4, 1, "", "__iter__"], [3, 4, 1, "", "__len__"]], "exodus.ex_options": [[3, 3, 1, "id52", "EX_ABORT"], [3, 3, 1, "id53", "EX_DEBUG"], [3, 3, 1, "id54", "EX_DEFAULT"], [3, 3, 1, "id55", "EX_NULLVERBOSE"], [3, 3, 1, "id56", "EX_VERBOSE"], [3, 4, 1, "", "__contains__"], [3, 4, 1, "", "__getitem__"], [3, 4, 1, "", "__iter__"], [3, 4, 1, "", "__len__"]], "exodus.ex_type": [[3, 3, 1, "", "EX_CHAR"], [3, 3, 1, "", "EX_DOUBLE"], [3, 3, 1, "", "EX_INTEGER"], [3, 3, 1, "", "EX_INVALID"], [3, 4, 1, "", "__contains__"], [3, 4, 1, "", "__getitem__"], [3, 4, 1, "", "__iter__"], [3, 4, 1, "", "__len__"]], "exodus.exodus": [[3, 4, 1, "", "close"], [3, 4, 1, "", "copy"], [3, 4, 1, "", "copy_file"], [3, 4, 1, "", "elem_blk_info"], [3, 4, 1, "", "elem_type"], [3, 4, 1, "", "get_all_global_variable_values"], [3, 4, 1, "", "get_all_node_set_params"], [3, 4, 1, "", "get_all_side_set_params"], [3, 4, 1, "", "get_assemblies"], [3, 4, 1, "", "get_assembly"], [3, 4, 1, "", "get_attr_values"], [3, 4, 1, "", "get_attribute_count"], [3, 4, 1, "", "get_attribute_names"], [3, 4, 1, "", "get_attributes"], [3, 4, 1, "", "get_blob"], [3, 4, 1, "", "get_block_id_map"], [3, 4, 1, "", "get_coord"], [3, 4, 1, "", "get_coord_names"], [3, 4, 1, "", "get_coords"], [3, 4, 1, "", "get_elem_attr"], [3, 4, 1, "", "get_elem_attr_values"], [3, 4, 1, "", "get_elem_blk_ids"], [3, 4, 1, "", "get_elem_blk_name"], [3, 4, 1, "", "get_elem_blk_names"], [3, 4, 1, "", "get_elem_connectivity"], [3, 4, 1, "", "get_elem_id_map"], [3, 4, 1, "", "get_elem_num_map"], [3, 4, 1, "", "get_elem_order_map"], [3, 4, 1, "", "get_element_attribute_names"], [3, 4, 1, "", "get_element_property_names"], [3, 4, 1, "", "get_element_property_value"], [3, 4, 1, "", "get_element_variable_names"], [3, 4, 1, "", "get_element_variable_number"], [3, 4, 1, "", "get_element_variable_truth_table"], [3, 4, 1, "", "get_element_variable_values"], [3, 4, 1, "", "get_entity_count"], [3, 4, 1, "", "get_global_variable_names"], [3, 4, 1, "", "get_global_variable_number"], [3, 4, 1, "", "get_global_variable_value"], [3, 4, 1, "", "get_global_variable_values"], [3, 4, 1, "", "get_id_map"], [3, 4, 1, "", "get_ids"], [3, 4, 1, "", "get_info_records"], [3, 4, 1, "", "get_name"], [3, 4, 1, "", "get_names"], [3, 4, 1, "", "get_node_id_map"], [3, 4, 1, "", "get_node_num_map"], [3, 4, 1, "", "get_node_set_dist_facts"], [3, 4, 1, "", "get_node_set_ids"], [3, 4, 1, "", "get_node_set_name"], [3, 4, 1, "", "get_node_set_names"], [3, 4, 1, "", "get_node_set_nodes"], [3, 4, 1, "", "get_node_set_params"], [3, 4, 1, "", "get_node_set_property_names"], [3, 4, 1, "", "get_node_set_property_value"], [3, 4, 1, "", "get_node_set_variable_names"], [3, 4, 1, "", "get_node_set_variable_number"], [3, 4, 1, "", "get_node_set_variable_truth_table"], [3, 4, 1, "", "get_node_set_variable_values"], [3, 4, 1, "", "get_node_variable_names"], [3, 4, 1, "", "get_node_variable_number"], [3, 4, 1, "", "get_node_variable_values"], [3, 4, 1, "", "get_num_map"], [3, 4, 1, "", "get_partial_element_variable_values"], [3, 4, 1, "", "get_partial_node_set_variable_values"], [3, 4, 1, "", "get_partial_node_variable_values"], [3, 4, 1, "", "get_partial_side_set_variable_values"], [3, 4, 1, "", "get_qa_records"], [3, 4, 1, "", "get_reduction_variable_name"], [3, 4, 1, "", "get_reduction_variable_names"], [3, 4, 1, "", "get_reduction_variable_number"], [3, 4, 1, "", "get_reduction_variable_values"], [3, 4, 1, "", "get_set_params"], [3, 4, 1, "", "get_side_set"], [3, 4, 1, "", "get_side_set_dist_fact"], [3, 4, 1, "", "get_side_set_ids"], [3, 4, 1, "", "get_side_set_name"], [3, 4, 1, "", "get_side_set_names"], [3, 4, 1, "", "get_side_set_node_list"], [3, 4, 1, "", "get_side_set_params"], [3, 4, 1, "", "get_side_set_property_names"], [3, 4, 1, "", "get_side_set_property_value"], [3, 4, 1, "", "get_side_set_variable_names"], [3, 4, 1, "", "get_side_set_variable_number"], [3, 4, 1, "", "get_side_set_variable_truth_table"], [3, 4, 1, "", "get_side_set_variable_values"], [3, 4, 1, "", "get_sierra_input"], [3, 4, 1, "", "get_times"], [3, 4, 1, "", "get_variable_names"], [3, 4, 1, "", "get_variable_number"], [3, 4, 1, "", "get_variable_truth_table"], [3, 4, 1, "", "get_variable_values"], [3, 4, 1, "", "get_variable_values_time"], [3, 4, 1, "", "inquire"], [3, 4, 1, "", "num_assembly"], [3, 4, 1, "", "num_attr"], [3, 4, 1, "", "num_blks"], [3, 4, 1, "", "num_blob"], [3, 4, 1, "", "num_dimensions"], [3, 4, 1, "", "num_elems"], [3, 4, 1, "", "num_elems_in_blk"], [3, 4, 1, "", "num_faces_in_side_set"], [3, 4, 1, "", "num_info_records"], [3, 4, 1, "", "num_node_sets"], [3, 4, 1, "", "num_nodes"], [3, 4, 1, "", "num_nodes_in_node_set"], [3, 4, 1, "", "num_nodes_per_elem"], [3, 4, 1, "", "num_qa_records"], [3, 4, 1, "", "num_side_sets"], [3, 4, 1, "", "num_times"], [3, 4, 1, "", "put_all_global_variable_values"], [3, 4, 1, "", "put_assemblies"], [3, 4, 1, "", "put_assembly"], [3, 4, 1, "", "put_attribute"], [3, 4, 1, "", "put_attribute_names"], [3, 4, 1, "", "put_concat_elem_blk"], [3, 4, 1, "", "put_coord_names"], [3, 4, 1, "", "put_coords"], [3, 4, 1, "", "put_elem_attr"], [3, 4, 1, "", "put_elem_attr_values"], [3, 4, 1, "", "put_elem_blk_info"], [3, 4, 1, "", "put_elem_blk_name"], [3, 4, 1, "", "put_elem_blk_names"], [3, 4, 1, "", "put_elem_connectivity"], [3, 4, 1, "", "put_elem_face_conn"], [3, 4, 1, "", "put_elem_id_map"], [3, 4, 1, "", "put_element_attribute_names"], [3, 4, 1, "", "put_element_property_value"], [3, 4, 1, "", "put_element_variable_name"], [3, 4, 1, "", "put_element_variable_values"], [3, 4, 1, "", "put_face_count_per_polyhedra"], [3, 4, 1, "", "put_face_node_conn"], [3, 4, 1, "", "put_global_variable_name"], [3, 4, 1, "", "put_global_variable_value"], [3, 4, 1, "", "put_id_map"], [3, 4, 1, "", "put_info"], [3, 4, 1, "", "put_info_ext"], [3, 4, 1, "", "put_info_records"], [3, 4, 1, "", "put_map_param"], [3, 4, 1, "", "put_name"], [3, 4, 1, "", "put_names"], [3, 4, 1, "", "put_node_count_per_face"], [3, 4, 1, "", "put_node_id_map"], [3, 4, 1, "", "put_node_set"], [3, 4, 1, "", "put_node_set_dist_fact"], [3, 4, 1, "", "put_node_set_name"], [3, 4, 1, "", "put_node_set_names"], [3, 4, 1, "", "put_node_set_params"], [3, 4, 1, "", "put_node_set_property_value"], [3, 4, 1, "", "put_node_set_variable_name"], [3, 4, 1, "", "put_node_set_variable_values"], [3, 4, 1, "", "put_node_variable_name"], [3, 4, 1, "", "put_node_variable_values"], [3, 4, 1, "", "put_num_map"], [3, 4, 1, "", "put_polyhedra_elem_blk"], [3, 4, 1, "", "put_polyhedra_face_blk"], [3, 4, 1, "", "put_qa_records"], [3, 4, 1, "", "put_reduction_variable_name"], [3, 4, 1, "", "put_reduction_variable_values"], [3, 4, 1, "", "put_set_params"], [3, 4, 1, "", "put_side_set"], [3, 4, 1, "", "put_side_set_dist_fact"], [3, 4, 1, "", "put_side_set_name"], [3, 4, 1, "", "put_side_set_names"], [3, 4, 1, "", "put_side_set_params"], [3, 4, 1, "", "put_side_set_property_value"], [3, 4, 1, "", "put_side_set_variable_name"], [3, 4, 1, "", "put_side_set_variable_values"], [3, 4, 1, "", "put_time"], [3, 4, 1, "", "put_variable_name"], [3, 4, 1, "", "put_variable_values"], [3, 4, 1, "", "set_element_variable_number"], [3, 4, 1, "", "set_element_variable_truth_table"], [3, 4, 1, "", "set_global_variable_number"], [3, 4, 1, "", "set_node_set_variable_number"], [3, 4, 1, "", "set_node_set_variable_truth_table"], [3, 4, 1, "", "set_node_variable_number"], [3, 4, 1, "", "set_reduction_variable_number"], [3, 4, 1, "", "set_side_set_variable_number"], [3, 4, 1, "", "set_side_set_variable_truth_table"], [3, 4, 1, "", "set_variable_number"], [3, 4, 1, "", "set_variable_truth_table"], [3, 4, 1, "", "summarize"], [3, 4, 1, "", "title"], [3, 4, 1, "", "version_num"]], "exomerge": [[4, 2, 1, "", "DummyFile"], [4, 2, 1, "", "ExodusModel"], [4, 1, 1, "", "import_model"]], "exomerge.DummyFile": [[4, 4, 1, "", "write"]], "exomerge.ExodusModel": [[4, 3, 1, "", "ALL_MULTI_COMPONENT_FIELD_SUBSCRIPTS"], [4, 3, 1, "", "COHESIVE_FORMULA"], [4, 3, 1, "", "DIMENSION"], [4, 3, 1, "", "ELEMENT_CONVERSIONS"], [4, 3, 1, "", "ELEMENT_ORDER"], [4, 3, 1, "", "FACE_MAPPING"], [4, 3, 1, "", "INVERTED_CONNECTIVITY"], [4, 3, 1, "", "MULTI_COMPONENT_FIELD_SUBSCRIPTS"], [4, 3, 1, "", "NODES_PER_ELEMENT"], [4, 3, 1, "", "ROTATED_CONNECTIVITY"], [4, 3, 1, "", "STANDARD_ELEMENT_TYPES"], [4, 3, 1, "", "TRIANGULATED_FACES"], [4, 3, 1, "", "VOLUME_FORMULA"], [4, 4, 1, "", "__getattr__"], [4, 4, 1, "", "add_faces_to_side_set"], [4, 4, 1, "", "add_nodes_to_node_set"], [4, 4, 1, "", "build_hex8_cube"], [4, 4, 1, "", "calculate_element_centroids"], [4, 4, 1, "", "calculate_element_field"], [4, 4, 1, "", "calculate_element_field_maximum"], [4, 4, 1, "", "calculate_element_field_minimum"], [4, 4, 1, "", "calculate_element_volumes"], [4, 4, 1, "", "calculate_global_variable"], [4, 4, 1, "", "calculate_node_field"], [4, 4, 1, "", "calculate_node_field_maximum"], [4, 4, 1, "", "calculate_node_field_minimum"], [4, 4, 1, "", "calculate_node_set_field"], [4, 4, 1, "", "calculate_side_set_field"], [4, 4, 1, "", "combine_element_blocks"], [4, 4, 1, "", "convert_element_blocks"], [4, 4, 1, "", "convert_element_field_to_node_field"], [4, 4, 1, "", "convert_hex8_block_to_tet4_block"], [4, 4, 1, "", "convert_node_field_to_element_field"], [4, 4, 1, "", "convert_side_set_to_cohesive_zone"], [4, 4, 1, "", "copy_timestep"], [4, 4, 1, "", "count_degenerate_elements"], [4, 4, 1, "", "count_disconnected_blocks"], [4, 4, 1, "", "create_averaged_element_field"], [4, 4, 1, "", "create_displacement_field"], [4, 4, 1, "", "create_element_block"], [4, 4, 1, "", "create_element_field"], [4, 4, 1, "", "create_global_variable"], [4, 4, 1, "", "create_interpolated_timestep"], [4, 4, 1, "", "create_node_field"], [4, 4, 1, "", "create_node_set"], [4, 4, 1, "", "create_node_set_field"], [4, 4, 1, "", "create_node_set_from_side_set"], [4, 4, 1, "", "create_nodes"], [4, 4, 1, "", "create_side_set"], [4, 4, 1, "", "create_side_set_field"], [4, 4, 1, "", "create_side_set_from_expression"], [4, 4, 1, "", "create_timestep"], [4, 4, 1, "", "delete_duplicate_elements"], [4, 4, 1, "", "delete_element_block"], [4, 4, 1, "", "delete_element_field"], [4, 4, 1, "", "delete_empty_node_sets"], [4, 4, 1, "", "delete_empty_side_sets"], [4, 4, 1, "", "delete_global_variable"], [4, 4, 1, "", "delete_node_field"], [4, 4, 1, "", "delete_node_set"], [4, 4, 1, "", "delete_node_set_field"], [4, 4, 1, "", "delete_side_set"], [4, 4, 1, "", "delete_side_set_field"], [4, 4, 1, "", "delete_timestep"], [4, 4, 1, "", "delete_unused_nodes"], [4, 4, 1, "", "displace_element_blocks"], [4, 4, 1, "", "displacement_field_exists"], [4, 4, 1, "", "duplicate_element_block"], [4, 4, 1, "", "element_block_exists"], [4, 4, 1, "", "element_field_exists"], [4, 4, 1, "", "export"], [4, 4, 1, "", "export_model"], [4, 4, 1, "", "export_stl_file"], [4, 4, 1, "", "export_wrl_model"], [4, 4, 1, "", "get_all_element_block_names"], [4, 4, 1, "", "get_all_node_set_names"], [4, 4, 1, "", "get_all_side_set_names"], [4, 4, 1, "", "get_closest_node_distance"], [4, 4, 1, "", "get_connectivity"], [4, 4, 1, "", "get_element_block_centroid"], [4, 4, 1, "", "get_element_block_connectivity"], [4, 4, 1, "", "get_element_block_dimension"], [4, 4, 1, "", "get_element_block_extents"], [4, 4, 1, "", "get_element_block_ids"], [4, 4, 1, "", "get_element_block_name"], [4, 4, 1, "", "get_element_block_volume"], [4, 4, 1, "", "get_element_count"], [4, 4, 1, "", "get_element_edge_length_info"], [4, 4, 1, "", "get_element_field_names"], [4, 4, 1, "", "get_element_field_values"], [4, 4, 1, "", "get_global_variable_names"], [4, 4, 1, "", "get_input_deck"], [4, 4, 1, "", "get_length_scale"], [4, 4, 1, "", "get_node_field_names"], [4, 4, 1, "", "get_node_field_values"], [4, 4, 1, "", "get_node_set_field_names"], [4, 4, 1, "", "get_node_set_field_values"], [4, 4, 1, "", "get_node_set_ids"], [4, 4, 1, "", "get_node_set_members"], [4, 4, 1, "", "get_node_set_name"], [4, 4, 1, "", "get_nodes_in_element_block"], [4, 4, 1, "", "get_nodes_in_side_set"], [4, 4, 1, "", "get_nodes_per_element"], [4, 4, 1, "", "get_side_set_area"], [4, 4, 1, "", "get_side_set_field_names"], [4, 4, 1, "", "get_side_set_field_values"], [4, 4, 1, "", "get_side_set_ids"], [4, 4, 1, "", "get_side_set_members"], [4, 4, 1, "", "get_side_set_name"], [4, 4, 1, "", "get_timesteps"], [4, 4, 1, "", "global_variable_exists"], [4, 4, 1, "", "import_model"], [4, 4, 1, "", "make_elements_linear"], [4, 4, 1, "", "make_elements_quadratic"], [4, 4, 1, "", "merge_nodes"], [4, 4, 1, "", "node_field_exists"], [4, 4, 1, "", "node_set_exists"], [4, 4, 1, "", "node_set_field_exists"], [4, 4, 1, "", "output_global_variables"], [4, 4, 1, "", "process_element_fields"], [4, 4, 1, "", "reflect_element_blocks"], [4, 4, 1, "", "rename_element_block"], [4, 4, 1, "", "rename_element_field"], [4, 4, 1, "", "rename_global_variable"], [4, 4, 1, "", "rename_node_field"], [4, 4, 1, "", "rename_node_set"], [4, 4, 1, "", "rename_node_set_field"], [4, 4, 1, "", "rename_side_set"], [4, 4, 1, "", "rename_side_set_field"], [4, 4, 1, "", "rotate_element_blocks"], [4, 4, 1, "", "rotate_geometry"], [4, 4, 1, "", "scale_element_blocks"], [4, 4, 1, "", "scale_geometry"], [4, 4, 1, "", "side_set_exists"], [4, 4, 1, "", "side_set_field_exists"], [4, 4, 1, "", "summarize"], [4, 4, 1, "", "threshold_element_blocks"], [4, 4, 1, "", "timestep_exists"], [4, 4, 1, "", "to_lowercase"], [4, 4, 1, "", "translate_element_blocks"], [4, 4, 1, "", "translate_geometry"], [4, 4, 1, "", "unmerge_element_blocks"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:attribute", "4": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "method", "Python method"]}, "titleterms": {"io_modifi": [0, 5], "valid": 0, "command": 0, "regular": 0, "express": 0, "help": 0, "glob": 0, "exampl": 0, "seaca": [1, 5], "doc": 1, "exodu": [3, 5], "modul": [3, 4, 5], "exomerg": 4, "librari": 5, "python": 5, "ioss": 5, "supe": 5, "nemesi": 5, "chaco": 5, "algebra": 5, "aprepro": 5, "blot": 5, "cgns_decomp": 5, "conjoin": 5, "cpup": 5, "decomp": 5, "ejoin": 5, "epu": 5, "exo_format": 5, "exo2mat": 5, "exodiff": 5, "exomatlab": 5, "exotxt": 5, "explor": 5, "fastq": 5, "gen3d": 5, "genshel": 5, "gjoin": 5, "grepo": 5, "io_info": 5, "io_shel": 5, "mapvar": 5, "kd": 5, "mat2exo": 5, "nas2exo": 5, "nem_join": 5, "nem_slic": 5, "nem_spread": 5, "number": 5, "skinner": 5, "slice": 5, "struc_to_unstruc": 5, "txtexo": 5, "zellij": 5, "netcdf": 5}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"IO_MODIFY Valid Commands": [[0, "io-modify-valid-commands"]], "Regular Expression help": [[0, "regular-expression-help"]], "Glob help": [[0, "glob-help"]], "Glob Examples": [[0, "glob-examples"]], "seacas-docs": [[1, "seacas-docs"]], "SEACAS": [[5, "seacas"]], "Exodus Library": [[5, "exodus-library"]], "Exodus Python Modules": [[5, "exodus-python-modules"]], "IOSS Library": [[5, "ioss-library"]], "SUPES Library": [[5, "supes-library"]], "Nemesis Library": [[5, "nemesis-library"]], "Chaco Library": [[5, "chaco-library"]], "Algebra": [[5, "algebra"]], "Aprepro": [[5, "aprepro"]], "Blot": [[5, "blot"]], "CGNS_Decomp": [[5, "cgns-decomp"]], "Conjoin": [[5, "conjoin"]], "CPUP": [[5, "cpup"]], "Decomp": [[5, "decomp"]], "EJoin": [[5, "ejoin"]], "EPU": [[5, "epu"]], "Exo_Format": [[5, "exo-format"]], "Exo2Mat": [[5, "exo2mat"]], "Exodiff": [[5, "exodiff"]], "Exomatlab": [[5, "exomatlab"]], "Exotxt": [[5, "exotxt"]], "Explore": [[5, "explore"]], "Fastq": [[5, "fastq"]], "Gen3D": [[5, "gen3d"]], "GenShell": [[5, "genshell"]], "GJoin": [[5, "gjoin"]], "Grepos": [[5, "grepos"]], "IO_Info": [[5, "io-info"]], "IO_Modify": [[5, "io-modify"]], "IO_Shell": [[5, "io-shell"]], "Mapvar": [[5, "mapvar"]], "Mapvar-kd": [[5, "mapvar-kd"]], "Mat2Exo": [[5, "mat2exo"]], "Nas2Exo": [[5, "nas2exo"]], "nem_join": [[5, "nem-join"]], "nem_slice": [[5, "nem-slice"]], "nem_spread": [[5, "nem-spread"]], "Numbers": [[5, "numbers"]], "Skinner": [[5, "skinner"]], "Slice": [[5, "slice"]], "Struc_To_Unstruc": [[5, "struc-to-unstruc"]], "TxtExo": [[5, "txtexo"]], "Zellij": [[5, "zellij"]], "NetCDF Library": [[5, "netcdf-library"]], "exodus module": [[3, "module-exodus"]], "exomerge module": [[4, "module-exomerge"]]}, "indexentries": {"ex_abort (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_ABORT"], [3, "id52"]], "ex_assembly (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_ASSEMBLY"], [3, "id14"]], "ex_blob (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_BLOB"], [3, "id15"]], "ex_char (exodus.ex_type attribute)": [[3, "exodus.ex_type.EX_CHAR"]], "ex_coordinate (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_COORDINATE"], [3, "id16"]], "ex_debug (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_DEBUG"], [3, "id53"]], "ex_default (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_DEFAULT"], [3, "id54"]], "ex_double (exodus.ex_type attribute)": [[3, "exodus.ex_type.EX_DOUBLE"]], "ex_edge_block (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_EDGE_BLOCK"], [3, "id17"]], "ex_edge_map (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_EDGE_MAP"], [3, "id18"]], "ex_edge_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_EDGE_SET"], [3, "id19"]], "ex_elem_block (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_ELEM_BLOCK"], [3, "id20"]], "ex_elem_map (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_ELEM_MAP"], [3, "id21"]], "ex_elem_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_ELEM_SET"], [3, "id22"]], "ex_face_block (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_FACE_BLOCK"], [3, "id23"]], "ex_face_map (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_FACE_MAP"], [3, "id24"]], "ex_face_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_FACE_SET"], [3, "id25"]], "ex_global (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_GLOBAL"], [3, "id26"]], "ex_inq_api_vers (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_API_VERS"]], "ex_inq_assembly (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ASSEMBLY"]], "ex_inq_blob (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_BLOB"]], "ex_inq_coord_frames (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_COORD_FRAMES"]], "ex_inq_db_float_size (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DB_FLOAT_SIZE"]], "ex_inq_db_max_allowed_name_length (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH"]], "ex_inq_db_max_used_name_length (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DB_MAX_USED_NAME_LENGTH"]], "ex_inq_db_vers (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DB_VERS"]], "ex_inq_dim (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DIM"]], "ex_inq_eb_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EB_PROP"]], "ex_inq_edge (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE"]], "ex_inq_edge_blk (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE_BLK"]], "ex_inq_edge_map (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE_MAP"]], "ex_inq_edge_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE_PROP"]], "ex_inq_edge_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE_SETS"]], "ex_inq_elem (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELEM"]], "ex_inq_elem_blk (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELEM_BLK"]], "ex_inq_elem_map (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELEM_MAP"]], "ex_inq_elem_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELEM_SETS"]], "ex_inq_els_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELS_DF_LEN"]], "ex_inq_els_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELS_LEN"]], "ex_inq_els_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELS_PROP"]], "ex_inq_em_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EM_PROP"]], "ex_inq_es_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ES_DF_LEN"]], "ex_inq_es_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ES_LEN"]], "ex_inq_es_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ES_PROP"]], "ex_inq_face (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE"]], "ex_inq_face_blk (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE_BLK"]], "ex_inq_face_map (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE_MAP"]], "ex_inq_face_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE_PROP"]], "ex_inq_face_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE_SETS"]], "ex_inq_file_type (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FILE_TYPE"]], "ex_inq_fs_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FS_DF_LEN"]], "ex_inq_fs_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FS_LEN"]], "ex_inq_fs_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FS_PROP"]], "ex_inq_info (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_INFO"]], "ex_inq_invalid (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_INVALID"]], "ex_inq_lib_vers (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_LIB_VERS"]], "ex_inq_max_read_name_length (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_MAX_READ_NAME_LENGTH"]], "ex_inq_nm_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NM_PROP"]], "ex_inq_nodes (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NODES"]], "ex_inq_node_map (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NODE_MAP"]], "ex_inq_node_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NODE_SETS"]], "ex_inq_ns_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NS_DF_LEN"]], "ex_inq_ns_node_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NS_NODE_LEN"]], "ex_inq_ns_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NS_PROP"]], "ex_inq_qa (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_QA"]], "ex_inq_side_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SIDE_SETS"]], "ex_inq_ss_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SS_DF_LEN"]], "ex_inq_ss_elem_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SS_ELEM_LEN"]], "ex_inq_ss_node_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SS_NODE_LEN"]], "ex_inq_ss_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SS_PROP"]], "ex_inq_time (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_TIME"]], "ex_inq_title (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_TITLE"]], "ex_integer (exodus.ex_type attribute)": [[3, "exodus.ex_type.EX_INTEGER"]], "ex_invalid (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_INVALID"], [3, "id27"]], "ex_invalid (exodus.ex_type attribute)": [[3, "exodus.ex_type.EX_INVALID"]], "ex_nodal (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_NODAL"], [3, "id28"]], "ex_node_block (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_NODE_BLOCK"], [3, "id29"]], "ex_node_map (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_NODE_MAP"], [3, "id30"]], "ex_node_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_NODE_SET"], [3, "id31"]], "ex_nullverbose (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_NULLVERBOSE"], [3, "id55"]], "ex_side_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_SIDE_SET"], [3, "id32"]], "ex_verbose (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_VERBOSE"], [3, "id56"]], "__contains__() (exodus.ex_entity_type class method)": [[3, "exodus.ex_entity_type.__contains__"]], "__contains__() (exodus.ex_inquiry class method)": [[3, "exodus.ex_inquiry.__contains__"]], "__contains__() (exodus.ex_options class method)": [[3, "exodus.ex_options.__contains__"]], "__contains__() (exodus.ex_type class method)": [[3, "exodus.ex_type.__contains__"]], "__getitem__() (exodus.ex_entity_type class method)": [[3, "exodus.ex_entity_type.__getitem__"]], "__getitem__() (exodus.ex_inquiry class method)": [[3, "exodus.ex_inquiry.__getitem__"]], "__getitem__() (exodus.ex_options class method)": [[3, "exodus.ex_options.__getitem__"]], "__getitem__() (exodus.ex_type class method)": [[3, "exodus.ex_type.__getitem__"]], "__iter__() (exodus.ex_entity_type class method)": [[3, "exodus.ex_entity_type.__iter__"]], "__iter__() (exodus.ex_inquiry class method)": [[3, "exodus.ex_inquiry.__iter__"]], "__iter__() (exodus.ex_options class method)": [[3, "exodus.ex_options.__iter__"]], "__iter__() (exodus.ex_type class method)": [[3, "exodus.ex_type.__iter__"]], "__len__() (exodus.ex_entity_type class method)": [[3, "exodus.ex_entity_type.__len__"]], "__len__() (exodus.ex_inquiry class method)": [[3, "exodus.ex_inquiry.__len__"]], "__len__() (exodus.ex_options class method)": [[3, "exodus.ex_options.__len__"]], "__len__() (exodus.ex_type class method)": [[3, "exodus.ex_type.__len__"]], "add_variables() (in module exodus)": [[3, "exodus.add_variables"]], "assembly (class in exodus)": [[3, "exodus.assembly"]], "attribute (class in exodus)": [[3, "exodus.attribute"]], "basename() (in module exodus)": [[3, "exodus.basename"]], "blob (class in exodus)": [[3, "exodus.blob"]], "close() (exodus.exodus method)": [[3, "exodus.exodus.close"]], "collectelemconnectivity() (in module exodus)": [[3, "exodus.collectElemConnectivity"]], "collectlocalelemtolocalelems() (in module exodus)": [[3, "exodus.collectLocalElemToLocalElems"]], "collectlocalnodetolocalelems() (in module exodus)": [[3, "exodus.collectLocalNodeToLocalElems"]], "copy() (exodus.exodus method)": [[3, "exodus.exodus.copy"]], "copytransfer() (in module exodus)": [[3, "exodus.copyTransfer"]], "copy_file() (exodus.exodus method)": [[3, "exodus.exodus.copy_file"]], "copy_mesh() (in module exodus)": [[3, "exodus.copy_mesh"]], "ctype_to_numpy() (in module exodus)": [[3, "exodus.ctype_to_numpy"]], "elem_blk_info() (exodus.exodus method)": [[3, "exodus.exodus.elem_blk_info"]], "elem_type() (exodus.exodus method)": [[3, "exodus.exodus.elem_type"]], "entity_count (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.entity_count"], [3, "id0"]], "entity_id (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.entity_id"], [3, "id5"]], "entity_list (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.entity_list"], [3, "id1"]], "entity_type (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.entity_type"], [3, "id6"]], "ex_assembly (class in exodus)": [[3, "exodus.ex_assembly"]], "ex_attribute (class in exodus)": [[3, "exodus.ex_attribute"]], "ex_blob (class in exodus)": [[3, "exodus.ex_blob"]], "ex_entity_type (class in exodus)": [[3, "exodus.ex_entity_type"]], "ex_entity_type_to_objtype() (in module exodus)": [[3, "exodus.ex_entity_type_to_objType"]], "ex_init_params (class in exodus)": [[3, "exodus.ex_init_params"]], "ex_inquiry (class in exodus)": [[3, "exodus.ex_inquiry"]], "ex_inquiry_map() (in module exodus)": [[3, "exodus.ex_inquiry_map"]], "ex_obj_to_inq() (in module exodus)": [[3, "exodus.ex_obj_to_inq"]], "ex_options (class in exodus)": [[3, "exodus.ex_options"]], "ex_type (class in exodus)": [[3, "exodus.ex_type"]], "ex_type_map() (in module exodus)": [[3, "exodus.ex_type_map"]], "exodus": [[3, "module-exodus"]], "exodus (class in exodus)": [[3, "exodus.exodus"]], "getexodusversion() (in module exodus)": [[3, "exodus.getExodusVersion"]], "get_all_global_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_all_global_variable_values"]], "get_all_node_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_all_node_set_params"]], "get_all_side_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_all_side_set_params"]], "get_assemblies() (exodus.exodus method)": [[3, "exodus.exodus.get_assemblies"]], "get_assembly() (exodus.exodus method)": [[3, "exodus.exodus.get_assembly"]], "get_attr_values() (exodus.exodus method)": [[3, "exodus.exodus.get_attr_values"]], "get_attribute_count() (exodus.exodus method)": [[3, "exodus.exodus.get_attribute_count"]], "get_attribute_names() (exodus.exodus method)": [[3, "exodus.exodus.get_attribute_names"]], "get_attributes() (exodus.exodus method)": [[3, "exodus.exodus.get_attributes"]], "get_blob() (exodus.exodus method)": [[3, "exodus.exodus.get_blob"]], "get_block_id_map() (exodus.exodus method)": [[3, "exodus.exodus.get_block_id_map"]], "get_coord() (exodus.exodus method)": [[3, "exodus.exodus.get_coord"]], "get_coord_names() (exodus.exodus method)": [[3, "exodus.exodus.get_coord_names"]], "get_coords() (exodus.exodus method)": [[3, "exodus.exodus.get_coords"]], "get_elem_attr() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_attr"]], "get_elem_attr_values() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_attr_values"]], "get_elem_blk_ids() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_blk_ids"]], "get_elem_blk_name() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_blk_name"]], "get_elem_blk_names() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_blk_names"]], "get_elem_connectivity() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_connectivity"]], "get_elem_id_map() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_id_map"]], "get_elem_num_map() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_num_map"]], "get_elem_order_map() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_order_map"]], "get_element_attribute_names() (exodus.exodus method)": [[3, "exodus.exodus.get_element_attribute_names"]], "get_element_property_names() (exodus.exodus method)": [[3, "exodus.exodus.get_element_property_names"]], "get_element_property_value() (exodus.exodus method)": [[3, "exodus.exodus.get_element_property_value"]], "get_element_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_element_variable_names"]], "get_element_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_element_variable_number"]], "get_element_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.get_element_variable_truth_table"]], "get_element_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_element_variable_values"]], "get_entity_count() (exodus.exodus method)": [[3, "exodus.exodus.get_entity_count"]], "get_entity_type() (in module exodus)": [[3, "exodus.get_entity_type"]], "get_global_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_global_variable_names"]], "get_global_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_global_variable_number"]], "get_global_variable_value() (exodus.exodus method)": [[3, "exodus.exodus.get_global_variable_value"]], "get_global_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_global_variable_values"]], "get_id_map() (exodus.exodus method)": [[3, "exodus.exodus.get_id_map"]], "get_ids() (exodus.exodus method)": [[3, "exodus.exodus.get_ids"]], "get_info_records() (exodus.exodus method)": [[3, "exodus.exodus.get_info_records"]], "get_name() (exodus.exodus method)": [[3, "exodus.exodus.get_name"]], "get_names() (exodus.exodus method)": [[3, "exodus.exodus.get_names"]], "get_node_id_map() (exodus.exodus method)": [[3, "exodus.exodus.get_node_id_map"]], "get_node_num_map() (exodus.exodus method)": [[3, "exodus.exodus.get_node_num_map"]], "get_node_set_dist_facts() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_dist_facts"]], "get_node_set_ids() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_ids"]], "get_node_set_name() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_name"]], "get_node_set_names() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_names"]], "get_node_set_nodes() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_nodes"]], "get_node_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_params"]], "get_node_set_property_names() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_property_names"]], "get_node_set_property_value() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_property_value"]], "get_node_set_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_variable_names"]], "get_node_set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_variable_number"]], "get_node_set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_variable_truth_table"]], "get_node_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_variable_values"]], "get_node_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_node_variable_names"]], "get_node_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_node_variable_number"]], "get_node_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_node_variable_values"]], "get_num_map() (exodus.exodus method)": [[3, "exodus.exodus.get_num_map"]], "get_partial_element_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_partial_element_variable_values"]], "get_partial_node_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_partial_node_set_variable_values"]], "get_partial_node_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_partial_node_variable_values"]], "get_partial_side_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_partial_side_set_variable_values"]], "get_qa_records() (exodus.exodus method)": [[3, "exodus.exodus.get_qa_records"]], "get_reduction_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.get_reduction_variable_name"]], "get_reduction_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_reduction_variable_names"]], "get_reduction_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_reduction_variable_number"]], "get_reduction_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_reduction_variable_values"]], "get_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_set_params"]], "get_side_set() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set"]], "get_side_set_dist_fact() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_dist_fact"]], "get_side_set_ids() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_ids"]], "get_side_set_name() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_name"]], "get_side_set_names() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_names"]], "get_side_set_node_list() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_node_list"]], "get_side_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_params"]], "get_side_set_property_names() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_property_names"]], "get_side_set_property_value() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_property_value"]], "get_side_set_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_variable_names"]], "get_side_set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_variable_number"]], "get_side_set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_variable_truth_table"]], "get_side_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_variable_values"]], "get_sierra_input() (exodus.exodus method)": [[3, "exodus.exodus.get_sierra_input"]], "get_times() (exodus.exodus method)": [[3, "exodus.exodus.get_times"]], "get_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_names"]], "get_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_number"]], "get_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_truth_table"]], "get_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_values"]], "get_variable_values_time() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_values_time"]], "id (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.id"], [3, "id2"]], "id (exodus.ex_blob attribute)": [[3, "exodus.ex_blob.id"], [3, "id11"]], "inquire() (exodus.exodus method)": [[3, "exodus.exodus.inquire"]], "internal_add_variables() (in module exodus)": [[3, "exodus.internal_add_variables"]], "internal_transfer_variables() (in module exodus)": [[3, "exodus.internal_transfer_variables"]], "module": [[3, "module-exodus"], [4, "module-exomerge"]], "name (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.name"], [3, "id3"]], "name (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.name"], [3, "id7"]], "name (exodus.ex_blob attribute)": [[3, "exodus.ex_blob.name"], [3, "id12"]], "num_assembly (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_assembly"], [3, "id33"]], "num_assembly() (exodus.exodus method)": [[3, "exodus.exodus.num_assembly"]], "num_attr() (exodus.exodus method)": [[3, "exodus.exodus.num_attr"]], "num_blks() (exodus.exodus method)": [[3, "exodus.exodus.num_blks"]], "num_blob (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_blob"], [3, "id34"]], "num_blob() (exodus.exodus method)": [[3, "exodus.exodus.num_blob"]], "num_dim (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_dim"], [3, "id35"]], "num_dimensions() (exodus.exodus method)": [[3, "exodus.exodus.num_dimensions"]], "num_edge (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_edge"], [3, "id36"]], "num_edge_blk (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_edge_blk"], [3, "id37"]], "num_edge_maps (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_edge_maps"], [3, "id38"]], "num_edge_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_edge_sets"], [3, "id39"]], "num_elem (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_elem"], [3, "id40"]], "num_elem_blk (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_elem_blk"], [3, "id41"]], "num_elem_maps (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_elem_maps"], [3, "id42"]], "num_elem_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_elem_sets"], [3, "id43"]], "num_elems() (exodus.exodus method)": [[3, "exodus.exodus.num_elems"]], "num_elems_in_blk() (exodus.exodus method)": [[3, "exodus.exodus.num_elems_in_blk"]], "num_entry (exodus.ex_blob attribute)": [[3, "exodus.ex_blob.num_entry"], [3, "id13"]], "num_face (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_face"], [3, "id44"]], "num_face_blk (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_face_blk"], [3, "id45"]], "num_face_maps (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_face_maps"], [3, "id46"]], "num_face_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_face_sets"], [3, "id47"]], "num_faces_in_side_set() (exodus.exodus method)": [[3, "exodus.exodus.num_faces_in_side_set"]], "num_info_records() (exodus.exodus method)": [[3, "exodus.exodus.num_info_records"]], "num_node_maps (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_node_maps"], [3, "id48"]], "num_node_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_node_sets"], [3, "id49"]], "num_node_sets() (exodus.exodus method)": [[3, "exodus.exodus.num_node_sets"]], "num_nodes (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_nodes"], [3, "id50"]], "num_nodes() (exodus.exodus method)": [[3, "exodus.exodus.num_nodes"]], "num_nodes_in_node_set() (exodus.exodus method)": [[3, "exodus.exodus.num_nodes_in_node_set"]], "num_nodes_per_elem() (exodus.exodus method)": [[3, "exodus.exodus.num_nodes_per_elem"]], "num_qa_records() (exodus.exodus method)": [[3, "exodus.exodus.num_qa_records"]], "num_side_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_side_sets"], [3, "id51"]], "num_side_sets() (exodus.exodus method)": [[3, "exodus.exodus.num_side_sets"]], "num_times() (exodus.exodus method)": [[3, "exodus.exodus.num_times"]], "put_all_global_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_all_global_variable_values"]], "put_assemblies() (exodus.exodus method)": [[3, "exodus.exodus.put_assemblies"]], "put_assembly() (exodus.exodus method)": [[3, "exodus.exodus.put_assembly"]], "put_attribute() (exodus.exodus method)": [[3, "exodus.exodus.put_attribute"]], "put_attribute_names() (exodus.exodus method)": [[3, "exodus.exodus.put_attribute_names"]], "put_concat_elem_blk() (exodus.exodus method)": [[3, "exodus.exodus.put_concat_elem_blk"]], "put_coord_names() (exodus.exodus method)": [[3, "exodus.exodus.put_coord_names"]], "put_coords() (exodus.exodus method)": [[3, "exodus.exodus.put_coords"]], "put_elem_attr() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_attr"]], "put_elem_attr_values() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_attr_values"]], "put_elem_blk_info() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_blk_info"]], "put_elem_blk_name() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_blk_name"]], "put_elem_blk_names() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_blk_names"]], "put_elem_connectivity() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_connectivity"]], "put_elem_face_conn() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_face_conn"]], "put_elem_id_map() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_id_map"]], "put_element_attribute_names() (exodus.exodus method)": [[3, "exodus.exodus.put_element_attribute_names"]], "put_element_property_value() (exodus.exodus method)": [[3, "exodus.exodus.put_element_property_value"]], "put_element_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_element_variable_name"]], "put_element_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_element_variable_values"]], "put_face_count_per_polyhedra() (exodus.exodus method)": [[3, "exodus.exodus.put_face_count_per_polyhedra"]], "put_face_node_conn() (exodus.exodus method)": [[3, "exodus.exodus.put_face_node_conn"]], "put_global_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_global_variable_name"]], "put_global_variable_value() (exodus.exodus method)": [[3, "exodus.exodus.put_global_variable_value"]], "put_id_map() (exodus.exodus method)": [[3, "exodus.exodus.put_id_map"]], "put_info() (exodus.exodus method)": [[3, "exodus.exodus.put_info"]], "put_info_ext() (exodus.exodus method)": [[3, "exodus.exodus.put_info_ext"]], "put_info_records() (exodus.exodus method)": [[3, "exodus.exodus.put_info_records"]], "put_map_param() (exodus.exodus method)": [[3, "exodus.exodus.put_map_param"]], "put_name() (exodus.exodus method)": [[3, "exodus.exodus.put_name"]], "put_names() (exodus.exodus method)": [[3, "exodus.exodus.put_names"]], "put_node_count_per_face() (exodus.exodus method)": [[3, "exodus.exodus.put_node_count_per_face"]], "put_node_id_map() (exodus.exodus method)": [[3, "exodus.exodus.put_node_id_map"]], "put_node_set() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set"]], "put_node_set_dist_fact() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_dist_fact"]], "put_node_set_name() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_name"]], "put_node_set_names() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_names"]], "put_node_set_params() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_params"]], "put_node_set_property_value() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_property_value"]], "put_node_set_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_variable_name"]], "put_node_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_variable_values"]], "put_node_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_node_variable_name"]], "put_node_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_node_variable_values"]], "put_num_map() (exodus.exodus method)": [[3, "exodus.exodus.put_num_map"]], "put_polyhedra_elem_blk() (exodus.exodus method)": [[3, "exodus.exodus.put_polyhedra_elem_blk"]], "put_polyhedra_face_blk() (exodus.exodus method)": [[3, "exodus.exodus.put_polyhedra_face_blk"]], "put_qa_records() (exodus.exodus method)": [[3, "exodus.exodus.put_qa_records"]], "put_reduction_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_reduction_variable_name"]], "put_reduction_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_reduction_variable_values"]], "put_set_params() (exodus.exodus method)": [[3, "exodus.exodus.put_set_params"]], "put_side_set() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set"]], "put_side_set_dist_fact() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_dist_fact"]], "put_side_set_name() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_name"]], "put_side_set_names() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_names"]], "put_side_set_params() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_params"]], "put_side_set_property_value() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_property_value"]], "put_side_set_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_variable_name"]], "put_side_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_variable_values"]], "put_time() (exodus.exodus method)": [[3, "exodus.exodus.put_time"]], "put_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_variable_name"]], "put_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_variable_values"]], "set_element_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_element_variable_number"]], "set_element_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.set_element_variable_truth_table"]], "set_global_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_global_variable_number"]], "set_node_set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_node_set_variable_number"]], "set_node_set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.set_node_set_variable_truth_table"]], "set_node_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_node_variable_number"]], "set_reduction_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_reduction_variable_number"]], "set_side_set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_side_set_variable_number"]], "set_side_set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.set_side_set_variable_truth_table"]], "set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_variable_number"]], "set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.set_variable_truth_table"]], "setup_ex_assembly() (in module exodus)": [[3, "exodus.setup_ex_assembly"]], "summarize() (exodus.exodus method)": [[3, "exodus.exodus.summarize"]], "title (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.title"]], "title() (exodus.exodus method)": [[3, "exodus.exodus.title"]], "transfer_variables() (in module exodus)": [[3, "exodus.transfer_variables"]], "type (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.type"], [3, "id4"]], "type (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.type"], [3, "id8"]], "value_count (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.value_count"], [3, "id9"]], "values (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.values"], [3, "id10"]], "version_num() (exodus.exodus method)": [[3, "exodus.exodus.version_num"]], "all_multi_component_field_subscripts (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.ALL_MULTI_COMPONENT_FIELD_SUBSCRIPTS"]], "cohesive_formula (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.COHESIVE_FORMULA"]], "dimension (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.DIMENSION"]], "dummyfile (class in exomerge)": [[4, "exomerge.DummyFile"]], "element_conversions (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.ELEMENT_CONVERSIONS"]], "element_order (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.ELEMENT_ORDER"]], "exodusmodel (class in exomerge)": [[4, "exomerge.ExodusModel"]], "face_mapping (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.FACE_MAPPING"]], "inverted_connectivity (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.INVERTED_CONNECTIVITY"]], "multi_component_field_subscripts (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.MULTI_COMPONENT_FIELD_SUBSCRIPTS"]], "nodes_per_element (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.NODES_PER_ELEMENT"]], "rotated_connectivity (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.ROTATED_CONNECTIVITY"]], "standard_element_types (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.STANDARD_ELEMENT_TYPES"]], "triangulated_faces (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.TRIANGULATED_FACES"]], "volume_formula (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.VOLUME_FORMULA"]], "__getattr__() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.__getattr__"]], "add_faces_to_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.add_faces_to_side_set"]], "add_nodes_to_node_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.add_nodes_to_node_set"]], "build_hex8_cube() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.build_hex8_cube"]], "calculate_element_centroids() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_centroids"]], "calculate_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_field"]], "calculate_element_field_maximum() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_field_maximum"]], "calculate_element_field_minimum() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_field_minimum"]], "calculate_element_volumes() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_volumes"]], "calculate_global_variable() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_global_variable"]], "calculate_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_node_field"]], "calculate_node_field_maximum() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_node_field_maximum"]], "calculate_node_field_minimum() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_node_field_minimum"]], "calculate_node_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_node_set_field"]], "calculate_side_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_side_set_field"]], "combine_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.combine_element_blocks"]], "convert_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_element_blocks"]], "convert_element_field_to_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_element_field_to_node_field"]], "convert_hex8_block_to_tet4_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_hex8_block_to_tet4_block"]], "convert_node_field_to_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_node_field_to_element_field"]], "convert_side_set_to_cohesive_zone() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_side_set_to_cohesive_zone"]], "copy_timestep() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.copy_timestep"]], "count_degenerate_elements() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.count_degenerate_elements"]], "count_disconnected_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.count_disconnected_blocks"]], "create_averaged_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_averaged_element_field"]], "create_displacement_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_displacement_field"]], "create_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_element_block"]], "create_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_element_field"]], "create_global_variable() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_global_variable"]], "create_interpolated_timestep() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_interpolated_timestep"]], "create_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_node_field"]], "create_node_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_node_set"]], "create_node_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_node_set_field"]], "create_node_set_from_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_node_set_from_side_set"]], "create_nodes() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_nodes"]], "create_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_side_set"]], "create_side_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_side_set_field"]], "create_side_set_from_expression() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_side_set_from_expression"]], "create_timestep() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_timestep"]], "delete_duplicate_elements() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_duplicate_elements"]], "delete_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_element_block"]], "delete_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_element_field"]], "delete_empty_node_sets() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_empty_node_sets"]], "delete_empty_side_sets() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_empty_side_sets"]], "delete_global_variable() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_global_variable"]], "delete_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_node_field"]], "delete_node_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_node_set"]], "delete_node_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_node_set_field"]], "delete_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_side_set"]], "delete_side_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_side_set_field"]], "delete_timestep() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_timestep"]], "delete_unused_nodes() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_unused_nodes"]], "displace_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.displace_element_blocks"]], "displacement_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.displacement_field_exists"]], "duplicate_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.duplicate_element_block"]], "element_block_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.element_block_exists"]], "element_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.element_field_exists"]], "exomerge": [[4, "module-exomerge"]], "export() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.export"]], "export_model() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.export_model"]], "export_stl_file() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.export_stl_file"]], "export_wrl_model() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.export_wrl_model"]], "get_all_element_block_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_all_element_block_names"]], "get_all_node_set_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_all_node_set_names"]], "get_all_side_set_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_all_side_set_names"]], "get_closest_node_distance() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_closest_node_distance"]], "get_connectivity() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_connectivity"]], "get_element_block_centroid() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_centroid"]], "get_element_block_connectivity() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_connectivity"]], "get_element_block_dimension() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_dimension"]], "get_element_block_extents() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_extents"]], "get_element_block_ids() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_ids"]], "get_element_block_name() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_name"]], "get_element_block_volume() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_volume"]], "get_element_count() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_count"]], "get_element_edge_length_info() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_edge_length_info"]], "get_element_field_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_field_names"]], "get_element_field_values() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_field_values"]], "get_global_variable_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_global_variable_names"]], "get_input_deck() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_input_deck"]], "get_length_scale() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_length_scale"]], "get_node_field_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_field_names"]], "get_node_field_values() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_field_values"]], "get_node_set_field_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_field_names"]], "get_node_set_field_values() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_field_values"]], "get_node_set_ids() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_ids"]], "get_node_set_members() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_members"]], "get_node_set_name() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_name"]], "get_nodes_in_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_nodes_in_element_block"]], "get_nodes_in_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_nodes_in_side_set"]], "get_nodes_per_element() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_nodes_per_element"]], "get_side_set_area() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_area"]], "get_side_set_field_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_field_names"]], "get_side_set_field_values() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_field_values"]], "get_side_set_ids() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_ids"]], "get_side_set_members() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_members"]], "get_side_set_name() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_name"]], "get_timesteps() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_timesteps"]], "global_variable_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.global_variable_exists"]], "import_model() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.import_model"]], "import_model() (in module exomerge)": [[4, "exomerge.import_model"]], "make_elements_linear() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.make_elements_linear"]], "make_elements_quadratic() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.make_elements_quadratic"]], "merge_nodes() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.merge_nodes"]], "node_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.node_field_exists"]], "node_set_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.node_set_exists"]], "node_set_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.node_set_field_exists"]], "output_global_variables() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.output_global_variables"]], "process_element_fields() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.process_element_fields"]], "reflect_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.reflect_element_blocks"]], "rename_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_element_block"]], "rename_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_element_field"]], "rename_global_variable() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_global_variable"]], "rename_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_node_field"]], "rename_node_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_node_set"]], "rename_node_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_node_set_field"]], "rename_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_side_set"]], "rename_side_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_side_set_field"]], "rotate_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rotate_element_blocks"]], "rotate_geometry() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rotate_geometry"]], "scale_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.scale_element_blocks"]], "scale_geometry() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.scale_geometry"]], "side_set_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.side_set_exists"]], "side_set_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.side_set_field_exists"]], "summarize() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.summarize"]], "threshold_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.threshold_element_blocks"]], "timestep_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.timestep_exists"]], "to_lowercase() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.to_lowercase"]], "translate_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.translate_element_blocks"]], "translate_geometry() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.translate_geometry"]], "unmerge_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.unmerge_element_blocks"]], "write() (exomerge.dummyfile method)": [[4, "exomerge.DummyFile.write"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["IO_Modify", "README", "Slice", "exodus", "exomerge", "index"], "filenames": ["IO_Modify.md", "README.md", "Slice.md", "exodus.rst", "exomerge.rst", "index.rst"], "titles": ["IO_MODIFY Valid Commands", "seacas-docs", "<no title>", "exodus module", "exomerge module", "SEACAS"], "terms": {"io": [0, 5], "_": [0, 2], "modifi": [0, 2, 3, 4, 5], "list": [0, 3, 4, 5], "assembli": [0, 3, 5], "graph": [0, 2, 5], "attribut": [0, 3, 4, 5], "regex": 0, "end": 0, "exit": [0, 2], "input": [0, 2, 3, 4, 5], "output": [0, 2, 3, 4, 5], "chang": [0, 3, 4, 5], "definit": [0, 3, 5], "ani": [0, 3, 4, 5], "quit": 0, "databas": [0, 2, 3, 5], "allow": [0, 3, 5], "modif": [0, 4, 5], "By": [0, 3, 4], "default": [0, 2, 3, 4, 5], "onli": [0, 2, 3, 4, 5], "creation": 0, "new": [0, 3, 4, 5], "If": [0, 2, 3, 4, 5], "thi": [0, 2, 3, 4, 5], "i": [0, 2, 3, 4, 5], "specifi": [0, 2, 3, 4, 5], "can": [0, 2, 3, 4, 5], "alreadi": [0, 3, 4], "exist": [0, 3, 4, 5], "caus": 0, "rewritten": 0, "without": [0, 4], "option": [0, 2, 3, 4, 5], "updat": [0, 3, 4, 5], "place": 0, "elementblock": 0, "block": [0, 3, 4, 5], "structuredblock": 0, "nodeset": [0, 3, 5], "sideset": [0, 3, 5], "blob": [0, 3, 5], "time": [0, 2, 3, 4, 5], "summari": [0, 2, 3, 4, 5], "name": [0, 2, 3, 4, 5], "match": [0, 3, 4, 5], "For": [0, 3, 4, 5], "all": [0, 3, 4, 5], "an": [0, 2, 3, 4, 5], "doe": [0, 3, 4], "creat": [0, 2, 3, 4, 5], "empti": [0, 3], "add": [0, 3, 4, 5], "name1": 0, "name2": 0, "namel": 0, "entiti": [0, 3, 4, 5], "must": [0, 3, 4, 5], "same": [0, 3, 4, 5], "type": [0, 2, 3, 4, 5], "remov": 0, "from": [0, 2, 3, 4, 5], "whose": 0, "ad": [0, 3, 4, 5], "one": [0, 2, 3, 4, 5], "more": [0, 3, 4, 5], "ar": [0, 2, 3, 4, 5], "rang": [0, 3, 4, 5], "id": [0, 3, 4, 5], "TO": [0, 3], "BY": 0, "step": [0, 3, 4, 5], "No": 0, "messag": [0, 3], "id2": 0, "idl": 0, "A": [0, 2, 3, 4, 5], "warn": [0, 3], "request": [0, 3, 4], "delet": [0, 4, 5], "current": [0, 2, 4, 5], "support": [0, 2, 3, 4, 5], "dure": [0, 3], "execut": [0, 3, 4, 5], "filenam": [0, 3, 4], "dot": 0, "file": [0, 2, 3, 4, 5], "structur": [0, 3, 5], "given": [0, 3, 4], "check": [0, 4], "cycl": [0, 3], "ent": 0, "att": 0, "string": [0, 2, 3, 4, 5], "valu": [0, 2, 3, 4, 5], "doubl": [0, 3], "integ": [0, 2, 3, 4, 5], "ent_nam": 0, "The": [0, 2, 3, 4, 5], "att_nam": 0, "": [0, 3, 4, 5], "also": [0, 2, 3, 4, 5], "select": [0, 4, 5], "geometri": [0, 5], "rotat": [0, 4, 5], "x": [0, 3, 4, 5], "y": [0, 3, 4, 5], "z": [0, 3, 4], "angl": [0, 4], "scale": [0, 3, 4, 5], "offset": [0, 4, 5], "t": [0, 4], "out": [0, 5], "us": [0, 2, 3, 4, 5], "posix": 0, "extend": 0, "syntax": [0, 4], "see": [0, 3, 4, 5], "http": [0, 5], "www": 0, "info": [0, 3, 4], "html": 0, "quickstart": 0, "pattern": 0, "zero": [0, 3, 4], "occurr": 0, "anyth": 0, "except": [0, 5], "start": [0, 3, 4], "capit": 0, "letter": 0, "document": [1, 4, 5], "both": [1, 3, 5], "doxygen": [1, 5], "gener": [1, 3, 5], "written": [1, 2, 3, 5], "repositori": 1, "slice": 2, "code": [2, 3, 4, 5], "decompos": [2, 5], "finit": [2, 5], "element": [2, 3, 4, 5], "mesh": [2, 3, 4, 5], "run": [2, 4, 5], "parallel": [2, 5], "analys": [2, 5], "version": [2, 3, 4, 5], "0": [2, 3, 4, 5], "9": [2, 3, 4], "99": 2, "2021": 2, "03": 2, "10": [2, 3, 4, 5], "usag": 2, "split": 2, "help": [2, 5], "print": [2, 4, 5], "val": 2, "format": [2, 3, 4, 5], "exodu": [2, 4], "processor": [2, 5], "number": [2, 3, 4], "method": [2, 3, 4, 5], "decomposit": [2, 5], "linear": [2, 3, 4], "elem": [2, 3], "proc": 2, "each": [2, 3, 4, 5], "scatter": 2, "shuffl": 2, "cyclic": 2, "random": [2, 5], "distribut": [2, 3], "maintain": [2, 5], "balanc": [2, 5], "rb": 2, "meti": 2, "multilevel": [2, 5], "recurs": [2, 5], "bisect": 2, "kwai": 2, "k": [2, 5], "wai": [2, 3, 5], "partit": [2, 5], "variabl": [2, 3, 4, 5], "read": [2, 3, 5], "assign": [2, 4, 5], "map": [2, 3, 5], "processor_id": 2, "decomposition_nam": 2, "contain": [2, 4, 5], "follow": [2, 3, 4], "auto": [2, 4], "entri": [2, 3], "divid": [2, 3], "int": [2, 3, 5], "max_entri": 2, "1": [2, 3, 4, 5], "proc_count": 2, "decomposition_fil": 2, "when": [2, 3, 4, 5], "multipl": [2, 3, 4, 5], "line": [2, 3, 4, 5], "ha": [2, 3, 5], "2": [2, 3, 4, 5], "singl": [2, 3, 4, 5], "two": [2, 3, 4, 5], "count": [2, 3, 4, 5], "thei": [2, 4, 5], "next": 2, "contiguous_decomposit": 2, "contigu": 2, "output_path": 2, "path": 2, "where": [2, 3, 5], "p": [2, 3, 4], "replac": [2, 5], "m": 2, "locat": [2, 3, 4, 5], "partial_read_count": 2, "coordin": [2, 3, 4, 5], "connect": [2, 3, 4, 5], "maximum": [2, 4], "mani": [2, 3, 4, 5], "node": [2, 3, 4, 5], "reduc": [2, 5], "memori": [2, 4, 5], "max": 2, "write": [2, 3, 4, 5], "usual": [2, 5], "typic": [2, 3, 5], "debug": [2, 3], "netcdf4": 2, "hdf5": 2, "base": [2, 3, 4, 5], "instead": [2, 3, 5], "classic": 2, "netcdf": 2, "netcdf5": 2, "cdf5": 2, "64": [2, 5], "bit": [2, 5], "mode": [2, 3], "compress": 2, "zlib": 2, "libz": 2, "enabl": 2, "szip": 2, "4": [2, 3, 4, 5], "level": [2, 5], "d": [2, 4], "copyright": [2, 3, 4], "show": 2, "licens": [2, 3, 4], "data": [2, 3, 5], "set": [2, 3, 4, 5], "via": [2, 3, 5], "slice_opt": 2, "environ": 2, "send": 2, "email": 2, "gsjaardema": 2, "gmail": 2, "com": [2, 5], "py": [3, 5], "v": 3, "21": 3, "seaca": [3, 4], "py3": 3, "python": [3, 4], "wrapper": [3, 4], "some": [3, 5], "librari": 3, "3": [3, 4, 5], "common": 3, "applic": [3, 4, 5], "analysi": [3, 5], "visual": [3, 5], "softwar": [3, 4, 5], "etc": [3, 5], "afford": 3, "flexibl": [3, 5], "robust": 3, "develop": [3, 5], "user": [3, 4, 5], "model": [3, 4, 5], "inherit": 3, "larg": [3, 5], "arrai": [3, 5], "includ": [3, 4, 5], "vendor": 3, "suppli": [3, 5], "which": [3, 4, 5], "access": [3, 4, 5], "directli": 3, "translat": [3, 4, 5], "problem": [3, 4, 5], "specif": [3, 5], "boundari": [3, 5], "condit": [3, 4, 5], "load": [3, 4, 5], "materi": [3, 5], "simul": 3, "result": [3, 4, 5], "verif": 3, "postprocess": [3, 5], "interrog": 3, "track": 3, "three": [3, 4, 5], "primari": 3, "categori": [3, 5], "initi": 3, "size": [3, 5], "paramet": [3, 4, 5], "qualiti": [3, 5], "assur": 3, "inform": [3, 4, 5], "have": [3, 4, 5], "oper": [3, 4, 5], "text": [3, 5], "describ": [3, 5], "static": 3, "do": [3, 4], "through": [3, 4], "nodal": [3, 4, 5], "side": [3, 4], "aid": 3, "appli": [3, 4, 5], "constraint": 3, "five": 3, "global": [3, 4, 5], "store": [3, 4, 5], "exampl": [3, 4, 5], "displac": [3, 4], "direct": [3, 4, 5], "stress": [3, 5], "mai": [3, 4, 5], "anoth": [3, 4, 5], "record": [3, 5], "statu": [3, 5], "binari": [3, 5], "flag": [3, 5], "indic": [3, 4, 5], "whether": 3, "aliv": 3, "dead": 3, "properti": [3, 5], "momentum": 3, "acceler": 3, "particular": [3, 4, 5], "point": [3, 4, 5], "although": 3, "correspond": [3, 4], "fe": 3, "enough": [3, 5], "accommod": 3, "spectrum": 3, "c": [3, 4, 5], "1999": [3, 4], "2023": [3, 4], "nation": [3, 4, 5], "technologi": [3, 4], "engin": [3, 4, 5], "solut": [3, 4, 5], "sandia": [3, 4, 5], "llc": [3, 4], "ntess": [3, 4], "under": [3, 4], "term": [3, 4, 5], "contract": [3, 4], "de": [3, 4], "na0003525": [3, 4], "u": [3, 4], "govern": [3, 4], "retain": [3, 4], "certain": [3, 4, 5], "right": [3, 4], "packag": [3, 4, 5], "detail": [3, 4, 5], "add_vari": 3, "exo": [3, 4], "global_var": 3, "none": [3, 4], "nodal_var": 3, "element_var": 3, "node_set_var": 3, "side_set_var": 3, "sourc": [3, 4, 5], "function": [3, 4, 5], "object": [3, 4], "so": [3, 4, 5], "popul": 3, "them": [3, 4, 5], "later": [3, 5], "tupl": [3, 4], "blkid": 3, "setid": 3, "return": [3, 4], "copy_mesh": 3, "capabl": [3, 5], "class": [3, 4, 5], "basenam": 3, "file_nam": 3, "extract": 3, "test": 3, "e": [3, 4, 5], "num_entri": 3, "collectelemconnect": 3, "exodushandl": 3, "repres": [3, 5], "g": [3, 4, 5], "r": 3, "collectlocalelemtolocalelem": 3, "localnodetolocalelem": 3, "localelemtolocalelem": 3, "go": 3, "local": [3, 4], "assum": [3, 4], "fill": [3, 5], "collectlocalnodetolocalelem": 3, "copytransf": 3, "fromfilenam": 3, "tofilenam": 3, "array_typ": 3, "ctype": 3, "additionalglobalvari": 3, "additionalnodalvari": 3, "additionalelementvari": 3, "additionalnodesetvari": 3, "additionalsidesetvari": 3, "additionalelementattribut": 3, "copi": [3, 4], "everyth": 3, "handl": [3, 5], "addit": [3, 4, 5], "space": 3, "alloc": 3, "numpi": 3, "import": [3, 4], "should": [3, 4, 5], "make": 3, "differ": [3, 5], "command": [3, 4, 5], "within": [3, 4, 5], "correctli": [3, 5], "addglobalvari": 3, "node_dummy1": 3, "node_dummy2": 3, "addnodevari": 3, "elem_dummy1": 3, "elem_dummy2": 3, "addelementvari": 3, "elem_attr_dummy1": 3, "elem_attr_dummy2": 3, "addelementattribut": 3, "tofilehandl": 3, "close": 3, "exofromobj": 3, "ignor": [3, 4], "exo_to": 3, "process": [3, 4, 5], "perman": 3, "mean": [3, 5], "ctype_to_numpi": 3, "c_arrai": 3, "convert": [3, 4, 5], "np_arrai": 3, "ex_assembli": 3, "defin": [3, 4, 5], "int64_t": 3, "char": 3, "ex_entity_typ": 3, "entity_count": 3, "entity_list": 3, "void_int": 3, "union": [3, 5], "member": [3, 4], "ex_attribut": 3, "underli": [3, 5], "entity_typ": 3, "entity_id": 3, "257": 3, "ex_typ": 3, "value_count": 3, "void": 3, "ex_blob": 3, "qualnam": 3, "enum": 3, "exodusii": [3, 4], "h": [3, 5], "ex_nod": 3, "ex_node_block": 3, "alia": [3, 4], "ex_node_set": 3, "ex_edge_block": 3, "edg": [3, 4, 5], "ex_edge_set": 3, "ex_face_block": 3, "face": [3, 4, 5], "ex_face_set": 3, "ex_elem_block": 3, "ex_elem_set": 3, "ex_side_set": 3, "ex_elem_map": 3, "ex_node_map": 3, "ex_edge_map": 3, "ex_face_map": 3, "ex_glob": 3, "ex_coordin": 3, "kluge": 3, "intern": [3, 4, 5], "work": [3, 5], "collect": [3, 5], "other": [3, 4, 5], "arbitrari": [3, 5], "ex_invalid": 3, "invalid": 3, "16": [3, 4], "17": [3, 4], "15": [3, 4], "6": [3, 4], "11": [3, 4], "7": [3, 4, 5], "8": [3, 4, 5], "12": [3, 4], "13": [3, 4], "14": [3, 4], "5": [3, 4, 5], "classmethod": 3, "__contains__": 3, "true": [3, 4], "rais": 3, "typeerror": 3, "note": [3, 4], "longer": [3, 5], "__getitem__": 3, "__iter__": 3, "order": [3, 4, 5], "__len__": 3, "alias": 3, "ex_entity_type_to_objtyp": 3, "ex_init_param": 3, "dimens": [3, 4, 5], "num_dim": 3, "num_nod": 3, "num_edg": 3, "num_edge_blk": 3, "num_fac": 3, "num_face_blk": 3, "num_elem": 3, "num_elem_blk": 3, "num_node_set": 3, "num_edge_set": 3, "num_face_set": 3, "num_side_set": 3, "num_elem_set": 3, "num_node_map": 3, "num_edge_map": 3, "num_face_map": 3, "num_elem_map": 3, "num_assembli": 3, "num_blob": 3, "titl": 3, "ex_inquiri": 3, "ex_inq_api_v": 3, "ex_inq_assembli": 3, "60": 3, "ex_inq_blob": 3, "61": 3, "ex_inq_coord_fram": 3, "47": 3, "ex_inq_db_float_s": 3, "51": 3, "ex_inq_db_max_allowed_name_length": 3, "48": 3, "ex_inq_db_max_used_name_length": 3, "49": 3, "ex_inq_db_v": 3, "ex_inq_dim": 3, "ex_inq_eb_prop": 3, "ex_inq_edg": 3, "27": 3, "ex_inq_edge_blk": 3, "28": 3, "ex_inq_edge_map": 3, "45": 3, "ex_inq_edge_prop": 3, "32": [3, 5], "ex_inq_edge_set": 3, "29": 3, "ex_inq_elem": 3, "ex_inq_elem_blk": 3, "ex_inq_elem_map": 3, "25": 3, "ex_inq_elem_set": 3, "41": 3, "ex_inq_els_df_len": 3, "43": 3, "ex_inq_els_len": 3, "42": 3, "ex_inq_els_prop": 3, "44": 3, "ex_inq_em_prop": 3, "23": 3, "ex_inq_es_df_len": 3, "31": 3, "ex_inq_es_len": 3, "30": [3, 5], "ex_inq_es_prop": 3, "33": 3, "ex_inq_fac": 3, "34": 3, "ex_inq_face_blk": 3, "35": 3, "ex_inq_face_map": 3, "46": 3, "ex_inq_face_prop": 3, "39": 3, "ex_inq_face_set": 3, "36": 3, "ex_inq_file_typ": 3, "ex_inq_fs_df_len": 3, "38": 3, "ex_inq_fs_len": 3, "37": 3, "ex_inq_fs_prop": 3, "40": 3, "ex_inq_info": 3, "ex_inq_invalid": 3, "ex_inq_lib_v": 3, "22": 3, "ex_inq_max_read_name_length": 3, "50": 3, "ex_inq_nm_prop": 3, "24": [3, 4], "ex_inq_nod": 3, "ex_inq_node_map": 3, "26": 3, "ex_inq_node_set": 3, "ex_inq_ns_df_len": 3, "20": [3, 4], "ex_inq_ns_node_len": 3, "ex_inq_ns_prop": 3, "18": [3, 4], "ex_inq_qa": 3, "ex_inq_side_set": 3, "ex_inq_ss_df_len": 3, "ex_inq_ss_elem_len": 3, "ex_inq_ss_node_len": 3, "ex_inq_ss_prop": 3, "19": [3, 4], "ex_inq_tim": 3, "ex_inq_titl": 3, "ex_inquiry_map": 3, "inquiri": 3, "ex_obj_to_inq": 3, "objtyp": 3, "pass": [3, 4], "get": [3, 4], "ex_opt": 3, "OR": 3, "ed": 3, "exopt": 3, "ex_default": 3, "respons": 3, "call": [3, 4, 5], "ex_err": 3, "error": 3, "quiet": 3, "ex_verbos": 3, "verbos": 3, "ex_debug": 3, "ex_abort": 3, "detect": [3, 5], "abort": 3, "let": 3, "decid": 3, "ex_nullverbos": 3, "null": 3, "ex_char": 3, "ex_doubl": 3, "ex_integ": 3, "ex_type_map": 3, "numdim": 3, "numnod": 3, "numelem": 3, "numblock": 3, "numnodeset": 3, "numsideset": 3, "numassembli": 3, "numblob": 3, "init_param": 3, "io_siz": 3, "abstract": 3, "onc": 3, "becom": [3, 4], "inoper": 3, "include_transi": 3, "fals": [3, 4], "open": 3, "need": [3, 5], "done": 3, "being": [3, 5], "exo_copi": 3, "str": 3, "append": [3, 5], "copy_fil": 3, "file_id": 3, "fileid": 3, "w": 3, "exofil": 3, "bool": 3, "transient": [3, 5], "origin": [3, 4, 5], "just": 3, "non": [3, 5], "portion": [3, 5], "elem_blk_info": 3, "object_id": 3, "elem_typ": 3, "num_blk_elem": 3, "num_elem_nod": 3, "num_elem_attr": 3, "elem_blk_id": 3, "ex_entity_id": 3, "index": [3, 4, 5], "hex8": [3, 4], "per": [3, 4, 5], "get_all_global_variable_valu": 3, "get_global_variable_nam": [3, 4], "gvar_val": 3, "time_step": 3, "get_all_node_set_param": 3, "total": [3, 4], "factor": [3, 4], "weight": [3, 5], "combin": [3, 4, 5], "among": 3, "tot_num_ns_nod": 3, "tot_num_ns_dist_fact": 3, "get_all_side_set_param": 3, "tot_num_ss_sid": 3, "tot_num_ss_nod": 3, "tot_num_ss_dist_fact": 3, "sum": 3, "than": [3, 4, 5], "belong": [3, 4], "get_assembli": 3, "get_attr_valu": 3, "elem_attr_nam": 3, "elem_attr": 3, "get_elem_attr": 3, "queri": [3, 5], "get_attribute_count": 3, "objid": 3, "BE": 3, "num_attribut": 3, "100": [3, 4], "get_attribute_nam": 3, "attr_nam": 3, "get_attribut": 3, "get_blob": 3, "get_block_id_map": 3, "obj_typ": 3, "found": [3, 4, 5], "system": [3, 5], "elem_block": 3, "storag": [3, 5], "separ": [3, 5], "elem_id_map": 3, "elem_block_id_map": 3, "get_coord": 3, "x_coord": 3, "y_coord": 3, "z_coord": 3, "node_index": 3, "equival": [3, 4], "get_coord_nam": 3, "length": [3, 4, 5], "num_dimens": 3, "coord_nam": 3, "c_doubl": 3, "first": [3, 4, 5], "second": [3, 5], "get_elem_attr_valu": 3, "get_elem_blk_id": 3, "num_blk": 3, "get_elem_blk_nam": 3, "elem_blk_nam": 3, "get_id": 3, "explan": 3, "between": [3, 4, 5], "get_elem_connect": 3, "elem_conn": 3, "get_id_map": 3, "versu": [3, 5], "get_elem_id_map": 3, "get_elem_num_map": 3, "deprec": 3, "c_int": 3, "get_elem_order_map": 3, "optim": [3, 5], "elem_order_map": 3, "solver": 3, "perform": [3, 4, 5], "get_element_attribute_nam": 3, "get_element_property_nam": 3, "eprop_nam": 3, "get_element_property_valu": 3, "eprop_v": 3, "get_element_variable_nam": 3, "evar_nam": 3, "get_element_variable_numb": 3, "num_evar": 3, "get_element_variable_truth_t": 3, "entid": 3, "get_variable_truth_t": 3, "get_element_variable_valu": 3, "blockid": 3, "evar_v": 3, "get_entity_count": 3, "entityid": 3, "callabl": [3, 5], "gvar_nam": 3, "get_global_variable_numb": 3, "num_gvar": 3, "get_global_variable_valu": 3, "over": 3, "maptyp": 3, "id_map": 3, "number_set_or_block": 3, "node_set_id": [3, 4], "get_info_record": 3, "deck": [3, 4], "info_rec": 3, "get_nam": 3, "object_typ": 3, "blk_name": 3, "get_node_id_map": 3, "node_id_map": 3, "get_node_num_map": 3, "get_node_set_dist_fact": 3, "ns_dist_fact": 3, "get_node_set_id": [3, 4], "get_node_set_nam": [3, 4], "node_set_nam": 3, "get_node_set_nod": 3, "ns_node": 3, "get_node_set_param": 3, "put_set_param": 3, "get_node_set_property_nam": 3, "nsprop_nam": 3, "get_node_set_property_valu": 3, "nsprop_val": 3, "get_node_set_variable_nam": 3, "nsvar_nam": 3, "get_node_set_variable_numb": 3, "num_nsvar": 3, "get_node_set_variable_truth_t": 3, "get_node_set_variable_valu": 3, "nsvar_val": 3, "get_node_variable_nam": 3, "nvar_nam": 3, "get_node_variable_numb": 3, "num_nvar": 3, "get_node_variable_valu": 3, "nvar_val": 3, "get_num_map": 3, "idx": 3, "arbitari": [], "elem_num_map": 3, "inquir": 3, "num_map": 3, "em_cnt": 3, "em": 3, "get_partial_element_variable_valu": 3, "start_index": 3, "num_el": 3, "get_partial_node_set_variable_valu": 3, "get_partial_node_variable_valu": 3, "partial": [3, 5], "get_partial_side_set_variable_valu": 3, "num_sid": 3, "ssvar_val": 3, "get_side_set_variable_valu": 3, "side_set_id": [3, 4], "ssvar_nam": 3, "get_qa_record": 3, "qa": 3, "descriptor": 3, "stamp": 3, "qa_rec": 3, "get_reduction_variable_nam": 3, "varid": 3, "reduct": 3, "nar_nam": 3, "ex_assembl": 3, "get_reduction_variable_numb": 3, "get_reduction_variable_valu": 3, "get_set_param": 3, "num_ns_nod": 3, "num_ns_dist_fact": 3, "set_id": 3, "num_set_ent": 3, "num_set_dist_fact": 3, "get_side_set": 3, "togeth": [3, 5], "ss_elem": 3, "ss_side": 3, "get_side_set_dist_fact": 3, "ss_dist_fact": 3, "get_side_set_id": [3, 4], "get_side_set_nam": [3, 4], "side_set_nam": 3, "get_side_set_node_list": 3, "concaten": [3, 5], "ss_num_nodes_per_sid": 3, "ss_node": 3, "ss_num_side_nod": 3, "get_side_set_param": 3, "num_ss_sid": 3, "num_ss_dist_fact": 3, "get_side_set_property_nam": 3, "ssprop_nam": 3, "get_side_set_property_valu": 3, "ssprop_val": 3, "get_side_set_variable_nam": 3, "get_side_set_variable_numb": 3, "num_ssvar": 3, "get_side_set_variable_truth_t": 3, "get_sierra_input": 3, "inpfilenam": 3, "pars": [3, 5], "sierra": [3, 4], "inp_file_nam": 3, "otherwis": [3, 4], "inp": [3, 5], "provid": [3, 4, 5], "get_tim": 3, "time_v": 3, "get_variable_nam": 3, "get_variable_numb": 3, "truth": 3, "tabl": 3, "faster": [3, 5], "ssvar_truth_tab": 3, "sidesetid": 3, "begin": 3, "truth_tab": 3, "get_variable_valu": 3, "get_variable_values_tim": 3, "var_nam": 3, "start_step": 3, "end_step": 3, "about": [3, 4, 5], "variou": [3, 5], "inq_r": 3, "num_attr": 3, "spatial": 3, "num_elems_in_blk": 3, "num_faces_in_side_set": 3, "num_ss_fac": 3, "num_info_record": 3, "num_info_rec": 3, "num_nodes_in_node_set": 3, "num_nodes_per_elem": 3, "num_qa_record": 3, "num_qa_rec": 3, "num_tim": 3, "put_all_global_variable_valu": 3, "success": 3, "put_assembli": 3, "put_attribut": 3, "put_attribute_nam": 3, "put_concat_elem_blk": 3, "definemap": 3, "put_elem_blk_info": 3, "put_coord_nam": 3, "put_coord": 3, "xcoord": 3, "ycoord": 3, "zcoord": 3, "put_elem_attr": 3, "put_elem_attr_valu": 3, "n_elem": 3, "cap": 3, "put_elem_blk_nam": 3, "put_elem_connect": 3, "put_elem_face_conn": 3, "elemfaceconn": 3, "put": 3, "ravel": 3, "flat": 3, "put_elem_id_map": 3, "put_element_attribute_nam": 3, "put_element_property_valu": 3, "its": [3, 4, 5], "put_element_variable_nam": 3, "goe": 3, "evar_index": 3, "often": 3, "sequenc": [3, 5], "new_evar_index": 3, "set_element_variable_numb": 3, "new_evar": 3, "put_element_variable_valu": 3, "put_face_count_per_polyhedra": 3, "entitycount": 3, "polyhedra": 3, "put_face_node_conn": 3, "facenodeconn": 3, "put_global_variable_nam": 3, "gvar_index": 3, "new_gvar_index": 3, "set_global_variable_numb": 3, "new_gvar": 3, "put_global_variable_valu": 3, "put_id_map": 3, "map_typ": 3, "num_xxx": 3, "put_info": 3, "numelemblk": 3, "metadata": 3, "num_block": 3, "num_n": 3, "num_ss": 3, "put_info_ext": 3, "info_struct": 3, "put_info_record": 3, "put_map_param": 3, "node_map_cnt": 3, "elem_map_cnt": 3, "put_nam": 3, "block_nam": [3, 4], "put_node_count_per_fac": 3, "polygon": 3, "put_node_id_map": 3, "put_node_set": 3, "nodesetnod": 3, "put_node_set_dist_fact": 3, "nodesetdistfact": 3, "put_node_set_nam": 3, "put_node_set_param": 3, "numsetnod": 3, "numsetdistfact": 3, "put_node_set_property_valu": 3, "put_node_set_variable_nam": 3, "nsvar_index": 3, "new_nsvar_index": 3, "set_node_set_variable_numb": 3, "new_nsvar": 3, "put_node_set_variable_valu": 3, "put_node_variable_nam": 3, "nvar_index": 3, "new_nvar_index": 3, "set_node_variable_numb": 3, "new_nvar_nam": 3, "put_node_variable_valu": 3, "put_num_map": 3, "prior": 3, "nm_cnt": 3, "nm": 3, "my_node_map": 3, "scale_map": 3, "put_polyhedra_elem_blk": 3, "num_elems_this_blk": 3, "num_attr_per_elem": 3, "polyhedr": [3, 5], "put_polyhedra_face_blk": 3, "num_faces_this_blk": 3, "num_attr_per_fac": 3, "put_qa_record": 3, "put_reduction_variable_nam": 3, "assemvar_nam": 3, "assemvar_index": 3, "num_assem_var": 3, "new_assem_var_index": 3, "set_reduction_variable_numb": 3, "new_assem_var_nam": 3, "put_reduction_variable_valu": 3, "put_redcution_variable_valu": 3, "numsetent": 3, "num_dist_fact": 3, "equal": 3, "put_side_set": 3, "sidesetel": 3, "sidesetsid": 3, "put_side_set_dist_fact": 3, "sidesetdistfact": 3, "put_side_set_nam": 3, "put_side_set_param": 3, "numsetsid": 3, "put_side_set_property_valu": 3, "put_side_set_variable_nam": 3, "ssvar_index": 3, "new_ssvar_index": 3, "set_side_set_variable_numb": 3, "new_ssvar": 3, "put_side_set_variable_valu": 3, "put_tim": 3, "put_variable_nam": 3, "set_variable_numb": 3, "put_variable_valu": 3, "set_element_variable_truth_t": 3, "set_variable_truth_t": 3, "set_node_set_variable_truth_t": 3, "set_side_set_variable_truth_t": 3, "nsvar_truth_tab": 3, "summar": [3, 4], "similar": [3, 4, 5], "base_ioshell_copi": 3, "331": 3, "000": 3, "363": 3, "300": 3, "version_num": 3, "represent": [3, 5], "getexodusvers": 3, "header": 3, "get_entity_typ": 3, "vartyp": 3, "internal_add_vari": 3, "entvar": 3, "debugprint": 3, "internal_transfer_vari": 3, "exofrom": 3, "additionalvari": 3, "transfer_vari": 3, "setup_ex_assembli": 3, "transfer": [3, 5], "lightweight": [4, 5], "interfac": [4, 5], "manipul": [4, 5], "2020": 4, "2022": 4, "author": 4, "tim": 4, "kostka": 4, "tdkostk": 4, "gov": 4, "2012": [4, 5], "simpl": 4, "import_model": 4, "delete_element_block": 4, "export_model": 4, "most_result": 4, "onlin": 4, "pydoc": 4, "util": [4, 5], "exodusmodel": 4, "sampl": 4, "script": [4, 5], "report": [4, 5], "manual": [4, 5], "sand2013": 4, "0725": 4, "feedback": 4, "featur": [4, 5], "pleas": [4, 5], "contact": 4, "dummyfil": 4, "dummi": 4, "suppress": 4, "stdout": 4, "hold": 4, "all_multi_component_field_subscript": 4, "xx": 4, "xy": 4, "xz": 4, "yx": 4, "yy": 4, "yz": 4, "zx": 4, "zy": 4, "zz": 4, "cohesive_formula": 4, "quad4": 4, "tri3": 4, "wedge6": 4, "tri6": 4, "wedge12": 4, "hex20": 4, "line2": 4, "line3": 4, "quad6": 4, "quad8": 4, "tet10": 4, "tet4": 4, "wedge15": 4, "wedge16": 4, "element_convers": 4, "element_ord": 4, "face_map": 4, "inverted_connect": 4, "multi_component_field_subscript": 4, "full_3x3_tensor": 4, "symmetric_3x3_tensor": 4, "vector": [4, 5], "nodes_per_el": 4, "rotated_connect": 4, "standard_element_typ": 4, "triangulated_fac": 4, "volume_formula": 4, "16666666666666666": 4, "__getattr__": 4, "try": [4, 5], "find": [4, 5], "special": 4, "cannot": [4, 5], "we": 4, "suggest": [4, 5], "case": [4, 5], "made": 4, "typo": 4, "plural": 4, "form": [4, 5], "add_faces_to_side_set": 4, "new_side_set_memb": 4, "element_block_id": 4, "local_element_index": 4, "element_side_index": 4, "add_nodes_to_node_set": 4, "new_node_set_memb": 4, "build_hex8_cub": 4, "extent": 4, "divis": 4, "shape": [4, 5], "cuboid": 4, "minx": 4, "maxx": 4, "mini": 4, "maxi": 4, "minz": 4, "maxz": 4, "minimum": 4, "cube": 4, "min": 4, "calculate_element_centroid": 4, "element_field_name_prefix": 4, "centroid_": 4, "calcul": [4, 5], "centroid": 4, "approxim": 4, "averag": 4, "field": 4, "sinc": [4, 5], "timestep": [4, 5], "centroid_x": 4, "centroid_i": 4, "centroid_z": 4, "altern": 4, "prefix": 4, "calculate_element_field": 4, "express": [4, 5], "refer": [4, 5], "pressur": 4, "stress_xx": 4, "stress_yi": 4, "stress_zz": 4, "calculate_element_field_maximum": 4, "element_field_nam": 4, "calculate_loc": 4, "calculate_block_id": 4, "eqp": 4, "global_vari": 4, "eqps_max": 4, "calculate_element_field_minimum": 4, "eqps_min": 4, "calculate_element_volum": 4, "volum": 4, "dimension": [4, 5], "area": 4, "calculate_global_vari": 4, "time_squar": 4, "potenti": [4, 5], "kinet": 4, "calculate_node_field": 4, "temp_c": 4, "temp_k": 4, "273": 4, "calculate_node_field_maximum": 4, "node_field_nam": 4, "temp": 4, "temp_max": 4, "calculate_node_field_minimum": 4, "temp_min": 4, "calculate_node_set_field": 4, "calculate_side_set_field": 4, "combine_element_block": 4, "target_element_block_id": 4, "target": [4, 5], "smallest": 4, "merg": 4, "convert_element_block": 4, "new_element_typ": 4, "convert_element_field_to_node_field": 4, "everi": 4, "share": [4, 5], "temperatur": 4, "convert_hex8_block_to_tet4_block": 4, "scheme": 4, "hex24tet": 4, "accordingli": 4, "implement": [4, 5], "eeach": 4, "convert_node_field_to_element_field": 4, "convert_side_set_to_cohesive_zon": 4, "new_element_block_id": 4, "cohes": 4, "zone": 4, "exactli": [4, 5], "copy_timestep": 4, "new_timestep": 4, "old": 4, "count_degenerate_el": 4, "degener": 4, "duplic": [4, 5], "count_disconnected_block": 4, "disconnect": 4, "group": 4, "create_averaged_element_field": 4, "from_element_field_nam": 4, "new_element_field_nam": 4, "temp_1": 4, "temp_2": 4, "temp_avg": 4, "temp_": 4, "create_displacement_field": 4, "doesn": 4, "create_element_block": 4, "been": [4, 5], "compris": [4, 5], "element_typ": 4, "element_count": 4, "would": [4, 5], "valid": 4, "shallow": 4, "unnam": 4, "To": [4, 5], "rename_element_block": 4, "create_element_field": 4, "appear": 4, "nan": 4, "create_global_vari": 4, "global_variable_nam": 4, "gravitational_acceler": 4, "create_interpolated_timestep": 4, "interpol": [4, 5], "cubic": 4, "neighbor": 4, "extrapol": 4, "lie": 4, "desir": [4, 5], "create_node_field": 4, "298": 4, "create_node_set": 4, "node_set_memb": 4, "rename_node_set": 4, "create_node_set_field": 4, "node_set_field_nam": 4, "create_node_set_from_side_set": 4, "create_nod": 4, "new_nod": 4, "tripl": 4, "create_side_set": 4, "side_set_memb": 4, "rename_side_set": 4, "create_side_set_field": 4, "side_set_field_nam": 4, "create_side_set_from_express": 4, "toler": 4, "last_if_ani": 4, "zero_member_warn": 4, "satisfi": 4, "extern": [4, 5], "had": 4, "symmetri": [4, 5], "plane": 4, "create_timestep": 4, "delete_duplicate_el": 4, "delete_orphaned_nod": 4, "unus": 4, "prevent": 4, "delete_element_field": 4, "delete_empty_node_set": 4, "delete_empty_side_set": 4, "delete_global_vari": 4, "internal_energi": 4, "delete_node_field": 4, "disp_": 4, "delete_node_set": 4, "delete_node_set_field": 4, "contact_pressur": 4, "delete_side_set": 4, "delete_side_set_field": 4, "delete_timestep": 4, "becaus": 4, "delete_unused_nod": 4, "displace_element_block": 4, "check_for_merged_nod": 4, "rather": 4, "translate_element_block": 4, "displacement_field_exist": 4, "duplicate_element_block": 4, "duplicate_nod": 4, "ones": 4, "element_block_exist": 4, "element_field_exist": 4, "export": 4, "arg": 4, "kwarg": 4, "extens": [4, 5], "appropri": [4, 5], "wrl": 4, "export_wrl_model": 4, "stl": 4, "export_stl_fil": 4, "argument": [4, 5], "output_exomerg": 4, "displacement_timestep": 4, "exterior": 4, "last": 4, "mesh_surfac": 4, "field_rang": 4, "interv": 4, "colorspac": 4, "rgb": 4, "export_exodus_copi": 4, "color": 4, "3d": 4, "colored_eqps_model": 4, "get_all_element_block_nam": 4, "get_all_node_set_nam": 4, "get_all_side_set_nam": 4, "get_closest_node_dist": 4, "distanc": [4, 5], "closest": 4, "get_connect": 4, "get_element_block_centroid": 4, "element_volume_field_nam": 4, "element_centroid_field_nam": 4, "get_element_block_connect": 4, "get_element_block_dimens": 4, "determin": 4, "get_element_block_ext": 4, "min_x": 4, "max_x": 4, "min_i": 4, "max_i": 4, "min_z": 4, "max_z": 4, "get_element_block_id": 4, "get_element_block_nam": 4, "get_element_block_volum": 4, "get_element_count": 4, "get_element_edge_length_info": 4, "get_element_field_nam": 4, "get_element_field_valu": 4, "actual": 4, "strain": [4, 5], "get_input_deck": 4, "retriev": [4, 5], "due": [4, 5], "restrict": 4, "get_length_scal": 4, "largest": 4, "absolut": 4, "compon": [4, 5], "get_node_field_nam": 4, "get_node_field_valu": 4, "disp_x": 4, "get_node_set_field_nam": 4, "get_node_set_field_valu": 4, "get_node_set_memb": 4, "get_nodes_in_element_block": 4, "get_nodes_in_side_set": 4, "get_nodes_per_el": 4, "get_side_set_area": 4, "get_side_set_field_nam": 4, "get_side_set_field_valu": 4, "get_side_set_memb": 4, "get_timestep": 4, "global_variable_exist": 4, "act": 4, "As": 4, "shortcut": 4, "part": [4, 5], "mesh_fil": 4, "results_fil": 4, "make_elements_linear": 4, "attempt": 4, "best": 4, "convers": [4, 5], "involv": 4, "choos": 4, "produc": [4, 5], "fewest": 4, "make_elements_quadrat": 4, "quadrat": 4, "merge_nod": 4, "1e": 4, "06": 4, "relative_toler": 4, "suppress_warn": 4, "closer": [4, 5], "exact": 4, "relative_tolerac": 4, "multipli": 4, "obtain": 4, "node_field_exist": 4, "node_set_exist": 4, "nodeset_nam": 4, "node_set_field_exist": 4, "output_global_vari": 4, "csv": 4, "sent": 4, "els": 4, "process_element_field": 4, "integr": 4, "take": [4, 5], "fulli": 4, "deviator": 4, "sm": 4, "q1p0": 4, "conveni": 4, "post": [4, 5], "reflect_element_block": 4, "normal": 4, "adjust_displacement_field": 4, "reflect": [4, 5], "invert": 4, "across": 4, "uninvert": 4, "either": [4, 5], "block_1": 4, "rename_element_field": 4, "renam": [4, 5], "rename_global_vari": 4, "new_global_variable_nam": 4, "ke": 4, "kinetic_energi": 4, "rename_node_field": 4, "new_node_field_nam": 4, "new_node_set_id": 4, "node_group_1": 4, "rename_node_set_field": 4, "new_node_set_field_nam": 4, "cp": 4, "new_side_set_id": 4, "surface_1": 4, "rename_side_set_field": 4, "new_side_set_field_nam": 4, "rotate_element_block": 4, "axi": [4, 5], "angle_in_degre": 4, "amount": 4, "90": 4, "rotate_geometri": 4, "scale_element_block": 4, "scale_factor": 4, "0254": 4, "scale_geometri": 4, "side_set_exist": 4, "sideset_nam": 4, "side_set_field_exist": 4, "threshold_element_block": 4, "don": 4, "threshold": 4, "move": 4, "01": 4, "timestep_exist": 4, "to_lowercas": 4, "lowercas": 4, "affect": 4, "translate_geometri": 4, "unmerge_element_block": 4, "unmerg": 4, "b": 4, "around": 4, "statement": 4, "laboratori": 5, "snl": 5, "preprocess": 5, "graphic": 5, "It": 5, "analyst": 5, "elsewher": 5, "laptop": 5, "hpc": 5, "wiki": 5, "faq": 5, "like": 5, "answer": 5, "propos": 5, "recent": 5, "yet": 5, "cover": 5, "comput": 5, "date": 5, "still": 5, "instruct": 5, "download": 5, "build": 5, "github": 5, "sandialab": 5, "well": 5, "machin": 5, "independ": 5, "fortran": 5, "routin": 5, "program": 5, "disk": 5, "frame": 5, "cleanup": 5, "api": 5, "full": 5, "topologi": 5, "chapter": 5, "sand2007": 5, "0525": 5, "novel": 5, "differenti": 5, "equat": 5, "discret": 5, "wa": 5, "permit": 5, "billion": 5, "million": 5, "long": 5, "now": 5, "shorter": 5, "charact": 5, "In": 5, "most": 5, "lead": 5, "ne_": 5, "ex_": 5, "There": 5, "few": 5, "complet": 5, "avail": 5, "lower": 5, "exomerg": 5, "subsystem": 5, "high": 5, "design": 5, "give": 5, "agnost": 5, "o": 5, "specic": 5, "backend": 5, "cgn": 5, "heartbeat": 5, "histori": 5, "adios2": 5, "faodel": 5, "simultan": 5, "possibl": 5, "third": 5, "restart": 5, "schedul": 5, "what": 5, "iosystem": 5, "pdf": 5, "medium": 5, "low": 5, "view": 5, "who": 5, "could": 5, "look": 5, "how": 5, "control": 5, "behavior": 5, "subprogram": 5, "frequent": 5, "numer": 5, "servic": 5, "programm": 5, "77": 5, "dynam": 5, "manag": 5, "depend": 5, "standard": 5, "while": 5, "sever": 5, "backward": 5, "compat": 5, "older": 5, "you": 5, "enhanc": 5, "unstructur": 5, "facilit": 5, "scalar": 5, "serial": 5, "onto": 5, "compromis": 5, "zoltan2": 5, "fundament": 5, "scientif": 5, "context": 5, "small": 5, "These": 5, "inerti": 5, "spectral": 5, "kernighan": 5, "lin": 5, "simpler": 5, "strategi": 5, "approach": 5, "four": 5, "eight": 5, "piec": 5, "improv": 5, "algorithm": 5, "brief": 5, "descript": 5, "along": 5, "relev": 5, "literatur": 5, "address": 5, "briefli": 5, "varieti": 5, "discuss": 5, "offer": 5, "short": 5, "768": 5, "chaco_version_major": 5, "chaco_version_minor": 5, "chaco_version_patch": 5, "befor": 5, "plot": 5, "veloc": 5, "evalu": 5, "preprocessor": 5, "interpret": 5, "mathemat": 5, "flow": 5, "construct": 5, "unit": 5, "major": 5, "deform": 5, "contour": 5, "paint": 5, "symbol": 5, "crack": 5, "pathlin": 5, "drawn": 5, "birth": 5, "death": 5, "displai": 5, "mirror": 5, "curv": 5, "accumul": 5, "pair": 5, "center": 5, "metric": 5, "comparison": 5, "judg": 5, "join": 5, "tempor": 5, "overlap": 5, "colloc": 5, "similarli": 5, "meta": 5, "bulk": 5, "conex": 5, "rank": 5, "recombin": 5, "disjoint": 5, "That": 5, "unless": 5, "never": 5, "even": 5, "ident": 5, "One": 5, "own": 5, "submesh": 5, "subset": 5, "entir": 5, "commun": 5, "respect": 5, "n": 5, "dataset": 5, "want": 5, "purpos": 5, "correct": 5, "discard": 5, "requir": 5, "float": 5, "variant": 5, "config": 5, "parti": 5, "configur": 5, "compar": 5, "ex": 5, "odu": 5, "main": 5, "matlab": 5, "edit": 5, "back": 5, "ncdump": 5, "ncgen": 5, "examin": 5, "termin": 5, "interact": 5, "power": 5, "effici": 5, "tool": 5, "capac": 5, "good": 5, "techniqu": 5, "emploi": 5, "higher": 5, "primit": 5, "automat": 5, "commonli": 5, "encount": 5, "triangl": 5, "semi": 5, "circl": 5, "transit": 5, "coars": 5, "fine": 5, "built": 5, "layer": 5, "rue": 5, "geometr": 5, "adjust": 5, "incorpor": 5, "memo": 5, "pave": 5, "sand": 5, "accord": 5, "transform": 5, "spheric": 5, "surfac": 5, "cylindr": 5, "reorient": 5, "revolv": 5, "axisymmetr": 5, "planar": 5, "importantli": 5, "complex": 5, "compos": 5, "section": 5, "shell": 5, "quadrilater": 5, "ellipsoid": 5, "spline": 5, "further": 5, "identif": 5, "newer": 5, "reposit": 5, "orient": 5, "explod": 5, "enter": 5, "were": 5, "instal": 5, "possibli": 5, "datbas": 5, "in_typ": 5, "1x1x1": 5, "buggi": 5, "ok": 5, "howev": 5, "issu": 5, "draw": 5, "heavili": 5, "merlin": 5, "ii": 5, "speed": 5, "keep": 5, "present": 5, "demonstr": 5, "effect": 5, "almost": 5, "search": 5, "much": 5, "situat": 5, "slower": 5, "mat": 5, "invers": 5, "nastran": 5, "fem": 5, "spread": 5, "taken": 5, "companion": 5, "here": 5, "limit": 5, "hexahedr": 5, "consist": 5, "skin": 5, "experiment": 5, "cell": 5, "templat": 5, "tile": 5, "j": 5, "interior": 5, "lattic": 5, "arrang": 5, "self": 5, "unlimit": 5, "multi": 5, "real": 5, "byte": 5, "accompani": 5, "ancillari": 5, "measur": 5, "prescrib": 5, "unlik": 5, "fix": 5, "therefor": 5, "resid": 5, "unidata": 5}, "objects": {"": [[3, 0, 0, "-", "exodus"], [4, 0, 0, "-", "exomerge"]], "exodus": [[3, 1, 1, "", "add_variables"], [3, 2, 1, "", "assembly"], [3, 2, 1, "", "attribute"], [3, 1, 1, "", "basename"], [3, 2, 1, "", "blob"], [3, 1, 1, "", "collectElemConnectivity"], [3, 1, 1, "", "collectLocalElemToLocalElems"], [3, 1, 1, "", "collectLocalNodeToLocalElems"], [3, 1, 1, "", "copyTransfer"], [3, 1, 1, "", "copy_mesh"], [3, 1, 1, "", "ctype_to_numpy"], [3, 2, 1, "", "ex_assembly"], [3, 2, 1, "", "ex_attribute"], [3, 2, 1, "", "ex_blob"], [3, 2, 1, "", "ex_entity_type"], [3, 1, 1, "", "ex_entity_type_to_objType"], [3, 2, 1, "", "ex_init_params"], [3, 2, 1, "", "ex_inquiry"], [3, 1, 1, "", "ex_inquiry_map"], [3, 1, 1, "", "ex_obj_to_inq"], [3, 2, 1, "", "ex_options"], [3, 2, 1, "", "ex_type"], [3, 1, 1, "", "ex_type_map"], [3, 2, 1, "", "exodus"], [3, 1, 1, "", "getExodusVersion"], [3, 1, 1, "", "get_entity_type"], [3, 1, 1, "", "internal_add_variables"], [3, 1, 1, "", "internal_transfer_variables"], [3, 1, 1, "", "setup_ex_assembly"], [3, 1, 1, "", "transfer_variables"]], "exodus.ex_assembly": [[3, 3, 1, "id0", "entity_count"], [3, 3, 1, "id1", "entity_list"], [3, 3, 1, "id2", "id"], [3, 3, 1, "id3", "name"], [3, 3, 1, "id4", "type"]], "exodus.ex_attribute": [[3, 3, 1, "id5", "entity_id"], [3, 3, 1, "id6", "entity_type"], [3, 3, 1, "id7", "name"], [3, 3, 1, "id8", "type"], [3, 3, 1, "id9", "value_count"], [3, 3, 1, "id10", "values"]], "exodus.ex_blob": [[3, 3, 1, "id11", "id"], [3, 3, 1, "id12", "name"], [3, 3, 1, "id13", "num_entry"]], "exodus.ex_entity_type": [[3, 3, 1, "id14", "EX_ASSEMBLY"], [3, 3, 1, "id15", "EX_BLOB"], [3, 3, 1, "id16", "EX_COORDINATE"], [3, 3, 1, "id17", "EX_EDGE_BLOCK"], [3, 3, 1, "id18", "EX_EDGE_MAP"], [3, 3, 1, "id19", "EX_EDGE_SET"], [3, 3, 1, "id20", "EX_ELEM_BLOCK"], [3, 3, 1, "id21", "EX_ELEM_MAP"], [3, 3, 1, "id22", "EX_ELEM_SET"], [3, 3, 1, "id23", "EX_FACE_BLOCK"], [3, 3, 1, "id24", "EX_FACE_MAP"], [3, 3, 1, "id25", "EX_FACE_SET"], [3, 3, 1, "id26", "EX_GLOBAL"], [3, 3, 1, "id27", "EX_INVALID"], [3, 3, 1, "id28", "EX_NODAL"], [3, 3, 1, "id29", "EX_NODE_BLOCK"], [3, 3, 1, "id30", "EX_NODE_MAP"], [3, 3, 1, "id31", "EX_NODE_SET"], [3, 3, 1, "id32", "EX_SIDE_SET"], [3, 4, 1, "", "__contains__"], [3, 4, 1, "", "__getitem__"], [3, 4, 1, "", "__iter__"], [3, 4, 1, "", "__len__"]], "exodus.ex_init_params": [[3, 3, 1, "id33", "num_assembly"], [3, 3, 1, "id34", "num_blob"], [3, 3, 1, "id35", "num_dim"], [3, 3, 1, "id36", "num_edge"], [3, 3, 1, "id37", "num_edge_blk"], [3, 3, 1, "id38", "num_edge_maps"], [3, 3, 1, "id39", "num_edge_sets"], [3, 3, 1, "id40", "num_elem"], [3, 3, 1, "id41", "num_elem_blk"], [3, 3, 1, "id42", "num_elem_maps"], [3, 3, 1, "id43", "num_elem_sets"], [3, 3, 1, "id44", "num_face"], [3, 3, 1, "id45", "num_face_blk"], [3, 3, 1, "id46", "num_face_maps"], [3, 3, 1, "id47", "num_face_sets"], [3, 3, 1, "id48", "num_node_maps"], [3, 3, 1, "id49", "num_node_sets"], [3, 3, 1, "id50", "num_nodes"], [3, 3, 1, "id51", "num_side_sets"], [3, 3, 1, "", "title"]], "exodus.ex_inquiry": [[3, 3, 1, "", "EX_INQ_API_VERS"], [3, 3, 1, "", "EX_INQ_ASSEMBLY"], [3, 3, 1, "", "EX_INQ_BLOB"], [3, 3, 1, "", "EX_INQ_COORD_FRAMES"], [3, 3, 1, "", "EX_INQ_DB_FLOAT_SIZE"], [3, 3, 1, "", "EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH"], [3, 3, 1, "", "EX_INQ_DB_MAX_USED_NAME_LENGTH"], [3, 3, 1, "", "EX_INQ_DB_VERS"], [3, 3, 1, "", "EX_INQ_DIM"], [3, 3, 1, "", "EX_INQ_EB_PROP"], [3, 3, 1, "", "EX_INQ_EDGE"], [3, 3, 1, "", "EX_INQ_EDGE_BLK"], [3, 3, 1, "", "EX_INQ_EDGE_MAP"], [3, 3, 1, "", "EX_INQ_EDGE_PROP"], [3, 3, 1, "", "EX_INQ_EDGE_SETS"], [3, 3, 1, "", "EX_INQ_ELEM"], [3, 3, 1, "", "EX_INQ_ELEM_BLK"], [3, 3, 1, "", "EX_INQ_ELEM_MAP"], [3, 3, 1, "", "EX_INQ_ELEM_SETS"], [3, 3, 1, "", "EX_INQ_ELS_DF_LEN"], [3, 3, 1, "", "EX_INQ_ELS_LEN"], [3, 3, 1, "", "EX_INQ_ELS_PROP"], [3, 3, 1, "", "EX_INQ_EM_PROP"], [3, 3, 1, "", "EX_INQ_ES_DF_LEN"], [3, 3, 1, "", "EX_INQ_ES_LEN"], [3, 3, 1, "", "EX_INQ_ES_PROP"], [3, 3, 1, "", "EX_INQ_FACE"], [3, 3, 1, "", "EX_INQ_FACE_BLK"], [3, 3, 1, "", "EX_INQ_FACE_MAP"], [3, 3, 1, "", "EX_INQ_FACE_PROP"], [3, 3, 1, "", "EX_INQ_FACE_SETS"], [3, 3, 1, "", "EX_INQ_FILE_TYPE"], [3, 3, 1, "", "EX_INQ_FS_DF_LEN"], [3, 3, 1, "", "EX_INQ_FS_LEN"], [3, 3, 1, "", "EX_INQ_FS_PROP"], [3, 3, 1, "", "EX_INQ_INFO"], [3, 3, 1, "", "EX_INQ_INVALID"], [3, 3, 1, "", "EX_INQ_LIB_VERS"], [3, 3, 1, "", "EX_INQ_MAX_READ_NAME_LENGTH"], [3, 3, 1, "", "EX_INQ_NM_PROP"], [3, 3, 1, "", "EX_INQ_NODES"], [3, 3, 1, "", "EX_INQ_NODE_MAP"], [3, 3, 1, "", "EX_INQ_NODE_SETS"], [3, 3, 1, "", "EX_INQ_NS_DF_LEN"], [3, 3, 1, "", "EX_INQ_NS_NODE_LEN"], [3, 3, 1, "", "EX_INQ_NS_PROP"], [3, 3, 1, "", "EX_INQ_QA"], [3, 3, 1, "", "EX_INQ_SIDE_SETS"], [3, 3, 1, "", "EX_INQ_SS_DF_LEN"], [3, 3, 1, "", "EX_INQ_SS_ELEM_LEN"], [3, 3, 1, "", "EX_INQ_SS_NODE_LEN"], [3, 3, 1, "", "EX_INQ_SS_PROP"], [3, 3, 1, "", "EX_INQ_TIME"], [3, 3, 1, "", "EX_INQ_TITLE"], [3, 4, 1, "", "__contains__"], [3, 4, 1, "", "__getitem__"], [3, 4, 1, "", "__iter__"], [3, 4, 1, "", "__len__"]], "exodus.ex_options": [[3, 3, 1, "id52", "EX_ABORT"], [3, 3, 1, "id53", "EX_DEBUG"], [3, 3, 1, "id54", "EX_DEFAULT"], [3, 3, 1, "id55", "EX_NULLVERBOSE"], [3, 3, 1, "id56", "EX_VERBOSE"], [3, 4, 1, "", "__contains__"], [3, 4, 1, "", "__getitem__"], [3, 4, 1, "", "__iter__"], [3, 4, 1, "", "__len__"]], "exodus.ex_type": [[3, 3, 1, "", "EX_CHAR"], [3, 3, 1, "", "EX_DOUBLE"], [3, 3, 1, "", "EX_INTEGER"], [3, 3, 1, "", "EX_INVALID"], [3, 4, 1, "", "__contains__"], [3, 4, 1, "", "__getitem__"], [3, 4, 1, "", "__iter__"], [3, 4, 1, "", "__len__"]], "exodus.exodus": [[3, 4, 1, "", "close"], [3, 4, 1, "", "copy"], [3, 4, 1, "", "copy_file"], [3, 4, 1, "", "elem_blk_info"], [3, 4, 1, "", "elem_type"], [3, 4, 1, "", "get_all_global_variable_values"], [3, 4, 1, "", "get_all_node_set_params"], [3, 4, 1, "", "get_all_side_set_params"], [3, 4, 1, "", "get_assemblies"], [3, 4, 1, "", "get_assembly"], [3, 4, 1, "", "get_attr_values"], [3, 4, 1, "", "get_attribute_count"], [3, 4, 1, "", "get_attribute_names"], [3, 4, 1, "", "get_attributes"], [3, 4, 1, "", "get_blob"], [3, 4, 1, "", "get_block_id_map"], [3, 4, 1, "", "get_coord"], [3, 4, 1, "", "get_coord_names"], [3, 4, 1, "", "get_coords"], [3, 4, 1, "", "get_elem_attr"], [3, 4, 1, "", "get_elem_attr_values"], [3, 4, 1, "", "get_elem_blk_ids"], [3, 4, 1, "", "get_elem_blk_name"], [3, 4, 1, "", "get_elem_blk_names"], [3, 4, 1, "", "get_elem_connectivity"], [3, 4, 1, "", "get_elem_id_map"], [3, 4, 1, "", "get_elem_num_map"], [3, 4, 1, "", "get_elem_order_map"], [3, 4, 1, "", "get_element_attribute_names"], [3, 4, 1, "", "get_element_property_names"], [3, 4, 1, "", "get_element_property_value"], [3, 4, 1, "", "get_element_variable_names"], [3, 4, 1, "", "get_element_variable_number"], [3, 4, 1, "", "get_element_variable_truth_table"], [3, 4, 1, "", "get_element_variable_values"], [3, 4, 1, "", "get_entity_count"], [3, 4, 1, "", "get_global_variable_names"], [3, 4, 1, "", "get_global_variable_number"], [3, 4, 1, "", "get_global_variable_value"], [3, 4, 1, "", "get_global_variable_values"], [3, 4, 1, "", "get_id_map"], [3, 4, 1, "", "get_ids"], [3, 4, 1, "", "get_info_records"], [3, 4, 1, "", "get_name"], [3, 4, 1, "", "get_names"], [3, 4, 1, "", "get_node_id_map"], [3, 4, 1, "", "get_node_num_map"], [3, 4, 1, "", "get_node_set_dist_facts"], [3, 4, 1, "", "get_node_set_ids"], [3, 4, 1, "", "get_node_set_name"], [3, 4, 1, "", "get_node_set_names"], [3, 4, 1, "", "get_node_set_nodes"], [3, 4, 1, "", "get_node_set_params"], [3, 4, 1, "", "get_node_set_property_names"], [3, 4, 1, "", "get_node_set_property_value"], [3, 4, 1, "", "get_node_set_variable_names"], [3, 4, 1, "", "get_node_set_variable_number"], [3, 4, 1, "", "get_node_set_variable_truth_table"], [3, 4, 1, "", "get_node_set_variable_values"], [3, 4, 1, "", "get_node_variable_names"], [3, 4, 1, "", "get_node_variable_number"], [3, 4, 1, "", "get_node_variable_values"], [3, 4, 1, "", "get_num_map"], [3, 4, 1, "", "get_partial_element_variable_values"], [3, 4, 1, "", "get_partial_node_set_variable_values"], [3, 4, 1, "", "get_partial_node_variable_values"], [3, 4, 1, "", "get_partial_side_set_variable_values"], [3, 4, 1, "", "get_qa_records"], [3, 4, 1, "", "get_reduction_variable_name"], [3, 4, 1, "", "get_reduction_variable_names"], [3, 4, 1, "", "get_reduction_variable_number"], [3, 4, 1, "", "get_reduction_variable_values"], [3, 4, 1, "", "get_set_params"], [3, 4, 1, "", "get_side_set"], [3, 4, 1, "", "get_side_set_dist_fact"], [3, 4, 1, "", "get_side_set_ids"], [3, 4, 1, "", "get_side_set_name"], [3, 4, 1, "", "get_side_set_names"], [3, 4, 1, "", "get_side_set_node_list"], [3, 4, 1, "", "get_side_set_params"], [3, 4, 1, "", "get_side_set_property_names"], [3, 4, 1, "", "get_side_set_property_value"], [3, 4, 1, "", "get_side_set_variable_names"], [3, 4, 1, "", "get_side_set_variable_number"], [3, 4, 1, "", "get_side_set_variable_truth_table"], [3, 4, 1, "", "get_side_set_variable_values"], [3, 4, 1, "", "get_sierra_input"], [3, 4, 1, "", "get_times"], [3, 4, 1, "", "get_variable_names"], [3, 4, 1, "", "get_variable_number"], [3, 4, 1, "", "get_variable_truth_table"], [3, 4, 1, "", "get_variable_values"], [3, 4, 1, "", "get_variable_values_time"], [3, 4, 1, "", "inquire"], [3, 4, 1, "", "num_assembly"], [3, 4, 1, "", "num_attr"], [3, 4, 1, "", "num_blks"], [3, 4, 1, "", "num_blob"], [3, 4, 1, "", "num_dimensions"], [3, 4, 1, "", "num_elems"], [3, 4, 1, "", "num_elems_in_blk"], [3, 4, 1, "", "num_faces_in_side_set"], [3, 4, 1, "", "num_info_records"], [3, 4, 1, "", "num_node_sets"], [3, 4, 1, "", "num_nodes"], [3, 4, 1, "", "num_nodes_in_node_set"], [3, 4, 1, "", "num_nodes_per_elem"], [3, 4, 1, "", "num_qa_records"], [3, 4, 1, "", "num_side_sets"], [3, 4, 1, "", "num_times"], [3, 4, 1, "", "put_all_global_variable_values"], [3, 4, 1, "", "put_assemblies"], [3, 4, 1, "", "put_assembly"], [3, 4, 1, "", "put_attribute"], [3, 4, 1, "", "put_attribute_names"], [3, 4, 1, "", "put_concat_elem_blk"], [3, 4, 1, "", "put_coord_names"], [3, 4, 1, "", "put_coords"], [3, 4, 1, "", "put_elem_attr"], [3, 4, 1, "", "put_elem_attr_values"], [3, 4, 1, "", "put_elem_blk_info"], [3, 4, 1, "", "put_elem_blk_name"], [3, 4, 1, "", "put_elem_blk_names"], [3, 4, 1, "", "put_elem_connectivity"], [3, 4, 1, "", "put_elem_face_conn"], [3, 4, 1, "", "put_elem_id_map"], [3, 4, 1, "", "put_element_attribute_names"], [3, 4, 1, "", "put_element_property_value"], [3, 4, 1, "", "put_element_variable_name"], [3, 4, 1, "", "put_element_variable_values"], [3, 4, 1, "", "put_face_count_per_polyhedra"], [3, 4, 1, "", "put_face_node_conn"], [3, 4, 1, "", "put_global_variable_name"], [3, 4, 1, "", "put_global_variable_value"], [3, 4, 1, "", "put_id_map"], [3, 4, 1, "", "put_info"], [3, 4, 1, "", "put_info_ext"], [3, 4, 1, "", "put_info_records"], [3, 4, 1, "", "put_map_param"], [3, 4, 1, "", "put_name"], [3, 4, 1, "", "put_names"], [3, 4, 1, "", "put_node_count_per_face"], [3, 4, 1, "", "put_node_id_map"], [3, 4, 1, "", "put_node_set"], [3, 4, 1, "", "put_node_set_dist_fact"], [3, 4, 1, "", "put_node_set_name"], [3, 4, 1, "", "put_node_set_names"], [3, 4, 1, "", "put_node_set_params"], [3, 4, 1, "", "put_node_set_property_value"], [3, 4, 1, "", "put_node_set_variable_name"], [3, 4, 1, "", "put_node_set_variable_values"], [3, 4, 1, "", "put_node_variable_name"], [3, 4, 1, "", "put_node_variable_values"], [3, 4, 1, "", "put_num_map"], [3, 4, 1, "", "put_polyhedra_elem_blk"], [3, 4, 1, "", "put_polyhedra_face_blk"], [3, 4, 1, "", "put_qa_records"], [3, 4, 1, "", "put_reduction_variable_name"], [3, 4, 1, "", "put_reduction_variable_values"], [3, 4, 1, "", "put_set_params"], [3, 4, 1, "", "put_side_set"], [3, 4, 1, "", "put_side_set_dist_fact"], [3, 4, 1, "", "put_side_set_name"], [3, 4, 1, "", "put_side_set_names"], [3, 4, 1, "", "put_side_set_params"], [3, 4, 1, "", "put_side_set_property_value"], [3, 4, 1, "", "put_side_set_variable_name"], [3, 4, 1, "", "put_side_set_variable_values"], [3, 4, 1, "", "put_time"], [3, 4, 1, "", "put_variable_name"], [3, 4, 1, "", "put_variable_values"], [3, 4, 1, "", "set_element_variable_number"], [3, 4, 1, "", "set_element_variable_truth_table"], [3, 4, 1, "", "set_global_variable_number"], [3, 4, 1, "", "set_node_set_variable_number"], [3, 4, 1, "", "set_node_set_variable_truth_table"], [3, 4, 1, "", "set_node_variable_number"], [3, 4, 1, "", "set_reduction_variable_number"], [3, 4, 1, "", "set_side_set_variable_number"], [3, 4, 1, "", "set_side_set_variable_truth_table"], [3, 4, 1, "", "set_variable_number"], [3, 4, 1, "", "set_variable_truth_table"], [3, 4, 1, "", "summarize"], [3, 4, 1, "", "title"], [3, 4, 1, "", "version_num"]], "exomerge": [[4, 2, 1, "", "DummyFile"], [4, 2, 1, "", "ExodusModel"], [4, 1, 1, "", "import_model"]], "exomerge.DummyFile": [[4, 4, 1, "", "write"]], "exomerge.ExodusModel": [[4, 3, 1, "", "ALL_MULTI_COMPONENT_FIELD_SUBSCRIPTS"], [4, 3, 1, "", "COHESIVE_FORMULA"], [4, 3, 1, "", "DIMENSION"], [4, 3, 1, "", "ELEMENT_CONVERSIONS"], [4, 3, 1, "", "ELEMENT_ORDER"], [4, 3, 1, "", "FACE_MAPPING"], [4, 3, 1, "", "INVERTED_CONNECTIVITY"], [4, 3, 1, "", "MULTI_COMPONENT_FIELD_SUBSCRIPTS"], [4, 3, 1, "", "NODES_PER_ELEMENT"], [4, 3, 1, "", "ROTATED_CONNECTIVITY"], [4, 3, 1, "", "STANDARD_ELEMENT_TYPES"], [4, 3, 1, "", "TRIANGULATED_FACES"], [4, 3, 1, "", "VOLUME_FORMULA"], [4, 4, 1, "", "__getattr__"], [4, 4, 1, "", "add_faces_to_side_set"], [4, 4, 1, "", "add_nodes_to_node_set"], [4, 4, 1, "", "build_hex8_cube"], [4, 4, 1, "", "calculate_element_centroids"], [4, 4, 1, "", "calculate_element_field"], [4, 4, 1, "", "calculate_element_field_maximum"], [4, 4, 1, "", "calculate_element_field_minimum"], [4, 4, 1, "", "calculate_element_volumes"], [4, 4, 1, "", "calculate_global_variable"], [4, 4, 1, "", "calculate_node_field"], [4, 4, 1, "", "calculate_node_field_maximum"], [4, 4, 1, "", "calculate_node_field_minimum"], [4, 4, 1, "", "calculate_node_set_field"], [4, 4, 1, "", "calculate_side_set_field"], [4, 4, 1, "", "combine_element_blocks"], [4, 4, 1, "", "convert_element_blocks"], [4, 4, 1, "", "convert_element_field_to_node_field"], [4, 4, 1, "", "convert_hex8_block_to_tet4_block"], [4, 4, 1, "", "convert_node_field_to_element_field"], [4, 4, 1, "", "convert_side_set_to_cohesive_zone"], [4, 4, 1, "", "copy_timestep"], [4, 4, 1, "", "count_degenerate_elements"], [4, 4, 1, "", "count_disconnected_blocks"], [4, 4, 1, "", "create_averaged_element_field"], [4, 4, 1, "", "create_displacement_field"], [4, 4, 1, "", "create_element_block"], [4, 4, 1, "", "create_element_field"], [4, 4, 1, "", "create_global_variable"], [4, 4, 1, "", "create_interpolated_timestep"], [4, 4, 1, "", "create_node_field"], [4, 4, 1, "", "create_node_set"], [4, 4, 1, "", "create_node_set_field"], [4, 4, 1, "", "create_node_set_from_side_set"], [4, 4, 1, "", "create_nodes"], [4, 4, 1, "", "create_side_set"], [4, 4, 1, "", "create_side_set_field"], [4, 4, 1, "", "create_side_set_from_expression"], [4, 4, 1, "", "create_timestep"], [4, 4, 1, "", "delete_duplicate_elements"], [4, 4, 1, "", "delete_element_block"], [4, 4, 1, "", "delete_element_field"], [4, 4, 1, "", "delete_empty_node_sets"], [4, 4, 1, "", "delete_empty_side_sets"], [4, 4, 1, "", "delete_global_variable"], [4, 4, 1, "", "delete_node_field"], [4, 4, 1, "", "delete_node_set"], [4, 4, 1, "", "delete_node_set_field"], [4, 4, 1, "", "delete_side_set"], [4, 4, 1, "", "delete_side_set_field"], [4, 4, 1, "", "delete_timestep"], [4, 4, 1, "", "delete_unused_nodes"], [4, 4, 1, "", "displace_element_blocks"], [4, 4, 1, "", "displacement_field_exists"], [4, 4, 1, "", "duplicate_element_block"], [4, 4, 1, "", "element_block_exists"], [4, 4, 1, "", "element_field_exists"], [4, 4, 1, "", "export"], [4, 4, 1, "", "export_model"], [4, 4, 1, "", "export_stl_file"], [4, 4, 1, "", "export_wrl_model"], [4, 4, 1, "", "get_all_element_block_names"], [4, 4, 1, "", "get_all_node_set_names"], [4, 4, 1, "", "get_all_side_set_names"], [4, 4, 1, "", "get_closest_node_distance"], [4, 4, 1, "", "get_connectivity"], [4, 4, 1, "", "get_element_block_centroid"], [4, 4, 1, "", "get_element_block_connectivity"], [4, 4, 1, "", "get_element_block_dimension"], [4, 4, 1, "", "get_element_block_extents"], [4, 4, 1, "", "get_element_block_ids"], [4, 4, 1, "", "get_element_block_name"], [4, 4, 1, "", "get_element_block_volume"], [4, 4, 1, "", "get_element_count"], [4, 4, 1, "", "get_element_edge_length_info"], [4, 4, 1, "", "get_element_field_names"], [4, 4, 1, "", "get_element_field_values"], [4, 4, 1, "", "get_global_variable_names"], [4, 4, 1, "", "get_input_deck"], [4, 4, 1, "", "get_length_scale"], [4, 4, 1, "", "get_node_field_names"], [4, 4, 1, "", "get_node_field_values"], [4, 4, 1, "", "get_node_set_field_names"], [4, 4, 1, "", "get_node_set_field_values"], [4, 4, 1, "", "get_node_set_ids"], [4, 4, 1, "", "get_node_set_members"], [4, 4, 1, "", "get_node_set_name"], [4, 4, 1, "", "get_nodes_in_element_block"], [4, 4, 1, "", "get_nodes_in_side_set"], [4, 4, 1, "", "get_nodes_per_element"], [4, 4, 1, "", "get_side_set_area"], [4, 4, 1, "", "get_side_set_field_names"], [4, 4, 1, "", "get_side_set_field_values"], [4, 4, 1, "", "get_side_set_ids"], [4, 4, 1, "", "get_side_set_members"], [4, 4, 1, "", "get_side_set_name"], [4, 4, 1, "", "get_timesteps"], [4, 4, 1, "", "global_variable_exists"], [4, 4, 1, "", "import_model"], [4, 4, 1, "", "make_elements_linear"], [4, 4, 1, "", "make_elements_quadratic"], [4, 4, 1, "", "merge_nodes"], [4, 4, 1, "", "node_field_exists"], [4, 4, 1, "", "node_set_exists"], [4, 4, 1, "", "node_set_field_exists"], [4, 4, 1, "", "output_global_variables"], [4, 4, 1, "", "process_element_fields"], [4, 4, 1, "", "reflect_element_blocks"], [4, 4, 1, "", "rename_element_block"], [4, 4, 1, "", "rename_element_field"], [4, 4, 1, "", "rename_global_variable"], [4, 4, 1, "", "rename_node_field"], [4, 4, 1, "", "rename_node_set"], [4, 4, 1, "", "rename_node_set_field"], [4, 4, 1, "", "rename_side_set"], [4, 4, 1, "", "rename_side_set_field"], [4, 4, 1, "", "rotate_element_blocks"], [4, 4, 1, "", "rotate_geometry"], [4, 4, 1, "", "scale_element_blocks"], [4, 4, 1, "", "scale_geometry"], [4, 4, 1, "", "side_set_exists"], [4, 4, 1, "", "side_set_field_exists"], [4, 4, 1, "", "summarize"], [4, 4, 1, "", "threshold_element_blocks"], [4, 4, 1, "", "timestep_exists"], [4, 4, 1, "", "to_lowercase"], [4, 4, 1, "", "translate_element_blocks"], [4, 4, 1, "", "translate_geometry"], [4, 4, 1, "", "unmerge_element_blocks"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:attribute", "4": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "method", "Python method"]}, "titleterms": {"io_modifi": [0, 5], "valid": 0, "command": 0, "regular": 0, "express": 0, "help": 0, "glob": 0, "exampl": 0, "seaca": [1, 5], "doc": 1, "exodu": [3, 5], "modul": [3, 4, 5], "exomerg": 4, "librari": 5, "python": 5, "ioss": 5, "supe": 5, "nemesi": 5, "chaco": 5, "algebra": 5, "aprepro": 5, "blot": 5, "cgns_decomp": 5, "conjoin": 5, "cpup": 5, "decomp": 5, "ejoin": 5, "epu": 5, "exo_format": 5, "exo2mat": 5, "exodiff": 5, "exomatlab": 5, "exotxt": 5, "explor": 5, "fastq": 5, "gen3d": 5, "genshel": 5, "gjoin": 5, "grepo": 5, "io_info": 5, "io_shel": 5, "mapvar": 5, "kd": 5, "mat2exo": 5, "nas2exo": 5, "nem_join": 5, "nem_slic": 5, "nem_spread": 5, "number": 5, "skinner": 5, "slice": 5, "struc_to_unstruc": 5, "txtexo": 5, "zellij": 5, "netcdf": 5}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"IO_MODIFY Valid Commands": [[0, "io-modify-valid-commands"]], "Regular Expression help": [[0, "regular-expression-help"]], "Glob help": [[0, "glob-help"]], "Glob Examples": [[0, "glob-examples"]], "seacas-docs": [[1, "seacas-docs"]], "SEACAS": [[5, "seacas"]], "Exodus Library": [[5, "exodus-library"]], "Exodus Python Modules": [[5, "exodus-python-modules"]], "IOSS Library": [[5, "ioss-library"]], "SUPES Library": [[5, "supes-library"]], "Nemesis Library": [[5, "nemesis-library"]], "Chaco Library": [[5, "chaco-library"]], "Algebra": [[5, "algebra"]], "Aprepro": [[5, "aprepro"]], "Blot": [[5, "blot"]], "CGNS_Decomp": [[5, "cgns-decomp"]], "Conjoin": [[5, "conjoin"]], "CPUP": [[5, "cpup"]], "Decomp": [[5, "decomp"]], "EJoin": [[5, "ejoin"]], "EPU": [[5, "epu"]], "Exo_Format": [[5, "exo-format"]], "Exo2Mat": [[5, "exo2mat"]], "Exodiff": [[5, "exodiff"]], "Exomatlab": [[5, "exomatlab"]], "Exotxt": [[5, "exotxt"]], "Explore": [[5, "explore"]], "Fastq": [[5, "fastq"]], "Gen3D": [[5, "gen3d"]], "GenShell": [[5, "genshell"]], "GJoin": [[5, "gjoin"]], "Grepos": [[5, "grepos"]], "IO_Info": [[5, "io-info"]], "IO_Modify": [[5, "io-modify"]], "IO_Shell": [[5, "io-shell"]], "Mapvar": [[5, "mapvar"]], "Mapvar-kd": [[5, "mapvar-kd"]], "Mat2Exo": [[5, "mat2exo"]], "Nas2Exo": [[5, "nas2exo"]], "nem_join": [[5, "nem-join"]], "nem_slice": [[5, "nem-slice"]], "nem_spread": [[5, "nem-spread"]], "Numbers": [[5, "numbers"]], "Skinner": [[5, "skinner"]], "Slice": [[5, "slice"]], "Struc_To_Unstruc": [[5, "struc-to-unstruc"]], "TxtExo": [[5, "txtexo"]], "Zellij": [[5, "zellij"]], "NetCDF Library": [[5, "netcdf-library"]], "exodus module": [[3, "module-exodus"]], "exomerge module": [[4, "module-exomerge"]]}, "indexentries": {"ex_abort (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_ABORT"], [3, "id52"]], "ex_assembly (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_ASSEMBLY"], [3, "id14"]], "ex_blob (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_BLOB"], [3, "id15"]], "ex_char (exodus.ex_type attribute)": [[3, "exodus.ex_type.EX_CHAR"]], "ex_coordinate (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_COORDINATE"], [3, "id16"]], "ex_debug (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_DEBUG"], [3, "id53"]], "ex_default (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_DEFAULT"], [3, "id54"]], "ex_double (exodus.ex_type attribute)": [[3, "exodus.ex_type.EX_DOUBLE"]], "ex_edge_block (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_EDGE_BLOCK"], [3, "id17"]], "ex_edge_map (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_EDGE_MAP"], [3, "id18"]], "ex_edge_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_EDGE_SET"], [3, "id19"]], "ex_elem_block (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_ELEM_BLOCK"], [3, "id20"]], "ex_elem_map (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_ELEM_MAP"], [3, "id21"]], "ex_elem_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_ELEM_SET"], [3, "id22"]], "ex_face_block (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_FACE_BLOCK"], [3, "id23"]], "ex_face_map (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_FACE_MAP"], [3, "id24"]], "ex_face_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_FACE_SET"], [3, "id25"]], "ex_global (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_GLOBAL"], [3, "id26"]], "ex_inq_api_vers (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_API_VERS"]], "ex_inq_assembly (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ASSEMBLY"]], "ex_inq_blob (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_BLOB"]], "ex_inq_coord_frames (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_COORD_FRAMES"]], "ex_inq_db_float_size (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DB_FLOAT_SIZE"]], "ex_inq_db_max_allowed_name_length (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH"]], "ex_inq_db_max_used_name_length (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DB_MAX_USED_NAME_LENGTH"]], "ex_inq_db_vers (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DB_VERS"]], "ex_inq_dim (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_DIM"]], "ex_inq_eb_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EB_PROP"]], "ex_inq_edge (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE"]], "ex_inq_edge_blk (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE_BLK"]], "ex_inq_edge_map (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE_MAP"]], "ex_inq_edge_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE_PROP"]], "ex_inq_edge_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EDGE_SETS"]], "ex_inq_elem (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELEM"]], "ex_inq_elem_blk (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELEM_BLK"]], "ex_inq_elem_map (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELEM_MAP"]], "ex_inq_elem_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELEM_SETS"]], "ex_inq_els_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELS_DF_LEN"]], "ex_inq_els_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELS_LEN"]], "ex_inq_els_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ELS_PROP"]], "ex_inq_em_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_EM_PROP"]], "ex_inq_es_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ES_DF_LEN"]], "ex_inq_es_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ES_LEN"]], "ex_inq_es_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_ES_PROP"]], "ex_inq_face (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE"]], "ex_inq_face_blk (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE_BLK"]], "ex_inq_face_map (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE_MAP"]], "ex_inq_face_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE_PROP"]], "ex_inq_face_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FACE_SETS"]], "ex_inq_file_type (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FILE_TYPE"]], "ex_inq_fs_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FS_DF_LEN"]], "ex_inq_fs_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FS_LEN"]], "ex_inq_fs_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_FS_PROP"]], "ex_inq_info (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_INFO"]], "ex_inq_invalid (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_INVALID"]], "ex_inq_lib_vers (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_LIB_VERS"]], "ex_inq_max_read_name_length (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_MAX_READ_NAME_LENGTH"]], "ex_inq_nm_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NM_PROP"]], "ex_inq_nodes (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NODES"]], "ex_inq_node_map (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NODE_MAP"]], "ex_inq_node_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NODE_SETS"]], "ex_inq_ns_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NS_DF_LEN"]], "ex_inq_ns_node_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NS_NODE_LEN"]], "ex_inq_ns_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_NS_PROP"]], "ex_inq_qa (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_QA"]], "ex_inq_side_sets (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SIDE_SETS"]], "ex_inq_ss_df_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SS_DF_LEN"]], "ex_inq_ss_elem_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SS_ELEM_LEN"]], "ex_inq_ss_node_len (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SS_NODE_LEN"]], "ex_inq_ss_prop (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_SS_PROP"]], "ex_inq_time (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_TIME"]], "ex_inq_title (exodus.ex_inquiry attribute)": [[3, "exodus.ex_inquiry.EX_INQ_TITLE"]], "ex_integer (exodus.ex_type attribute)": [[3, "exodus.ex_type.EX_INTEGER"]], "ex_invalid (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_INVALID"], [3, "id27"]], "ex_invalid (exodus.ex_type attribute)": [[3, "exodus.ex_type.EX_INVALID"]], "ex_nodal (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_NODAL"], [3, "id28"]], "ex_node_block (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_NODE_BLOCK"], [3, "id29"]], "ex_node_map (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_NODE_MAP"], [3, "id30"]], "ex_node_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_NODE_SET"], [3, "id31"]], "ex_nullverbose (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_NULLVERBOSE"], [3, "id55"]], "ex_side_set (exodus.ex_entity_type attribute)": [[3, "exodus.ex_entity_type.EX_SIDE_SET"], [3, "id32"]], "ex_verbose (exodus.ex_options attribute)": [[3, "exodus.ex_options.EX_VERBOSE"], [3, "id56"]], "__contains__() (exodus.ex_entity_type class method)": [[3, "exodus.ex_entity_type.__contains__"]], "__contains__() (exodus.ex_inquiry class method)": [[3, "exodus.ex_inquiry.__contains__"]], "__contains__() (exodus.ex_options class method)": [[3, "exodus.ex_options.__contains__"]], "__contains__() (exodus.ex_type class method)": [[3, "exodus.ex_type.__contains__"]], "__getitem__() (exodus.ex_entity_type class method)": [[3, "exodus.ex_entity_type.__getitem__"]], "__getitem__() (exodus.ex_inquiry class method)": [[3, "exodus.ex_inquiry.__getitem__"]], "__getitem__() (exodus.ex_options class method)": [[3, "exodus.ex_options.__getitem__"]], "__getitem__() (exodus.ex_type class method)": [[3, "exodus.ex_type.__getitem__"]], "__iter__() (exodus.ex_entity_type class method)": [[3, "exodus.ex_entity_type.__iter__"]], "__iter__() (exodus.ex_inquiry class method)": [[3, "exodus.ex_inquiry.__iter__"]], "__iter__() (exodus.ex_options class method)": [[3, "exodus.ex_options.__iter__"]], "__iter__() (exodus.ex_type class method)": [[3, "exodus.ex_type.__iter__"]], "__len__() (exodus.ex_entity_type class method)": [[3, "exodus.ex_entity_type.__len__"]], "__len__() (exodus.ex_inquiry class method)": [[3, "exodus.ex_inquiry.__len__"]], "__len__() (exodus.ex_options class method)": [[3, "exodus.ex_options.__len__"]], "__len__() (exodus.ex_type class method)": [[3, "exodus.ex_type.__len__"]], "add_variables() (in module exodus)": [[3, "exodus.add_variables"]], "assembly (class in exodus)": [[3, "exodus.assembly"]], "attribute (class in exodus)": [[3, "exodus.attribute"]], "basename() (in module exodus)": [[3, "exodus.basename"]], "blob (class in exodus)": [[3, "exodus.blob"]], "close() (exodus.exodus method)": [[3, "exodus.exodus.close"]], "collectelemconnectivity() (in module exodus)": [[3, "exodus.collectElemConnectivity"]], "collectlocalelemtolocalelems() (in module exodus)": [[3, "exodus.collectLocalElemToLocalElems"]], "collectlocalnodetolocalelems() (in module exodus)": [[3, "exodus.collectLocalNodeToLocalElems"]], "copy() (exodus.exodus method)": [[3, "exodus.exodus.copy"]], "copytransfer() (in module exodus)": [[3, "exodus.copyTransfer"]], "copy_file() (exodus.exodus method)": [[3, "exodus.exodus.copy_file"]], "copy_mesh() (in module exodus)": [[3, "exodus.copy_mesh"]], "ctype_to_numpy() (in module exodus)": [[3, "exodus.ctype_to_numpy"]], "elem_blk_info() (exodus.exodus method)": [[3, "exodus.exodus.elem_blk_info"]], "elem_type() (exodus.exodus method)": [[3, "exodus.exodus.elem_type"]], "entity_count (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.entity_count"], [3, "id0"]], "entity_id (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.entity_id"], [3, "id5"]], "entity_list (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.entity_list"], [3, "id1"]], "entity_type (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.entity_type"], [3, "id6"]], "ex_assembly (class in exodus)": [[3, "exodus.ex_assembly"]], "ex_attribute (class in exodus)": [[3, "exodus.ex_attribute"]], "ex_blob (class in exodus)": [[3, "exodus.ex_blob"]], "ex_entity_type (class in exodus)": [[3, "exodus.ex_entity_type"]], "ex_entity_type_to_objtype() (in module exodus)": [[3, "exodus.ex_entity_type_to_objType"]], "ex_init_params (class in exodus)": [[3, "exodus.ex_init_params"]], "ex_inquiry (class in exodus)": [[3, "exodus.ex_inquiry"]], "ex_inquiry_map() (in module exodus)": [[3, "exodus.ex_inquiry_map"]], "ex_obj_to_inq() (in module exodus)": [[3, "exodus.ex_obj_to_inq"]], "ex_options (class in exodus)": [[3, "exodus.ex_options"]], "ex_type (class in exodus)": [[3, "exodus.ex_type"]], "ex_type_map() (in module exodus)": [[3, "exodus.ex_type_map"]], "exodus": [[3, "module-exodus"]], "exodus (class in exodus)": [[3, "exodus.exodus"]], "getexodusversion() (in module exodus)": [[3, "exodus.getExodusVersion"]], "get_all_global_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_all_global_variable_values"]], "get_all_node_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_all_node_set_params"]], "get_all_side_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_all_side_set_params"]], "get_assemblies() (exodus.exodus method)": [[3, "exodus.exodus.get_assemblies"]], "get_assembly() (exodus.exodus method)": [[3, "exodus.exodus.get_assembly"]], "get_attr_values() (exodus.exodus method)": [[3, "exodus.exodus.get_attr_values"]], "get_attribute_count() (exodus.exodus method)": [[3, "exodus.exodus.get_attribute_count"]], "get_attribute_names() (exodus.exodus method)": [[3, "exodus.exodus.get_attribute_names"]], "get_attributes() (exodus.exodus method)": [[3, "exodus.exodus.get_attributes"]], "get_blob() (exodus.exodus method)": [[3, "exodus.exodus.get_blob"]], "get_block_id_map() (exodus.exodus method)": [[3, "exodus.exodus.get_block_id_map"]], "get_coord() (exodus.exodus method)": [[3, "exodus.exodus.get_coord"]], "get_coord_names() (exodus.exodus method)": [[3, "exodus.exodus.get_coord_names"]], "get_coords() (exodus.exodus method)": [[3, "exodus.exodus.get_coords"]], "get_elem_attr() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_attr"]], "get_elem_attr_values() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_attr_values"]], "get_elem_blk_ids() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_blk_ids"]], "get_elem_blk_name() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_blk_name"]], "get_elem_blk_names() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_blk_names"]], "get_elem_connectivity() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_connectivity"]], "get_elem_id_map() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_id_map"]], "get_elem_num_map() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_num_map"]], "get_elem_order_map() (exodus.exodus method)": [[3, "exodus.exodus.get_elem_order_map"]], "get_element_attribute_names() (exodus.exodus method)": [[3, "exodus.exodus.get_element_attribute_names"]], "get_element_property_names() (exodus.exodus method)": [[3, "exodus.exodus.get_element_property_names"]], "get_element_property_value() (exodus.exodus method)": [[3, "exodus.exodus.get_element_property_value"]], "get_element_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_element_variable_names"]], "get_element_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_element_variable_number"]], "get_element_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.get_element_variable_truth_table"]], "get_element_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_element_variable_values"]], "get_entity_count() (exodus.exodus method)": [[3, "exodus.exodus.get_entity_count"]], "get_entity_type() (in module exodus)": [[3, "exodus.get_entity_type"]], "get_global_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_global_variable_names"]], "get_global_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_global_variable_number"]], "get_global_variable_value() (exodus.exodus method)": [[3, "exodus.exodus.get_global_variable_value"]], "get_global_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_global_variable_values"]], "get_id_map() (exodus.exodus method)": [[3, "exodus.exodus.get_id_map"]], "get_ids() (exodus.exodus method)": [[3, "exodus.exodus.get_ids"]], "get_info_records() (exodus.exodus method)": [[3, "exodus.exodus.get_info_records"]], "get_name() (exodus.exodus method)": [[3, "exodus.exodus.get_name"]], "get_names() (exodus.exodus method)": [[3, "exodus.exodus.get_names"]], "get_node_id_map() (exodus.exodus method)": [[3, "exodus.exodus.get_node_id_map"]], "get_node_num_map() (exodus.exodus method)": [[3, "exodus.exodus.get_node_num_map"]], "get_node_set_dist_facts() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_dist_facts"]], "get_node_set_ids() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_ids"]], "get_node_set_name() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_name"]], "get_node_set_names() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_names"]], "get_node_set_nodes() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_nodes"]], "get_node_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_params"]], "get_node_set_property_names() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_property_names"]], "get_node_set_property_value() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_property_value"]], "get_node_set_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_variable_names"]], "get_node_set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_variable_number"]], "get_node_set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_variable_truth_table"]], "get_node_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_node_set_variable_values"]], "get_node_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_node_variable_names"]], "get_node_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_node_variable_number"]], "get_node_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_node_variable_values"]], "get_num_map() (exodus.exodus method)": [[3, "exodus.exodus.get_num_map"]], "get_partial_element_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_partial_element_variable_values"]], "get_partial_node_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_partial_node_set_variable_values"]], "get_partial_node_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_partial_node_variable_values"]], "get_partial_side_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_partial_side_set_variable_values"]], "get_qa_records() (exodus.exodus method)": [[3, "exodus.exodus.get_qa_records"]], "get_reduction_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.get_reduction_variable_name"]], "get_reduction_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_reduction_variable_names"]], "get_reduction_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_reduction_variable_number"]], "get_reduction_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_reduction_variable_values"]], "get_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_set_params"]], "get_side_set() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set"]], "get_side_set_dist_fact() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_dist_fact"]], "get_side_set_ids() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_ids"]], "get_side_set_name() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_name"]], "get_side_set_names() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_names"]], "get_side_set_node_list() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_node_list"]], "get_side_set_params() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_params"]], "get_side_set_property_names() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_property_names"]], "get_side_set_property_value() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_property_value"]], "get_side_set_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_variable_names"]], "get_side_set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_variable_number"]], "get_side_set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_variable_truth_table"]], "get_side_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_side_set_variable_values"]], "get_sierra_input() (exodus.exodus method)": [[3, "exodus.exodus.get_sierra_input"]], "get_times() (exodus.exodus method)": [[3, "exodus.exodus.get_times"]], "get_variable_names() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_names"]], "get_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_number"]], "get_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_truth_table"]], "get_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_values"]], "get_variable_values_time() (exodus.exodus method)": [[3, "exodus.exodus.get_variable_values_time"]], "id (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.id"], [3, "id2"]], "id (exodus.ex_blob attribute)": [[3, "exodus.ex_blob.id"], [3, "id11"]], "inquire() (exodus.exodus method)": [[3, "exodus.exodus.inquire"]], "internal_add_variables() (in module exodus)": [[3, "exodus.internal_add_variables"]], "internal_transfer_variables() (in module exodus)": [[3, "exodus.internal_transfer_variables"]], "module": [[3, "module-exodus"], [4, "module-exomerge"]], "name (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.name"], [3, "id3"]], "name (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.name"], [3, "id7"]], "name (exodus.ex_blob attribute)": [[3, "exodus.ex_blob.name"], [3, "id12"]], "num_assembly (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_assembly"], [3, "id33"]], "num_assembly() (exodus.exodus method)": [[3, "exodus.exodus.num_assembly"]], "num_attr() (exodus.exodus method)": [[3, "exodus.exodus.num_attr"]], "num_blks() (exodus.exodus method)": [[3, "exodus.exodus.num_blks"]], "num_blob (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_blob"], [3, "id34"]], "num_blob() (exodus.exodus method)": [[3, "exodus.exodus.num_blob"]], "num_dim (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_dim"], [3, "id35"]], "num_dimensions() (exodus.exodus method)": [[3, "exodus.exodus.num_dimensions"]], "num_edge (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_edge"], [3, "id36"]], "num_edge_blk (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_edge_blk"], [3, "id37"]], "num_edge_maps (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_edge_maps"], [3, "id38"]], "num_edge_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_edge_sets"], [3, "id39"]], "num_elem (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_elem"], [3, "id40"]], "num_elem_blk (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_elem_blk"], [3, "id41"]], "num_elem_maps (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_elem_maps"], [3, "id42"]], "num_elem_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_elem_sets"], [3, "id43"]], "num_elems() (exodus.exodus method)": [[3, "exodus.exodus.num_elems"]], "num_elems_in_blk() (exodus.exodus method)": [[3, "exodus.exodus.num_elems_in_blk"]], "num_entry (exodus.ex_blob attribute)": [[3, "exodus.ex_blob.num_entry"], [3, "id13"]], "num_face (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_face"], [3, "id44"]], "num_face_blk (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_face_blk"], [3, "id45"]], "num_face_maps (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_face_maps"], [3, "id46"]], "num_face_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_face_sets"], [3, "id47"]], "num_faces_in_side_set() (exodus.exodus method)": [[3, "exodus.exodus.num_faces_in_side_set"]], "num_info_records() (exodus.exodus method)": [[3, "exodus.exodus.num_info_records"]], "num_node_maps (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_node_maps"], [3, "id48"]], "num_node_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_node_sets"], [3, "id49"]], "num_node_sets() (exodus.exodus method)": [[3, "exodus.exodus.num_node_sets"]], "num_nodes (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_nodes"], [3, "id50"]], "num_nodes() (exodus.exodus method)": [[3, "exodus.exodus.num_nodes"]], "num_nodes_in_node_set() (exodus.exodus method)": [[3, "exodus.exodus.num_nodes_in_node_set"]], "num_nodes_per_elem() (exodus.exodus method)": [[3, "exodus.exodus.num_nodes_per_elem"]], "num_qa_records() (exodus.exodus method)": [[3, "exodus.exodus.num_qa_records"]], "num_side_sets (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.num_side_sets"], [3, "id51"]], "num_side_sets() (exodus.exodus method)": [[3, "exodus.exodus.num_side_sets"]], "num_times() (exodus.exodus method)": [[3, "exodus.exodus.num_times"]], "put_all_global_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_all_global_variable_values"]], "put_assemblies() (exodus.exodus method)": [[3, "exodus.exodus.put_assemblies"]], "put_assembly() (exodus.exodus method)": [[3, "exodus.exodus.put_assembly"]], "put_attribute() (exodus.exodus method)": [[3, "exodus.exodus.put_attribute"]], "put_attribute_names() (exodus.exodus method)": [[3, "exodus.exodus.put_attribute_names"]], "put_concat_elem_blk() (exodus.exodus method)": [[3, "exodus.exodus.put_concat_elem_blk"]], "put_coord_names() (exodus.exodus method)": [[3, "exodus.exodus.put_coord_names"]], "put_coords() (exodus.exodus method)": [[3, "exodus.exodus.put_coords"]], "put_elem_attr() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_attr"]], "put_elem_attr_values() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_attr_values"]], "put_elem_blk_info() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_blk_info"]], "put_elem_blk_name() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_blk_name"]], "put_elem_blk_names() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_blk_names"]], "put_elem_connectivity() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_connectivity"]], "put_elem_face_conn() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_face_conn"]], "put_elem_id_map() (exodus.exodus method)": [[3, "exodus.exodus.put_elem_id_map"]], "put_element_attribute_names() (exodus.exodus method)": [[3, "exodus.exodus.put_element_attribute_names"]], "put_element_property_value() (exodus.exodus method)": [[3, "exodus.exodus.put_element_property_value"]], "put_element_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_element_variable_name"]], "put_element_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_element_variable_values"]], "put_face_count_per_polyhedra() (exodus.exodus method)": [[3, "exodus.exodus.put_face_count_per_polyhedra"]], "put_face_node_conn() (exodus.exodus method)": [[3, "exodus.exodus.put_face_node_conn"]], "put_global_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_global_variable_name"]], "put_global_variable_value() (exodus.exodus method)": [[3, "exodus.exodus.put_global_variable_value"]], "put_id_map() (exodus.exodus method)": [[3, "exodus.exodus.put_id_map"]], "put_info() (exodus.exodus method)": [[3, "exodus.exodus.put_info"]], "put_info_ext() (exodus.exodus method)": [[3, "exodus.exodus.put_info_ext"]], "put_info_records() (exodus.exodus method)": [[3, "exodus.exodus.put_info_records"]], "put_map_param() (exodus.exodus method)": [[3, "exodus.exodus.put_map_param"]], "put_name() (exodus.exodus method)": [[3, "exodus.exodus.put_name"]], "put_names() (exodus.exodus method)": [[3, "exodus.exodus.put_names"]], "put_node_count_per_face() (exodus.exodus method)": [[3, "exodus.exodus.put_node_count_per_face"]], "put_node_id_map() (exodus.exodus method)": [[3, "exodus.exodus.put_node_id_map"]], "put_node_set() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set"]], "put_node_set_dist_fact() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_dist_fact"]], "put_node_set_name() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_name"]], "put_node_set_names() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_names"]], "put_node_set_params() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_params"]], "put_node_set_property_value() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_property_value"]], "put_node_set_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_variable_name"]], "put_node_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_node_set_variable_values"]], "put_node_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_node_variable_name"]], "put_node_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_node_variable_values"]], "put_num_map() (exodus.exodus method)": [[3, "exodus.exodus.put_num_map"]], "put_polyhedra_elem_blk() (exodus.exodus method)": [[3, "exodus.exodus.put_polyhedra_elem_blk"]], "put_polyhedra_face_blk() (exodus.exodus method)": [[3, "exodus.exodus.put_polyhedra_face_blk"]], "put_qa_records() (exodus.exodus method)": [[3, "exodus.exodus.put_qa_records"]], "put_reduction_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_reduction_variable_name"]], "put_reduction_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_reduction_variable_values"]], "put_set_params() (exodus.exodus method)": [[3, "exodus.exodus.put_set_params"]], "put_side_set() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set"]], "put_side_set_dist_fact() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_dist_fact"]], "put_side_set_name() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_name"]], "put_side_set_names() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_names"]], "put_side_set_params() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_params"]], "put_side_set_property_value() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_property_value"]], "put_side_set_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_variable_name"]], "put_side_set_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_side_set_variable_values"]], "put_time() (exodus.exodus method)": [[3, "exodus.exodus.put_time"]], "put_variable_name() (exodus.exodus method)": [[3, "exodus.exodus.put_variable_name"]], "put_variable_values() (exodus.exodus method)": [[3, "exodus.exodus.put_variable_values"]], "set_element_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_element_variable_number"]], "set_element_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.set_element_variable_truth_table"]], "set_global_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_global_variable_number"]], "set_node_set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_node_set_variable_number"]], "set_node_set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.set_node_set_variable_truth_table"]], "set_node_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_node_variable_number"]], "set_reduction_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_reduction_variable_number"]], "set_side_set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_side_set_variable_number"]], "set_side_set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.set_side_set_variable_truth_table"]], "set_variable_number() (exodus.exodus method)": [[3, "exodus.exodus.set_variable_number"]], "set_variable_truth_table() (exodus.exodus method)": [[3, "exodus.exodus.set_variable_truth_table"]], "setup_ex_assembly() (in module exodus)": [[3, "exodus.setup_ex_assembly"]], "summarize() (exodus.exodus method)": [[3, "exodus.exodus.summarize"]], "title (exodus.ex_init_params attribute)": [[3, "exodus.ex_init_params.title"]], "title() (exodus.exodus method)": [[3, "exodus.exodus.title"]], "transfer_variables() (in module exodus)": [[3, "exodus.transfer_variables"]], "type (exodus.ex_assembly attribute)": [[3, "exodus.ex_assembly.type"], [3, "id4"]], "type (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.type"], [3, "id8"]], "value_count (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.value_count"], [3, "id9"]], "values (exodus.ex_attribute attribute)": [[3, "exodus.ex_attribute.values"], [3, "id10"]], "version_num() (exodus.exodus method)": [[3, "exodus.exodus.version_num"]], "all_multi_component_field_subscripts (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.ALL_MULTI_COMPONENT_FIELD_SUBSCRIPTS"]], "cohesive_formula (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.COHESIVE_FORMULA"]], "dimension (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.DIMENSION"]], "dummyfile (class in exomerge)": [[4, "exomerge.DummyFile"]], "element_conversions (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.ELEMENT_CONVERSIONS"]], "element_order (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.ELEMENT_ORDER"]], "exodusmodel (class in exomerge)": [[4, "exomerge.ExodusModel"]], "face_mapping (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.FACE_MAPPING"]], "inverted_connectivity (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.INVERTED_CONNECTIVITY"]], "multi_component_field_subscripts (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.MULTI_COMPONENT_FIELD_SUBSCRIPTS"]], "nodes_per_element (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.NODES_PER_ELEMENT"]], "rotated_connectivity (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.ROTATED_CONNECTIVITY"]], "standard_element_types (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.STANDARD_ELEMENT_TYPES"]], "triangulated_faces (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.TRIANGULATED_FACES"]], "volume_formula (exomerge.exodusmodel attribute)": [[4, "exomerge.ExodusModel.VOLUME_FORMULA"]], "__getattr__() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.__getattr__"]], "add_faces_to_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.add_faces_to_side_set"]], "add_nodes_to_node_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.add_nodes_to_node_set"]], "build_hex8_cube() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.build_hex8_cube"]], "calculate_element_centroids() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_centroids"]], "calculate_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_field"]], "calculate_element_field_maximum() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_field_maximum"]], "calculate_element_field_minimum() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_field_minimum"]], "calculate_element_volumes() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_element_volumes"]], "calculate_global_variable() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_global_variable"]], "calculate_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_node_field"]], "calculate_node_field_maximum() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_node_field_maximum"]], "calculate_node_field_minimum() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_node_field_minimum"]], "calculate_node_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_node_set_field"]], "calculate_side_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.calculate_side_set_field"]], "combine_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.combine_element_blocks"]], "convert_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_element_blocks"]], "convert_element_field_to_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_element_field_to_node_field"]], "convert_hex8_block_to_tet4_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_hex8_block_to_tet4_block"]], "convert_node_field_to_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_node_field_to_element_field"]], "convert_side_set_to_cohesive_zone() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.convert_side_set_to_cohesive_zone"]], "copy_timestep() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.copy_timestep"]], "count_degenerate_elements() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.count_degenerate_elements"]], "count_disconnected_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.count_disconnected_blocks"]], "create_averaged_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_averaged_element_field"]], "create_displacement_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_displacement_field"]], "create_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_element_block"]], "create_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_element_field"]], "create_global_variable() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_global_variable"]], "create_interpolated_timestep() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_interpolated_timestep"]], "create_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_node_field"]], "create_node_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_node_set"]], "create_node_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_node_set_field"]], "create_node_set_from_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_node_set_from_side_set"]], "create_nodes() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_nodes"]], "create_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_side_set"]], "create_side_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_side_set_field"]], "create_side_set_from_expression() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_side_set_from_expression"]], "create_timestep() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.create_timestep"]], "delete_duplicate_elements() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_duplicate_elements"]], "delete_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_element_block"]], "delete_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_element_field"]], "delete_empty_node_sets() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_empty_node_sets"]], "delete_empty_side_sets() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_empty_side_sets"]], "delete_global_variable() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_global_variable"]], "delete_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_node_field"]], "delete_node_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_node_set"]], "delete_node_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_node_set_field"]], "delete_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_side_set"]], "delete_side_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_side_set_field"]], "delete_timestep() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_timestep"]], "delete_unused_nodes() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.delete_unused_nodes"]], "displace_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.displace_element_blocks"]], "displacement_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.displacement_field_exists"]], "duplicate_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.duplicate_element_block"]], "element_block_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.element_block_exists"]], "element_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.element_field_exists"]], "exomerge": [[4, "module-exomerge"]], "export() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.export"]], "export_model() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.export_model"]], "export_stl_file() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.export_stl_file"]], "export_wrl_model() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.export_wrl_model"]], "get_all_element_block_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_all_element_block_names"]], "get_all_node_set_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_all_node_set_names"]], "get_all_side_set_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_all_side_set_names"]], "get_closest_node_distance() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_closest_node_distance"]], "get_connectivity() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_connectivity"]], "get_element_block_centroid() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_centroid"]], "get_element_block_connectivity() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_connectivity"]], "get_element_block_dimension() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_dimension"]], "get_element_block_extents() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_extents"]], "get_element_block_ids() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_ids"]], "get_element_block_name() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_name"]], "get_element_block_volume() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_block_volume"]], "get_element_count() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_count"]], "get_element_edge_length_info() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_edge_length_info"]], "get_element_field_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_field_names"]], "get_element_field_values() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_element_field_values"]], "get_global_variable_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_global_variable_names"]], "get_input_deck() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_input_deck"]], "get_length_scale() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_length_scale"]], "get_node_field_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_field_names"]], "get_node_field_values() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_field_values"]], "get_node_set_field_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_field_names"]], "get_node_set_field_values() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_field_values"]], "get_node_set_ids() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_ids"]], "get_node_set_members() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_members"]], "get_node_set_name() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_node_set_name"]], "get_nodes_in_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_nodes_in_element_block"]], "get_nodes_in_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_nodes_in_side_set"]], "get_nodes_per_element() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_nodes_per_element"]], "get_side_set_area() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_area"]], "get_side_set_field_names() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_field_names"]], "get_side_set_field_values() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_field_values"]], "get_side_set_ids() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_ids"]], "get_side_set_members() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_members"]], "get_side_set_name() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_side_set_name"]], "get_timesteps() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.get_timesteps"]], "global_variable_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.global_variable_exists"]], "import_model() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.import_model"]], "import_model() (in module exomerge)": [[4, "exomerge.import_model"]], "make_elements_linear() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.make_elements_linear"]], "make_elements_quadratic() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.make_elements_quadratic"]], "merge_nodes() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.merge_nodes"]], "node_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.node_field_exists"]], "node_set_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.node_set_exists"]], "node_set_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.node_set_field_exists"]], "output_global_variables() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.output_global_variables"]], "process_element_fields() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.process_element_fields"]], "reflect_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.reflect_element_blocks"]], "rename_element_block() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_element_block"]], "rename_element_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_element_field"]], "rename_global_variable() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_global_variable"]], "rename_node_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_node_field"]], "rename_node_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_node_set"]], "rename_node_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_node_set_field"]], "rename_side_set() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_side_set"]], "rename_side_set_field() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rename_side_set_field"]], "rotate_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rotate_element_blocks"]], "rotate_geometry() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.rotate_geometry"]], "scale_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.scale_element_blocks"]], "scale_geometry() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.scale_geometry"]], "side_set_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.side_set_exists"]], "side_set_field_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.side_set_field_exists"]], "summarize() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.summarize"]], "threshold_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.threshold_element_blocks"]], "timestep_exists() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.timestep_exists"]], "to_lowercase() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.to_lowercase"]], "translate_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.translate_element_blocks"]], "translate_geometry() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.translate_geometry"]], "unmerge_element_blocks() (exomerge.exodusmodel method)": [[4, "exomerge.ExodusModel.unmerge_element_blocks"]], "write() (exomerge.dummyfile method)": [[4, "exomerge.DummyFile.write"]]}}) \ No newline at end of file