This repository includes the official implementation of the paper A Novel Approach to Discrete Representative Volume Element Automation and Generation-DRAGen. DRAGen is an approach for generating Representative Volume Elements (RVEs) based on a Random Sequential Addition (RSA)-Algorithm for discrete volumes and the tessellation using a discrete tessellation function. The input data are gathered from the analysis of electron backscatter diffraction (EBSD) pictures via MATLAB toolbox MTEX and introduced to the model. Subsequently, the generator follows the below mentioned steps:
- Randomly generating ellipsoids in volume (RSA)
- Filling empty spaces between ellipsoids (Discrete Tessellation)
- Validation of the newly created digital microstructure with input data
The results show that the generator can successfully reconstruct realistic microstructures with elongated grains and martensite bands from given input data sets.
Note: For developing it is highly recommended to use Python versions 3.6 to 3.8. For Python 3.9 Pyvista is not fully supported.
If further questions appear please check the lower section or get in touch with us.
clone this repository into desired destination:
$ git clone https://github.com/IMS-RWTH/DRAGen.git
$ cd dragen
make sure conda is installed correctly on your system look up here
Create a virtual environment as follows:
$ conda create --name DRAGen python=3.8
$ conda activate DRAGen
(if an error occurs check your conda installation)
make sure the DRAGen env is activated it should look somewhat like this:
(DRAGen)....$
install requirements:
(DRAGen)....$ pip install -r requirements.txt
run first generation with:
(DRAGen)....$ python DRAGen_nogui.py
Show more...
Header: | a | b | c | alpha | beta | phi1 | PHI | phi2 |
---|---|---|---|---|---|---|---|---|
Description: | grain radius | grain radius | grain radius | grain slope x-y-plane |
soon | euler ang. | euler ang. | euler ang. |
Required: | mandatory | optional | optional | optional | soon | optional | optional | optional |
Default: | a | a | 0 | soon | random | random | random |
DRAGen takes .csv files as input. Theses files must contain at least one radius for each grain. This radius has to be called a in the header.
Optional parameters are:
- b and c as second and third radius of each grain (ellipsoids are created).
a is assumed to be oriented with the rolling direction and is aligned with x-axis, b is aligned with y-axis and c with z-axis. - If a slope relative to x-axis is detected (rotation in x-y-plane, around z-axis), alpha can be used to implement this slope on the grains.
beta will be implemented in the future and will be a rotation around x- or y-axis. - The texture can be defined with the parameters phi1, PHI and phi2.
In V.1.0_b, the output files are Abaqus input files designed for the use with the ICAMS-Crystal-plysticity model. Therefore, the subroutine-files are needed for a successfull analysis.
- Periodic boundary conditions (PBC): BottomToTop.inp, FrontToRear.inp, LeftToRight.inp, Corners.inp, Edges.inp, Nsets.inp, VerticeSets.inp
- CP-model data (euler angles and grain size): graindata.inp
- RVE: RVE_smooth.inp
- RVE in arry: RVE_Numpy.npy (not needed at the moment!)
It is distiguished between a plastic phase (Phase 1, e.g. Ferrite) purely elastic phase (Phase 2, e.g. Martensite) and . Extensions to more then two phases are in the making.
One additional feature of our system is the generation of statistically representative microstructur using Generative Adversarial Networks, a method from the field of deep learning. With our CWGAN-GP, it is possible to generate an unlimited amount of vaild synthetical microstructure. Possible for "normal" grain data, inclusions and even damage (coming soon!). For more information, see our article on the basic idea of using a WGAN (https://www.mdpi.com/1996-1944/13/19/4236) and our IDDRG post on the CWGAN-GP (coming shortly after publishing).
- DRAGen.V.1.0_b
- DRAGen Support [email protected]
Please use one of the following keywords for your issue as e-mail subject:
- General problems
- RSA error
- Tesselation error
- Mesher error
- Substructure
- Inclusions
- Bands