Professional Documents
Culture Documents
k,1,A
k,2,W
k,3,W,H
k,4,,H
k,5,(W-W1),H
K,6,(W-W1),S
k,7,,S
k,8,(W-D1),S
k,9,(W-D2)
k,10,,E
k,11,,E,E
!!!!!start!!!!!
k,20,W,-H
k,21,,-H
K,22,(W-W1),-H
k,23,(W-W1),-S
k,24,,-S
k,25,(W-D1),-S
k,26,(W-D2)
k,27,,-E
k,28,,-E,E
k,40,(W-D1),H
k,41,(W-D1),-H
!!!!!end!!!!!!
circle,10,r,11,4,,8
l,1,2
l,2,3
l,3,40
l,40,4
l,4,5
l,5,6
l,6,7
l,7,8
l,8,9
l,9,1
l,4,12
l,16,7
!!!!!!!!!!
circle,27,r,28,21,,8
l,20,41
l,41,21
l,21,22
l,22,23
l,23,24
l,24,25
l,25,26
l,26,1
l,2,20
l,24,33
l,29,21
l,8,40
l,25,41
AL,9,10,11,40,17,18
Al,41,35,36,9,37,29
AL,12,19,8,7,6,5,20,16,40
AL,34,38,24,23,22,21,39,30,41
AL,38,33,32,31,39,28,27,26,25
AL,13,19,1,2,3,4,20,15,14
!!!!!!!!!!
et,1,187
type,1
mp,ex,1,200000
mp,nuxy,1,0.33
esize,4
vext,all,,,0,0,B
allsel,all
vmesh,all
asel,s,,,8
asel,a,,,18
asel,a,,,13
AREFINE,all,,,,1
esel,s,ename,,187
allsel,all
ASEL,s, , , 23
ASEL,a, , , 24
ASEL,a, , , 25
ASEL,a, , , 26
ASEL,a, , , 50
ASEL,a, , , 51
ASEL,a, , , 52
ASEL,a, , , 53
nsla,s,1
f,all,fy,450/numnode
allsel,all
!lsel,s,,,88
!lsel,a,,,92
ASEL,s, , , 33
ASEL,a, , , 34
ASEL,a, , , 35
ASEL,a, , , 36
ASEL,a, , , 39
ASEL,a, , , 40
ASEL,a, , , 41
ASEL,a, , , 42
nsla,s,1
*GET, numnode, NODE, 0, count, , ,
f,all,fy,-450/numnode
allsel,all
lsel,s,,,49
nsll,s,1
D,ALL,UY,0
D,ALL,UZ,0
allsel
lsel,s,,,74
lsel,a,,,90
nsll,s,1
D,ALL,UX,0
allsel
nsel,s,loc,x,a,a
nsel,r,loc,y,0
nlist
cm,crack1,node
ALLSEL,ALL
ASEL,S, , ,12,13
NSLA,S,1
CM,CRACKT_SUR_01,NODE!upper
ALLSEL
ASEL,S, , ,18,19
NSLA,S,1
CM,CRACKT_SUR_02,NODE!lower
ALLSEL
finish
/solu
ANTYPE,STATIC
KBC,1
ANTYPE,STATIC
cint,new,1
CINT,TYPE,SIFS
CINT,TYPE,JINT
cint,ctnc,crack1
CINT,EDIR,CS,0,x
cint,norm,0,2
CINT,SURF,CRACKT_SUR_01,CRACKT_SUR_02
cint,ncon,5
CGROW, NEW, 1
CGROW, CID, 1
CGROW, METHOD, SMART,REME
NSUBST,6
OUTRES,all,ALL
/solu
solve
finish
/POST1
maxnumNd = 0
SET,FIRST
*do,istep,1,nstep
! get number of crack tips
*get, pval, CINT,1, NNOD
*if, pval,gt,maxnumNd,then
maxnumNd = pval
*endif
SET,NEXT
*enddo
*DIM, numNd,array,nstep,1
*DIM, nodeNum,array,maxnumNd,nstep
*DIM,DN,array,2,nstep
*DIM,DA,array,2,nstep
*DIM,DK,array,2,nstep
*DIM,DR,array,2,nstep
*DIM,ND_X,array,2,nstep
*DIM,ND_Y,array,2,nstep
*DIM,ND_Z,array,2,nstep
*DIM,ND_A,array,2,nstep
! DN_R and DK_R store the reference results
*DIM,DN_R,array,2,nstep
*DIM,DK_R,array,2,nstep
! OUT0 stores the results of the first node
! OUT1 stores the results of the last node
*DIM,OUT0_DN,array,nstep,2
*DIM,OUT0_DA,array,nstep,2
*DIM,OUT0_DK,array,nstep,2
*DIM,OUT1_DN,array,nstep,2
*DIM,OUT1_DA,array,nstep,2
*DIM,OUT1_DK,array,nstep,2
SET,FIRST
! get number of crack tips
*get, pval, CINT,1, NNOD
istep = 1
numNd(istep,1) = pval
! get tip node numbers
*do, inode, 1, 2
*if,inode,eq,1,then
*get, NdNum, CINT,crkId, NODE, inode
*else
*get, NdNum, CINT,crkId, NODE, numNd(istep,1)
*endif
nodeNum(inode,istep) = NdNum
DK_R(inode,istep) = DeltK
DeltN = DA(inode,1)/(C*(DeltK**M))
DN_R(inode,istep) = DeltN
*if,inode,eq,1,then
OUT0_DN(istep,1)=DN(1,istep)
OUT0_DA(istep,1)=DA(1,istep)
OUT0_DK(istep,1)=DK(1,istep)
OUT0_DN(istep,2)=DN_R(1,istep)
OUT0_DK(istep,2)=DK_R(1,istep)
*else
OUT1_DN(istep,1)=DN(inode,istep)
OUT1_DA(istep,1)=DA(inode,istep)
OUT1_DK(istep,1)=DK(inode,istep)
OUT1_DN(istep,2)=DN_R(inode,istep)
OUT1_DK(istep,2)=DK_R(inode,istep)
*endif
*enddo
SET,NEXT
*do,istep,2,nstep
DK_R(inode,istep) = DeltK
Nst = (DA(inode,istep)-DA0)/(C*(DeltK**M))
DeltN = DN_R(inode,istep-1) + Nst
DN_R(inode,istep) = DeltN
*if,inode,eq,1,then
OUT0_DN(istep,1)=DN(1,istep)
OUT0_DA(istep,1)=DA(1,istep)
OUT0_DK(istep,1)=DK(1,istep)
OUT0_DN(istep,2)=DN_R(1,istep)
OUT0_DK(istep,2)=DK_R(1,istep)
*else
OUT1_DN(istep,1)=DN(inode,istep)
OUT1_DK(istep,1)=DK(inode,istep)
OUT1_DA(istep,1)=DA(inode,istep)
OUT1_DN(istep,2)=DN_R(inode,istep)
OUT1_DK(istep,2)=DK_R(inode,istep)
*endif
*enddo
SET,NEXT
*enddo
*DIM,LABEL,array,nstep,1
*DIM,DNTab,table,nstep,1
*DIM,DATab,table,nstep,1
*DIM,DKTab,table,nstep,1
*do,i,1,nstep
LABEL(i)=i
*VFILL,DNTab(i,1),DATA,DN(1,i)
*VFILL,DATab(i,1),DATA,DA(1,i)
*VFILL,DKTab(i,1),DATA,DK(1,i)
*enddo
!Plot results
/show,PNG
/view,1,1,1,1
/dscale,,0
/graphics,power
/AXLAB,X,Crack Extension
/AXLAB,Y,Number Of Cycles
/GCOL,1,MAPDL
/GCOL,2,TARGET
*VPLOT,DATab(1,1),DNTab(1,1),2
/AXLAB,X,Crack Extension
/AXLAB,Y, DELTA-K
/GCOL,1,MAPDL
/GCOL,2,TARGET
*VPLOT,DATab(1,1),DKTab(1,1),2
/out
/COM, ----------------------SOLVER RESULTS
COMPARISON------------------------
/COM,
/COM, DK OF THE FIRST NODE
/COM,
/COM,Step | A value | TARGET | Mechanical APDL
/COM,
/COM, --------------------
/COM,
/out
*VWRITE,LABEL(1),OUT0_DA(1,1),OUT0_DK(1,2),OUT0_DK(1,1)
(F3.0,' ',F14.8,' ',F14.5,' ',F14.5)
/out
/COM, ----------------------SOLVER RESULTS
COMPARISON------------------------
/COM,
/COM, DN OF THE FIRST NODE
/COM,
/COM,Step | A value | TARGET | Mechanical APDL
/COM,
/COM, --------------------
/COM,
/out
*VWRITE,LABEL(1),OUT0_DA(1,1),OUT0_DN(1,2),OUT0_DN(1,1)
(F3.0,' ',F14.8,' ',F14.5,' ',F14.5)
/COM,
/COM, ----------------------SOLVER RESULTS
COMPARISON------------------------
/COM,
/COM, DK OF THE LAST NODE
/COM,
/COM,Step | A value | TARGET | Mechanical APDL
/COM,
/COM, --------------------
/COM,
/out
*VWRITE,LABEL(1),OUT1_DA(1,1),OUT1_DK(1,2),OUT1_DK(1,1)
(F3.0,' ',F14.8,' ',F14.5,' ',F14.5)
/out
/COM, ----------------------SOLVER RESULTS
COMPARISON------------------------
/COM,
/COM, DN OF THE LAST NODE
/COM,
/COM,Step | A value | TARGET | Mechanical APDL
/COM,
/COM, --------------------
/COM,
/out
*VWRITE,LABEL(1),OUT1_DA(1,1),OUT1_DN(1,2),OUT1_DN(1,1)
(F3.0,' ',F14.8,' ',F14.5,' ',F14.5)
/com,
/out,scratch
da_comparison0=2.5
da_comparison1=3.0
*if,OUT0_DA(6,1),lt,da_comparison0,then
/out,
/com,===================================
/com, Comparison FAILED
/com,===================================
*elseif,OUT0_DA(6,1),gt,da_comparison1,then
/out,
/com,===================================
/com, Comparison FAILED
/com,===================================
*else
/out,
/com,===================================
/com, Comparison SUCCESSFUL
/com,===================================
/out,scratch
*endif
finish
/out,scratch
SMART Method for Crack-Growth Simulation
Use Separating, Morphing, Adaptive and Remeshing Technology
(SMART) to simulate both static and fatigue crack growth in
engineering structures. SMART updates the mesh from crack-
geometry changes due to crack growth automatically at each
solution step. Mesh updates occur around the crack-front region
only and are integrated into the Mechanical APDL solver without
exiting and reentering the solver, resulting in a computationally
efficient solution of the crack-growth problem. Crack-growth
mechanics include various fracture criteria for static crack growth
and Paris' Law for fatigue crack growth.
The following topics for the SMART crack-growth method are available:
3.2.1.1. Creating a Finite Element Model with an Initial Crack
To create a finite element model with an initial crack, you can use ANSYS
Workbench, ANSYS Mechanical, Mechanical APDL, or any third-party
meshing tools that work with Mechanical APDL.
3.2.1.2. Defining the Fracture-Parameter Calculation Set
The SMART crack-growth method uses either J-integral or stress-intensity
factors (SIFS) as the fracture parameter (driving force) and the criteria for
crack-growth calculation.
For each crack, only one fracture parameter can be specified. The
parameter must be consistent with the specified crack-growth criterion
(CGROW,FCOPTION).
or
CINT,CENC,Par1,Par2,Par3
3.2.1.3. Defining the Fracture Criterion
For each crack, only one fracture criterion can be specified. The criterion
parameter must be consistent with the defined fracture-parameter
calculation (CINT).
3.2.1.3.1. Static Crack-Growth Criterion
3.2.1.3.2. Fatigue Crack-Growth Criterion
CGROW,FCOPTION,MATB,MAT_ID,CONTOUR
where MAT_ID is the material ID for the material data table and CONTOUR is the
fracture-parameter contour to use for fracture evaluation.
3.2.1.4. Setting Crack-Growth Solution Controls
3.2.1.5. Specifying the Crack-Extension Increments in a Step
where is the size of the elements along the crack front.
= DAMN
= DAMX
The cycle increment is calculated using the calculated crack
extension and the maximum stress-intensity factor of the
crack-front node:
where is the averaged size of the elements along the crack
front, is the stress-intensity factor along the crack front, and
is the averaged stress-intensity factor.
Default: INCREMENT = 1.5 x average element size along the crack front. (If a
larger INCREMENT value is specified, the program uses the default value.)
Default: INCREMENT = 0.25 x average element size along the crack front. (If a
smaller INCREMENT value is specified, the program uses the default value.)
3.2.2. Performing the SMART Crack-Growth Calculation
3.2.2.1. Static Crack-Growth Calculation
CGROW,DTMIN,MIN_TIME_STEP
The command stops the analysis when the crack extension for any
crack-front node reaches the maximum value specified.
3.2.2.2. Fatigue Crack-Growth Calculation
CGROW,FCG,METH,LC or CBC
If using the CBC method, also specify the cycle
incrementto use in a calculation step:
CGROW,FCG,DELN,INCREMENT
CGROW,FCOPTION,MATB,MAT_ID,CONTOUR
CGROW,DAMN,MIN_INCREMENT
The command stops the analysis when the crack extension for any
crack-front node reaches the maximum value specified.
3.2.3. SMART Crack-Growth Assumptions and Limitations
3.2.4. Postprocessing SMART Crack-Growth Analysis Results
Command Purpose
ANDATA Displays animated graphics data for nonlinear problems
ANTIME Generates a sequential contour animation over a range of time
*GET Retrieves a value and stores it as a scalar parameter or part of an array
parameter
PLDISP Displays the displaced structure
PLESOL Displays the solution results as discontinuous element contours
PLNSOL Displays results as continuous contours
PLVECT Displays results as vectors
PRESOL Prints element solution results
PRNSOL Prints nodal solution results
PRVECT Prints results as vector magnitude and direction cosines
3.2.5. Example: Fatigue Crack-Growth Analysis Using SMART
The fatigue calculation is based on Paris' Law. The numbers of cycles are
obtained for various crack-growth increments and compared to the
reference solution.