Ansi C library for parsing binary output files of LS Dyna (d3plot, binout) with bindings for python
Project description
dynareadout
An Ansi C library for parsing binary output files of LS Dyna (d3plot, binout) with bindings for python
Examples
Binout
from dynareadout import Binout, BinoutType
bin_file = None
try:
# This library also supports opening multiple binout files at once by globing them
bin_file = Binout("simulation/binout*")
except RuntimeError as e:
print("Failed to open binout: {}".format(e))
exit(1)
# Print the children of the binout
children = bin_file.get_children("/")
for (i, child) in enumerate(children):
print("Child {}: {}".format(i, child))
# Read some data. This read method can read variables with different types, but
# there are also read methods for particular types
node_ids = bin_file.read("/nodout/metadata/ids")
for (i, nid) in enumerate(node_ids):
print("Node ID {}: {}".format(i, nid))
# You can also read this variable with the read method of the particular type
# First find out what the type is
node_ids_type = bin_file.get_type_id("/nodout/metadata/ids")
# Then read the data using the special read method.
# The benefit of using those methods over the generalised read method
# is that the data does not need to be converted to a python list, but
# instead it can be accessed directly which is better for performance.
if node_ids_type == BinoutType.Int32:
node_ids = bin_file.read_int32("/nodout/metadata/ids")
elif node_ids_type == BinoutType.Int64:
node_ids = bin_file.read_int64("/nodout/metadata/ids")
else:
print("The node ids are not 32-Bit or 64-Bit integers")
exit(1)
for (i, nid) in enumerate(node_ids):
print("Node ID {}: {}".format(i, nid))
D3plot
from dynareadout import D3plot
plot_file = None
try:
# Just give it the first d3plot file and it opens all of them
plot_file = D3plot("simulation/d3plot")
except e as RuntimeError:
print("Failed to open: {}".format(e))
exit(1)
# Read the title
title = plot_file.read_title()
print("Title: {}".format(title))
# Read node ids
node_ids = plot_file.read_node_ids()
print("Nodes: {}".format(len(node_ids)))
for (i, nid) in enumerate(node_ids):
print("Node {}: {}".format(i, nid))
# Read node coordinates of time step 10
node_coords = plot_file.read_node_coordinates(10)
for i in range(len(node_coords)):
print("Node Coords {}: ({:.2f}, {:.2f}, {:.2f})".format(i, node_coords[i][0], node_coords[i][1], node_coords[i][2]))
Other languages
This library is also available for C and C++ this version can be found here.
Installation
python -m pip install dynareadout
Uploading to PyPI
-
Make sure that the dynareadout submodule has the correct version
-
Update the version in
setup.py
andpyproject.toml
. Also check if new source files have been added -
Publish a new release
-
Create source distribution
python setup.py sdist
- Upload to
test.pypi.org
python -m twine upload --repository testpypi dist/*
Then insert __token__
as username and the token as password.
- Install package from
test.pypi.org
to test it
python -m pip install --upgrade --no-build-isolation --index-url https://test.pypi.org/simple/ dynareadout
- If it works upload it to
pypi.org
python -m twine upload dist/*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dynareadout-23.1.tar.gz
(216.6 kB
view hashes)
Built Distribution
Close
Hashes for dynareadout-23.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0f57934c9e6419053be9c74f63a84f9d3d692156a6157f94d8fbfda88226273 |
|
MD5 | 59c3a8133f6c2656f78e5f99923f41fa |
|
BLAKE2b-256 | e334a4164fb65c99a2010400df48d64110c7175b67e1ed34bc743d3756e39212 |