A converter from Permas to VMAP and vice versa.
This software converts models and results from the Finite Element software Permas to VMAP vice versa. It is written in Python with automated applications in mind, such as cross-disciplinary optimization. The initial focus is on 3D scenarios with solid volume elements only but extensions to other kinds of elements (shells etc.) are envisioned.
In our view, VMAP provides two critical features that cannot be found elsewhere
- Central conversion data format. It provides interfaces to more than 25 simulation softwares, and counting.
- Standardized HDF5 format specification that is productive for structural FE simulations. The fact that both models and results are machine accessible without parsing ASCII, using open source software only, enables much needed efficiency at low entry barriers.
- (Permas-ASCII ->) Permas-HDF -> VMAP
- for FE model and/or results
- the first step (model only) needs to be done by Permas, see Getting started using the code.
- for the second step see PermasHdf2Vmap.py
- VMAP -> Permas-ASCII
- for FE model only
- see Vmap2PermasAscii.py
In the workflow graph above, the input of 1 and the output of 2 may possibly not be identical for the reason that not all features of Permas (e.g. element types) are implemented at the moment. Also, nodes that do not belong to any elements are dropped (e.g. that are exclusively used for the definitions of coordinate systems).
- Performance. The code was fairly optimized for speed. Models with millions of elements can be converted within seconds ... or minutes, depending on the circumstances.
- Reliability. The code is tested end-to-end at DLR-BT using multiple non-academic test models.
- Supported elements: HEXE8, TET10
- Supported analysis types:
- STATIC
- NLMATERIAL
- VIBRATION ANALYSIS
- VIBRATION ANALYSIS with nodal diameter
- Further supported model keywords:
- $NSET (assumption: each NSET is contained in one ESET)
- $SURFACE ELEMENTS (assumption: each SURFACE is contained in one ESET)
- $SFSET
- $MATERIAL with $ELASTIC GENERAL (no temperature dependence) and $DENSITY
- $ELPROP with MATERIAL
- $RSYS (not fully functional yet)
- VMAP v1.0.0 (Windows binaries will soon be included in this repository)
- Python envionment according to environment.yml. The code should work with Python 3.7 but is only tested with the newer version stated in the file.
- Set up a python environment including the modules listed in environment.yml, e.g. using conda.
- Copy the file ./local/local_imports.py.template to ./local_imports.py and adapt it so that you local VMAP instance is found.
- Activate the environment
- change to the code's root directory
Follow the setup instructions first, then:
- Run
python Permashdf2Vmap.py rotorsegment.hdf
. - See the result in the data subfolder: the input file rotorsegment.hdf was converted to rotorsegment_toVMAP.hdf according to the VMAP standard.
- Run
python Vmap2PermasAscii.py rotorsegment_toVMAP.hdf
for the inverse conversion. - See the result in the data subfolder: the input file rotorsegment_toVMAP.hdf was converted to rotorsegment_toVMAP_toPERMASASCII.dat.
- For more info on the usage, run
python Permashdf2Vmap.py
orpython Vmap2PermasAscii.py
to see explanations and examples of the possible arguments.
Follow the setup instructions first, then:
- In your Permas-UCI file, include the following lines:
! header section:
DEFAULT SET HDF_DATASIZE=64 ! sets maximum accuracy for HDF data
! [...]
! TASK section:
EXPORT
ITEM MODL
GO PERMAS BINARY
- Run Permas.
- Move the resulting .hdf file to the data subfolder of this repository.
- Run
python Permashdf2Vmap.py <project>.hdf
. - Enjoy the multitude of possible workflows enabled by the VMAP-ecosystem.
If you just want to convert your model to VMAP, i.e. without any simulation results, run Permas with the following UCI:
SET DATABASE = DELETE
NEW
INPUT
READ PERMAS FILE = my_permas_model.dat
RETURN
TASK
EXPORT
MODEL
GO PERMAS BINARY
TASK END
STOP
See CONTRIBUTING.md. There you can also find information on the reasonig behind features, workflows etc.
Nadine Barth and Oliver Kunc were the initial main developers.
See the DOI link at the top.
Licensed under the Apache License, Version 2.0, see LICENSE.
Development of this project is active (2023). Contributions are highly welcome, see CONTRIBUTING.md for more information.