Cloned SEACAS for EXODUS library with extra build files for internal package management.
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

#!/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()