Difference between revisions of "3D Cracks"

From OSUPDOCS
Jump to navigation Jump to search
Line 7: Line 7:
== Planar Crack Definition ==
== Planar Crack Definition ==


If the crack has a rectangular shape, you can define with a few commands. In scripted files, the commands are:
If the crack has a parallelogram shape, you can define with a few commands. In scripted files, the commands are:
 
NewCrack (x0),(y0),(z0),(k0)
CrackKeypoint (x1),(y1),(z1),(k1)
CrackKeypoint (x2),(y2),(z2),(k2)
CrackPlane (k0),(k1),(k2),(length),(czm)
 
<ul>
<li><tt>(xn),(yn),(zn)</tt> - defines three points and <tt>(kn)</tt> are key point labels (which have to be unique). The defined crack will be parallelogram with edges along point 0 to 1 and along point 0 to 2.
</li>
 
<li><tt>(length)</tt> - is preferred maximum length for facet edges
</li>
 
<li><tt>(czm)</tt> - is optional [[Traction Laws]]traction law material ID]] to add a traction law to the entire crack plane.
</li>
 
</ol>
</li>
 
In XML files, a parallogram crack is defined with a single command


NewCrack x1,y1,z1,"k0"
CrackKeypoint x2,y2,z2,"k1"
CrackKeypoint x3,y3,z3,"k2"
CrackPlane "k0","k1","k2",length,czm


