Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/c0sogi/auxeticmop-with-abaqus

Finding metametrial structure by NSGA genetic algorithm with ABAQUS CAE
https://github.com/c0sogi/auxeticmop-with-abaqus

abaqus abaqus-python-script cae data-science genetic-algorithm mechanical-engineering metamaterial-design metamaterials nsga

Last synced: 17 days ago
JSON representation

Finding metametrial structure by NSGA genetic algorithm with ABAQUS CAE

Awesome Lists containing this project

README

        

# AuxeticMOP-with-ABAQUS `1.0.2`

## Purpose
- Finding metamaterial structure with negative poisson's ratio using ABAQUS and MOP evolutionary algorithm approaches.
- In addition to structure with negative poisson's ratio, other types of material structure can be created by varying version fitness values definitions.
- The definition of fitness value for negative Poisson's ratio is well defined in `auxeticmop.ParameterDefinitions.fitness_definitions['ver3']`.

## Features
- The script `full_scripts.py` or `auxeticmop.sample_scripts.full_steps.run()` generates 1/8 structure of unit cell using ABAQUS CAE software by genetic algorithm.
This script is especially for finding mechanical meta-material structure consisting of 3D voxels.
- GUI is provided for getting initial parameters for ABAQUS, and plotting results when a generation work is done.
+ Related contents: `auxeticmop.GraphicUserInterface`

- Python script running on ABAQUS is located in `auxeticmop.AbaqusScripts`. This will run only on ABAQUS-embedded python
interpreter, and maybe the version is `2.7.15`. Other scripts are running on newer Python.

- Non-dominated Sorting Genetic Algorithm(NSGA) is used to validate and assess fitness values of generated topologies.
+ Related contents: `auxeticmop.GeneticAlgorithm`, `auxeticmop.MutateAndValidate`

## Example

- ### Auxetic cell



>- 10 by 10 by 10 voxels per 1/8 cell.
>- Negative negative poisson's ratio structure

- ### GUI example



>- Building a GUI using `tkinter` and `matplotlib`
>- Receiving parameter values required for ABAQUS analysis and GA setting from the user
>- The Pareto optimization solution and hyper volume value calculated from the Main Process
are input in real time and output as a graph.

## Install
Before installing this package, [ABAQUS CAE](https://edu.3ds.com/en/software/abaqus-learning-edition) must be installed.

To install the current release via `PyPI` with Python version `>=3.6` and `<3.11`:
```shell
$ pip install auxeticmop
```
... or to install the current release via `anaconda` with Python version `>=3.6` and `<3.11`:

```shell
$ conda install -c cosogi auxeticmop
```

#### *Try out whole GA steps*

```shell
$ python
```

```python
>>> from auxeticmop.sample_scripts import full_steps
>>> if __name__ == '__main__':
... full_steps.run()
```
#### *Modify your parameter definitions*
```python
>>> from auxeticmop import ParameterDefinitions
>>> dir(ParameterDefinitions)
Output: ['FitnessDefinitions', 'GuiParameters', 'JsonFormat', 'Parameters', 'Union', '__builtins__',
'__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__',
'dataclass', 'exported_field_outputs_format', 'fitness_definitions', 'material_property_definitions',
'np', 'radiobutton_name_dict', 'translate_dictionary']
```
- Go to `auxeticmop.ParameterDefinitions` and use editor to directly customize parameters.
- If using VS code, press `F12`, if using Pycharm, press `Ctrl+B` to go to file.

## Overall Steps of GA
> All Steps are included in `auxeticmop.GeneticAlgorithm.NSGAModel.evolve_a_generation()`.
>1. Generate offspring topologies from parent topologies.
> - Related contents: `auxeticmop.GeneticAlgorithm.NSGAModel.generate_offspring_topologies()`
>2. Analyze displacements, reaction forces, or other mechanical properties of offspring topologies using ABAQUS CAE.
> - Related contents: `auxeticmop.Network.start_abaqus_cae()`, `auxeticmop.Network.request_abaqus()`, `auxeticmop.AbaqusScripts`
>3. Evaluate fitness values of parents and offsprings.
> - Related contents: `auxeticmop.PostProcessing.evaluate_all_fitness_values()`
>4. Select desired topologies which fits pareto-front(non-dominated) points and export these as next parent.
> - Related contents: `auxeticmop.PostProcessing.selection()`
>5. Redo steps 1~4 for next generations. Iterations of all generations are done in `auxeticmop.GeneticAlgorithm.NSGAModel.evolve()`.

## Conditions to Meet in Validation Steps
- 3D print-ability without supports, maximum overhang distance is also considered.
+ Related contents: `auxeticmop.MutateAndValidate.make_3d_print_without_support`
- Allowing only Face-to-Face contact between voxels.
+ Related contents: `auxeticmop.MutateAndValidate.make_voxels_surface_contact`
- All six faces of structure are connected as one tree, thereby not allowing force-free structure inside an unit cell.
+ Related contents: `auxeticmop.MutateAndValidate.one_connected_tree`
## Fitness Value Definitions
- Those two fitness values(objective functions) should go lower.
- The fitness value definitions are well organized in `auxeticmop.ParameterDefinitions.fitness_definitions`.
- You can choose the version of fitness value evaluation in GUI.

| Evaluation
version | Fitness
value 1 | Fitness
value 2 |
|------------------------|------------------------------------------------------|---------------------------------------|
| ver1 | RF22/RF22,max + `k`*`vol_frac` | ν 21 + `k` * `vol_frac` |
| ver2 | `vol_frac` | RF22/RF22,max |
| ver3 | ν 21 + `k` * `vol_frac` | ν 23 +`k` * `vol_frac` |
| ver4 | (σmises)max | `vol_frac` |
| ver5 | (σmises)max | max(ν 21, ν 23) |
>- `vol_frac`: Volume fraction in cell (0~1)
>- `k`: penalty coefficient
>- `k`: penalty coefficient

---
## Required
- [x] **[Language]** Python, with version `>=3.6 and <3.11`.
- Version dependency
- `numba` for Python `3.11` is not supported yet.
- `dataclass` is not supported under Python `3.6`
- [x] **[External libraries]** `numpy`, `numba`, `scipy`, `matplotlib`, `aiofiles`, `dataclasses`
- [x] **[Other software]** `ABAQUS CAE`