Skip to content

Commit

Permalink
DOC: more more typos
Browse files Browse the repository at this point in the history
  • Loading branch information
threich authored Jan 28, 2024
1 parent 472305a commit 10fa098
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ Behaviour of materials is governed by physical phenomena that occur at an extrem

# Statement of need

The Python package `matscipy` contains a set of tools for researchers using atomic-scale models in materials science. In atomic-scale modelling, the primary numerical object is a discrete point in three-dimensional space that represents the position of an individual atom. Simulations are often dynamical, where configurations change over time and each atom carries a velocity. Complexity emerges from the interactions of many atoms, and numerical tools are required for generating initial atomic configurations and for analyzing output of such dynamical simulations, most commonly to connect local geometric arrangements of atoms to physical processes. An example, described in more detail below, is the detection of the tip of a crack that moves through a solid body.
The Python package `matscipy` contains a set of tools for researchers using atomic-scale models in materials science. In atomic-scale modelling, the primary numerical object is a discrete point in three-dimensional space that represents the position of an individual atom. Simulations are often dynamical, where configurations change over time and each atom carries a velocity. Complexity emerges from the interactions of many atoms, and numerical tools are required for generating initial atomic configurations and for analysing output of such dynamical simulations, most commonly to connect local geometric arrangements of atoms to physical processes. An example, described in more detail below, is the detection of the tip of a crack that moves through a solid body.

We never see individual atoms at macroscopic scales. To understand the behaviour of everyday objects, atomic-scale information needs to be transferred to the continuum scale. This is the primary objective of multi-scale modelling. `matscipy` focuses on atomic representations of materials, but implements tools for connecting to continuum descriptions in mechanics and transport theory. Each of the application domains described in the following therefore relies on the computation of continuum fields, that is realised through analytic or numerical solutions.

Expand All @@ -109,7 +109,7 @@ The central class in ASE is the `Atoms` class, which is a container that stores

`matscipy` is a toolbox that enables multi-scale coupling, but it is not a toolbox for actually carrying out two-way coupled calculations. Its target is the construction of atomic domains from continuum information and the extraction of continuum fields from atomic structures. Other packages exist that take care of the actual, two-way coupling. In contrast to `matscipy`, those have a primary focus on handling discretised continuum fields, typically in the form of finite-element meshes, and interpolating nodal or element values between atomic-scale and continuum descriptions. `matscipy` itself has no provisions for handling discrete continuum data, but does implement analytic expressions for continuum fields.

Example implementations of two-way coupling codes are the open-source code `libmultiscale` [@Anciaux2007;@Anciaux2018] that explicitly targets atomistic-continuum coupling, or the generic coupling libraries `preCICE` [@preCICEv2] or `MpCCI` [@Dehning2014]. Another two-way coupling code is `MultiBench` [@Miller2009], that was specifically designed for benchmarking a wide range of two-way atomistic-continuum coupling schemes. Futhermore, there are specialised multiscale coupling code, such as Green's function molecular dynamics (`GFMD`) [@Campana2006;@Pastewka2012] which targets two-way coupling in contact mechanics and friction simulations. All of these packages have only limited capabilities for constructing atomistic domains. `matscipy` could be combined with these packages for two-way coupled simulation of plasticity, fracture or frictional processes.
Example implementations of two-way coupling codes are the open-source code `libmultiscale` [@Anciaux2007;@Anciaux2018] that explicitly targets atomistic-continuum coupling, or the generic coupling libraries `preCICE` [@preCICEv2] or `MpCCI` [@Dehning2014]. Another two-way coupling code is `MultiBench` [@Miller2009], that was specifically designed for benchmarking a wide range of two-way atomistic-continuum coupling schemes. Furthermore, there are specialised multiscale coupling code, such as Green's function molecular dynamics (`GFMD`) [@Campana2006;@Pastewka2012] which targets two-way coupling in contact mechanics and friction simulations. All of these packages have only limited capabilities for constructing atomistic domains. `matscipy` could be combined with these packages for two-way coupled simulation of plasticity, fracture or frictional processes.

# Application domains

Expand Down Expand Up @@ -138,9 +138,9 @@ As well as these domain-specific tools, `matscipy` contains general utility func
This allows compact code for evaluating properties that depend on pairs, such as pair-distribution function or interatomic potential energies and forces. Most of the tools described in the following rely on this neighbour list format.
The neighbour list is becoming widely used for post-processing and structural analysis of the trajectories resulting from molecular dynamics simulations, and even to accelerate next-generation message passing neural networks such as MACE [@Batatia2022mace;@Batatia2022Design].

![Execution time of the computation of the neighbour list in ASE and Matscipy. These results were obtained on a single core of an Intel i7-1260P processor on the ASE master branch (git hash 52a8e783).\label{fig:nl_time}](nl_time.svg)
![Execution time of the computation of the neighbour list in ASE and `matscipy`. These results were obtained on a single core of an Intel i7-1260P processor on the ASE master branch (git hash 52a8e783).\label{fig:nl_time}](nl_time.svg)

- **Atomic strain.** Continuum mechanics is formulated in terms of strains, which characterises the fractional shape changes of small volumes. Strains are typically only well-defined if averaged over sufficiently large volumes, and extracting strain fields from atomic-scale calculations is notoriously difficult. `matscipy` implements calculations of strain by observing changes in local atomic neighbourhoods across trajectories. It fits a per-atom displacement gradient that minimises the error in displacement between two configurations as described by @Falk1998. The error resulting from this fit quantifies the non-affine contribution ot the overall displacement and is known as $D^2_\text{min}$. We used this analysis to quantify local strain in the deformation of crystals [@Gola2019;@Gola2020] and glasses [@Jana2019].
- **Atomic strain.** Continuum mechanics is formulated in terms of strains, which characterises the fractional shape changes of small volumes. Strains are typically only well-defined if averaged over sufficiently large volumes, and extracting strain fields from atomic-scale calculations is notoriously difficult. `matscipy` implements calculations of strain by observing changes in local atomic neighbourhoods across trajectories. It fits a per-atom displacement gradient that minimises the error in displacement between two configurations as described by @Falk1998. The error resulting from this fit quantifies the non-affine contribution of the overall displacement and is known as $D^2_\text{min}$. We used this analysis to quantify local strain in the deformation of crystals [@Gola2019;@Gola2020] and glasses [@Jana2019].

- **Radial, spatial and angular correlation functions.** Topological order in atomic-scale systems is often characterised by statistical measures of the local atomic environment. The simplest one is the pair-distribution or radial-distribution function, that gives the probability $g_2(r)$ of finding an atom at distance $r$. For three atoms, we can define a probability of finding a specific angle, yielding the angular correlation functions. `matscipy` has utility function for computing these correlation functions to large distances, including the correlation of arbitrary additional per-atom properties such as per-atom strains.

Expand Down

0 comments on commit 10fa098

Please sign in to comment.