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.gzcontains the whole source codes for isogeometric analysis written in C++ and configurations for isogeometric analysis as.jsonfilesplotting.tar.gzcontains the source codes for plotting data exported from the isogeometric analysis code, which is written by Julia language.sourcedata.tar.gzcontains the numerical data resulting from the isogeometric analysis. The.vtsfiles three-dimensional field variables of screw dislocation, while.csvfiles are the evaluation of field variables on an axis.
Specifically,conf1_screw.vts,conf1_plotover_xline.csvfor x-axis andconf1_plotover_yline.csvfor y-axis are obtained fromconf1.json.conf2_screw.vtsandconf2_plotover_xline.csvare 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.gzand enter the generated directory. make gegenerates 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
.jsonfiles). - Open
GeometricElasticity/outputdirectory - 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 directorywithin 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.datfile that contains the coordinates of control points of NURBS, which represents the current configurationfp_coefs0.datfile that contains the coefficients of the plastic deformation gradient matrix.elast_results.vtsfile that contains the detailed analysis results containing displacement, stress, Riemannian metric, Ricci curvature, etc. This file can be read byParaView.fp_results.vtsfile 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/outputdirectory. - Run the following command:
../../../build/postprocess.exe conf1_post.json, or either../../../build/plotoverline.exe conf1_pol_x.jsonor../../../build/plotoverline.exe conf1_pol_y.json. - The analysis results are exported relative to the directory
GeometricElasticity. The structure beneathGeometricElasticity/...is specified in theoutput directorywithin 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_*.csvinisogeometric_analysis/GeometricElasticity/output/conf1/conf2_*.csvinisogeometric_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.
- Kobayashi, Shunsuke; Tarumi, Ryuichi (2024). Data from: Geometrical frustration in nonlinear mechanics of screw dislocation. Zenodo. https://doi.org/10.5281/zenodo.11111230
- Kobayashi, Shunsuke; Tarumi, Ryuichi (2024). Data from: Geometrical frustration in nonlinear mechanics of screw dislocation. Zenodo. https://doi.org/10.5281/zenodo.11111229
- Kobayashi, Shunsuke; Tarumi, Ryuichi (2024). Geometrical frustration in nonlinear mechanics of screw dislocation. Royal Society Open Science. https://doi.org/10.1098/rsos.240711
