Calculating dislocation displacements on the surface of a volume

In this paper we propose a new method for calculating the displacement field produced by an arbitrary dislocation structure on the surface of a finite convex volume. The algorithm is designed for use in 3D nodal based discrete dislocation dynamics codes, when coupling with the finite element method using the superposition principle. Starting from Barnett’s solution for the displacement field generated by a triangular dislocation loop, we outline a method for evaluating the displacement field of an arbitrary dislocation structure. The algorithm can handle both internal and exited segments and does not require storing any history information. The displacement field is evaluated segment wise, in an analogous way to the stress field, allowing for easy parallelisation.


Introduction
Dislocation motion is the primary facilitator of plastic deformation in crystalline materials. In order to better understand plastic deformation at the mesoscale, discrete dislocation dynamics (DDD) codes have been developed, where dislocations are discretised into a series of straight line segments. This paper will focus on nodal DDD models [1], where each segment is of arbitrary orientation and connects two nodes, the positions of which are updated at each time Modelling  Original content from this work may be used under the terms of the Creative Commons Attribution 3.0 licence. Any further distribution of this work must maintain attribution to the author(s) and the title of the work, journal citation and DOI.
increment. When simulating bulk properties, periodic boundary conditions are sufficient to simulate a realistic stress state. However, to simulate micromechanical tests, requires simulating finite domains with complex geometry and boundary conditions. This can be achieved by coupling a DDD code with a finite element (FE) code. There are two commonly used methods for doing this. The superposition method [2] and the discrete-continuous model (DCM) [3]. In DCM the plastic strain generated by the dislocation motion is used in an elastic FEM code to solve for the total stress; rather than a corrective stress as in the superposition method. The DCM method therefore does not require the dislocation displacement field to be evaluated anywhere. However, the resolution of the predicted displacement field is then limited by the element size. Another challenge with DCM is avoiding 'double counting' of the dislocation stress field when segments are in the same finite element.
The superposition method originally proposed in 2D [2], then extended to 3D [4][5][6] uses FEM to calculate the corrective stress field, ŝ , which arises due to any applied loading, and the loading generated by the elastic fields of any dislocations present inside the volume. First, a finite element mesh corresponding to the desired finite volume is constructed. As in any mechanical finite element problem, every FE surface node is either in S T or S U , depending on if tractions, T , or displacements, U, are specified. Then, at each time increment the tractions,T , and hence the nodal forces, as well as the nodal displacements, U, arising from the dislocation network in an infinite medium are evaluated analytically at the FE nodes on S T and S U respectively. These boundary values are then subtracted from the desired traction, T, and displacement, U, values. These modified boundary conditions, = -T T T on S T and = -Ũ U U on S U , are then used to solve for the corrective stress, ŝ , using an elastic FE code. The elastic stress in a finite body subject to the desired boundary conditions is finally found by simply adding the infinite body dislocation field, s , and the corrective field, ŝ , from FEM: s = s +ŝ as illustrated in figure 1. It should be noted that this is a purely elastic solution and that we do not account for any shape change, that is to say the boundary conditions are updated at each increment but the boundary, S, and the FE mesh remain unchanged. An interesting discussion of this point is in [7]. This requires one additional constraint which is that dislocations are prevented from exiting through any part of the surface where displacement boundary conditions are specified, S u . Formally we are solving: Hirth and Lothe derived expressions for calculating the stress and displacement field due to a dislocation loop [8]. These expressions have been developed into expressions for an arbitrary finite segment as required in a DDD code. There are well validated analytic expressions, such as the non-singular expression derived by Cai et al [9] for evaluating the stress field, s associated with finite dislocation segments in an infinite medium. Furthermore, the corresponding tractions and FE nodal forces have been obtained analytically by Queyreau et al [10] which are ideally suited for implementation in DDD codes. Unfortunately, the expression for the displacement field, which was pioneered by de Wit [11], requires an integral over complete dislocation loops. Although it can be used for approximating some situations [12], it is unsuitable for implementation in a DDD code, where dislocations are discretised into finite segments, whose elastic fields are evaluated individually. As will be discussed in section 2, the displacement field for an isolated dislocation segment is ill defined. We are concerned here with developing a simple method for analytically evaluating the dislocation displacement on the surface of a volume, equation (3), so that the displacement boundary condition, equation (9), can be correctly enforced through equation (6). The simplest dislocation displacement field is for a triangular loop proposed by Barnett [13,14]. Fivel and Depres [15] have developed an algorithm which breaks the dislocation network into triangular loops by generating a closure point for each segment such that screw dislocations do not contribute to the displacement. However the method requires projecting along the Burgers vector of each segment to find its closure point. When junctions have formed this is inconvenient as it requires storing the old Burgers vectors. We have developed a new algorithm which does not require any history information.
Hence this paper aims to propose a method for calculating the displacement generated by an arbitrary dislocation structure which has been discretised into segments. The method is suited for a DDD code which utilises the superposition method. Alternatively the algorithm proposed here could simply be used for visualising the dislocation displacement field during post-processing, although it should be noted that not enforcing equation (6) during a simulation which utilises the superposition method outlined above will reduce the accuracy of the solution and could be a significant source of error for large dislocation densities.

