- 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.pyorauxeticmop.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
tkinterandmatplotlib- 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.ParameterDefinitionsand use editor to directly customize parameters. - If using VS code, press
F12, if using Pycharm, pressCtrl+Bto 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
numbafor Python3.11is not supported yet.dataclassis not supported under Python3.6
- [External libraries]
numpy,numba,scipy,matplotlib,aiofiles,dataclasses - [Other software]
ABAQUS CAE

