You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.1 KiB
119 lines
4.1 KiB
#!/usr/bin/env python
|
|
"""
|
|
Test routine for SEACAS exodus.py module
|
|
"""
|
|
import sys
|
|
import exodus
|
|
|
|
DATABASE_PATH = "baseline.g"
|
|
|
|
|
|
# Test outputing c-type arrays and numpy arrays
|
|
ARRAY_TYPES = ['ctype', 'numpy']
|
|
for array_type in ARRAY_TYPES:
|
|
EXO = exodus.exodus(DATABASE_PATH, array_type=array_type)
|
|
print("Exodus file has title:", EXO.title())
|
|
print("Exodus file has", EXO.num_dimensions(), "dimensions")
|
|
print("Exodus file has", EXO.num_nodes(), "nodes")
|
|
print("Exodus file has", EXO.num_elems(), "elements")
|
|
print("Exodus file has", EXO.num_blks(), "blocks")
|
|
print("Exodus file has", EXO.num_node_sets(), "node sets")
|
|
print("Exodus file has", EXO.num_side_sets(), "side sets")
|
|
print("Exodus file has", EXO.num_times(), "time steps")
|
|
if EXO.num_times() > 0:
|
|
TIMES = EXO.get_times()
|
|
for time in TIMES:
|
|
print("time = ", time)
|
|
|
|
BLOCKS = EXO.get_elem_blk_ids()
|
|
for block in BLOCKS:
|
|
name = EXO.get_elem_blk_name(block)
|
|
print("block id = {}, name = {}".format(block, name))
|
|
|
|
SIDESETS = EXO.get_side_set_ids()
|
|
for sideset in SIDESETS:
|
|
print("side set id = ", sideset)
|
|
|
|
NODESETS = EXO.get_node_set_ids()
|
|
for nodeset in NODESETS:
|
|
print("node set id = ", nodeset)
|
|
|
|
COORDINATES = EXO.get_coords()
|
|
print("Local Node Id 1 has COORDINATES: {} {} {}"
|
|
.format(COORDINATES[0][0], COORDINATES[1][0], COORDINATES[2][0]))
|
|
NN = (EXO.num_nodes() - 1)
|
|
print("Local Node Id {} has COORDINATES: {} {} {}"
|
|
.format(EXO.num_nodes(), COORDINATES[0][NN], COORDINATES[1][NN], COORDINATES[2][NN]))
|
|
print("Side Set Variable Names")
|
|
|
|
SSVARNAMES = EXO.get_side_set_variable_names()
|
|
for name in SSVARNAMES:
|
|
print("ssvar = ", name)
|
|
|
|
print("Side Set Cosa Variable Values")
|
|
step = 1
|
|
|
|
if EXO.num_times() > 0:
|
|
for time in TIMES:
|
|
print("time = ", time)
|
|
ssvals = EXO.get_side_set_variable_values(1, "cosa", step)
|
|
for ssval in ssvals:
|
|
print("value =", ssval)
|
|
step += 1
|
|
|
|
EXO.close()
|
|
|
|
# Test reading in data from exodus database, and then copying it into another database
|
|
for array_type in ARRAY_TYPES:
|
|
new_DATABASE_PATH = DATABASE_PATH[:-2] + '_' + array_type + '_copy.e'
|
|
exodus.copyTransfer(DATABASE_PATH, new_DATABASE_PATH, array_type=array_type)
|
|
print("Database copied using " + array_type + " arrays.")
|
|
|
|
# Test the exodus.py `copy` function which calls the C API `ex_copy`
|
|
DB_PATH = "base_ioshell.g"
|
|
EXO = exodus.exodus(DB_PATH)
|
|
NEW_DATABASE_PATH = DB_PATH[:-2] + '_copy.e'
|
|
EXO_COPY = EXO.copy(NEW_DATABASE_PATH, True)
|
|
if sys.version_info[0] >= 3:
|
|
EXO_COPY.summarize()
|
|
|
|
|
|
print("Exodus file has", EXO_COPY.num_blks(), "blocks")
|
|
BLOCKS = EXO_COPY.get_elem_blk_ids()
|
|
for block in BLOCKS:
|
|
name = EXO_COPY.get_elem_blk_name(block)
|
|
print("\tblock id = {}, name = {}".format(block, name))
|
|
|
|
print("Exodus file has", EXO_COPY.num_side_sets(), "side sets")
|
|
SIDESETS = EXO_COPY.get_side_set_ids()
|
|
for sideset in SIDESETS:
|
|
name = EXO_COPY.get_side_set_name(sideset)
|
|
print("\tside set id = {}, name = {}".format(sideset, name))
|
|
|
|
print("Exodus file has", EXO_COPY.num_node_sets(), "node sets")
|
|
NODESETS = EXO_COPY.get_node_set_ids()
|
|
for nodeset in NODESETS:
|
|
name = EXO_COPY.get_node_set_name(nodeset)
|
|
print("\tnode set id = {}, name = {}".format(nodeset, name))
|
|
|
|
COORDINATES = EXO_COPY.get_coords()
|
|
print("Local Node Id 1 has COORDINATES: {} {} {}"
|
|
.format(COORDINATES[0][0], COORDINATES[1][0], COORDINATES[2][0]))
|
|
NN = (EXO_COPY.num_nodes() - 1)
|
|
print("Local Node Id {} has COORDINATES: {} {} {}"
|
|
.format(EXO_COPY.num_nodes(), COORDINATES[0][NN], COORDINATES[1][NN], COORDINATES[2][NN]))
|
|
|
|
print("Exodus file has", EXO_COPY.num_times(), "time steps")
|
|
if EXO_COPY.num_times() > 0:
|
|
TIMES = EXO_COPY.get_times()
|
|
for time in TIMES:
|
|
print("\ttime = ", time)
|
|
|
|
SSVARNAMES = EXO_COPY.get_side_set_variable_names()
|
|
print("Side Set Variable Names:")
|
|
for name in SSVARNAMES:
|
|
print("\tSideSet Variable = ", name)
|
|
step = 2
|
|
ssvals = EXO_COPY.get_side_set_variable_values(2, "SideBlock_2", step)
|
|
|
|
EXO_COPY.close()
|
|
|