Adapting Barnett's solution
In order to calculate the displacement contribution of a single finite straight dislocation segment, we require an analytic expression that describes the displacement contribution for an arbitrary segment that can be easily implemented into a dislocation dynamics code without the need to store any history information. Starting from the earlier expression in Hirth and Lothe [8], Barnett [13,14] has derived an expression for the displacement,ũ, produced by a triangular dislocation loop ABC at a given field point, X p n p n p n = -W --- In these expressions, b is the Burgers vector of the loop, ν is Poisson's ratio for the material, n is the normal to the plane containing = -R A X ABC, A is the vector from the field point X to A, and so on for R B and R C , and l l , . The l AB term is the normalised line direction of AB. The two terms f AB and g AB describe the elastic displacement due to segment AB. Note that = f 0 AB for a pure screw segment and both  f 0 AB and  g 0 AB as the distance between the field point and the segment becomes much greater than the segment length. Whereas f AB and g AB are both undefined when the field point is on the line segment AB. The Ω ABC term is the solid angle (see appendix A). Mathematically Ω is the area projected by the triangle on a unit sphere located at the field point X. Physically the solid angle accounts for the plastic slip step. The slip step on a free surface is left behind by a partially exited loop and is a prominent feature of micromechanical test data. The solid angle, Ω, is in the range −2πΩ2π, meaning the first term in (10) jumps between b 2 either side of the slip plane area bounded Modelling Simul. Mater. Sci. Eng. 26 (2018) 085007 B Bromage and E Tarleton by the triangular loop. Note that the displacement due to an isolated segment is ill defined, because of the Ω term. Importantly the Barnett solution outlined in equations (10)-(13) has an advantage over the solution described by Hirth and Lothe [8]. It does not make the assumption that b lies in the habit plane of the loop (the plane containing A B , and C) when calculating the solid angle. That is to say the Barnett solution has no restriction on b and so remains valid when the Burgers vector has a prismatic component.
Barnett's solution can be seen to work for any loop by considering the treatment of prismatic loops presented by Fivel and Depres [15]. They posit that a prismatic loop can be assigned a 'mirror loop' of opposite sign. These two prismatic loops can be thought of as four shear loops for which the displacement can be calculated. If the mirror loop is then moved to infinity, the displacement calculation for field points local to the original prismatic loop is mathematically equivalent to the same calculation carried out for this loop by itself because of how the f AB and g AB of the mirror loop reduce to zero while the Ω terms are equivalent.
Using Barnett's solution, a contribution to the total displacement from each segment in any closed loop can be found at any given field point by dividing the loop into triangles ( figure 3(a)). Each triangle consists of one real segment which is part of the loop, and two non-real segments which join to a closure point P, common with all other segment triangles. The extra elastic terms hence cancel, and the solid angle terms for each triangle combine to give the complete solid angle of the whole loop. This works because: Previously, P has been chosen to be in the plane of the loop [15]. This is problematic when attempting to calculate the result for non-planar loops or multiple loops with varying positions and orientations. Fivel and Depres [15] devised a method for splitting up loops with arbitrary geometries into triangles using a projection which is on the slip plane along the Burgers vector to find a different closure points for each slip plane so that the entire loop is properly divided. The closure point is arbitrary but the total area of all virtual triangular loops is equal to the area of the original loop. Further details are in appendix B. This solution allows for calculation of displacements at any field point for the majority of dislocation structures, including segments which have cross slipped. However this solution can be inconvenient with large dislocation networks since the Burgers vector history of all segments must be tracked in order to correctly split loops that have been involved in dislocation collisions. Therefore we have developed a new method which uses a single closure point, P, for all segments in the model as illustrated in figure 3 Using a single closure point has the dual advantage of working for both non-planar loops and loops which have collided, even if they have differing Burgers vectors. This is because: 2 and b 1 and b 2 are two different Burgers vectors. This is demonstrated more completely in appendix D.
It can be seen that the closure point now forms a pyramidal 'tepee' shape with the dislocation loop as the base and the closure point as the 'peak'. For planar loops this is simply an irregular oblique pyramid. However this solution is not always correct, for while the elastic terms still cancel, there are situations in which the solid angle term is incorrectly calculated, as explained in appendix C. Whenever the field point at which the displacement is measured exists inside the polyhedron formed by the loop and the closure point, an exterior solid angle of incorrect sign is calculated instead of the desired result, i.e.
CAP . If displacement is calculated piecewise by segment, it is not possible to ascertain whether or not a field point exists within such a volume, since there is insufficient information about the loop or loops to which the segment belongs. While this is true for a completely general case, for the surface of a finite volume this problem can be avoided. If a closure point is chosen so that it is inside the volume, all field points on the surface of the volume would be outside of any polyhedron formed by the dislocation network and closure point. Therefore˜( ) u X can be correctly calculated for every possible position of X on the surface, provided that no dislocations exit the volume. Fortunately, to couple with FEM using the superposition method,ũ need only be evaluated on the surface of the simulated volume. Dislocation segments are prevented from exiting through S u , as this is unphysical and would produce an erroneous s stress to remove the slip step. However dislocations can exit the volume through any part of the surface where tractions are specified, S t . Therefore we now need to extend the method to handle exited segments.
Before this, it should be noted that Barnett's solution gives the displacement of a loop that has swept out its current area. If we think of a real sample that has been cut and/or polished for testing, there is no displacement on the surface caused by the internal dislocation structure. At the start of a simulation before any load is applied, there should be no displacement on S u . Subsequent displacements should only be caused by changes in the initial dislocation network that occur during the simulation. Therefore, when calculatingũ at time t, we must apply the displacement calculation to the dislocation network as it currently is and then subtract the result of the calculation for the initial dislocation structure such that = -( )˜˜( ) u u u t 0 . For example consider an initial dislocation loop which shrinks and is annihilated. This process should produce a non-zero displacement, but there is no information in the current dislocation network about the initial loop. More details are discussed in appendix B.

