Skip to content

Finding metametrial structure by NSGA genetic algorithm with ABAQUS CAE

License

Notifications You must be signed in to change notification settings

c0sogi/AuxeticMOP-with-ABAQUS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 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

Try out whole GA steps

$ python
>>> from auxeticmop.sample_scripts import full_steps
>>> if __name__ == '__main__':
  ...   full_steps.run()

Modify your parameter definitions

>>> 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()
  1. 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
  1. Evaluate fitness values of parents and offsprings.
  • Related contents: auxeticmop.PostProcessing.evaluate_all_fitness_values()
  1. Select desired topologies which fits pareto-front(non-dominated) points and export these as next parent.
  • Related contents: auxeticmop.PostProcessing.selection()
  1. 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

  • [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
  • [External libraries] numpy, numba, scipy, matplotlib, aiofiles, dataclasses
  • [Other software] ABAQUS CAE