/COM,ANSYS MEDIA REL. 2025R1 (11/08/2024) REF. VERIF. MANUAL: REL. 2025R1
/VERIFY,VM272
/TITLE,VM272, TWO AND THREE DIMENSIONAL FRICTIONAL HERTZ CONTACT
/COM, REFERENCE: YANG, B., LAURSEN, T.A., MEGN, X. TWO DIMENSIONAL MORTAR CONTACT
/COM, METHODS FOR LARGE DEFORMATION FRICTIONAL SLIDING, IJNME VOL.62, PP 1183-1225.
/COM, (2005)
/COM, ANALYTICAL SOLUTION FROM REFERENCE: JOHNSON KL, "CONTACT MECHANICS"
/COM, CAMBRIDGE UNIVERSITY PRESS: CAMBRIDGE, 1985.
/COM,
C*** USING 2D LOWER ORDER ELEMENTS
/PREP7
/NOPR
MP,EX,1,200.0 !YOUNG'S MODULUS (N/mm^2)
MP,NUXY,1,0.3 !POISSON'S RATIO
MP,MU,1,0.2 !COEFFICIENT OF FRICTION
ET,1,PLANE182 !2D STRUCTURAL SOLID
ET,2,PLANE182 !2D STRUCTURAL SOLID
KEYO,1,3,2 !PLANE STRAIN
KEYO,2,3,2 !PLANE STRAIN
PCIRC,8, ,0,90, !CONTACT SIDE
PCIRC,8, ,90,180, !CREATE SEMICIRCLES
RECT,0,1,7,8 !CREATE RECTANGLES
RECT,-1,0,7,8
WPOFF,0,16 !TARGET SIDE
PCIRC,8, ,180,270, !CREATE SEMICIRCLES
PCIRC,8, ,270,360,
WPAVE,0,0,0
!*
RECT,0,1,8,9 !CREATE RECTANGLES
RECT,-1,0,8,9
AOVLAP,1,3 !COMBINES THE AREAS
AOVLAP,2,4
AOVLAP,6,7
AOVLAP,5,8
ASEL,S,,,1,2 !DELETES EXCESS GEOMETIES
ASEL,A,,,6,9,3
ALLSEL,BELOW,AREA
ADEL,ALL
LSEL,U,,,2,6,4
LSEL,U,,,20,30,10
LDEL,ALL
KSEL,U,,,2,4,2
KSEL,U,,,10,16,3
KSEL,U,,,18,21,3
KSEL,U,,,29
KDEL,ALL
ALLSEL
AGLUE,3,10,11,12 !MERGES EXISTING AREAS
AGLUE,4,7,13,14
K,2,4 !CREATES POINTS AND AREAS
K,6,-4 !TO DIVIDE THE GEOMETRY
K,7,4,16 !AND MESH IT EXACTLY AS NEEDED
K,9,-4,16
A,3,2,8,12
A,7,20,24,23
A,20,9,28,24
A,11,6,3,12
APTN,2,7 !PARTITIONS OVERLAPPING AREAS
APTN,9,13 !INTO SEPERATE ENTIITES
APTN,8,10
APTN,5,11
AGLUE,1,3,7,8,11,12
AGLUE,2,4,6,9,10,13
LESI,27,,,8 !SETS NUMBER OF ELEMENTS
LESI,33,,,8 !ALONG EACH LINE
LESI,9,,,8
LESI,10,,,8
LESI,15,,,8
LESI,34,,,16
LESI,17,,,16
LESI,8,,,16
LESI,25,,,16
LESI,36,,,16
LESI,16,,,18
LESI,4,,,18
LESI,26,,,18
LESI,11,,,18
LESI,1,,,18
LESI,2,,,18
LESI,3,,,10
LESI,13,,,10
LESI,14,,,10
LESI,24,,,10
LESI,19,,,10
LESI,38,,,20
LESI,20,,,20
LESI,39,,,20
LESI,22,,,20
LESI,40,,,20
LESI,18,,,40
LESI,23,,,40
LESI,21,,,40
LESI,7,,,40
LESI,5,,,40
LESI,6,,,40
MSHAPE,0,2D !MESH TYPE IS SELECTED
MSHKEY,1
/OUT,SCRATCH
TYPE,1 !BOTTOM IS MESHED WITH TYPE 1
AMESH,1
AMESH,3
AMESH,12
AMESH,8
AMESH,7
AMESH,11
TYPE,2 !TOP IS MESHED WITH TYPE 2
AMESH,4
AMESH,6
AMESH,2
AMESH,9
AMESH,10
AMESH,13
ET,3,CONTA172 !2D 3-NODE SURFACE SURFACE CONTACT
KEYO,3,4,3 !DETECTION BY MORTAR
KEYO,3,10,0 !CONTACT STIFFNESS BY STRESS
KEYO,3,5,1 !CLOSE INITIAL GAP
ET,4,TARGE169 !TARGET ELEMENTS
LSEL,S,,,5,6,1 !CHOOSE LOCATION FOR CONTACT
NSLL,S,1
ESLN,S
TYPE,3 !MESH WITH CONTACT ELEMENTS
REAL,3
ESURF
TYPE,4 !CHOOSE LOCATION FOR TARGET
LSEL,S,,,1,2,1
NSLL,S,1
ESLN,S
ESURF !MESH WITH TARGET ELEMENTS
ET,5,SURF153 !2D SURFACE EFFECT ELEMENTS
LSEL,S,,,3 !PICK THE TOP OF THE MODEL
LSEL,A,,,18,19
LSEL,A,,,21
NSLL,S,1
ESLN,S
TYPE,5
REAL,5
ESURF !ADD SURFACE ELEMENTS
ET,10,CONTA172 !2D 3-NODE SURFACE SURFACE CONTACT ELEMENT
KEYOP,10,2,2 !CONTACT STIFFNESS BY STRESS
KEYOP,10,4,2 !DETECTION BY TARGET NORMAL
KEYOP,10,12,5 !ALWAYS BONDED
LSEL,S,,,3 !PICK THE TOP OF THE MODEL
LSEL,A,,,18,19
LSEL,A,,,21
NSLL,S,1
ESLN,S
TYPE,10
REAL,10
ESURF !MESH WITH CONTACT ELEMENTS
N,100000,,16 !ADD A PILOT NODE
ET,11,TARGE169,,1 !TARGET ELEMENTS FOR PILOT
TYPE,11
TSHAP,PILOT
E,100000 !MAKE THE PILOT ELEMENT
D,100000,ROTZ,0 !SET BOUNDARY CONDITIONS
ALLSE
NSEL,S,LOC,Y
D,ALL,ALL
ALLSEL
/GOLIST
R,3
FINISH
/SOLUTION
ANTYPE,STATIC
OUTRES,ALL,ALL !SOLUTION OPTIONS
NSUB,250,2500,15
ESEL,S,ENAME,,SURF153
SFE,ALL,1,PRES,1,0.625 !SMALL AXIAL PRESSURE LOAD
ALLSEL
CNVTOL,U,,0.0001
CNVTOL,F,,0.0001
NROP,UNSYM
NLGEOM,ON !LARGE DEFLECTION
SOLVE !SOLVE FIRST LOADSTEP
NSUB,6,100,6
ESEL,S,ENAME,,153
SFE,ALL,2,PRES,1,-0.05851 !SMALL TANGENTIAL LOAD
ALLSEL
!RMOD,3,11,-1E-8 !ALLOW VERY LITTLE DAMPING
SOLVE
FINISH
/POST1
SET,LAST
PI=ACOS(-1) !PARAMS FOR ANALYTIC SOLUTION
P=10 !CALCULATED BELOW
R=8
V=0.3
E=200
U=0.2
Q=0.93622
B=2*SQRT(P*R*((1-V**2)/(PI*E))) !MAXIMUM X-LOCATION OF CONTACT
SNMAX=SQRT((P*E)/(PI*(1-V**2)*R)) !MAXIMUM CONTACT PRESSURE
C=B*SQRT(1-(Q/(U*P))) !LOCATION OF STICK-SLIP BOUNDARY
ESEL,S,TYPE,,3 !PICK THE IMPORTANT CONTACT ELEMENTS
NSEL,S,LOC,X,0,B !AND NODES
ESLN,R
NSLE
NSEL,U,LOC,X,-0.1,-0.001
ESLN,R,1
ETAB,PRES_I,SMISC,1 !TABULATE THE PRESSURE AND FRICTION RESULTS
ETAB,FRIC_I,SMISC,3 !AT LEFT NODE OF ALL ELEMENTS FOR USE BELOW
ETAB,CSTAT,NMISC,1
*GET,NUMNODE1,NODE,,COUNT !GET THE NUMBER OF NODES IN SELECTION
X=NUMNODE1 !STORE THIS NUMBER
*DIM,LOCARRAY1,ARRAY,NUMNODE1+1,2 !MAKE AN ARRAY FOR NODE NUMBER AND X LOC
*GET,NODENUM,NODE,,NUM,MIN !GET FIRST NODE NUMBER
*DO,I,1,X !LOOP THROUGH SELECTION TO FILL ARRAY
LOCARRAY1(I,1)=NX(NODENUM) !X LOCATIONS
LOCARRAY1(I,2)=NODENUM !NODE NUMBER
*GET,NODENUM,NODE,NODENUM,NXTH !GET THE NEXT NODE NUMBER
*ENDDO !REPEAT
LOCARRAY1(NUMNODE1+1,1)=B !ADD AN ENTRY FOR THEORETICAL MAX CONTA
LOCARRAY1(NUMNODE1+1,2)=0
*GET,NUMELEM1,ELEM,,COUNT !GET THE NUMBER OF ELEMENTS IN SELECTION
*DIM,RES1,ARRAY,NUMELEM1+1,6 !MAKE AN ARRAY FOR ALL RESULTS NEEDED
*GET,ELEMNUM,ELEM,,NUM,MIN !GET FIRST ELEMENT NUMBER
*DO,K,1,NUMELEM1 !LOOP THROUGH ELEMENTS IN SELECTION
*GET,RES1(K,1),ELEM,ELEMNUM,NODE,1 !FILL ARRAY WITH NODE NUMBER
*GET,RES1(K,2),ETAB,1,ELEM,ELEMNUM !FILL ARRAY WITH TABULATED RESULT: PRES
*GET,RES1(K,3),ETAB,2,ELEM,ELEMNUM !FILL ARRAY WITH TABULATED RESULT: FRIC
*GET,RES1(K,4),ETAB,3,ELEM,ELEMNUM !FILL ARRAY WITH TABULATED RESULT: STAT
*GET,ELEMNUM,ELEM,ELEMNUM,NXTH !GET THE NEXT ELEMENT NUMBER
*ENDDO !REPEAT
RES1(NUMELEM1+1,1)=0 !ADD AN ENTRY FOR THEORETICAL MAX CONTA
RES1(NUMELEM1+1,2)=0
RES1(NUMELEM1+1,3)=0
RES1(NUMELEM1+1,4)=0
J=1
*DOWHILE,J !BUBBLE SORT OF NODES TO MATCH ELEMENT
J=0 !RESULTS WITH NODE NUMBERS AND
*DO,I,1,X !ORDER THE ARRAY BY X LOCATION
VAR1=LOCARRAY1(I,1)
VAR2=LOCARRAY1(I+1,1)
*IF,VAR1,GT,VAR2,THEN
TEMP1=LOCARRAY1(I,1)
LOCARRAY1(I,1)=LOCARRAY1(I+1,1)
LOCARRAY1(I+1,1)=TEMP1
TEMP2=LOCARRAY1(I,2)
LOCARRAY1(I,2)=LOCARRAY1(I+1,2)
LOCARRAY1(I+1,2)=TEMP2
J=1
*ENDIF
*ENDDO
*ENDDO
!CALCULATE ANALYTICAL SOLUTION FOR PRESSURE
*DO,I,1,NUMELEM1+1 !AND FRICTION RELATIONSHIP WITH X LOCATION
LOCX=LOCARRAY1(I,1) !LOOP THROUGH ALL NODES
*IF,LOCX,LT,B,THEN !IF(1) NODE IS WITHIN CONTACT RANGE
!EQUATION FOR PRESSURE
RES1(I,5)=SNMAX*SQRT(1-(((LOCARRAY1(I,1))/B)**2))
*IF,LOCX,LT,C,THEN !IF(2) NODE IS WITHIN STICK RANGE
!EQUATION FOR FRICTION
RES1(I,6)=(U*SNMAX/B)*(SQRT(B**2-LOCX**2)-SQRT(C**2-LOCX**2))
*ELSE !ELSE(2) NODE IS WITHIN SLIDE RANGE
!EQUATION FOR FRICTION
RES1(I,6)=U*RES1(I,5)
*ENDIF
*ELSE !ELSE(1) ASSIGN AS ZERO TO AVIOD DIVIDING
RES1(I,5)=0 !BY ZERO
RES1(I,6)=0
*ENDIF
*ENDDO
PARSAV,ALL,vm272-1,parm
*DIM,LABEL1,,7 !CONTACT PRESSURE LISTING
*DIM,VALUE1,,7,3
J=1
*DO,I,1,NUMELEM1,4
LABEL1(J)=LOCARRAY1(I,1)
VALUE1(J,1)=RES1(I,5)
VALUE1(J,2)=RES1(I,2)
ZERO1=RES1(I,5)
ZERO2=RES1(I,2)
*IF,ZERO1,EQ,0,AND,ZERO2,EQ,0,THEN
VALUE1(J,3)=1
*ELSEIF,ZERO1,EQ,0,AND,ZERO2,NE,0,THEN
VALUE1(J,3)=0
*ELSE
VALUE1(J,3)=ABS(RES1(I,2)/RES1(I,5))
*ENDIF
J=J+1
*ENDDO
*DIM,LABEL2,,7 !CONTACT FRICTION LISTING
*DIM,VALUE2,,7,3
J=1
*DO,I,1,NUMELEM1,4
LABEL2(J)=LOCARRAY1(I,1)
VALUE2(J,1)=RES1(I,6)
VALUE2(J,2)=RES1(I,3)
ZERO1=RES1(I,6)
ZERO2=RES1(I,3)
*IF,ZERO1,EQ,0,AND,ZERO2,EQ,0,THEN
VALUE2(J,3)=1
*ELSEIF,ZERO1,EQ,0,AND,ZERO2,NE,0,THEN
VALUE2(J,3)=0
*ELSE
VALUE2(J,3)=ABS(RES1(I,3)/RES1(I,6))
*ENDIF
J=J+1
*ENDDO
/COM,
/OUT,vm272,vrt
/COM,----------------- VM272 RESULTS COMPARISON -------------------
/COM,
/COM,
/COM,2D LOW PRES | TARGET | Mechanical APDL | RATIO
/COM,
*VWRITE,LABEL1(1),VALUE1(1,1),VALUE1(1,2),VALUE1(1,3)
(6X,F5.3,6X,' ',F6.4,6X,' ',F6.4,6X,' ',F5.3)
/COM,
/COM,
/COM,----------------- VM272 RESULTS COMPARISON -------------------
/COM,
/COM,
/COM,2D LOW FRIC | TARGET | Mechanical APDL | RATIO
/COM,
*VWRITE,LABEL2(1),VALUE2(1,1),VALUE2(1,2),VALUE2(1,3)
(6X,F5.3,6X,' ',F6.4,6X,' ',F6.4,6X,' ',F5.3)
/COM,
/OUT,
rlist,all
etlist,all
FINI
/CLEAR,NOSTART
/OUT,
C*** USING 3D LOWER ORDER ELEMENTS
/PREP7
/NOPR
MP,EX,1,200.0 !YOUNG'S MODULUS (N/mm^2)
MP,NUXY,1,0.3 !POISSON'S RATIO
MP,MU,1,0.2 !COEFFICIENT OF FRICTION
ET,1,SOLID185 !3D STRUCTURAL SOLID
ET,2,SOLID185 !3D STRUCTURAL SOLID
PCIRC,8, ,0,90, !CONTACT SIDE
PCIRC,8, ,90,180, !CREATE SEMICIRCLES
RECT,0,1,7,8 !CREATE RECTANGLES
RECT,-1,0,7,8
WPOFF,0,16 !TARGET SIDE
PCIRC,8, ,180,270, !CREATE SEMICIRCLES
PCIRC,8, ,270,360,
WPAVE,0,0,0
!*
RECT,0,1,8,9 !CREATE RECTANGLES
RECT,-1,0,8,9
AOVLAP,1,3 !COMBINES THE AREAS
AOVLAP,2,4
AOVLAP,6,7
AOVLAP,5,8
ASEL,S,,,1,2 !DELETES EXCESS GEOMETIES
ASEL,A,,,6,9,3
ALLSEL,BELOW,AREA
ADEL,ALL
LSEL,U,,,2,6,4
LSEL,U,,,20,30,10
LDEL,ALL
KSEL,U,,,2,4,2
KSEL,U,,,10,16,3
KSEL,U,,,18,21,3
KSEL,U,,,29
KDEL,ALL
ALLSEL
AGLUE,3,10,11,12 !MERGES EXISTING AREAS
AGLUE,4,7,13,14
K,2,4 !CREATES POINTS AND AREAS
K,6,-4 !TO DIVIDE THE GEOMETRY
K,7,4,16 !AND MESH IT EXACTLY AS NEEDED
K,9,-4,16
A,3,2,8,12
A,7,20,24,23
A,20,9,28,24
A,11,6,3,12
APTN,2,7 !PARTITIONS OVERLAPPING AREAS
APTN,9,13 !INTO SEPERATE ENTIITES
APTN,8,10
APTN,5,11
AGLUE,1,3,7,8,11,12
AGLUE,2,4,6,9,10,13
LESI,27,,,8 !SETS NUMBER OF ELEMENTS
LESI,33,,,8 !ALONG EACH LINE
LESI,9,,,8
LESI,10,,,8
LESI,15,,,8
LESI,34,,,16
LESI,17,,,16
LESI,8,,,16
LESI,25,,,16
LESI,36,,,16
LESI,16,,,18
LESI,4,,,18
LESI,26,,,18
LESI,11,,,18
LESI,1,,,18
LESI,2,,,18
LESI,3,,,10
LESI,13,,,10
LESI,14,,,10
LESI,24,,,10
LESI,19,,,10
LESI,38,,,20
LESI,20,,,20
LESI,39,,,20
LESI,22,,,20
LESI,40,,,20
LESI,18,,,40
LESI,23,,,40
LESI,21,,,40
LESI,7,,,40
LESI,5,,,40
LESI,6,,,40
K,30,0,0 ,0
K,31,0,0 ,1
K,32,0,16,0
K,33,0,16,1
L,30,31,1
L,32,33,1
VDRAG,1,3,12,8,7,11,12 !DRAGS THE BOTTOM INTO A VOLUME
VDRAG,4,6,2,9,10,13,28
MSHAPE,0,3D !MESH TYPE IS SELECTED
MSHKEY,1
/OUT,SCRATCH
TYPE,1 !BOTTOM IS MESHED WITH TYPE 1
VMESH,1
VMESH,2
VMESH,3
VMESH,4
VMESH,5
VMESH,6
TYPE,2 !TOP IS MESHED WITH TYPE 2
VMESH,7
VMESH,8
VMESH,9
VMESH,10
VMESH,11
VMESH,12
ET,3,CONTA174 !3D 8-NODE SURFACE SURFACE CONTACT
KEYO,3,4,3 !DETECTION BY MORTAR
KEYO,3,10,0 !CONTACT STIFFNESS BY STRESS
KEYO,3,5,1 !CLOSE INITIAL GAP
ET,4,TARGE170 !TARGET ELEMENTS
ASEL,S,,,35,41,6
NSLA,S,1
ESLN,S
TYPE,3 !MESH WITH CONTACT ELEMENTS
REAL,3
ESURF
TYPE,4 !CHOOSE LOCATION FOR TARGET
ASEL,S,,,14,18,4
NSLA,S,1
ESLN,S
ESURF !MESH WITH TARGET ELEMENTS
ET,5,SURF154 !3D SURFACE EFFECT ELEMENTS
ASEL,S,,,51,55,4 !PICK THE TOP OF THE MODEL
ASEL,A,,,45,48,3
NSLA,S,1
ESLN,S
TYPE,5
REAL,5
ESURF !ADD SURFACE ELEMENTS
ET,10,CONTA174 !3D 8-NODE SURFACE SURFACE CONTACT ELEMENT
KEYOP,10,2,2 !CONTACT STIFFNESS BY STRESS
KEYOP,10,4,2 !DETECTION BY TARGET NORMAL
KEYOP,10,12,5 !ALWAYS BONDED
ASEL,S,,,51,55,4 !PICK THE TOP OF THE MODEL
ASEL,A,,,45,48,3
NSLA,S,1
ESLN,S
TYPE,10
REAL,10
ESURF !MESH WITH CONTACT ELEMENTS
N,100000,,16 !ADD A PILOT NODE
ET,11,TARGE170,,1 !TARGET ELEMENTS FOR PILOT
TYPE,11
TSHAP,PILOT
E,100000 !MAKE THE PILOT ELEMENT
D,100000,ROTZ,0 !SET BOUNDARY CONDITIONS
ALLSE
NSEL,S,LOC,Y
D,ALL,ALL
ALLSEL
D,ALL,UZ
NSEL,S,LOC,Y,16
D,ALL,ROTX
D,ALL,ROTY
/GOLIST
R,3
RMOD,3,3,10 !HIGH FKN TO MINIMIZE PENETRATION
RMOD,3,4,0.01 !SMALL FTOLN TO MINIMIZE PENETRATION
RMOD,3,23,1E-4
FINISH
/SOLU
OUTRES,ALL,ALL !SOLUTION OPTIONS
NSUB,200,500,10
ESEL,S,ENAME,,154
SFE,ALL,1,PRES,1,0.625 !SMALL AXIAL PRESSURE LOAD
ALLSEL
CNVTOL,U,,0.0001
CNVTOL,F,,0.0001
NROP,UNSYM
NLGEOM,ON !LARGE DEFLECTION
SOLVE !SOLVE FIRST LOADSTEP
NSUB,4,10,1
NSEL,S,LOC,X,-4,-8
ESLN,S,1
ESEL,R,ENAME,,154
SFE,ALL,3,PRES,1,0.05851 !SMALL TANGENTIAL LOAD
NSEL,S,LOC,X,-4,8
ESLN,S,1
ESEL,R,ENAME,,154
SFE,ALL,3,PRES,1,-0.05851
ALLSEL
SOLVE
FINISH
/POST1
SET,LAST
/OUT
PI=ACOS(-1) !PARAMS FOR ANALYTIC SOLUTION
P=10 !CALCULATED BELOW
R=8
V=0.3
E=200
U=0.2
Q=0.93622
B=2*SQRT(P*R*((1-V**2)/(PI*E))) !MAXIMUM X-LOCATION OF CONTACT
SNMAX=SQRT((P*E)/(PI*(1-V**2)*R)) !MAXIMUM CONTACT PRESSURE
C=B*SQRT(1-(Q/(U*P))) !LOCATION OF STICK-SLIP BOUNDARY
ESEL,S,TYPE,,3 !PICK THE IMPORTANT CONTACT ELEMENTS
NSEL,S,LOC,X,0,B !AND NODES
ESLN,R
ESEL,U,ELEM,,4000
NSLE,S
NSEL,R,LOC,Z,1
ETAB,PRES_I,SMISC,1 !TABULATE THE PRESSURE AND FRICTION RESULTS
ETAB,TAUR_I,SMISC,5 !AT LEFT NODE OF ALL ELEMENTS FOR USE BELOW
ETAB,TAUS_I,SMISC,9
ETAB,CSTAT,NMISC,1
*GET,NUMNODE2,NODE,,COUNT !GET THE NUMBER OF NODES IN SELECTION
X=NUMNODE2 !STORE THIS NUMBER
*DIM,LOCARRAY2,ARRAY,NUMNODE2+1,2 !MAKE AN ARRAY FOR NODE NUMBER AND X LOC
*GET,NODENUM,NODE,,NUM,MIN !GET FIRST NODE NUMBER
*DO,I,1,X !LOOP THROUGH SELECTION TO FILL ARRAY
LOCARRAY2(I,1)=NX(NODENUM) !X LOCATIONS
LOCARRAY2(I,2)=NODENUM !NODE NUMBER
*GET,NODENUM,NODE,NODENUM,NXTH !GET THE NEXT NODE NUMBER
*ENDDO !REPEAT
LOCARRAY2(NUMNODE2+1,1)=B !ADD AN ENTRY FOR THEORETICAL MAX CONTA
LOCARRAY2(NUMNODE2+1,2)=0
*GET,NUMELEM2,ELEM,,COUNT !GET THE NUMBER OF ELEMENTS IN SELECTION
*DIM,RES2,ARRAY,NUMELEM2+1,6 !MAKE AN ARRAY FOR ALL RESULTS NEEDED
*GET,ELEMNUM,ELEM,,NUM,MIN !GET FIRST ELEMENT NUMBER
*DO,K,1,NUMELEM2 !LOOP THROUGH ELEMENTS IN SELECTION
*GET,RES2(K,1),ELEM,ELEMNUM,NODE,1 !FILL ARRAY WITH NODE NUMBER
*GET,RES2(K,2),ETAB,1,ELEM,ELEMNUM !FILL ARRAY WITH TABULATED RESULT: PRES
*GET,TAUS,ETAB,2,ELEM,ELEMNUM !FILL ARRAY WITH TABULATED RESULT: FRIC
*GET,TAUR,ETAB,3,ELEM,ELEMNUM
RES2(K,3)=SQRT(TAUR**2+TAUS**2)
*GET,RES2(K,4),ETAB,4,ELEM,ELEMNUM !FILL ARRAY WITH TABULATED RESULT: STAT
*GET,ELEMNUM,ELEM,ELEMNUM,NXTH !GET THE NEXT ELEMENT NUMBER
*ENDDO !REPEAT
RES2(NUMELEM2+1,1)=0 !ADD AN ENTRY FOR THEORETICAL MAX CONTA
RES2(NUMELEM2+1,2)=0
RES2(NUMELEM2+1,3)=0
RES2(NUMELEM2+1,4)=0
J=1
*DOWHILE,J !BUBBLE SORT OF NODES TO MATCH ELEMENT
J=0 !RESULTS WITH NODE NUMBERS AND
*DO,I,1,X !ORDER THE ARRAY BY X LOCATION
VAR1=LOCARRAY2(I,1)
VAR2=LOCARRAY2(I+1,1)
*IF,VAR1,GT,VAR2,THEN
TEMP1=LOCARRAY2(I,1)
LOCARRAY2(I,1)=LOCARRAY2(I+1,1)
LOCARRAY2(I+1,1)=TEMP1
TEMP2=LOCARRAY2(I,2)
LOCARRAY2(I,2)=LOCARRAY2(I+1,2)
LOCARRAY2(I+1,2)=TEMP2
J=1
*ENDIF
*ENDDO
*ENDDO
!CALCULATE ANALYTICAL SOLUTION FOR PRESSURE
*DO,I,1,NUMELEM2+1 !AND FRICTION RELATIONSHIP WITH X LOCATION
LOCX=LOCARRAY2(I,1) !LOOP THROUGH ALL NODES
*IF,LOCX,LT,B,THEN !IF(1) NODE IS WITHIN CONTACT RANGE
!EQUATION FOR PRESSURE
RES2(I,5)=SNMAX*SQRT(1-(((LOCARRAY2(I,1))/B)**2))
*IF,LOCX,LT,C,THEN !IF(2) NODE IS WITHIN STICK RANGE
!EQUATION FOR FRICTION
RES2(I,6)=(U*SNMAX/B)*(SQRT(B**2-LOCX**2)-SQRT(C**2-LOCX**2))
*ELSE !ELSE(2) NODE IS WITHIN SLIDE RANGE
!EQUATION FOR FRICTION
RES2(I,6)=U*RES2(I,5)
*ENDIF
*ELSE !ELSE(1) ASSIGN AS ZERO TO AVIOD DIVIDING
RES2(I,5)=0 !BY ZERO
RES2(I,6)=0
*ENDIF
*ENDDO
PARSAV,ALL,vm272-2,parm
*DIM,LABEL3,,7 !CONTACT PRESSURE LISTING
*DIM,VALUE3,,7,3
J=1
*DO,I,1,NUMELEM2,4
LABEL3(J)=LOCARRAY2(I,1)
VALUE3(J,1)=RES2(I,5)
VALUE3(J,2)=RES2(I,2)
ZERO1=RES2(I,5)
ZERO2=RES2(I,2)
*IF,ZERO1,EQ,0,AND,ZERO2,EQ,0,THEN
VALUE3(J,3)=1
*ELSEIF,ZERO1,EQ,0,AND,ZERO2,NE,0,THEN
VALUE3(J,3)=0
*ELSE
VALUE3(J,3)=ABS(RES2(I,2)/RES2(I,5))
*ENDIF
J=J+1
*ENDDO
*DIM,LABEL4,,7 !CONTACT FRICTION LISTING
*DIM,VALUE4,,7,3
J=1
*DO,I,1,NUMELEM2,4
LABEL4(J)=LOCARRAY2(I,1)
VALUE4(J,1)=RES2(I,6)
VALUE4(J,2)=RES2(I,3)
ZERO1=RES2(I,6)
ZERO2=RES2(I,3)
*IF,ZERO1,EQ,0,AND,ZERO2,EQ,0,THEN
VALUE4(J,3)=1
*ELSEIF,ZERO1,EQ,0,AND,ZERO2,NE,0,THEN
VALUE4(J,3)=0
*ELSE
VALUE4(J,3)=ABS(RES2(I,3)/RES2(I,6))
*ENDIF
J=J+1
*ENDDO
/COM,
/OUT,vm272,vrt,,APPEND
/COM,----------------- VM272 RESULTS COMPARISON -------------------
/COM,
/COM,
/COM,3D LOW PRES | TARGET | Mechanical APDL | RATIO
/COM,
*VWRITE,LABEL3(1),VALUE3(1,1),VALUE3(1,2),VALUE3(1,3)
(6X,F5.3,6X,' ',F6.4,6X,' ',F6.4,6X,' ',F5.3)
/COM,
/COM,
/COM,----------------- VM272 RESULTS COMPARISON -------------------
/COM,
/COM,
/COM,3D LOW FRIC | TARGET | Mechanical APDL | RATIO
/COM,
*VWRITE,LABEL4(1),VALUE4(1,1),VALUE4(1,2),VALUE4(1,3)
(6X,F5.3,6X,' ',F6.4,6X,' ',F6.4,6X,' ',F5.3)
/COM,
/OUT,
*LIST,vm272,vrt
etlist,all
rlist,all
FINI
/CLEAR,NOSTART
/OUT,SCRATCH
/SHOW,PNG
PARRES, ,vm272-1,parm
PARRES,CHANGE,vm272-2,parm
*DIM,RES_TABLE1,TABLE,NUMELEM1+1,6 !CREATE A "TABLE" DATA FORMAT FOR CLEANER
RES_TABLE1(0,1)=0 !PLOTTING THAN POSSIBLE WITH ARRAYS ALONE
RES_TABLE1(0,2)=0 !ZERO COLUMN FILLED WITH ZEROS
RES_TABLE1(0,3)=0
RES_TABLE1(0,4)=0
RES_TABLE1(0,5)=0
RES_TABLE1(0,6)=0
!HIGH MESH DENSITY/LOWER ORDER
*DO,I,1,NUMELEM1+1 !LOOP THROUGH NODE ARRAY
N_NODE=LOCARRAY1(I,2) !STORE THE NODE NUMBER
*DO,J,1,NUMELEM1+1 !LOOP THROUGH ELEMENT RESULT ARRAY
TEMP=RES1(J,1) !STORE LEFT NODE OF EACH ELEMENT
*IF,TEMP,EQ,N_NODE,THEN !IF THEY ARE THE SAME NODE
RES_TABLE1(I,3) =RES1(J,2) !FILL TABLE WITH 2D LOWER ORDER PRESSURE
RES_TABLE1(I,4) =RES1(J,3) !FILL TABLE WITH 2D LOWER ORDER FRICTION
RES_TABLE1(I,5) =RES2(J,2) !FILL TABLE WITH 3D LOWER ORDER PRESSURE
RES_TABLE1(I,6) =RES2(J,3) !FILL TABLE WITH 3D LOWER ORDER FRICTION
*ENDIF
*ENDDO
*ENDDO
!CALCULATE ANALYTICAL SOLUTION FOR PRESSURE
*DO,I,1,NUMELEM1+1 !AND FRICTION RELATIONSHIP WITH X LOCATION
RES_TABLE1(I,0)=LOCARRAY1(I,1) !FILL THE ZERO COLUMN OF THE TABLE (X-AXIS)
LOCX=LOCARRAY1(I,1) !LOOP THROUGH ALL NODES
*IF,LOCX,LT,B,THEN !IF(1) NODE IS WITHIN CONTACT RANGE
!EQUATION FOR PRESSURE
RES_TABLE1(I,1)=RES1(I,5)
*IF,LOCX,LT,C,THEN !IF(2) NODE IS WITHIN STICK RANGE
!EQUATION FOR FRICTION
RES_TABLE1(I,2)=RES1(I,6)
*ELSE !ELSE(2) NODE IS WITHIN SLIDE RANGE
!EQUATION FOR FRICTION
RES_TABLE1(I,2)=RES1(I,6)
*ENDIF
*ELSE !ELSE(1) ASSIGN AS ZERO TO AVIOD DIVIDING
RES_TABLE1(I,1)=0 !BY ZERO
RES_TABLE1(I,2)=0
*ENDIF
*ENDDO
/OUT,
/TITLE,FRICTIONAL HERTZIAN CONTACT LOWER ORDER
/GCOLUMN,1,ANA_PRE !ASSIGNS ANALYTICAL PRESSURE
/GMARKER,1,0
/GCOLUMN,2,ANA_FRI !ASSIGNS ANALYTICAL FRICTION
/GMARKER,2,0
/GCOLUMN,3,PRES 1 !ASSIGNS 2D LOWER ORDER PRESSURE
/GMARKER,3,1
/GCOLUMN,4,FRIC 1 !ASSIGNS 2D LOWER ORDER FRICTION
/GMARKER,4,1
/GCOLUMN,5,PRES 3 !ASSIGNS 3D LOWER ORDER PRESSURE
/GMARKER,5,3
/GCOLUMN,6,FRIC 3 !ASSIGNS 3D LOWER ORDER PRESSURE
/GMARKER,6,3
/XRANGE,0,0.7
/AXLAB,X,X DISTANCE FROM CENTER !X-AXIS LABEL
/AXLAB,Y,CONTACT RESULTS !Y-AXIS LABEL
/YRANGE,0,10
*VPLO,RES_TABLE1(1,0),RES_TABLE1(1,1),2,3,4,5,6
FINISH