PARADISCYL:Cylinder-Algorithm: Difference between revisions
No edit summary |
|||
| Line 27: | Line 27: | ||
2. Collision.c |
2. Collision.c |
||
Added lines to turn off collision if param->collisionoMethod is specified as a negative number |
|||
(in the input file). |
|||
3. cylinder.c |
3. cylinder.c |
||
In function CYL_stress_boundary(), a minus sign is added in computing the surface traction from |
|||
- Correct the sign of the image stress |
|||
the infinite stress: |
|||
tr[j+i*nq] = -cylstress[0][0]; |
|||
tq[j+i*nq] = -cylstress[0][1]; |
|||
tz[j+i*nq] = -cylstress[2][0]; |
|||
4. Cylinder_Remesh.c |
4. Cylinder_Remesh.c |
||
Make substitutions: SURFACE_NODE -> CYLINDER_SURFACE_NODE. |
|||
'''This is supposed to be handled by translation'''. |
|||
- Remove surface debris |
|||
-[ProjectSurfaceNodes] : if surface nodes move inside, it need to be projected on the surface |
|||
In function Cylinder_Remesh(), added new rules to remove surface debris (to increase time step). |
|||
Surface debris are defined as dislocation line consisting of two or three segments with two |
|||
(end) surface nodes. |
|||
See [Cylinder-Remove_surface_debris]. |
|||
A new function ProjectSurfaceNodes() is defined to project nodes flagged by CYLINDER_SURFACE_NODE |
|||
back to the cylinder surface when it drifts inside the cylinder. Note that surface nodes moving |
|||
out of the cylinder are already handled by Cylinder_Remesh. |
|||
See [Cylinder-Project_surface_node]. |
|||
5. gridstress.c |
5. gridstress.c |
||
- remove R=1 constraint |
- remove R=1 constraint |
||
| Line 48: | Line 67: | ||
- Surface node mobility correction |
- Surface node mobility correction |
||
- etc |
- etc |
||
==Cylinder Code Algorithm== |
==Cylinder Code Algorithm== |
||
Revision as of 19:30, 2 December 2011
Cylinder Code Algorithm
ill Ryu and Wei Cai
This wiki page describes the ParaDiS Cylinder code v.2.5.1. This version of the Cylinder code is created by a translation from the ParaDiS ThinFilm code v.2.5.1, with subsequent modifications. In this wiki page, we only describe the difference between the Cylinder code and the translated ThinFilm code.
List of Files
The following is a list of all files modified manually after the translation.
1. AllSegmentStress.c
A new function AllSegmentStress_no_cell_test1() is added, which computes the stress field of a infinite straight dislocation (analytic expression) for Test Case 1 only. This function is activated when CYL_TEST1 is defined (in the makefile).
Function AllSegmentStress_no_cell() is modified to account for periodic images in Z direction. A local variable NimgPBC is hard coded. For each dislocation segment, NimgPBC number of its images are included in the stress calculation. We should move this to Param.h.
Macros (#ifdef 's) are added to make the Cylinder code use FULL_N2_FORCES when _CYL_TEST23 is defined.
2. Collision.c
Added lines to turn off collision if param->collisionoMethod is specified as a negative number (in the input file).
3. cylinder.c
In function CYL_stress_boundary(), a minus sign is added in computing the surface traction from
the infinite stress:
tr[j+i*nq] = -cylstress[0][0];
tq[j+i*nq] = -cylstress[0][1];
tz[j+i*nq] = -cylstress[2][0];
4. Cylinder_Remesh.c
Make substitutions: SURFACE_NODE -> CYLINDER_SURFACE_NODE. This is supposed to be handled by translation.
In function Cylinder_Remesh(), added new rules to remove surface debris (to increase time step). Surface debris are defined as dislocation line consisting of two or three segments with two (end) surface nodes.
See [Cylinder-Remove_surface_debris].
A new function ProjectSurfaceNodes() is defined to project nodes flagged by CYLINDER_SURFACE_NODE back to the cylinder surface when it drifts inside the cylinder. Note that surface nodes moving out of the cylinder are already handled by Cylinder_Remesh.
See [Cylinder-Project_surface_node].
5. gridstress.c - remove R=1 constraint 6. Initialize.c, LocalSegForce.c, NodeForce.c
- make flags for CYL_TEST23
: #if (!defined FULL_N2_FORCES) | (!defined _CYL_TEST23)
7. SplitSurfaceNodes.c PredictiveCollision.c ProximityCollision.c
- For the surface node split(Not yet)
8. Remesh. c - SURFACE_NODE -> CYLINDER_SURFACE_NODE 9. MobilityLaw_BCC_glide.c - Modify mobility for the surface node(keeping them on the surface/ slip plane) - Surface Cross Slip - Surface node mobility correction - etc