<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://micro.stanford.edu/mediawiki/index.php?action=history&amp;feed=atom&amp;title=DDLab_Manual_01</id>
	<title>DDLab Manual 01 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://micro.stanford.edu/mediawiki/index.php?action=history&amp;feed=atom&amp;title=DDLab_Manual_01"/>
	<link rel="alternate" type="text/html" href="http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;action=history"/>
	<updated>2026-07-05T09:28:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=646&amp;oldid=prev</id>
		<title>Caiwei at 18:01, 21 December 2007</title>
		<link rel="alternate" type="text/html" href="http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=646&amp;oldid=prev"/>
		<updated>2007-12-21T18:01:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:01, 21 December 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 22:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 22:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Time controls : totalstpes, dt0&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Time controls : totalstpes, dt0&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Display controls : plotfreq, plim, viewangle, printfreq, printnode&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Display controls : plotfreq, plim, viewangle, printfreq, printnode&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Materials constant : MU, NU, Ec, a&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Materials constant : MU&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; (shear modulus)&lt;/ins&gt;, NU&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; (Poisson&#039;s ratio)&lt;/ins&gt;, Ec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; (core energy)&lt;/ins&gt;, a&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; (core radius)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Miscellaneous : appliedstress, maxconnections&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Miscellaneous : appliedstress, maxconnections&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Caiwei</name></author>
	</entry>
	<entry>
		<id>http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=645&amp;oldid=prev</id>
		<title>Caiwei: mex compiler</title>
		<link rel="alternate" type="text/html" href="http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=645&amp;oldid=prev"/>
		<updated>2007-12-19T19:09:50Z</updated>

		<summary type="html">&lt;p&gt;mex compiler&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Introduction ==&lt;br /&gt;
The purpose of this document is to give a brief description of [http://micro.stanford.edu/~caiwei/Forum/2005-12-05-DDLab/ DDLab]. If advanced users are interested in the algorithms of&lt;br /&gt;
the code, they may simply look at the source code. We have tried to write and organize&lt;br /&gt;
the subroutines in a compact yet readable manner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Warning&amp;lt;/font&amp;gt;: The main executable file &amp;lt;tt&amp;gt;dd3d.m&amp;lt;/tt&amp;gt; requires the compilation of &lt;br /&gt;
&lt;br /&gt;
  mex -O SegSegForces.c&lt;br /&gt;
&lt;br /&gt;
You need to have a C compiler installed on your computer to make it work.  This is ok when you use &amp;lt;tt&amp;gt;gcc-3.3&amp;lt;/tt&amp;gt;.  You may have difficulty compiling with higher version of gcc.&lt;br /&gt;
&lt;br /&gt;
== Input parameters of DDLab ==&lt;br /&gt;
There are various input parameters in DDLab. In this section, we don&amp;#039;t give a  detailed expla-&lt;br /&gt;
nation of each parameter but we explain some. The relation between parameters will&lt;br /&gt;
be explained in more detail in the following sections.&lt;br /&gt;
&lt;br /&gt;
We can divide all input parameters into the following categories.&lt;br /&gt;
  &lt;br /&gt;
* Dislocation structure : rn, links* Mobility : mobility&lt;br /&gt;
* Integrator : integrator&lt;br /&gt;
* Topological changes : lmax, lmin, areamin, areamax, rmax, rann, rntol, doremesh, docollision, desepraration &lt;br /&gt;
* Time controls : totalstpes, dt0&lt;br /&gt;
* Display controls : plotfreq, plim, viewangle, printfreq, printnode&lt;br /&gt;
* Materials constant : MU, NU, Ec, a&lt;br /&gt;
* Miscellaneous : appliedstress, maxconnections&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nodal representation of dislocation structure==&lt;br /&gt;
Figure 1: Nodal representation of dislocation structure&lt;br /&gt;
Fig. 1 shows a simple approach that can represent an arbitrary dislocation network. The&lt;br /&gt;
dislocations are specified by a set of nodes that are connected with each other by straight&lt;br /&gt;
segments. Each segment has a nonzero Burgers vector. Because the Burgers vector is&lt;br /&gt;
defined only after a sense of direction is chosen for the dislocation line, we can define bij&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mobility ==&lt;br /&gt;
In DDLab, the motion of dislocation is expressed by the motion of nodes. Thus,&lt;br /&gt;
mobility gives the velocity. DDLab contains several mobility&lt;br /&gt;
laws; mobfcc1.m, mobfcc0.m, and mobbcc0.m. &lt;br /&gt;
&lt;br /&gt;
==Integrator==&lt;br /&gt;
An integrator scheme is used to calculate the position of each nodes for a given time step. The nodal&lt;br /&gt;
forces and mobility model comprise the equation motion for the nodes&lt;br /&gt;
&amp;lt;math&amp;gt; v_i = \frac{dr_i}{dt} = g_i(r_j)g&amp;lt;/math&amp;gt;&lt;br /&gt;
where g_i sums up both the nodal force and the mobility model. This is a&lt;br /&gt;
first ordinary differential equation and we solve it by integration. DDLab contains two numerical integrator: &lt;br /&gt;
&amp;lt;tt&amp;gt;eulerforward.m&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newtonkrylov.m&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;ode15s.m&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;trapezoid.m&amp;lt;/tt&amp;gt;. In this work, we use &amp;lt;tt&amp;gt;trapezoid.m&amp;lt;/tt&amp;gt; is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Topological Changes==&lt;br /&gt;
In order to accurately represent dislocation behavir and also for numerical efficiency,&lt;br /&gt;
we need a way to handle topological changes, i.e.&lt;br /&gt;
changes in the connectivity of nodes. For example, should a line change its length and/or&lt;br /&gt;
curvature during the simulation, it may become necessary to adjust the number of nodes&lt;br /&gt;
used to represent this dislocation line. The following parameters are used for topological&lt;br /&gt;
changes in DDLAB.&lt;br /&gt;
* lmax: Maximum length of a dislocation segment&lt;br /&gt;
* lmin: Minimum length of a dislocation segment&lt;br /&gt;
* areamin: Maximum area criterion&lt;br /&gt;
* areamax: Minimum area criterion&lt;br /&gt;
* rmax: maximum distance a node may travel in one cycle&lt;br /&gt;
* rann: annihilation distance used to calculate the collision of dislocation lines&lt;br /&gt;
* rntol: solution tolerance used to control the automatic timestepping&lt;br /&gt;
* doremesh: Toggle remesh.m for remeshing nodes. doremesh is set as zero to disable&lt;br /&gt;
  the use of remesh rule. When it is set as zero, it is enabled.&lt;br /&gt;
&lt;br /&gt;
=Time controls=&lt;br /&gt;
The following parameters are for time controls.&lt;br /&gt;
&lt;br /&gt;
* totalsteps : number of cycles that are run for completion of dd3d command&lt;br /&gt;
* dt0 : largest timestep that can be taken during a cycle&lt;br /&gt;
&lt;br /&gt;
=Display controls=&lt;br /&gt;
The following parameters are for display controls&lt;br /&gt;
&lt;br /&gt;
* plotfreq : number of cycles between monitored node write statements&lt;br /&gt;
* plim : limits of plotting space&lt;br /&gt;
* viewangle : angle of viewpoint for the 3D plot of the geometry&lt;br /&gt;
* printfreq : number of cycles between monitored node write statements&lt;br /&gt;
* printnode : nodeid of the monitored node&lt;br /&gt;
&lt;br /&gt;
=Materials constants=&lt;br /&gt;
The following parameters are Materials constants used in DDLAB.&lt;br /&gt;
* Mu: Shear modulus&lt;br /&gt;
* NU: Poisson&amp;#039;s ratio&lt;br /&gt;
* Ec: Dislocation core energy&lt;br /&gt;
  Dislocation core radius used for non-singular force calculation&lt;br /&gt;
&lt;br /&gt;
=Miscellaneous=&lt;br /&gt;
* maxconnections : maximum number of segments a node may have&lt;br /&gt;
&lt;br /&gt;
==Flow of the code in DDLab==&lt;br /&gt;
After setting up the initial configuration and other parameters, both DDLab and ParaDiS will follow the same&lt;br /&gt;
algorithm to simulate dislocation dynamics, as is listed below:&lt;br /&gt;
&lt;br /&gt;
* calculate the force of each node&lt;br /&gt;
* calculate the velocity of each node&lt;br /&gt;
* calculate the new position of each node&lt;br /&gt;
* make necessary topological changes&lt;br /&gt;
* repeat (1) to (4) until the maximum step is reached&lt;br /&gt;
&lt;br /&gt;
DDLab just track all nodal positions and plot them. However, to&lt;br /&gt;
better understand the code structure, two &lt;br /&gt;
flow charts are presented in this primer:&lt;br /&gt;
subroutine map (Fig. 2) and function map (Fig. 3). The subroutine map consists of the&lt;br /&gt;
MATLAB subroutine file name, but the function map consists of the function of each&lt;br /&gt;
subroutine file. Thus, if you want to know the code in detail, just compare the subroutine&lt;br /&gt;
map with the function map, then find the file you want and take a look at. Thus, these two&lt;br /&gt;
maps are very useful to study the code structure of DDLab. All functions of subroutines are&lt;br /&gt;
explained in the following section which includes some physics for the detailed explanations.&lt;br /&gt;
&lt;br /&gt;
==Subroutines details==&lt;br /&gt;
* &amp;lt;tt&amp;gt;SegSegforce.c&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This subroutine calculates the force on the two end nodes between two dislocation seg-&lt;br /&gt;
ments (so, four nodes) in Fig. 4. The sum of these four force vectors should be zero by&lt;br /&gt;
action-reaction principle.&lt;br /&gt;
&amp;lt;math&amp;gt;f1 + f2 + f3 + f4 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Figure 4: The interaction between the two dislocation segments&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;cleanupnodes.m&amp;lt;/tt&amp;gt;&lt;br /&gt;
This subroutine start by removing all of the bad nodes in the system and cleans up the&lt;br /&gt;
data structures to include good nodes only. A bad node is a point without connection&lt;br /&gt;
to any dislocation segment. The point is usually generated by the shrinkage of a dislocation&lt;br /&gt;
loop as shown in Fig. 5. At the final stage, the loop consists of two nodes, so the line&lt;br /&gt;
direction of two segments is opposite, but their Burgers vector is the same. Thus, two segments&lt;br /&gt;
should annihilate. Then, only two nodes remains. These two nodes are&lt;br /&gt;
only a mathematical points in elastic medium. In real material, the loop disappears after&lt;br /&gt;
shrinkage, so the two nodes in DDLab has to be removed. Thus, &amp;lt;tt&amp;gt;cleanupnodes.m&amp;lt;/tt&amp;gt; performs&lt;br /&gt;
the removal of these kinds of isolated nodes.&lt;br /&gt;
&lt;br /&gt;
Note: &lt;br /&gt;
&lt;br /&gt;
This is very similar with to another case (two nodes and two segments) of &amp;lt;tt&amp;gt;collision.m&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Sometimes segments are not permitted to annihilate when the sum of Burgers vectors are not zero.&lt;br /&gt;
However, in the case of loop shrinkage, two segments always have the opposite direction of&lt;br /&gt;
line sense with the same Burgers vector. Thus, the annihilation occurs. See &amp;lt;tt&amp;gt;collision.m&amp;lt;/tt&amp;gt;&lt;br /&gt;
section.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;genconnectivity.m&amp;lt;/tt&amp;gt;&lt;br /&gt;
This subroutine generates connectivity and &amp;lt;tt&amp;gt;linksinconnect&amp;lt;/tt&amp;gt;. In fact, rn and links&lt;br /&gt;
matrices are enough to describe the dislocation structure. These two matrices give &amp;lt;tt&amp;gt;linkid&amp;lt;/tt&amp;gt;&lt;br /&gt;
when we know &amp;lt;tt&amp;gt;nodeid&amp;lt;/tt&amp;gt;. Conversely, &amp;lt;tt&amp;gt;connectivity&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;linksinconnect&amp;lt;/tt&amp;gt; give &amp;lt;tt&amp;gt;nodeid&amp;lt;/tt&amp;gt; when&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Figure 5 The shrinkage of a dislocation loop.&lt;br /&gt;
we know linkid Here, nodeid is the node number which is the row number of rn matrix.&lt;br /&gt;
linkid is the link number which is the row number of links matrix.&lt;br /&gt;
&lt;br /&gt;
==Integrator==&lt;br /&gt;
Integrator calls &amp;lt;tt&amp;gt;drndt.m&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;drndt.m&amp;lt;/tt&amp;gt; computes velocity and force on each node, and&lt;br /&gt;
force on each segment. Then, by using these values, Integrator integrates the velocity&lt;br /&gt;
with respect to time step. Then, we can get the nodal positions at the current time step.&lt;br /&gt;
The nodal forces and the mobility model comprise the equations of motion of nodes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
v_i = \frac{dr_i}{dt} = g_i(r_j)g&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where function &amp;lt;math&amp;gt;g_i&amp;lt;/math&amp;gt; sums up both the nodal force and the mobility model. This is first&lt;br /&gt;
ordinary differential equation (ODE), for which the simplest numerical integrator is the so-&lt;br /&gt;
called Euler forward method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; &lt;br /&gt;
ri(t + �t) = ri + gi(rj(t))�t:&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A numerical integrator with a higher order of accuracy is the trapezoid method,&lt;br /&gt;
&amp;lt;math&amp;gt; r_i(t + �t) =&lt;br /&gt;
g_i(r_j(t)) + g_i(r_j(t + �t))&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another important feature of integrator is the time step adjustment. When the time&lt;br /&gt;
step is large, we can perform simulation which require long physical time. However, the&lt;br /&gt;
large time step always bring large error. Conversely, when the time step is too short, we can&lt;br /&gt;
perform the more precise simulation, but it take too long CPU time to get the result. Thus,&lt;br /&gt;
it is better to adjust the time step in every cycle. The present version of DDLab has the&lt;br /&gt;
time step adjustment as below. This is the part of the integrator code.&lt;br /&gt;
&lt;br /&gt;
  ...&lt;br /&gt;
  err=rnvec1-rnvec0-(vnvec+vnvec0)/2*dt;&lt;br /&gt;
  ...&lt;br /&gt;
  errmag=max(abs(err));&lt;br /&gt;
  ...&lt;br /&gt;
  if(errmag&amp;lt;rntol)&lt;br /&gt;
  break;&lt;br /&gt;
  else&lt;br /&gt;
  dt=dt/2;&lt;br /&gt;
  ...&lt;br /&gt;
  maxchange=1.2;&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
If the defined err is larger than rntol, the time step is adjusted as the half of current&lt;br /&gt;
time step. If the defined err is smaller than rntol, the time step is adjusted as 1.2 times of&lt;br /&gt;
current time step. Thus, DDLab changes its time step dynamically, enabling a much more efficient&lt;br /&gt;
simulation.&lt;br /&gt;
&lt;br /&gt;
A series of time integration schemes are also included with the distribution named&lt;br /&gt;
&amp;lt;tt&amp;gt;int eulerforward&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;int ulerbackward&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;int newtonkrylov&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&amp;lt;tt&amp;gt;int eulerforward is an explicit forward integration scheme. &amp;lt;tt&amp;gt;int eulerbackward&amp;lt;/tt&amp;gt; is a simple implicit time &lt;br /&gt;
integration scheme, and &amp;lt;tt&amp;gt;int newtonkylov&amp;lt;/tt&amp;gt; is a more sophisticated inexact implicit time integration scheme based &lt;br /&gt;
on the Newton-Krylov matrix-free solution method. The core of the&lt;br /&gt;
&amp;lt;tt&amp;gt;int newtonkrylov&amp;lt;/tt&amp;gt; employs a method written by C. T. Kelley. The time integration scheme&lt;br /&gt;
is specified in the input deck with the integrator input parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.0.14 drndt.m&lt;br /&gt;
drndt.m calls segforcevec.m. segforcevec.m calculates the force on each segment,&lt;br /&gt;
then return it to drndt.m. Then, drndt.m calls mobility. mobility calculates the force&lt;br /&gt;
and velocity on each node and return them to drndt.m Finally, drndt.m return the velocity&lt;br /&gt;
on node to integrator, which integrate the velocity with respect to time step. Then, we&lt;br /&gt;
can get the nodal positions at the current time step.&lt;br /&gt;
4.0.15 segforcevec.m&lt;br /&gt;
segforcevec calculates the force on each segment. Note that this is the force not on&lt;br /&gt;
the node but on the segment. It is because DDLAB use Peach-Koehler formula&lt;br /&gt;
fPK(x) = (�(x) � b) � �(x)&lt;br /&gt;
.&lt;br /&gt;
When we compute PK force, we need to know the line sense vector (�) for segment.&lt;br /&gt;
Thus, �rstly DDLAB calculates the force on each segment which has two end nodes. Then,&lt;br /&gt;
mobility function gives the half of force to each node. Finally, we can get the nodal&lt;br /&gt;
force. segforcevec.m includes the four functions; constructsegmentlist, pkforcevec,&lt;br /&gt;
selfforcevec, remoteforcevec. constructsegmentlist give us the list of all information&lt;br /&gt;
about segments as the format&lt;br /&gt;
n0, n1, bx, by, bz, x0, y0, z0, x1, y1, z1, nx, ny, nz,&lt;br /&gt;
where n0 and n1 are nodeids of two end nodes. bx, by, bz is the Burgers vector of one&lt;br /&gt;
segment which consists of two end node, n0 and n1. x0, y0, z0 is the position of node n0&lt;br /&gt;
and x1, y1, z1 is the position of node n1. nx, ny, nz is the normal vector of the glide&lt;br /&gt;
plane on which the dislocation segment lies.&lt;br /&gt;
Based on this list, segforcevec calculate the forces on each segment. selfforcevec&lt;br /&gt;
calculates the force on each segment by itself. remoteforcevec calculates the force on the&lt;br /&gt;
segment on each segment by the other segments.&lt;br /&gt;
Finally, the sum of these forces is the force on segment as below.&lt;br /&gt;
fseg=[fpk, fpk]*0.5+[fs0, fs1]+[fr0, fr1];&lt;br /&gt;
The �rst component of fseg (fpk, fs0, fr0) are the force vectors on node n0 and the&lt;br /&gt;
second ones are the force vectors on the node n1. The node n0 and n1 are the end nodes of&lt;br /&gt;
each segment as shown in Fig. 5.&lt;br /&gt;
&lt;br /&gt;
Figure 7: (a) The example dislocation structure. (b) DDLAB calcuate the force on&lt;br /&gt;
the segment by segforcevec.m (c) Then, the half of the force is assigned to two&lt;br /&gt;
end nodes of each segment (d) The force on the node has several arms is just the&lt;br /&gt;
summation of forces on corresponding arms.&lt;br /&gt;
4.0.16 mobfcc1.m, mobfcc0.m, mobfcc1.m&lt;br /&gt;
A dislocation&amp;#039;s response to forces may also depends on the line orientation and varies&lt;br /&gt;
signi�cantly from one material to another. Similar to the core energy, how dislocation&lt;br /&gt;
respond to forces is a function of the non-linear atomistic interactions in the dislocation&lt;br /&gt;
core and, as such, is beyond the scope of linear elasticity theory. The response functions&lt;br /&gt;
have to be imported into the line DD model in the form of external materials input, either&lt;br /&gt;
from atomistic simulations or from experiments&lt;br /&gt;
A series of mobility functions are included in the distribution named mobbcc0 mobbcc0b&lt;br /&gt;
and mobfcc1. mobbcc0 and mobbcc0b are intended to simulate bcc behavior in which&lt;br /&gt;
the the screw dislocations are able to glide in any plane normal to their Burgers vector.&lt;br /&gt;
The di�erence between them is slight and appears in the mobility of dislocations of mixed&lt;br /&gt;
character. mobfcc1 is intended to simulate fcc behavior in which the screw dislocation are&lt;br /&gt;
not able to cross-slip. The mobility function is chosen in the input deck with the mobility&lt;br /&gt;
input parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.0.17 separation.m&lt;br /&gt;
For numerical and physical reasons, line-DD simulations need to handle topological&lt;br /&gt;
changes, i.e. changes on the connectivity between nodes since we may want to adjust the&lt;br /&gt;
number of nodes that represent a dislocation line if the line gets longer or shorter during the&lt;br /&gt;
simulation, or when two dislocation lines meet in space, they may either annihilate or zip&lt;br /&gt;
together to form a junction, which also results in a change of nodal topology. Thus many&lt;br /&gt;
types of topological changes can be encountered in a line-DD simulation. Fortunately, since&lt;br /&gt;
we use a nodal representation here, all topological changes can be implemented through two&lt;br /&gt;
basic operators: split (one node split into two ) and merge (two nodes merge into one) (See&lt;br /&gt;
next section) and . The implementation of these two operators is straightforward - all one&lt;br /&gt;
needs to do is to make sure that at the end of the operation the Burgers vector sum rule&lt;br /&gt;
at every node and segment is still satis�ed, moreover, two nodes are either disconnected or&lt;br /&gt;
connected only once, and each node is connected with at least two other nodes, if a node&lt;br /&gt;
has no segment, it will be deleted.&lt;br /&gt;
For example, for a 4-arm node such as P in there are 3 di�erent ways to partition its&lt;br /&gt;
arms: (12)(34), (13)(24) and (14)(23). It is reasonable to expect that the way nature would&lt;br /&gt;
choose should be the one that gives rise to the maximum energy dissipation rate, which is&lt;br /&gt;
de�ned below.&lt;br /&gt;
Suppose an n-arm mode i stays intact (not splitting) and it feels a force fi and will move&lt;br /&gt;
at velocity vi . Then the local energy dissipation rate is,&lt;br /&gt;
_W&lt;br /&gt;
i = fi � vi&lt;br /&gt;
. Now suppose that node i splits into two nodes P and Q, such that node P retains 1, ...&lt;br /&gt;
,s of the original neighbors, and node Q retains the remaining neighbors. Let fP and fQ&lt;br /&gt;
be the forces on the two nodes and vP and vQ be their velocities given by the mobility&lt;br /&gt;
function. Then the local energy dissipation rate is,&lt;br /&gt;
WP_ Q = fP � vP + fQ � vQ&lt;br /&gt;
. If _ WPQ &amp;gt; _Wi, then node i prefers to split into two nodes P and Q instead of moving&lt;br /&gt;
as a single node. The energy dissipation rate can be computed for all possible (topological&lt;br /&gt;
distince) modes to split i. The mode with the highest energy dissipation rate is preferred.&lt;br /&gt;
If a node will split in next step, the two new nodes actually stay at the same location&lt;br /&gt;
as the parent node at the current step. Because the velocities of the two nodes is di�erent&lt;br /&gt;
(otherwise the node should not split), the two nodes will be move away from each other in&lt;br /&gt;
the next time step.&lt;br /&gt;
&lt;br /&gt;
* collision.m&lt;br /&gt;
&lt;br /&gt;
* remesh.m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Self consistency in DDLab units==&lt;br /&gt;
&lt;br /&gt;
The unit system of DDLab input file should be self-consistent. We recommend to input all variables in S.I. units. &lt;br /&gt;
&lt;br /&gt;
For instance, stresses in Pascal, distances in meter, times in seconds and velocities in m/s. &lt;br /&gt;
&lt;br /&gt;
The mobility law is such that&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
v = M (\sigma \cdot b)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with b in meter, &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; in Pascal, and v in m/s. That makes the mobility parameter M in &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
We often use the drag coefficient &amp;lt;math&amp;gt;B = M^{-1}&amp;lt;/math&amp;gt; in the mobility law. The unit of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt; Pa\, s&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As another option, we can change the unit for distance (including both nodal positions and Burgers vectors) to nm, whereas the unit for stress is still Pa, the unit of time is still second, and the unit for mobility is still &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Caiwei</name></author>
	</entry>
	<entry>
		<id>http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=640&amp;oldid=prev</id>
		<title>Caiwei: /* Self consistency in DDLab units */</title>
		<link rel="alternate" type="text/html" href="http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=640&amp;oldid=prev"/>
		<updated>2007-12-18T22:18:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Self consistency in DDLab units&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:18, 18 December 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 68:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 68:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;with b in meter, &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; in Pascal, and v in m/s. That makes the mobility parameter M in &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;with b in meter, &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; in Pascal, and v in m/s. That makes the mobility parameter M in &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We often use the drag coefficient &amp;lt;math&amp;gt;B = M^{-1}&amp;lt;/math&amp;gt; in the mobility law. The unit of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt; Pa s&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We often use the drag coefficient &amp;lt;math&amp;gt;B = M^{-1}&amp;lt;/math&amp;gt; in the mobility law. The unit of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt; Pa&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\,&lt;/ins&gt; s&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As another option, we can change the unit for distance (including both nodal positions and Burgers vectors) to nm, whereas the unit for stress is still Pa, the unit of time is still second, and the unit for mobility is still &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As another option, we can change the unit for distance (including both nodal positions and Burgers vectors) to nm, whereas the unit for stress is still Pa, the unit of time is still second, and the unit for mobility is still &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Caiwei</name></author>
	</entry>
	<entry>
		<id>http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=639&amp;oldid=prev</id>
		<title>Caiwei: /* Self consistency in DDLab units */</title>
		<link rel="alternate" type="text/html" href="http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=639&amp;oldid=prev"/>
		<updated>2007-12-18T22:17:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Self consistency in DDLab units&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:17, 18 December 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 57:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 57:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Self consistency in DDLab units==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Self consistency in DDLab units==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Any&lt;/del&gt; DDLab input file &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is&lt;/del&gt; self-consistent. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;It&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is recommended&lt;/del&gt; to input all variables in&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; the&lt;/del&gt; S.I. units. &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The unit system of&lt;/ins&gt; DDLab input file &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;should be&lt;/ins&gt; self-consistent. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;We&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;recommend&lt;/ins&gt; to input all variables in S.I. units. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, stresses in Pascal, distances in meter, times in seconds and velocities in m/s. &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, stresses in Pascal, distances in meter, times in seconds and velocities in m/s. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 66:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 66:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;with b in meter, &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; in Pascal, and v in m/s. That makes M in &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;with b in meter, &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; in Pascal, and v in m/s. That makes&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; the mobility parameter&lt;/ins&gt; M in &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We often use the drag coefficient &amp;lt;math&amp;gt;B = M^{-1}&amp;lt;/math&amp;gt; in the mobility law. The unit of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt; Pa s&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We can see from this little exercise that if instead of using meters as the unit for distances, we use nanometers instead. The mobility law does not change units.&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As another option, we can change the unit for distance (including both nodal positions and Burgers vectors) to nm, whereas the unit for stress is still Pa, the unit of time is still second, and the unit for mobility is still &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Caiwei</name></author>
	</entry>
	<entry>
		<id>http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=638&amp;oldid=prev</id>
		<title>Caiwei: /* Introduction */</title>
		<link rel="alternate" type="text/html" href="http://micro.stanford.edu/mediawiki/index.php?title=DDLab_Manual_01&amp;diff=638&amp;oldid=prev"/>
		<updated>2007-12-18T22:09:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Introduction ==&lt;br /&gt;
Professor Wei Cai in the Department of Mechanical Engineering at Stanford&lt;br /&gt;
University with the team at the Lawrence Livermore National Laboratory has developed&lt;br /&gt;
the new dislocation simulation code, ParaDiS (Parallel Dislocation Simulator) and DDLAB&lt;br /&gt;
(Dislocation Dynamics Lab.). Dislocation simulation enables us to control of the simulation&lt;br /&gt;
conditions and to access the positions of all dislocation lines at each given time. Since&lt;br /&gt;
the time and length scales in dislocation simulation codes are on the order of seconds&lt;br /&gt;
and microns, respectively, which are similar with experiments, they&lt;br /&gt;
can show realistic insights that help answer fundamental questions in small-scale plasticity, such as motion and interaction of dislocations in small volumes. With the use of&lt;br /&gt;
massively parallel computers, ParaDiS can deal with the large number of dislocations in an&lt;br /&gt;
effcient way. However, the structure of cods of ParaDiS written by C is quite complicated,&lt;br /&gt;
code modifications are not easy so DDLAB, a simpler matlab version of ParaDiS was designed. Since&lt;br /&gt;
MATLAB has built-in commands for computation, DDLab has a  much simpler&lt;br /&gt;
structure than that of ParaDiS. &lt;br /&gt;
&lt;br /&gt;
Although DDLAB does not support the parallel computation, it is enough to deal with simple dislocation problems, for instance,  consisting of&lt;br /&gt;
two or three dislocations. It was created to test new codes before implementation into ParaDiS. &lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to give a brief description of the DDLAB software&lt;br /&gt;
for end users who are interested in writing input files and running simulations using the&lt;br /&gt;
software. This document does not provide an exhaustive description of the algorithms&lt;br /&gt;
in the code, but rather gives a description of necessary elements of the input deck for the&lt;br /&gt;
code and the execution procedures. If advanced users are interested in the algorithms of&lt;br /&gt;
the code, they may simply look at the source code. We have tried to write and organize&lt;br /&gt;
the subroutines in a compact yet readable manner.&lt;br /&gt;
&lt;br /&gt;
== Input parameters of DDLab ==&lt;br /&gt;
There are various input parameters in DDLab. In this section, we don&amp;#039;t give a  detailed expla-&lt;br /&gt;
nation of each parameter but we explain some. The relation between parameters will&lt;br /&gt;
be explained in more detail in the following sections.&lt;br /&gt;
&lt;br /&gt;
We can divide all input parameters into the following categories.&lt;br /&gt;
1. Dislocation structure : rn, links&lt;br /&gt;
2. Mobility : mobility&lt;br /&gt;
3. Integrator : integrator&lt;br /&gt;
4. Topological changes : lmax, lmin, areamin, areamax, rmax, rann, rntol,&lt;br /&gt;
doremesh, docollision, desepraration&lt;br /&gt;
5. Time controls : totalstpes, dt0&lt;br /&gt;
6. Display controls : plotfreq, plim, viewangle, printfreq, printnode&lt;br /&gt;
7. Materials constant : MU, NU, Ec, a&lt;br /&gt;
8. Miscellaneous : appliedstress, maxconnections&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nodal representation of dislocation structure==&lt;br /&gt;
Before seeing rn and links, we need to know how to represent dislocation structure in&lt;br /&gt;
DDLAB.&lt;br /&gt;
Figure 1: Nodal representation of dislocation structure&lt;br /&gt;
Fig 1 shows a simple approach that can represent an arbitrary dislocation network. The&lt;br /&gt;
dislocations are specified by a set of nodes that are connected with each other by straight&lt;br /&gt;
segments. Each segment has a nonzero Burgers vector. Because the Burgers vector is&lt;br /&gt;
defined only after a sense of direction is chosen for the dislocation line, we can define bij&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Self consistency in DDLab units==&lt;br /&gt;
&lt;br /&gt;
Any DDLab input file is self-consistent. It is recommended to input all variables in the S.I. units. &lt;br /&gt;
&lt;br /&gt;
For instance, stresses in Pascal, distances in meter, times in seconds and velocities in m/s. &lt;br /&gt;
&lt;br /&gt;
The mobility law is such that&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
v = M (\sigma \cdot b)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with b in meter, &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; in Pascal, and v in m/s. That makes M in &amp;lt;math&amp;gt; Pa^{-1} s^{-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
We can see from this little exercise that if instead of using meters as the unit for distances, we use nanometers instead. The mobility law does not change units.&lt;/div&gt;</summary>
		<author><name>Caiwei</name></author>
	</entry>
</feed>