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

Go to the source code of this file.

Functions/Subroutines

subroutine delm01law (fail, nel, nuvar, time, timestep, ngl, iply, off, signyz0, signxz0, signzz, uvar, offi, reduc, count, signyz, signxz)

Function/Subroutine Documentation

◆ delm01law()

subroutine delm01law ( type (fail_param_), intent(in) fail,
integer nel,
integer nuvar,
time,
timestep,
integer, dimension(*) ngl,
integer iply,
off,
signyz0,
signxz0,
signzz,
uvar,
offi,
reduc,
count,
signyz,
signxz )

Definition at line 31 of file delm01law.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE fail_param_mod
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C---------+---------+---+---+--------------------------------------------
45C VAR | SIZE |TYP| RW| DEFINITION
46C---------+---------+---+---+--------------------------------------------
47C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
48C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
49C---------+---------+---+---+--------------------------------------------
50C TIME | 1 | F | R | CURRENT TIME
51C TIMESTEP| 1 | F | R | CURRENT TIME STEP
52C EPSPXX | NEL | F | R | STRAIN RATE XX
53C EPSPYY | NEL | F | R | STRAIN RATE YY
54C ... | | | |
55C DEPSXX | NEL | F | R | STRAIN INCREMENT XX
56C DEPSYY | NEL | F | R | STRAIN INCREMENT YY
57C ... | | | |
58C EPSXX | NEL | F | R | STRAIN XX
59C EPSYY | NEL | F | R | STRAIN YY
60C ... | | | |
61C SIGOXX | NEL | F | R | OLD ELASTO PLASTIC STRESS XX
62C SIGOYY | NEL | F | R | OLD ELASTO PLASTIC STRESS YY
63C ... | | | |
64C---------+---------+---+---+--------------------------------------------
65C SIGNXX | NEL | F | W | NEW ELASTO PLASTIC STRESS XX
66C SIGNYY | NEL | F | W | NEW ELASTO PLASTIC STRESS YY
67C ... | | | |
68C SIGVXX | NEL | F | W | VISCOUS STRESS XX
69C SIGVYY | NEL | F | W | VISCOUS STRESS YY
70C ... | | | |
71C SOUNDSP | NEL | F | W | SOUND SPEED (NEEDED FOR TIME STEP)
72C VISCMAX | NEL | F | W | MAXIMUM DAMPING MODULUS(NEEDED FOR TIME STEP)
73C---------+---------+---+---+--------------------------------------------
74C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
75C OFF | NEL | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
76C---------+---------+---+---+--------------------------------------------
77#include "mvsiz_p.inc"
78#include "units_c.inc"
79#include "comlock.inc"
80#include "param_c.inc"
81C-----------------------------------------------
82C I N P U T A r g u m e n t s
83C-----------------------------------------------
84C
85 INTEGER NEL, NUVAR,NGL(*),IPLY
86 my_real
87 . time,timestep(*),signzz(*),
88 . signyz0(*),signxz0(*),signyz(*),signxz(*),
89 . offi(*),count(*),reduc(*)
90 TYPE (FAIL_PARAM_) ,INTENT(IN) :: FAIL
91C-----------------------------------------------
92C O U T P U T A r g u m e n t s
93C-----------------------------------------------
94cc my_real
95
96C-----------------------------------------------
97C I N P U T O U T P U T A r g u m e n t s
98C-----------------------------------------------
99 my_real uvar(nel,nuvar), off(nel)
100C-----------------------------------------------
101C L o c a l V a r i a b l e s
102C-----------------------------------------------
103 INTEGER
104 . I,J,IDEL,IDEL_L,IFLAG(MVSIZ),INDX(MVSIZ),NINDX,
105 . JST(MVSIZ),IR,JJ,
106 . NINDX0,INDX0(MVSIZ)
107 my_real
108 . k1(mvsiz),k2(mvsiz),k3(mvsiz),k(mvsiz),
109 . a(mvsiz),gama1(mvsiz),gama2(mvsiz),
110 . y0(mvsiz),yc(mvsiz),tmax(mvsiz),fac,
111 . dam, yd1,yd2,yd3,cc,delta,w,yd,sig, dam0
112C--------------------------------------------------------------
113C
114 ir = 0
115 DO i=1,nel
116 IF (off(i)== zero) cycle
117 k1(i) = fail%UPARAM(1)
118 k2(i) = fail%UPARAM(2)
119 k3(i) = fail%UPARAM(3)
120 gama1(i) = fail%UPARAM(4)
121 gama2(i) = fail%UPARAM(5)
122 y0(i) = fail%UPARAM(6)
123 yc(i) = fail%UPARAM(7)
124 k(i) = fail%UPARAM(8)
125 a(i) = fail%UPARAM(9)
126 reduc(i) = fail%UPARAM(13)
127 ir = ir + 1
128 jst(ir) = i
129 indx(i) = 0
130 ENDDO
131C-----------------------------------------------
132C USER VARIABLES INITIALIZATION
133C-----------------------------------------------
134 IF (time == zero) THEN
135 DO jj=1,ir
136 i = jst(jj)
137 uvar(i,9) = one
138 ENDDO
139 ENDIF
140C-------------------------------
141C
142 nindx = 0
143 nindx0 = 0
144 DO j =1,ir
145 i=jst(j)
146 IF (off(i) == one ) THEN
147C-------------------------------
148 IF(uvar(i,1) < one)THEN
149 dam0 = uvar(i,1)
150 dam = dam0
151C
152C direction 33
153C
154 sig = half*(signzz(i) + abs(signzz(i)))
155 yd3 = k3(i)*(one - dam)**2
156 yd3 = half*sig*sig/max(yd3, em20)
157 yd3 = max(yd3, uvar(i,2))
158 uvar(i,2) = yd3
159C
160C direction 32
161C
162 sig = signyz(i)
163 yd2 = k2(i)*(one - dam)**2
164 yd2 = half*sig*sig/max(yd2, em20)
165 yd2 = max(yd2, uvar(i,3))
166 uvar(i,3) = yd2
167C
168C direction 13
169C
170 sig =signxz(i)
171 yd1 = k1(i)*(one - dam)**2
172 yd1 = half*sig*sig/max(yd1, em20)
173 yd1 = max(yd1, uvar(i,4))
174 uvar(i,4) = yd1
175C
176C compute new damage
177C
178 yd = yd3 + gama1(i)*yd1 + gama2(i)*yd2
179 delta = sqrt(yd) - y0(i)
180 delta = half*(delta + abs(delta))
181 w = delta /(yc(i) - y0(i))
182 cc = w - dam
183 cc = half*(cc + abs(cc))
184 fac = k(i)*timestep(i)/a(i)
185 dam = dam + fac*(one - exp(-a(i)*cc))
186 dam = min(one, dam)
187 uvar(i,1) = dam
188C
189C reduce stress interply only
190C
191 IF( signzz(i) > zero )
192 . signzz(i) = signzz(i) *max((one - dam),reduc(i))
193 signyz0(i) = signyz0(i)*max((one - dam),reduc(i))
194 signxz0(i) = signxz0(i)*max((one - dam),reduc(i))
195C
196 IF(dam0 == zero .AND. dam > zero) THEN
197 nindx0=nindx0+1
198 indx0(nindx0)=i
199 ENDIF
200C
201 IF(dam == one) THEN
202 nindx=nindx+1
203 indx(nindx)=i
204!! OFFI(I) = FOUR_OVER_5
205 count(i) = count(i) + one
206 IF(int(count(i)) == 4)THEN
207!! OFFI(I) = MIN(OFFI(I), ZERO)
208 WRITE(iout, 1300) ngl(i),iply,time
209 WRITE(istdo,1300) ngl(i),iply, time
210 ENDIF
211 ENDIF
212 ELSE ! complete damage
213!! SIGNZZ(I) = ZERO
214!! SIGNYZ0(I) = ZERO
215!! SIGNXZ0(I) = ZERO
216 offi(i) = reduc(i)
217 ENDIF
218 ENDIF
219 ENDDO
220
221 IF(nindx0 > 0)THEN
222 DO j=1,nindx0
223 i = indx0(j)
224#include "lockon.inc"
225 WRITE(iout, 1100) ngl(i),iply,time
226 WRITE(istdo,1100) ngl(i),iply, time
227#include "lockoff.inc"
228 END DO
229 ENDIF
230
231 IF(nindx > 0)THEN
232 DO j=1,nindx
233 i = indx(j)
234#include "lockon.inc"
235 WRITE(iout, 1200) ngl(i),iply,time
236 WRITE(istdo,1200) ngl(i),iply, time
237#include "lockoff.inc"
238 END DO
239 ENDIF
240C--------------------------------------------
241
242 1100 FORMAT(1x,'DAMAGE INITIATION OF SHELL #',i10,1x,
243 . 'INTERPLY ', i10, 1x,
244 . 'AT TIME # ',1pe20.13)
245 1200 FORMAT(1x,'DELAMINATION OF SHELL #',i10,1x,
246 . 'INTERPLY ', i10, 1x,
247 . 'AT TIME # ',1pe20.13)
248 1300 FORMAT(1x,'FULL DELAMINATION OF SHELL #',i10,1x,
249 . 'INTERPLY', i10,1x,'AT TIME # ',1pe20.13)
250 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21