OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
delm02law.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23C power delamination model ------
24!||====================================================================
25!|| delm02law ../engine/source/properties/composite_options/stack/delm02law.F
26!||--- called by ------------------------------------------------------
27!|| delamination ../engine/source/properties/composite_options/stack/delamination.F
28!||--- uses -----------------------------------------------------
29!|| fail_param_mod ../common_source/modules/mat_elem/fail_param_mod.F90
30!||====================================================================
31 SUBROUTINE delm02law(FAIL ,
32 1 NEL ,NUVAR ,TIME ,TIMESTEP ,
33 2 NGL ,IPLY ,
34 3 OFF ,SIGNYZ ,SIGNXZ ,SIGNZZ ,DU ,
35 4 UVAR , OFFI ,REDUC,COUNT)
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 NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
49C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
50C---------+---------+---+---+--------------------------------------------
51C MFUNC | 1 | I | R | NUMBER FUNCTION USED FOR THIS USER LAW not used
52C KFUNC | NFUNC | I | R | FUNCTION INDEX not used
53C NPF | * | I | R | FUNCTION ARRAY
54C TF | * | F | R | FUNCTION ARRAY
55C---------+---------+---+---+--------------------------------------------
56C TIME | 1 | F | R | CURRENT TIME
57C TIMESTEP| 1 | F | R | CURRENT TIME STEP
58C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
59C EPSPXX | NEL | F | R | STRAIN RATE XX
60C EPSPYY | NEL | F | R | STRAIN RATE YY
61C ... | | | |
62C DEPSXX | NEL | F | R | STRAIN INCREMENT XX
63C DEPSYY | NEL | F | R | STRAIN INCREMENT YY
64C ... | | | |
65C EPSXX | NEL | F | R | STRAIN XX
66C EPSYY | NEL | F | R | STRAIN YY
67C ... | | | |
68C SIGOXX | NEL | F | R | OLD ELASTO PLASTIC STRESS XX
69C SIGOYY | NEL | F | R | OLD ELASTO PLASTIC STRESS YY
70C ... | | | |
71C---------+---------+---+---+--------------------------------------------
72C SIGNXX | NEL | F | W | NEW ELASTO PLASTIC STRESS XX
73C SIGNYY | NEL | F | W | NEW ELASTO PLASTIC STRESS YY
74C ... | | | |
75C SIGVXX | NEL | F | W | VISCOUS STRESS XX
76C SIGVYY | NEL | F | W | VISCOUS STRESS YY
77C ... | | | |
78C SOUNDSP | NEL | F | W | SOUND SPEED (NEEDED FOR TIME STEP)
79C VISCMAX | NEL | F | W | MAXIMUM DAMPING MODULUS(NEEDED FOR TIME STEP)
80C---------+---------+---+---+--------------------------------------------
81C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
82C OFF | NEL | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
83C---------+---------+---+---+--------------------------------------------
84#include "mvsiz_p.inc"
85#include "units_c.inc"
86#include "comlock.inc"
87#include "param_c.inc"
88C-----------------------------------------------
89C I N P U T A r g u m e n t s
90C-----------------------------------------------
91C
92 INTEGER NEL, NUPARAM, NUVAR,NGL(*),
93 . IPLY
94 my_real
95 . TIME,TIMESTEP(*),SIGNZZ(*),
96 . signyz(*),signxz(*), du(3,mvsiz),offi(*),reduc(*),count(*)
97 TYPE (FAIL_PARAM_) ,INTENT(IN) :: FAIL
98C-----------------------------------------------
99C I N P U T O U T P U T A r g u m e n t s
100C-----------------------------------------------
101 my_real uvar(nel,nuvar), off(nel)
102C-----------------------------------------------
103C L o c a l V a r i a b l e s
104C-----------------------------------------------
105 INTEGER
106 . I,J,IDEL,IDEL_L,IFLAG(MVSIZ),INDX(MVSIZ),NINDX,
107 . NINDEX,INDEX(MVSIZ),JST(MVSIZ),IR,JJ
108 my_real
109 . gic(mvsiz),giic(mvsiz),k(mvsiz),eta(mvsiz),
110 . d0(mvsiz),ds0(mvsiz), cc1,cc2,deltaf,delta0,dam,
111 . dshear,d3,beta,b,lam,d
112C--------------------------------------------------------------
113C
114 ir = 0
115 DO i=1,nel
116 IF (off(i)==zero) cycle
117 gic(i) = fail%UPARAM(1)
118 giic(i) = fail%UPARAM(2)
119 eta(i) = fail%UPARAM(3)
120 k(i) = fail%UPARAM(4)
121 d0(i) = fail%UPARAM(5)
122 ds0(i) = fail%UPARAM(6)
123 reduc(i) = fail%UPARAM(7)
124 ir = ir + 1
125 jst(ir) = i
126C
127 indx(i) = 0
128 index(i) = 0
129 ENDDO
130C-----------------------------------------------
131C USER VARIABLES INITIALIZATION
132C-----------------------------------------------
133 IF(time == zero)THEN
134 DO jj=1,ir
135 i = jst(jj)
136 DO j=1,nuvar
137 uvar(i,j)= zero
138 ENDDO
139 ENDDO
140 ENDIF
141C-------------------------------
142C
143C OFF = 0.
144C-------------------------------
145C
146 nindx=0
147 nindex = 0
148 DO j =1,ir
149 i=jst(j)
150 IF(off(i) == one )THEN
151C-------------------------------
152 IF(uvar(i,1) < one)THEN
153C
154 dam = uvar(i,1)
155 dshear = sqrt(du(1,i)**2 + du(2,i)**2)
156 d3 = half*(du(3,i) + abs(du(3,i)))
157 d = sqrt(d3**2 + dshear**2)
158 beta = dshear/max((dshear + d3),em20)
159 IF(d3 == zero) beta = one
160 b = beta**2 / (one + two*beta**2 - two*beta)
161cc
162 cc1 = d0(i)**2
163 cc2 = b**eta(i)
164 delta0 = sqrt(cc1 + (ds0(i)**2 - cc1)*cc2)
165 deltaf = gic(i) + (giic(i) - gic(i))*cc2
166 deltaf= two*deltaf/max(k(i)*delta0, em20)
167C
168C compute lambda en fonction de DAm
169c
170 lam = delta0*deltaf
171 lam = lam/(deltaf - dam*(deltaf - delta0) )
172 d = max(lam , d)
173C
174C compute damage
175C
176 dam = deltaf*(d - delta0)
177 cc1 = d*(deltaf - delta0)
178 dam = dam/max(em20, cc1)
179 dam = max(dam, zero)
180 dam = min(one, dam)
181c
182 uvar(i,1) = dam
183 signxz(i) = signxz(i)*max((one - dam),reduc(i))
184 signyz(i) = signyz(i)*max((one - dam),reduc(i))
185 IF(d3 > zero)signzz(i)=signzz(i)*max((one - dam),reduc(i))
186
187 IF(dam == one) THEN
188 nindx=nindx+1
189 indx(nindx)=i
190!! OFFI(I) = REDUC(I)
191 count(i) = count(i) + one
192 IF(int(count(i)) == 4)THEN
193!! OFFI(I) = MIN(OFFI(I), ZERO)
194 WRITE(iout, 1300) ngl(i),iply,time
195 WRITE(istdo,1300) ngl(i),iply, time
196 ENDIF
197 ENDIF
198 ELSE ! complete damage
199!! SIGNZZ(I) = ZERO
200!! SIGNYZ(I) = ZERO
201!! SIGNXZ(I) = ZERO
202!! OFFI(I) = MIN(OFFI(I), ZERO)
203 offi(i) = reduc(i)
204 ENDIF
205 ENDIF
206 ENDDO
207
208 IF(nindx > 0)THEN
209 DO j=1,nindx
210 i = indx(j)
211#include "lockon.inc"
212cx WRITE(IOUT, 1200) NGL(I),IPLY,TIME
213c WRITE(ISTDO,1200) NGL(I),IPLY,TIME
214 WRITE(iout, 1200) ngl(i),iply,time
215 WRITE(istdo,1200) ngl(i),iply, time
216#include "lockoff.inc"
217 END DO
218 ENDIF
219C--------------------------------------------
220
221 1200 FORMAT(1x,'DELAMINATION OF SHELL #',i10,1x,
222 . 'INTERPLY ', i10, 1x,
223 . 'AT TIME # ',1pe20.13)
224
225 1300 FORMAT(1x,'FULL DELAMINATION OF SHELL #',i10,1x,
226 . 'INTERPLY', i10,1x,'AT TIME # ',1pe20.13)
227 RETURN
228 END
subroutine delm02law(fail, nel, nuvar, time, timestep, ngl, iply, off, signyz, signxz, signzz, du, uvar, offi, reduc, count)
Definition delm02law.F:36
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21