Data from: Geometrical frustration in nonlinear mechanics of screw dislocation
Data files
Oct 11, 2024 version files 6.67 GB
-
README.md
7.46 KB
-
sourcedata.tar.gz
6.67 GB
Abstract
The stress singularities and reliance on linear elasticity pose significant challenges in comprehending the mechanism of the formation of stress fields around dislocations. In this study, we use differential geometry and calculus of variations for the mathematical modelling and numerical analyses for the mechanics of screw dislocations. We express the kinematics of dislocations by using a diffeomorphism of the Riemann-Cartan manifold, which equips the Riemannian metric and affine connection. We formulate the function of the Cartan first structure equation for solving plastic deformation of dislocations, while we employ the stress equilibrium equations for nonlinear elasticity. To solve this nonlinear problem, we conduct isogeometric analysis with NURBS basis functions. We implement this using C++. The analysis results obtained by this implementation show that the stress fields effectively eliminate the singularity along the dislocation line and exhibit excellent agreement with Volterra's theory outside the dislocation core. Furthermore, by utilising the mathematical properties of the Riemann-Cartan manifold and smoothness of the NURBS functions used in the isogeometric analysis, we show that geometrical frustration is the direct source of dislocation stress fields, and the Ricci curvature determines the symmetry of stress fields. These results demonstrate the duality between stress and curvature, a mathematical hypothesis posed in previous studies.
https://doi.org/10.5061/dryad.wh70rxwwf
This repository contains the source codes of isogeometric analysis for dislocations, configuration files for specific conditions, figures to plot the results, and datasets generated by the code.
Description of the data and file structure
isogeometric_analysis.tar.gz
contains the whole source codes for isogeometric analysis written in C++ and configurations for isogeometric analysis as.json
filesplotting.tar.gz
contains the source codes for plotting data exported from the isogeometric analysis code, which is written by Julia language.sourcedata.tar.gz
contains the numerical data resulting from the isogeometric analysis. The.vts
files three-dimensional field variables of screw dislocation, while.csv
files are the evaluation of field variables on an axis.
Specifically,conf1_screw.vts
,conf1_plotover_xline.csv
for x-axis andconf1_plotover_yline.csv
for y-axis are obtained fromconf1.json
.conf2_screw.vts
andconf2_plotover_xline.csv
are obtained fromconf2.json
.
Code/Software
isogeometric_analysis.tar.gz
The source codes for the isogeometric analysis of dislocation mechanics are included in this folder.
Whole codes are written in C++.
Additionally, the specific analysis configuration files in .json
format are also provided beneath isogeometric_analysis/GeometricElasticity/output
.
For more details, please refer to the following instructions.
Requirement
The compilation of the source codes requires the following external libraries (the publication data was run by the versions enclosed by the parenthesis).
- IntelMPI (17.0.4) or OpenMPI (not used in the publication data) that can compile C++ codes
- static libraries of PETSc (3.13.2)
- Intel MKL (2019.4.243)
- boost (1.53)
- VTK (8.1.2)
Additionally, for the ease of the compilation, the following applications are required:
- CMAKE (3.18.2)
- GNU Make (3.82)
- ninja (1.10.2)
Compilation
The compilation of the codes can be done by the following steps:
- Extract
isogeometric_analysis.tar.gz
and enter the generated directory. make ge
generates the executablesbuild/analysis_json.exe
,build/postprocess.exe
, andbuild/plotoverline.exe
.
Running the program
Whole executables require the configuration file in the specific JSON file that includes physical and mathematical conditions of isogeometric analysis for dislocation mechanics.
The example .json
files are provided beneath isogeometric_analysis/GeometricElasticity/output/
directory.
Isogeometric analysis for screw dislocation
Isogeometric analysis for dislocation mechanics can be run by the following steps:
- Prepare the configuration file in JSON format (examples are the
.json
files). - Open
GeometricElasticity/output
directory - Run the following command:
mpirun -np [n] ../../../build/analysis_json.exe conf1.json
. Note that[n]
should be replaced by the number of processes. - The analysis results are exported relative to the directory
GeometricElasticity
. The structure beneathGeometricElasticity/...
is specified in theoutput directory
within the JSON file.
Note that the analysis conditions conf1.json
and conf2.json
use a large amount of memory, about hundreds of gigabytes, and cannot be run on an ordinary laptop.
The analysis results include
elast_coefs0.dat
file that contains the coordinates of control points of NURBS, which represents the current configurationfp_coefs0.dat
file that contains the coefficients of the plastic deformation gradient matrix.elast_results.vts
file that contains the detailed analysis results containing displacement, stress, Riemannian metric, Ricci curvature, etc. This file can be read byParaView
.fp_results.vts
file that contains the detailed analysis results that can be obtained by solving Cartan first structure equations. Note that this file was not used in the publication.
Generating data for plotting
For simplicity, the configuration file conf1.json
and conf2.json
export *.vts
with a small number of points specified by the "export vts" section.
To generate more refined data from the analysis results, one can use build/postprocess.exe
and build/plotoverline.exe
.
build/postprocess.exe
is intended to use exporting analysis results with large amounts of data points, while build/plotoverline.exe
can be used to export a CSV file containing the values of field variables such as stress, plastic deformation gradient, or Ricci curvature, etc. evaluated on a line specified in JSON file.
These executables also require the configuration file in JSON format.
Examples of them are also included in GeometricElasticity/output/conf1
and GeometricElasticity/output/conf2
.
The usage of these executables is as follows:
- Prepare the configuration file in JSON format.
- Open
GeometricElasticity/output
directory. - Run the following command:
../../../build/postprocess.exe conf1_post.json
, or either../../../build/plotoverline.exe conf1_pol_x.json
or../../../build/plotoverline.exe conf1_pol_y.json
. - The analysis results are exported relative to the directory
GeometricElasticity
. The structure beneathGeometricElasticity/...
is specified in theoutput directory
within the JSON file.
plotting.tar.gz
Requirement
We used codes written in Julia language to generate these figures.
We also used some packages of Julia which are specified in Project.toml
.
When plotting graphs, we employed PGFPlosX.jl
package which calls LuaLaTeX and Poppler (pdftoppm) for rendering mathematical texts in the figures.
In summary, the requirement to reproduce figures are as follows:
- Julia language (v1.10.2)
- Julia packages:
- CSV.jl (v0.10.14)
- ColorSchemes (v3.24.0)
- Colors (v0.12.10)
- DataFrames (v1.6.1)
- GLMakie (v0.9.10)
- IntervalSets (v0.7.10)
- JSON (v0.21.4)
- LaTeXStrings (v1.3.1)
- PGFPlotsX (v1.6.1)
- Plots (v1.40.4)
- SpecialFunctions (v2.3.1)
- LuaLaTeX (LuaHBTeX Version 1.18.0) contained in TeX Live
- pdftoppm (version 24.03.0)
Additionally, these scripts require the configuration file in .json
and the .csv
file such as conf1_plotover_xline.csv
, conf2_plotover_xline.csv
and conf1_plotover_yline.csv
.
Before running codes, please place
conf1_*.csv
inisogeometric_analysis/GeometricElasticity/output/conf1/
conf2_*.csv
inisogeometric_analysis/GeometricElasticity/output/conf2/
Plot graphs
To generate figures, one is required to modify the paths to LuaLaTeX and pdftoppm in plotting/src/conf_pgfplotsx.jl
.
Please specify the paths to these binaries by modifying ENV["PATH"] *=
so that Julia language can access to them.
After that, please open plotting
directory in a terminal.
Then, one can generate the figures by julia --project=. fig1a.jl
for instance.
All figures will be saved in plotting/figs
which will be automatically made by the scripts.
sourcedata.tar.gz
The vts
file contained in this file can be read by ParaView.
The data file conf1_screw.vts
is the result of 2nd order B-spline basis, while conf2_screw.vts
uses 4th order B-spline to precisely evaluate Ricci curvature.