Integrated Computational Materials Engineering (ICME)



The microscale is the length scale immediately above the nanoscale. As the name suggests, this length scale encompasses structures with dimensions in microns, also known as micrometers. Methods used for this length scale lose atomistic details, such as atom to atom interactions, but allow problems too large for nanoscale methods to be examined. For example, dislocation dynamics, crystal interactions, and grain boundaries can be examined in metals. Additionally, the stress-strain and damage responses for scale specific structures in hierarchical materials, such as those often seen in biological structures, laminates, or porous materials, can be examined.

The microscale research codes shown here have been developed outside of and used at CAVS for modeling dislocation interactions and reactions in an elastic continuum (please cite any used software appropriately). The codes are used in a hierarchical multiscale framework of the plasticity to obtain information related to material hardening (this paper-is an example of a multiscale framework problem). Details of the discrete dislocations model can be found in the methodology paper. This particular site contains the research code that has been developed outside for performing and analyzing discrete dislocations simulation results. The research codes used at CAVS comes with a user's manual. We caution the user that there is some risk in using the research version of the codes. For any questions that are not addressed in the user's manual or the 'readme' files accompanying the code, please contact the code developers.

The discrete dislocation simulation code can be used for HCP, BCC and FCC materials.

Finally, to garner more information about the information bridges between length scales go to the ICME Education page.

For background information about Dislocation Dynamic Plasticity go to Dynamic Dislocation Plasticity.


Source code and inputs can be downloaded from this link. A video tutorial can be found here. Keep in mind that all program files will need to be given executable permissions. This change can be accomplished using chmod on Linux systems or through the Security tab of a file’s properties in Windows.

