Cellular Automata

Cellular Automata

Elastodynamic Cellular Automata

We are releasing an early version of our Cellular Automata code for performing elastodynamic calculations on two-dimensional domains. The release includes a simplified GUI appropriate for easy analysis of rectangular domains having any number of holes. The approach employs triangular cells and non-uniform meshes. At present, the mesh file format is that used by COMSOL (.mphtxt) and is text-based – the release includes one example mesh. The GUI assumes a domain composed of a single material and loaded by point forces, each having the same magnitude. The loading allows a constant pressure to be modeled over a specified area. The code itself has far more functionality than this that the user can program using the included Java source code. For example, we have used it to model Neumann and Dirichlet boundary conditions, to include forces and/or boundary displacements of a prescribed time history. The GUI is not sophisticated enough at this time to allow this functionality; however, the user is free to modify the included source code to do so. In fact, some of the necessary source code is already there in packages labeled Dirichlet and Neumann. The source code follows closely the structure detailed by Ryan Hopman and Michael J. Leamy in the accepted paper Triangular Cellular Automata for Computing Two-Dimensional Elastodynamic Response on Arbitrary Domains, which will appear shortly in the Journal of Applied Mechanics

Disclaimer: If you use the application in any work, or modify the source code in any work, please cite the Journal of Applied Mechanics paper in any publications. You can find the full bibliographic information on the Publications page (see navigation menu). Thank You!

The application with all of its Java source code is available as a free download: Triangular CA

A preprint of the accepted Journal of Applied Mechanics paper can be found here: JAM CA Manuscript

If Java is installed on your computer (we recommend Java release 1.6), then on a Windows system you can double-click the jar file and the GUI should appear a few moments later. A better alternative is to run the jar file from a command prompt since then debugging information is available. The Windows command to do so is “java -jar Elastodynamic_Cellular_Automata.jar” without the quotation marks. The jar file should run equally-well on Linux, Mac, and other platforms supporting Java. After successful launch, you should see a GUI that looks like this:


An example simulation can be executed by first opening the included ‘HarmonicLoading_with_Hole.inp’ file using the top menu of the GUI: “File->Open Settings File…” This will populate the data in the GUI. You can modify any of this information if you like, and save it using the “File->Save Settings File…” top menu option. Be careful not to choose a value for Steps/Time that is too small – this is an explicit simulation tool that must satisfy a minimum time step for stability. Also be aware that the GUI is fragile: it will not check that the data you entered is correctly formatted to be integers, floats, or makes sense!If you would like to create your own domains and meshes, feel free to do so and then load them using the “Get Mesh File” button. When you have made your final selections, hit the “Run Simulation!” button. The simulation will run until completion, at which point the “Run Simulation!” button should reset. Expect a minute or two of simulation time for the settings included in the release. All output files will appear in the directory “output” together with an additional mesh file saved to the root directory entitled “CA_mesh_data_for_Matlab.txt”. At this time, all post-processing is done using Matlab; however, it would be quite easy to take the existing text-based output files and write post-processing tools yourself.

Following simulation, the root directory contains the file ‘CAmeshreader.m’ which will plot the meshed domain for inspection. Running this in Matlab for the example simulation detailed above should result in the following figure:


The white cell denotes the triangular cell holding the loading. Green triangles denote the location of free edges – note that if fixed edges were used, these triangles would appear red:


The output directory includes two Matlab .m files for post-processing further the results. For example,’CAmeshVisualizer3D.m’ will plot either the x- or y-displacement for each saved time step, resulting in an animation of the displacement field. The final frame should look like this if the included settings file is used:


Future Directions:

– Parallelization: we are presently using MPJexpress to parallelize the code for shared and distributed memory platforms.

– Enhanced GUI: we would like to avoid using Matlab as a post-processing tool and instead rely solely on open-source tools. In addition, we would like the GUI to have the functionality of a commercial simulation tool: drawing and meshing capability, tools for applying boundary conditions and loading on curved surfaces, etc.

– Multiresolution analysis using non-conforming meshes.  Please see the research and video completed by Mr. Jeremy Simpson using a Georgia Tech PURA grant.