Skip to main content

A package for finding meta-material structure using ABAQUS and MOP evolutionary algorithm approaches.

Project description

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, you must 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

auxeticmop-1.0.2.tar.gz (42.7 kB view hashes)

Uploaded Source

Built Distribution

auxeticmop-1.0.2-py3-none-any.whl (45.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page