Skip to content

elbor7/DFK_code

Repository files navigation

Discrete Polyhedral Cell Complex (PCC) Fracture Kinetic code (DFK code)

Manual version: 0.1.0
First manual release date: 21/09/2022
Current manual release date: 27 January 2023

DFK code is a fracture simulation tool designed for polycrystalline composites design purposes. Its key feature is the usage of polyhedral cell complexes (PCC), which provide a discrete space for designing realistic material defect structures of different dimensions and types. Several functions allow the simulation physically realistic intragranular fracture process, including multiple cracking and macrocrack growth. Specifically, it was tested on the problems of complex-structured rGO/ceramic nanocomposites fracture.

This is a C++ based software project consisting of several modules working with a pre-created Polyhedral Cell Complex (PCC) as the set of its incidence and adjacency matrices represented in a sparse matrix form. The code contains several modules (Processing, Subcomplex, Multiphysics, Kinetic, Characterisation and Writer) with additional libraries containing special classes and support functions. Each specific simulation problem (studies of the effect of elastic stresses, inclusions fraction, etc.) can be included in the main.cpp as a separate simulation task. The main.cpp merge and launch all the modules together, reading configurations and data files, "include" simulation tasks.

The code works both with 3-complexes (3D) and 2-complexes (2D) BUT - to make results consistent with 2D/3D EBSD scans - it assumes that the "grains" are 3-cells in the 3D, 2-cells in the 2D case, and so on for grain boundaries and other element types. So it actually replaces definitions of k-cells with ( k + (dim - 3) )-cells, where dim = {2, 3} is the dimension of the problem. In such a way, 2-cells are ALWAYS associated with grain boundaries and are edges for the 2D case.

General specifications

The code is written and tested in C++ 17 with the parallelised verson used some features of C++ 20. It explicitly uses the Eigen and Spectra libraries, which must be downloaded and copied to the directory containing all the STL C++ libraries on the local PC. The code works well and has been tested using CMake 3.23 (cmake.org), g++ compiler (gcc.gnu.org) and CLion IDE (jetbrains.com/clion).

The computational costs of different calculation types, functions and tasks are hugely different: for instance, the component analysis or the Metropolis algorithm-based simulations are very time-consuming procedures, while the random generation of special chains is fast.<\p>

Modules

All the modules except the main.cpp consist of the interface<\i> and the core library<\i> parts. The interfaces contain pre- and post-processing of data for this particular module, adapting input from the main.cpp, and managing the function implementations according to the calculation types specified in the configuration file.
  1. DCC_Main: include libraries, global variables, reading from files, launching the other modules and simulation tasks;
  2. DCC_Processing: assign chains of special k-cells. Essentially, the ultimate goal of the module is to create a list of special k-cells (or k-sequence) in the order of appearance of new special elements (inclusions) during the consideration process;
  3. DCC_Subcomplex: including Plane cut (a,b,c,D), (reduced (k-1)-complex)
  4. DCC_Multiphysics: set energies for all the complex elements and especially its faces or 2-cells
  5. DCC_Kinetic: contain several functions implementing the process of multiple cracking. Essentially, the ultimate goal of the module is to create another list of special k-cells (or k-sequence) in the order of appearance of new fractured elements during the fracture kinetic process;
  6. DCC_Characterisation: performs characterisation of special structures;
  7. DCC_Writer: formatted output simulations data in *.txt files;
  8. Objects.h: contain a library of C++ classes like the grain3D, subcomplex, macrocrack, etc.
  9. Support_Functions.h: contains all the other necessary support functions for the code

Input files

All the input files must be in a single folder specified as the ‘input’ directory in the ‘config.txt’ file.

config.txt file contains

  1. ‘input’ directory address
  2. ‘output’ directory address
  3. the number of calculation points for different values of p and other parameters necessary for the code

More sources on the mathematics related to the Polyhedral cell complexes

An excellent simple introduction to the DCC with their various applications is given in the book of Leo Grady and Jonathan Polimeni _“Discrete Calculus. Applied Analysis on Graphs for Computational Science. (2010)_

Where to take a complex?

Polyhedral cell complexes are pretty well-known mathematical objects that originated from the field of modern algebraic topology, so they can be obtained in many various ways. One useful tool, developed in the Mechanics and Physics of Solids research group at the University of Manchester, provides PCCs based on the Voronoi and a few others tessellations of 2D/3D spaces by convex polygons.

Applications of the DСD tool

  1. E.N. Borodin, A.P. Jivkov, A.G. Sheinerman, M.Yu. Gutkin, 2021. Optimisation of rGO-enriched nanoceramics by combinatorial analysis. Materials & Design 212, 110191. [doi: 10.1016/j.matdes.2021.110191.](https://doi.org/10.1016/j.matdes.2021.110191)

Acknowledgements

This code was created by Dr Elijah Borodin in 2022 for the project RSF 18-19-00255 (https://rscf.ru/project/18-19-00255/)

License

The code is distributed under the GNU General Public License v3.0. See LICENSE.txt for more information.

Contacts

Dr Elijah Borodin (Research Fellow in Materials Physics at the University of Manchester; Mechanics and Physics of Solids research group) Send e-mail

About

The DCC based 3D simulations of complex-structured rGO ceramic nanocomposites fracture

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors