CGPACK - Cellular Grains PACKage

CGPACK on SourceForge Download CGPACK
Download CGPACK
Download CGPACK

CGPACK is a Fortran 2008 library for microstructure simulation on HPC systems. Fortran coarrays are used extensively for SIMD style parallelisation. CGPACK is distributed under 2 clause BSD-style license. See LICENSE included with the distribution. CGPACK can be used on its own or together with a continuum mechanics library, such as ABUMPACK or ParaFEM to understand the influence of macro quantities, such as temperature, stress and strain on microstructure evolution, including solidification, recrystallisation, ductile damage and brittle fracture, etc.

Supported by:

Bristol University logo EPCC logo EPSRC logo SSI logo

Progress log

MAY-2017 | APR-2017 | MAR-2017 | DEC-2016 | NOV-2016 | SEP-2016 | AUG-2016 | JUL-2016 | JUN-2016 | MAY-2016 | APR-2016 | MAR-2016 | NOV-2015 | SEP-2015 | JUN-2015 | APR-2015 | MAR-2015 | FEB-2015 | JAN-2015 | OCT-2014 | JUL-2014 | APR-2014 | JUL-2013 | JUN-2013 | MAY-2013 | APR-2013 | MAR-2013 | FEB-2013 | JAN-2013

Feedback and support

With any questions, bug reports, feedback and any other comments please submit a ticket.


Help with usage, modification and further development of this code can be provided via CMPLX Engineering Ltd, an engineering consultancy which specialises in Fortran, solid mechanics and supercomputing.


Publications etc.

A sample of modelling results possible to achieve with CGPACK

Cleavage propagation animations, see JUL-2014 coarray diary for details.

Running crack in a 100-grain model. One frame per 30 cleavage iterations, 10 frames = 300 cleavage progapation iterations in total.

Running crack in 100-grain model

Another view of the same crack. Purple are cracks, gray are GB. 3D crack artefacts are gray because crack potentially occupies the whole grain and all you see from it is just GB.

Another view of the same crack

Same crack with rotating model. 3D and 1D crack artefacts are present. This is one of the problems with the current cleavage propagation model.

Same crack, rotating model

Another example, still 100 grains

A model with 100 grains

A model with 100 grains

GB in a 100-grain model

GB in a 100-grain model

Crack in a 100-grain model after 300 iterations

Crack in a 100-grain model, 300 iterations

Grain competition stats

Changing grain size histograms during competition. This is a multi-page PDF

Changing grain size histograms during competition

Resolution analysis. Multiple runs of the same model. This is a multi-page PDF

Multiple runs of the same model

Grain competition animation.

Grain competition animation

Examples of grain structures

300x300x300 cell array, 100 grains, equiaxed microstructure

Equaxed microstructure

300x300x300 cell array, 50 grains, solidification from the boundary

Solidification from the boundary

200x200x200 cell array, 500 grains, bi-modal microstructure

bi-modal microstructure

No self-similar boundary conditions (fixed boundary). The full surface of one grain is shown protruding from the cross-section of the microstructure.

Columnar grains examples

150x150x150 array, 50 grains, showing the nucleation plane.

Nucleation on a specified plane

The same plane after solidification

Uniaxial solidification

3D view of solidified microstructure, showing columnar grains along X.

Uniaxial solidification - 3D view

Single grains

200x200x200 array, 50 grains. No self-similar boundary condition.

columnar grains - slice with one
         grain shown fully in 3D

Animated single grain rotated in space. Faces, edges and vertices can be identified.

Animated single grain rotated in space.

We use Paraview for visualisation.

A volume of material shortly after grain nucleation. Note that the bulk of the volume is not filled yet. rotated cube of material 1

A volume of material at the end of the grain growth. Only the surface of this volume is shown. rotated cube of material 2

A volume of material at the end of grain growth. This is volume visualisation. rotated cube of material 3

Other Fortran related projects

validate this page