Skip to main content

ccxmeshreader

PyPI version Conda version Build Status

Introduction

Reads a mesh from CalcluliX input (.inp) files.

Only supports a limited set of keywords defining the mesh. See Supported Keywords for details.

Usage

from ccxmeshreader import read_mesh


mesh = read_mesh('path/to/some.inp')

Supported Keywords

*NODE

Nodes and their coordinates are parsed and added to the dictionary returned by read_mesh in the node_coordinates_by_number key.

The node_coordinates_by_number key contains a dictionary where the key is the node number, and value is the coordinates as a three-element tuple with float values.

For example, given the following *NODE definition:

*NODE, NSET=Nall
1,  1.0, 0.0, 0.1
2,  3.0, 1.0, 2.0
3,  0.9, 5.0, 7.0
mesh = read_mesh('example.inp')
print(mesh['node_coordinates_by_number'])
{
    1: (1.0, 0.0, 0.1),
    2: (3.0, 1.0, 2.0),
    3: (0.9, 5.0, 7.0)
}

Currently node sets are not supported, and the optional NSET parameter is ignored.

*ELEMENT

Elements and their associated nodes are parsed and added to the dictionary returned by read_mesh in the element_dict_by_type key.

The element_dict_by_type key contains a dictionary where the key is the element type, and value is another dictionary where the key is the element number, and value is a list of node numbers associated to the element.

For example, given the following *ELEMENT definition:

*ELEMENT, TYPE=C3D20R, ELSET=Eall
1,  1, 2, 3
2,  4, 5, 6
mesh = read_mesh('example.inp')
print(mesh['element_dict_by_type'])
{
    'C3D20R': {
        1: [1, 2, 3]
        2: [4, 5, 6]
    }
}

Continuation of data-lines ending with a comma , is supported. For example:

*ELEMENT, TYPE=C3D20R, ELSET=Eall
1,  1, 2, 3,
    4, 5, 6
2,  7, 8, 9
mesh = read_mesh('example.inp')
print(mesh['element_dict_by_type'])
{
    'C3D20R': {
        1: [1, 2, 3, 4, 5, 6]
        2: [7, 8, 9]
    }
}

If the ELSET parameter is provided, then the element set will be added to the element_set_by_name dictionary returned in the mesh of read_mesh with the corresponding element numbers.

For example, from the above *ELEMENT definition:

mesh = read_mesh('example.inp')
print(mesh['element_set_by_name'])
{
    'Eall': {1, 2}
}

*ELSET

Element set definitions are parsed and added to the dictionary returned by read_mesh in the element_set_by_name key.

The element_set_by_name key contains a dictionary where the key is the name of the element set, and value is a set of element numbers.

For example, given the following *ELEMENT and *ELSET definitions:

*ELEMENT, TYPE=S4, ELSET=E1
1, 1, 2, 3,
   4, 5, 6
2, 7, 8, 9

*ELSET, ELSET=E2, GENERATE
1, 4

*ELSET,ELSET=E3
E2, 5, 6
mesh = read_mesh('example.inp')
print(mesh['element_set_by_name'])
{
    'E1': {1, 2},
    'E2': {1, 2, 3, 4}
    'E3': {1, 2, 3, 4, 5, 6}
}

The optional GENERATE parameter is respected with start, end, and step.

*INCLUDE

Files specified by the *INCLUDE keyword are read, but currently limited to relative file paths, and assumed to be relative to the path passed to read_mesh.

Recursive includes (i.e. *INCLUDE statements in a previously included file) are not yet supported.

Approach

The approach this library takes is to read the .inp file in a while loop, line-by-line, until there are no lines left, and collect the nodes and elements that make up the mesh into a dictionary.

It does not use an intermediate step of parsing the .inp file into an abstract syntax tree -- as doing so would be costly and likely involve a parsing library.

Thus, ccxmeshreader can be considered light-weight and performant.

Limitations

Continuation of keyword lines is not supported.

For example, trying to read the following .inp file:

*ELEMENT, TYPE=C3D20R,
ELSET=Eall

raises a ccxmeshreader.ParserError.

Unit Tests

Unit tests are included in the tests/ directory, and can be ran with the following command:

python -m unittest discover tests "*_test.py"

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccxmeshreader-0.3.2.tar.gz (16.4 kB view details)

Uploaded Source

File details

Details for the file ccxmeshreader-0.3.2.tar.gz.

File metadata

  • Download URL: ccxmeshreader-0.3.2.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.3

File hashes

Hashes for ccxmeshreader-0.3.2.tar.gz
Algorithm Hash digest
SHA256 88bbe4458b05ade6f33f73c2cf3e903a83d7a0dbe688317fd0eb1f6d903a1d29
MD5 5601d494cbf98682de8519b2008e77bf
BLAKE2b-256 1d01a1c600c873d8d500b63e512f9d053412318e4f4a3ce53053aac0299d84e5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.2 This release

1 file

0.3.1

1 file

0.3.0

1 file

0.2.0

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page