Run MDDP from a Linux terminal using the single Frank-Read source (SFRS) input and/or the multiple Frank-Read sources (MFRS) input. Be sure to change the data file to reflect the properties of the material you wish to study. The inputs from the zip file are setup for aluminum. These inputs use the Frank-Read Source Operation (FRSO), which is an elementary problem consisting of a dislocation multiplication of a dislocation segment pinned at both ends, where:
  • The simulation box is a cube with the dimensions 12000 x 12000x 12000 (units: magnitude of the Burger's vector).
  • The crystal is oriented so that the normal to the (111) plane is along the z-axis, the crystallographic direction [-211] is along the x-axis, and the [0-11] direction is along the y-axis.
  • The initial dislocation structure consists of a dislocation line of length 2000b extending along the x-axis with its line sense in the negative x direction.
  • The Burger's vector points in the negative y-direction.
  • Rigid wall boundary conditions are used on all sides. Dislocations cannot pass through the walls, rather they will stack up against them.
  • Under the effect of the shear stress, the dislocation bows out, forms a loop and continuous operating in this mode generating increased number of loops. This process becomes harder as more dislocations pile up against the walls and induce back stress on the source, ultimately shutting it down.

To run the simulation, put the input files in a working directory. Users can choose to use the MDDP executable from a dedicated location or make a copy in the working directory. Keep in mind that if a copy of the executable is not located on your system Path or in the local working directory, the full path to the MDDP executable will need to be included (i.e., [file path to file]/[file name]). Once you navigate to your working directory, run the MDDP executable by entering it’s name (if in a terminal-there are no arguments) or double clicking it in your file browser (will only work if it is in the working directory) and respond “y” to the prompt to run the program. After running MDDP using the given input files you can post process to obtain stress-strain plots and the location/orientation of dislocations as follows:

Visualization of the Dislocation Structure

TecPlot is a general postprocessor which offers enhanced capabilities and can read output data from different software. The output files from MDDP are configured to be ready used with TecPlot. The information describing the dislocation structure is dumped into a chain of files starting with “tech” followed by a series number of the file (tech002, tech004, etc.). Each file has the dislocation structure data for 500 time steps. The first 500 steps are written to tech002, the next 500 steps are written to tech004, and so on. This is done in order to keep the files’ size reasonable. A video tutorial can be found here. To visualize the dislocation structure, open TecPlot and follow these steps:
  • From File-->Load Data Files -- change Files of type: to TecPlot Data Loader and browse for the directory in which you ran the executable
  • In the File name: box type te* and hit enter
  • The folder should populate with files from tech002 to techIJK (where IJK is the final number of tech files generated)
  • Select all of the files you wish to load, and click Open
  • Under Plot change XY Line to 3D Cartesian
  • From the Plot drop menu, select Axis and from the Axis Details box, check the Show Axis box to show all axes; uncheck Preserve length when changing range, and change the Min: and Max: values for each axis to -6000 and 6000, respectively; click Close
  • Under Plot go to Vectorvariableschoose V1, V2, and V3 for U, V, and W, respectively. Then go to VectorLength and make sure that the Relative Grid Units/Magnitudes set to 1.0 by going to and click Close
  • Click Zone Style... select all of the zones and uncheck Show Zone; Click on Zone 001 and check Show Zone
  • On the left-hand side of the screen, check the box next to Vector. You should be able to see the initial dislocation lines and use the typical controls to rotate, zoom, etc. to help you visualize the structure
  • To visualize the structure at different time steps, under DataEdit Time Strands... Select Constant Delta and ensure that Delta: is set to 1; Click Apply (For a large number of zones this will take somewhere between 10 minutes and 1 hour to animate)
  • An area for animation playback should appear with play, step forward, and go to end blue- colored buttons; you should now be able to play the animation\
  • You can modify the speed of playback by clicking Details... next to Solution time:

XY Plot of Time Histories and Stress-Strain Curves

The main file that contains this information is DDtimeResults.out, which plots the history of multiple variables including the dislocation density, stress, strain, etc. Each plot is referred to as a map in TecPlot. Open TecPlot and follow these steps:
  • From File-->Load Data Files -- change Files of type: to TecPlot Data Loader and browse for the directory in which you ran the executable
  • In the File name: box type DD* and hit enter
  • Choose DDtimeResults.out and click Open
  • The initial XY plot will be a disDensity vs. timenow; you can change this by clicking Mapping Style...
  • In the Mapping Style window, you will have several map numbers with corresponding names and the variables they are plotted against
  • To create the stress-strain curve for your DDtimeResults.out uncheck Show Map for disDens... and check Stress; Right-click on 1:timenow to change the x-axis variable to 4:Strain
  • From the Plot drop menu, select Axis and from the Axis Details box, click Reset Range and select Reset to Nice Values; select Y1 at the top and repeat the previous procedure; click Close
  • You can now repeat the entire process to produce other curves such as dislocation density vs. stress or strain


MTEX is a free MATLAB toolbox for analyzing and modeling crystallographic textures by means of EBSD or pole figure data.

Getting Started

Installation Guide

How to install MTEX on your computer.


The MTEX toolbox is available for Windows, Linux, and MAC-OSX here.


Since MTEX is a MATLAB toolbox MATLAB has to be installed in order to use MTEX. It works fine with the student version and does not require any additional toolboxes, addons or packages. Check the table below to see whether MTEX will run on your MATLAB version.


In order to install, MTEX proceeds as follows:
  1. extract MTEX to an arbitrary folder
  2. start MATLAB
  3. type into the MATLAB command window
    • addpath your_MTEX_path
    • startup_mtex

Configuration and Troubleshooting here.

Compiling MTEX Compiling MTEX is only necessary if the provided binaries do not run on your system or if you want to optimize them for your specific system.

MTEX Users Guide

  • Crystal Geometry: Introduces key concepts about the MTEX representation of specimen directions, crystal directions, crystal symmetries, rotations, and orientations.
  • Pole Figures: Explains how to import pole figure data, how to correct them, and how to recover an ODF.
  • ODFs: ODF stands for orientation distribution functions. This section explains how to import and export ODFs, how to define model ODFs and how to analyze ODFs, e.g., with respect to modalorientations, textureindex, volumeportions. Pole figure simulation and single orientation simulation is explained as well.
  • Tensors: Explains how to work with material tensors in MTEX, i.e., how to compute mean material tensors according to an ODF or to EBSD data, how to compute rotate and visualize tensors and how to calculate with elasticity tensors.
  • EBSD: Data Import of Electron Backscatter Diffraction Data, Correct Data, Estimate Orientation Density Functions out of EBSD Data, Model Grains, and Misorientation Density Functions.
  • Grains: Explains how to reconstruct grains form EBSD data, visualize Grains and EBSD, analyzing misorientations.
  • Grain Boundaries: MTEX provides several functionalities to analyze grain boundaries with respect to twinning, CSL boundaries, etc.
  • Plotting: Explains different plot types and how to customize them, including annotations, spherical projections, color coding.

For a detailed user’s guide visit the MTEX website for the manual.


Multiscale Dislocation Dynamics Plasticity (MDDP) is a discrete dislocation dynamics (DD) model for crystalline materials coupled by finite element (FE) analysis developed by Hussein M. Zbib and colleagues[1].

MDDP simulations can run for calibration of data upscaled from atomistic scale calculations. It is run from an executable and requires two input files. For example, for modeling crystal plasticity in aluminum, the code MDDP can be used to calibrate values of dislocation mobility determined from molecular dynamics simulations. Stress-strain curve data can then be used to upscale to the mesoscale crystal plasticity length scale[2][3].

For additional information regarding MDDP, please view the MTEX webpage or the MDDP Manual.


This section includes links to versions of the discrete dislocation dynamics codes. microMegas is commonly used at CAVS to simulate the behavior of dislocations for metals at the microscale and can be downloaded.

From the French Aerospace Lab here


Parallel Dislocation Simulator (ParaDis) was initially developed by Vasily Bulatov who led a team of physicists and computer scientist at the Lawrence Livermore National laboratory in 2001.

It was designed to perform large scale DD simulations to study the essential mechanisms of plasticity in BCC and FCC metals. ParaDis is optimized to perform on massively parallel supercomputers which allows for researchers to to study tens of thousands of simulated dislocations in a defined area.

The research of materials through ParaDis has led to a discovery in a new dislocation microstructure that was previously unknown. This new microstructure was revealed after simulations displayed collisions among three or more dislocations resulted in the formation of multijunctions and multinodes which are further explained in reference. The discovery multijunctions through ParaDis led to a better understanding of strain hardening. For more information on this work and ParaDis as a whole visit this science and technology review here.

Downloading ParaDis's source code requires signing up on the Stanford site which can be reached through this link. The Stanford site also provides documentation on the instillation and set up of ParaDis.


Parametric Dislocation Dynamics (PDD) was initially developed by Ghoniem and Sun in 1999 and was improved by Ghoniem in 2000 and various other researchers since.

PDD is not available to the public. However, more information on PDD can be found through Zhiqiang Wang's dissertation here.


PARAnoid NOdal IBM Dislocation (PARANOID) is a code designed to simulate dislocations in thin films and semi-conducting and metallic materials. The code was initially developed by Klaus Schwarz and his team at IBM in 1999. I In the model presented by PARANOID, dislocations are represented as segments that have mixed characters. Basic equations of motion are used for dislocations. One of the distinctive features of PARANOID is the use of the modified Brown splitting procedure with the Peach Koehler formalism.

PARANOID is not currently open to the public.

Microscale oxidation simulation PuMA

Micro-tomography has become an extremely useful tool for material science applications, allowing for non-destructive characterization of a material micro-structure at a sub-micron scale. The Porous Microscructure Analysis (PuMA) software has been developed in order to compute effective material properties and perform material response simulations on digitized microstructures of porous media. PuMA is able to import digital three-dimensional structures obtained from X-ray microtomography or to generate artificial microstructures, and to visualize the 3D microstructure. PuMA includes modules to compute porosity, volume fractions, surface area, tortuosity factor, effective thermal conductivity, effective electrical conductivity, and to perform representative elementary volume analysis. The software also includes a time-dependent, particle-based model for the oxidation of fibrous materials. Material properties and response calculated within the PuMA model can be used to inform macro-scale material response simulations and guide material development.

Here is a tutorial for Microscale oxidation using PuMA, click here.


  1. H. M. Zbib, M. Shehadeh, S. M. A. Khan, and G. Karami, “Multiscale Dislocation Dynamics Plasticity,” JMC, vol. 1, no. 1, 2003, doi: 10.1615/IntJMultCompEng.v1.i1.70.
  2. M. F. Horstemeyer, Integrated Computational Materials Engineering (ICME) for Metals: Using Multiscale Modeling to Invigorate Engineering Design with Science. Wiley, 2012. [Online]. Available:
  3. S. Groh, E. B. Marin, M. F. Horstemeyer, and H. M. Zbib, “Multiscale modeling of the plasticity in an aluminum single crystal,” International Journal of Plasticity, vol. 25, no. 8, pp. 1456–1473, Aug. 2009, doi: 10.1016/j.ijplas.2008.11.003.