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.
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>
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.- DCC_Main: include libraries, global variables, reading from files, launching the other modules and simulation tasks;
- 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;
- DCC_Subcomplex: including Plane cut (a,b,c,D), (reduced (k-1)-complex)
- DCC_Multiphysics: set energies for all the complex elements and especially its faces or 2-cells
- 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;
- DCC_Characterisation: performs characterisation of special structures;
- DCC_Writer: formatted output simulations data in *.txt files;
- Objects.h: contain a library of C++ classes like the grain3D, subcomplex, macrocrack, etc.
- Support_Functions.h: contains all the other necessary support functions for the code
config.txt file contains
- ‘input’ directory address
- ‘output’ directory address
- the number of calculation points for different values of p and other parameters necessary for the code
- 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)