- 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']
.
-
The script
full_scripts.py
orauxeticmop.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
- Related contents:
-
Python script running on ABAQUS is located in
auxeticmop.AbaqusScripts
. This will run only on ABAQUS-embedded python interpreter, and maybe the version is2.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
- Related contents:
- 10 by 10 by 10 voxels per 1/8 cell.
- Negative negative poisson's ratio structure
- Building a GUI using
tkinter
andmatplotlib
- 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.
Before installing this package, ABAQUS CAE must be installed.
To install the current release via PyPI
with Python version >=3.6
and <3.11
:
$ pip install auxeticmop
... or to install the current release via anaconda
with Python version >=3.6
and <3.11
:
$ conda install -c cosogi auxeticmop
$ python
>>> from auxeticmop.sample_scripts import full_steps
>>> if __name__ == '__main__':
... full_steps.run()
>>> 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, pressCtrl+B
to go to file.
All Steps are included in
auxeticmop.GeneticAlgorithm.NSGAModel.evolve_a_generation()
.
- Generate offspring topologies from parent topologies.
- Related contents:
auxeticmop.GeneticAlgorithm.NSGAModel.generate_offspring_topologies()
- 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
- Evaluate fitness values of parents and offsprings.
- Related contents:
auxeticmop.PostProcessing.evaluate_all_fitness_values()
- Select desired topologies which fits pareto-front(non-dominated) points and export these as next parent.
- Related contents:
auxeticmop.PostProcessing.selection()
- Redo steps 1~4 for next generations. Iterations of all generations are done in
auxeticmop.GeneticAlgorithm.NSGAModel.evolve()
.
- 3D print-ability without supports, maximum overhang distance is also considered.
- Related contents:
auxeticmop.MutateAndValidate.make_3d_print_without_support
- Related contents:
- Allowing only Face-to-Face contact between voxels.
- Related contents:
auxeticmop.MutateAndValidate.make_voxels_surface_contact
- Related contents:
- 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
- Related contents:
- 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 coefficientk
: penalty coefficient
- [Language] Python, with version
>=3.6 and <3.11
. - Version dependency
numba
for Python3.11
is not supported yet.dataclass
is not supported under Python3.6
- [External libraries]
numpy
,numba
,scipy
,matplotlib
,aiofiles
,dataclasses
- [Other software]
ABAQUS CAE