In scripting software, 3D cracks created with
In scripting software, 3D cracks created with
Line 25: Line 41:
Whene `NewCrack` starts to crack (or starts another crack is one already active. The argments are coordinate of one point and a label (or id) for that point. A series of `CrackPoint` commands (with same arguments) creates all the crack mesh keypoints (id's must be unique). A series of `CrackFacet` commands links keypoints (by their ids) into a triangle. Length gets preferred maximum length for facet edge and czm is options traction law ID.
Whene `NewCrack` starts to crack (or starts another crack is one already active. The argments are coordinate of one point and a label (or id) for that point. A series of `CrackPoint` commands (with same arguments) creates all the crack mesh keypoints (id's must be unique). A series of `CrackFacet` commands links keypoints (by their ids) into a triangle. Length gets preferred maximum length for facet edge and czm is options traction law ID.


which will create a parallelogram planar crack with edges 0-1 and 0-2. Length gives the maximum edge size along each axis and czm is a traction law ID. This method can have only one plane and no facets. It is short cut for a simple planar crack creation. The traction law is on all points or none. Use above method to get traction on only some of the crack surface.


Notes:
Notes:

Revision as of 21:47, 28 January 2022

3D cracks are currently in development and available only in OSParticulas. This page explains how to add them to 3D MPM simulations.

Introduction

3D cracks are defined by a collection of triangular facets. The corners and located using crack key points. Each facet can option input a traction law.

Planar Crack Definition

If the crack has a parallelogram shape, you can define with a few commands. In scripted files, the commands are:

NewCrack (x0),(y0),(z0),(k0)
CrackKeypoint (x1),(y1),(z1),(k1)
CrackKeypoint (x2),(y2),(z2),(k2)
CrackPlane (k0),(k1),(k2),(length),(czm)
  • (xn),(yn),(zn) - defines three points and (kn) are key point labels (which have to be unique). The defined crack will be parallelogram with edges along point 0 to 1 and along point 0 to 2.
  • (length) - is preferred maximum length for facet edges
  • (czm) - is optional Traction Lawstraction law material ID]] to add a traction law to the entire crack plane.
  • In XML files, a parallogram crack is defined with a single command In scripting software, 3D cracks created with ``` NewCrack x,y,z,id CrackKeypoint x,y,z,id ... CrackFacet id1,id2,id3,length,czm ``` Whene `NewCrack` starts to crack (or starts another crack is one already active. The argments are coordinate of one point and a label (or id) for that point. A series of `CrackPoint` commands (with same arguments) creates all the crack mesh keypoints (id's must be unique). A series of `CrackFacet` commands links keypoints (by their ids) into a triangle. Length gets preferred maximum length for facet edge and czm is options traction law ID. Notes:
    1. Meshing may deviate from preferred length to get better proportioned elements.
    2. Works best if facets are similar sized or to control resolution best, start with the largest ones.
    3. Works best if each new facet has two new edges. If needed, only one new edge is OK, but all edges preexisting is bad option (and never needed).
    4. The crack mesh must use all defined keypoints.
    5. No pair of keypoints can be connected more than twice (``i.e.``, two edges of two connected facets.
    !!! 3D Crack Using a `Mesh` Element with Generated mesh options You can also create cracks using a low-level method (a `Mesh` command) or a single command to create an initially planar crack in the shape of a parallelogram (a `Plane` command, see next section). Each `CrackList` can have one, and only one, of these commands. This `Mesh` creates a 3D crack using a single `Mesh` command within the `CrackList` command for one crack: ``` <CrackList> <Mesh> <NodeList> <pt x='0' y='&yc;' z='0'/> <pt x='0' y='&yc;' z='&zt;'/> <pt x='1' y='&yc;' z='0'/> <pt x='1' y='&yc;' z='&zt;'/> </NodeList> <ElementList> <elem type='1' length='2' czm='id'>1,4,2</elem> <elem type='1'>1,3,4</elem> </ElementList> </Mesh> </CrackList> ``` The subordinate elements to the `Mesh` command define crack points on the crack surface (in the `NodeList` block) and connects those points with triangular elements (in the `ElementList` block). The three points in each `elem` command refer to three points by number in the `NodeList` (numbers are assigned automatically starting with 1). if czm is provided it is traction law applied to each segment in the meshed area. In direct XML, czmname='name' can be used instead, If length is provided, the edges of the element are divided up into more segments and the element is meshed into subelements as follows. First create edge objects by
    1. Searching for existing edges, use if found, but edge used a third time is an error
    2. Decide on number of intervals for new edges
      • Preferred number is int(length/segLength)+1. Perhaps add a preference to keep them all the same.
      • If all new- find the pair (0-1) or (1-2) that are close and match other to 0 or 1. My downgrade resolution of 0 is 1-2 pair is used.
      • If one was existing - match other two to it
      • If two existing - match new one to an existing edge. This case may not get all edges with the same number of inrtervalis
      • If three present look for two matching and use. If all differ an error. Note that can be fixed by defining triangles in order that does not surround any area.
    New class for edge that will store start and end segment and sequence of interior segments. It will also count number of times the edge is used in the mesh Meshing:
    1. Create segments along any new edges
    2. Set segments of each edge as no in the crack and if czmID>0 set its traction law
    3. Start with edge having unique number of internal segments (or same if all the same), call it n. Let s be number of internal segments with equal intervals, then loop for i from 1 to s
      • Create n-i segments along line connect segment i of each edge
      • Create triangle strip of facets under that line, but if n-1<=0, just divide into two facets
    4. When done, if n-s>0, connect each one to tip of the triangle
    When crack is done, throw an error if any crack points were not connected to the crack (because their index is needed) !!! Planar 3D Crack A single `Plane` command within a `CrackList` command can create a planar crack in the shape of a parallelogram: ``` <CrackList> <Plane V0x='-1.01' V0y='-1.01' V0z='2.01' V1x='1.001' V1y='-1.001' V1z='2.01' V2x='-1.01' V2y='1.005' V2z='2.01' N1='3' N2='4'></Plane> </CrackList> ``` Here V0, V1, and V2 define three points in 3D space. Vectors from V0 to V1 and V0 to V2 define two edges of the parallelogram, which is formed by reflecting the triangle connecting the three points across the edge from V1 to V2. The crack is discretized into a grid of crack points using N1 points the V0 to V1 direction and N2 points in the V0 to V2 direction (the enforced minimum for each is 2. N1 and N2 can be replace by length attribute and N1 and N2 calculate such that edges will be less than that length. Can also add mat or matname attributes to set a traction law on all points. This grid is connected into triangular elements.