OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_wilkins_c.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"
#include "comlock.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine fail_wilkins_c (nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, dpla, foff, dfmax, tdel)

Function/Subroutine Documentation

◆ fail_wilkins_c()

subroutine fail_wilkins_c ( integer, intent(in) nel,
integer, intent(in) nuparam,
integer, intent(in) nuvar,
intent(in) uparam,
intent(inout) uvar,
intent(in) time,
integer, dimension(nel), intent(in) ngl,
integer, intent(in) ipg,
integer, intent(in) ilay,
integer, intent(in) ipt,
intent(in) signxx,
intent(in) signyy,
intent(in) signxy,
intent(in) signyz,
intent(in) signzx,
intent(in) dpla,
integer, dimension(nel), intent(inout) foff,
intent(inout) dfmax,
intent(out) tdel )

Definition at line 29 of file fail_wilkins_c.F.

34C-----------------------------------------------
35C 2D Wilkins Failure model
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C G l o b a l P a r a m e t e r s
42C-----------------------------------------------
43#include "units_c.inc"
44#include "comlock.inc"
45C---------+---------+---+---+--------------------------------------------
46C VAR | SIZE |TYP| RW| DEFINITION
47C---------+---------+---+---+--------------------------------------------
48C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
49C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
50C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
51C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
52C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
53C---------+---------+---+---+--------------------------------------------
54C TIME | 1 | F | R | CURRENT TIME
55C TIMESTEP| 1 | F | R | CURRENT TIME STEP
56C---------+---------+---+---+--------------------------------------------
57C SIGNXX | NEL | F | R | NEW ELASTO PLASTIC STRESS XX
58C SIGNYY | NEL | F | R | NEW ELASTO PLASTIC STRESS YY
59C ... | | | |
60C DPLA | NEL | F |R/W| PLASTIC STRAIN
61C---------+---------+---+---+--------------------------------------------
62C OFF | NEL | F | R | DELETED ELEMENT FLAG (=1. ON, =0. OFF)
63C FOFF | NEL | I |R/W| DELETED INTEGRATION POINT FLAG (=1 ON, =0 OFF)
64C DFMAX | NEL | F |R/W| MAX DAMAGE FACTOR
65C TDEL | NEL | F | W | FAILURE TIME
66C---------+---------+---+---+--------------------------------------------
67C NGL ELEMENT ID
68C IPG CURRENT GAUSS POINT (in plane)
69C ILAY CURRENT LAYER
70C IPT CURRENT INTEGRATION POINT IN THE LAYER (FOR OUTPUT ONLY)
71C---------+---------+---+---+--------------------------------------------
72C I N P U T A r g u m e n t s
73C-----------------------------------------------
74 INTEGER ,INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT
75 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL
76 my_real ,INTENT(IN) :: time
77 my_real ,DIMENSION(NEL) ,INTENT(IN) :: dpla,
78 . signxx,signyy,signxy,signyz,signzx
79 my_real,DIMENSION(NUPARAM) ,INTENT(IN) :: uparam
80C-----------------------------------------------
81C I N P U T O U T P U T A r g u m e n t s
82C-----------------------------------------------
83 INTEGER ,DIMENSION(NEL) ,INTENT(INOUT) :: FOFF
84 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: dfmax
85 my_real ,DIMENSION(NEL) ,INTENT(OUT) :: tdel
86 my_real ,DIMENSION(NEL,NUVAR) ,INTENT(INOUT) :: uvar
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER :: I,J,NINDX
91 INTEGER ,DIMENSION(NEL) :: INDX
92 my_real :: al,be,pc,dc,p,w1,w2,ss,s1,s2,s3,ss0,ss1,ss2,sig1,sig2,
93 . a,a1,a2
94C=======================================================================
95 al = uparam(1)
96 be = uparam(2)
97 pc = uparam(3)
98 dc = uparam(4)
99 nindx = 0
100C-----------------------------------------------
101 DO i=1,nel
102 IF (foff(i) == 1) THEN
103 ss1 = half*(signxx(i) + signyy(i))
104 ss2 = half*(signxx(i) - signyy(i))
105 ss0 = sqrt(ss2**2 + signxy(i)**2)
106 sig1 = ss1 + ss0
107 sig2 = ss1 - ss0
108 ss = sig1
109 IF (sig2 > sig1) THEN
110 sig1 = sig2
111 sig2 = ss
112 ENDIF
113 p = third*(signxx(i) + signyy(i))
114 ss1 = ss1 - p
115 s1 = ss1 + ss0
116 s2 = ss1 - ss0
117 s3 = -p
118 IF (sig2 > zero) THEN
119 a1 = s2 / s1
120 a2 = s2 / s3
121 ELSEIF (sig1 < zero) THEN
122 a1 = s1 / s3
123 a2 = s1 / s2
124 ELSEIF (sig1 /= zero) THEN
125 a1 = s3 / s1
126 a2 = s3 / s2
127 ELSE
128 a1 = one
129 a2 = one
130 ENDIF
131 a = max(a1,a2)
132 w1 = max(em20,(two - a))**be
133 w2 = one - p/pc
134 w2 = (max(em20,one/w2))**al
135 uvar(i,1) = uvar(i,1) + w1*w2*dpla(i)
136 IF (uvar(i,1) >= dc) THEN
137 nindx = nindx + 1
138 indx(nindx) = i
139 foff(i) = 0
140 tdel(i) = time
141 ENDIF
142 ENDIF
143 ENDDO
144c
145c--- Maximum Damage storing for output : 0 < DFMAX < 1
146 DO i=1,nel
147 dfmax(i) = min(one,max(dfmax(i),uvar(i,1)/dc))
148 ENDDO
149c------------------------
150 IF (nindx > 0) THEN
151 DO j=1,nindx
152 i = indx(j)
153#include "lockon.inc"
154 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
155 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
156#include "lockoff.inc"
157 END DO
158 END IF
159c------------------------
160 2000 FORMAT(1x,'FAILURE (WILKINS) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
161 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3)
162 2100 FORMAT(1x,'FAILURE (WILKINS) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
163 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3,1x,'AT TIME :',1pe12.4)
164c------------------------
165 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21