Calculating displacements for exited dislocations
Barnett's equation has been derived for a dislocation loop in an infinite isotropic solid. In order to calculate the displacement on the surface of the volume due to an exited dislocation segment, it is convenient to move the exited segment to an infinite distance from the volume whilst maintaining the connectivity of the loop. This issue is discussed in [16]. In a simulation, when a dislocation segment exits, it is moved to a position, that is very far (several orders of magnitude) from the surface relative to the size of the volume, designated as 'pseudo-infinity'. Extra virtual segments are then generated as necessary to connect the exited segment to the internal segments of the dislocation loop at the surface.
The direction a segment is moved when it has exited the surface must satisfy several criteria: the long range displacements must be correctly calculated, the extension of a dislocation loop must be consistent across a surfaces and the virtual segments formed must keep track of the line of the formed step on the surface. The long range displacement calculated is relative. As the angle of the projection vector is changed, the displacement on one side of the loop decreases in magnitude whilst the other side increases by the same amount, so that the degree to which the material on one side of the loop is displaced from the other is the same, namely b. The consistency means that any segments in the same loop exiting out of the same surface must be projected in the same direction. Finally, virtual segments at pseudo-infinity must be able to be mapped back on to the surface they were projected from in order to recover where they exited. The simplest way to satisfy these conditions is to project along the surface normal.
To project exited nodes to the correct position, surface nodes must first be positioned correctly. This is done by finding the point, Q, where a segment AB intersects the surface. If node A exits and B remains inside then where A and B are the position vectors of the external and internal nodes respectively, Q 0 is an arbitrary point on the surface and n is normal to the surface through which A exited, see figure 4. It should be noted that it is important that nodes are projected consistently from the position of the slip step in the direction of the surface normal. This is because, while there is no effect on the long range displacement fields, the position and shape of the slip step is dependent on the virtual dislocation network being formed correctly. Surface nodes are also restricted so that they may only move on the surface through which the dislocation has exited. If a surface node is no longer connected to any internal dislocations because all connecting segments have exited, then it is projected to pseudo-infinity as part of the virtual network.
Once an exited dislocation node has been projected, there will be areas on the surface where the result of the displacement calculation will be incorrect due to the volume the dislocation loop creates with the closure point intersecting the surface of the simulated volume as shown in figure 5. In order to avoid this problem, adjustments must be made to the method to give the correct result.
For external parts of a dislocation structure, because it is known that virtual nodes have been projected from the surface, more information about the geometry of the loop is available when looking at individual segments. This is because where A is the position vector of a virtual node, ¢ A is its corresponding surface node, equivalent to the sum of the surface intersection points of all segments connected to , and L is some large factor, much greater than the largest dimension of the simulated volume, approximating infinity and n is the surface normal, as illustrated in figure 5. Since the segments are not inside the material, the elastic displacements caused by the presence of the line of the dislocation ( f AB and g AB ) are zero and so can be ignored. This just leaves the solid angle term, Ω, for the displacement arising from the plastic slip step that needs to be calculated. This must be done in such a way that the contribution to Ω from the virtual segments gives the correct value when added to the contributions from the internal segments so that the total Ω for the entire network is the solid angle expected at any given field point on the surface of the simulated volume. To achieve this, the internal dislocation network must be closed at the surface by a virtual surface segment for which only the Ω term is calculated using the internal common closure point P. The external part of the loop then has a unique closure point assigned to it and the correct Ω contribution can then be calculated as shown in figure 6(a). It should be noted that closure points for external parts of the loop do not have to be unique, they merely must not form a volume that intersects the surface. Assigning a common closure point to each face of the surface a dislocation segment could exit from would also work. However, when it comes to implementing in a DDD code, it was found to be quicker and easier to find a unique closure point for each exited segment than to find the face of the surface a segment has been projected from. Another advantage of assigning a unique closure point to each exited segment is that the algorithm is completely general and independent of the geometry being simulated.
The virtual parts of a dislocation network are not always simple and may consist of multiple segments at pseudo-infinity. Solid angle contributions for each of these virtual segments must be calculated. In order to do this, a sub loop must be found for all segments at pseudo-infinity. All segments (along the surface normal) joining a virtual segment to the surface can be ignored since their contribution to the displacement will be included in that of the sub-loop associated with the virtual segment (at pseudo-infinity) they connect to. Virtual nodes which are not attached to a virtual segment connected to the surface must be projected back on the the surface to find the corresponding corners of the sub-loop. An appropriate virtual surface segment must also be created to ensure the closure of the internal part of the dislocation network as shown in figure 6(b).
In the event that a junction exits the surface and there is a node at pseudo-infinity connecting to three other nodes at pseudo-infinity, this approach still functions correctly. The junction node represents the intersection of three sub-loops which will combine to give the This treatment of exited segments is similar to the technique utilised by Hussein and El-Awady to simulate surface roughness evolution [12]. The key difference is that their technique for analysing surface roughness only takes exited segments into account and ignores the elastic displacement contributions from the internal dislocation segments. This results in a marginal underestimation of the height of the slip step for partially exited loops. Despite this, the technique is a good approximation, since the contribution to the height of a slip step by the internal structure is small in comparison to that of the exited segments. Additionally, the position and orientation of the slip steps is accurate. However, as dislocation density rises, the inaccuracies inũ will increase. The method proposed here would provide better results in such a scenario as the elastic displacement from every segment is calculated. The complete algorithm for both internal and exited segments is shown below. Algorithm 1. Pseudocode to find the displacement on the surface of a simulated volume. S is S u during a simulation or  S S u t during post-processing. The algorithm is amenable to parallelisation over dislocation segments or field points.
Result: Dislocation displacementũ on surface FE nodes for ∀ FE nodesäS do

Results
Several tests of this method for calculating surface displacements were carried out to verify the method. Firstly, the displacement caused by a triangular loop was calculated using Barnett's solution on the surface of a cube containing the loop. This was compared to the results for when the displacement was calculated using several arbitrary closure points inside the cube. All of the surface displacements calculated were identical to, as shown in figure 7. The displacement generated by two loops just prior to collision was compared with the displacement after they had collided and formed a junction. There was a slight change in displacement caused by the movement of the loops but no change caused by the formation of the junction, as shown in figure 8.
The displacement on the surface due to a pair of square prismatic loops where the interstitial loop has exited along its glide prism and the vacancy loop remains inside V is shown in figure 9. This agrees with the displacement obtained by Fivel and Depres using their method [15].  The algorithm described above was used to simulate an end loaded single crystal bodycentred cubic micro cantilever beam. A new matlab based code EasyDD has been developed based on a modified version of DDLab developed at LLNL by Arsenlis et al [9]. EasyDD is coupled with a custom written FEM code and utilises GPU acceleration [17] to enable accurate simulations on a desktop PC.
Identical simulations were performed evaluating the dislocation displacementũ on S u to enforce the displacement boundary conditions equation (6) and neglecting the dislocation displacements so that the only coupling between DD and FEM is through the traction boundary condition. A BCC crystal structure was chosen with Poisson's ratio and bulk modulus approximating that of tungsten. Sixty dislocation sources, ten on each { } 110 slip plane, were then scattered randomly throughout a single crystal cantilever with height and width of 5 μm and length of 18 μm. The sources themselves must be closed loops rather than the commonly used isolated Frank-Reed source segments as this would produce erroneousũ values due to Ω being ill defined. Physically this is correct as a dislocation segment cannot terminate in a perfect lattice. The cantilevers were fixed at one end with a displacement of 0.22 μm applied to the other end. It should be noted that the fixed end must not have any dislocations exiting through it which was achieved by pinning dislocations at this surface when they reached it. The resulting load-displacement curves are shown in figure 10 and the dislocation networks that evolved are shown in figure 11. There was an observable difference in both the load/displacement curves and final dislocation structures.
This method may also be used in post-processing to evaluate the displacement on the entire surface =  S S S u t of a volume. A rectangular cantilever, with width and height of 5 μm and length of 30 μm was simulated which was fixed at one end with a displacement of 0.6 μm applied at opposite end. The initial dislocation structure was 60 randomly distributed dislocation loops, 10 on each {110} slip plane, similar to the above case. After post-processing, slip steps were observed on S t where dislocations had exited the surface as can be seen in figure 12. The complete final dislocation network consisted of 5736 segments totalling slightly more than 1 mm in length (ignoring segments of pseudo-infinite length), of which 907, with a total line length of approximately 150 μm, had exited. Both glide and cross-slip occurred.

Conclusion
A new method has been developed for accurately calculating the displacements on the surface of a volume due to dislocations for an arbitrary and complex dislocation network. Since the  calculation is performed piecewise by segment, the method is readily compatible with DDD codes. A prerequisite is that connectivity of the network is maintained so that there are no segments not connected at one end. This means that a typical simple Frank-Read source with two pinned ends cannot be used as part of the initial dislocation structure. However, provided connectivity is maintained, the algorithm outlined here can calculate displacement fields for both shear and prismatic loops as well as non-planar loops, and complex junctions. Furthermore only knowledge about the current state of the dislocation segments is required alleviating the burden of having to track any history information. Provided the initial dislocation displacement field is evaluated once at the start of the simulation and subtracted off the algorithm can handle any dislocation motion.
The simplicity of the proposed method combined with its versatility mean it can be implemented in any DDD code. It can be used for both the calculation ofũ in order to solve boundary problems when using the superposition method as well as analysis of surface deformation during post-processing. Neglecting the dislocation displacement when using the superposition method will generate an error which increases with dislocation density. The number of calculations required increases linearly with the number of dislocation segments present in the simulation. Therefore, for use in large scale simulations, the process should be parallelised for better performance, which is possible since calculations for individual segments are independent of each other.

Acknowledgments
ET would like to thank EPSRC for financial support through an Early Career Fellowship grant EP/N007239/1. We would also like to thank Professor Felix Hofmann and Dr Steve Fitzgerald for useful discussions.

Data availability statement
The processed data required to reproduce these findings are available to download from http://doi.org/10.17632/92hz9nkj2r.1

Appendix A. Solid angles
Solid angles are the three dimensional equivalent of angles in two dimensions. In two dimensions, an angle can be measured at a point where two lines meet. To find the angle in radians, a unit circle can be drawn using this point as the centre. The size of the angle is the length of the circumference between the two lines, as shown in figure A1(a).
A similar process may also be executed in three dimensions to find the solid angles at three dimensional vertices. Any point where two or more planes meet in three dimensional space may have a unit sphere placed using this point as the centre. The surface area of the sphere contained between these planes is the solid angle as shown in figure A1(b). Figure A1. (a) A unit circle can be used to find the angle between lines XA and XB. This angle can be either interior or exterior, depending on which direction around the circle the measurement is carried out. (b) A unit sphere is used to measure the solid angle caused by the meeting of the planes containing XAB, XAC and XBC. It should be noted that the 'interior' solid angle is the projection of the triangle ABC onto the unit sphere. The 'exterior' solid angle is 4π minus the interior solid angle.

Appendix B. Plastic distortion
The plastic distortion tensor is unique and defined by the area swept out by the dislocation network. Although plastic distortion is not used in this paper it is interesting to note the connection between the area swept out by the loop and the solid angle. The increment in plastic distortion is where the sum is over all segments in a volume V and the area swept out by a single segment in a time increment is for a line segment i connecting node  1 2 with nodal velocities ( ) v 1 and ( ) v 2 . For example, segment l AB t at the start of the increment transforms to at the end of the increment. This is demonstrated in figure B1 for a triangular loop ABC shown in red. It is clear geometrically that the change in area during the increment is the sum of the areas swept out by each segment, Figure B1. The area swept out by a triangular loop during a time increment is equal to the difference between the current and initial areas bounded by the dislocation loop.
By extension A t −A 0 is the total area swept during a time t by a loop with initial area A 0 . Geometrically the solid angle W ( ) X t is the area A t projected onto the field point at X.
is the swept area projected onto the field point. The plastic distortion is unique therefore the solid angle must also be unique. However Ω is obtained by connecting every segment to an arbitrary closure point at P to generate a triangular loop for each segment. The areas of each triangular loop have a sign associated with them depending on if their line direction is clockwise or anticlockwise. So that when summed, the total area is unique and equal to the area enclosed by the real dislocation loop. This was shown in [15] under the condition that the closure point were chosen anywhere in the plane of the loop as illustrated in figure B2. Clockwise loops (shown in red) have a signed area corresponding to a normal out of the page whereas the anticlockwise triangle CAP (shown in blue) has a negative area e.g. with a normal pointing into the page. Therefore when summed, some of the areas cancel, leaving only the original area ABC and the solution is unique.
where equation (C.7) is obtained using q q =sin 1 cos 2 2 . Similarly, for g AB : so the contribution to u from F is independent of the closure point as the virtual segments going to and from P always cancel. We now demonstrate that the solid angle terms can also be calculated for an out of plane closure point. The solid angle of a polygon as seen from a field point is the projection of the area of the polygon onto a unit sphere centred at the field point. Barnett [13] obtained the following closed form expression for the solid angle of a triangular loop ABC at a field point X:  In these expressions, n is normal to the plane containing R ABC, A is the vector from the field point X to A, and so on for R B and R C , and l l , A B and l C are their respective normalised vectors. The angles between these vectors are a b , and c. Therefore using equations (C.19) and (C.20) Now consider a dislocation loop ABC being projected away from X onto an arbitrary plane, figure C2, to form a new triangle  Figure C2. A projection of tetrahedron ABCP onto a plane from field point X. The R vectors go from X to their respective nodes. It can be seen that there are an infinite number of parallel planes onto which this projection can be made since the only requirement is that the plane intercept the four R vectors while not being in between the field point X and the tetrahedron.
Therefore using equations (C.24) and (C.25) where (C.28) follows from (C.27) and (C.17) and the fact the the angles a b c , , and s have not changed during the projection. It can also also be seen that the sign of the solid angle changes when the sense of the loop changes since l ĺ If ABC is connected to closure point P, we can form three new triangles: ABP BCP , and CAP which form a tetrahedron ABCP. For a given field point X, we can choose a plane on which to project this tetrahedron as shown in figure C2. If we define the shortest vector from X to the plane as N , if l = · N 0 then l is parallel to the plane, and if l < · N 0 then l is pointing away from the plane, in either case l will not intercept the plane. Therefore provided: It is always possible to select a plane for which condition (C.30) is satisfied provided X is outside the tetrahedron formed by A B C , , and P. If X is inside this tetrahedron then no plane selected can satisfy condition (C.30) and so using this method calculates the wrong solid angle. This demonstrates that if the closure point P is chosen to be anywhere inside a finite volume V then u arising from a triangular loop ABC can be evaluated on the surface of V provided ABC is inside V.
This method can be extended beyond triangular loops. Consider a square planar loop ABCD broken up into four triangles in the habit plane of the loop using point Q as shown in figure C3(a). The displacement of these triangles are then calculated using an out of plane arbitrary closure point P, shown in figure C3(b). This generates the following F terms: This demonstrates that breaking the loop up in plane using Q is unnecessary and P can be directly used to calculate the W ABCD term. This argument can also be extending for a many sided planar polygonal loop.

Appendix D. Colliding and non-planar loops
As b only appears in the prefactor of f AB and g AB , reversing the Burgers vector also reverses the resultant displacement vector. Therefore, simultaneously reversing the line direction and Burgers vector has no effect on the resultant displacement vector, as expected. The second identity required is that two dislocation loops occupying the same space but with different Burgers vectors, b 1 and b 2 , is equivalent to one loop with a combined burgers vector of 2 . Again this follows as b appears in the prefactor of every term in equation (C.1). Now we can consider two colliding triangular loops, ABC and DBC. They are on separate (arbitrary) planes. The solid angle terms are calculated using arbitrary closure point P. If we define    It can now be seen that the displacement vector generated by the two loops treated separately is identical to when they are treated as the junction shown in figure D1(b). Conservation of Burgers vectors means that the sum of the Burgers vectors entering a node in a dislocation network must equal the sum leaving. In the example above, b 1 and b 2 enter and b 3 leaves node B. Thus for the conservation of Burgers vector we must have Similarly at point C, BC splits into CA and CD resulting in the same sum. This is consistent with how b 3 is calculated when the junction is formed. However, if we change  3 . Nodal based DD codes such as ParaDiS and DDLab have been written to account for this conservation of Burgers vector. This is convenient when the displacement is calculated because if two segments have opposite line directions and Burgers vectors then they give identical displacement contributions when using a common closure point. This means that segment BC with a Burgers vector of -b 2 is indistinguishable from segment CB with a Burgers vector of b 2 . This means that this example combines in the same way as the example in figure D1 to give the correct displacement. By extension, the same can be said of figure D2(b) where the junction is formed with the other possible configuration. Additionally, this can be used as a proof for the case for a non-planar loop, which can be thought of as a special condition of the collided loop, where ORCID iDs E Tarleton https://orcid.org/0000-0001-6725-9373