OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
conc24.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "com01_c.inc"
#include "param_c.inc"
#include "units_c.inc"
#include "com08_c.inc"
#include "scr17_c.inc"
#include "comlock.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine conc24 (pm, off, sig, eint, siga, epxa, gama, dam, ang, eps_f, vk0, strain, crak, damsum, rob, sigc, vk, pla, ngl, d1, d2, d3, d4, d5, d6, rx, ry, rz, sx, sy, sz, seq, rho, epsvp, nel, r11, r12, r13, r21, r22, r23, r31, r32, r33, jcvt, jsph)

Function/Subroutine Documentation

◆ conc24()

subroutine conc24 ( pm,
off,
sig,
eint,
siga,
epxa,
gama,
dam,
ang,
eps_f,
vk0,
strain,
crak,
damsum,
rob,
sigc,
vk,
pla,
integer, dimension(nel) ngl,
d1,
d2,
d3,
d4,
d5,
d6,
rx,
ry,
rz,
sx,
sy,
sz,
seq,
rho,
epsvp,
integer nel,
dimension(nel) r11,
dimension(nel) r12,
dimension(nel) r13,
dimension(nel) r21,
dimension(nel) r22,
dimension(nel) r23,
dimension(nel) r31,
dimension(nel) r32,
dimension(nel) r33,
integer, intent(in) jcvt,
integer, intent(in) jsph )

Definition at line 39 of file conc24.F.

52C-----------------------------------------------
53C I m p l i c i t T y p e s
54C-----------------------------------------------
55#include "implicit_f.inc"
56C-----------------------------------------------
57C G l o b a l P a r a m e t e r s
58C-----------------------------------------------
59#include "mvsiz_p.inc"
60C-----------------------------------------------
61C C o m m o n B l o c k s
62C-----------------------------------------------
63#include "com01_c.inc"
64#include "param_c.inc"
65#include "units_c.inc"
66#include "com08_c.inc"
67#include "scr17_c.inc"
68#include "comlock.inc"
69C-----------------------------------------------
70C D u m m y A r g u m e n t s
71C-----------------------------------------------
72 INTEGER, INTENT(IN) :: JCVT
73 INTEGER, INTENT(IN) :: JSPH
74 INTEGER NGL(NEL),NEL
75 my_real gama(mvsiz,6)
76 my_real pm(npropm), off(nel), sig(nel,6), eint(nel), siga(nel,3),
77 . epxa(nel,3), dam(nel,3), ang(nel,6), eps_f(nel,3), vk0(nel),vk(nel),
78 . strain(nel,6), crak(nel,3), damsum(nel), rob(nel), sigc(nel,6),
79 . rx(nel),ry(nel),rz(nel),sx(nel),sy(nel),sz(nel),pla(nel,7),
80 . d1(nel), d2(nel), d3(nel), d4(nel), d5(nel), d6(nel),seq(nel),rho(nel),
81 . epsvp(nel)
82 my_real, DIMENSION(NEL) :: r11,r12,r13,r21,r22,r23,r31,r32,r33
83C-----------------------------------------------
84C L o c a l V a r i a b l e s
85C-----------------------------------------------
86 INTEGER I,J,I1,I2,ICAP,NBDAMA
87 INTEGER INDEX1(NEL), INDEX2(NEL),DAMAI(NEL)
88 my_real :: yms,y0s,ets,vmax,epsmax,rt,arma,plus,diff,etest
89 my_real, DIMENSION(3) :: dam0,eps_f0,crak0
90 my_real, DIMENSION(6) :: ang0,sigc0
91 my_real, DIMENSION(NEL) :: deps1,deps2,deps3,deps4,deps5,deps6,
92 . arm1,arm2,arm3,scle1, scle2, scle3,scal1, scal2, scal3,
93 . h1, h2, h3, h4, h5, h6, s01, s02, s03, s04, s05, s06,
94 . sm, dsm, s1,s2,s3,s4,s5,s6,de1,de2, de3, c44, c55, c66
95 my_real, DIMENSION(NEL,3,3) :: cdam
96C=======================================================================
97 IF (n2d == 1) THEN
98 DO i=1,nel
99 strain(i,1) = strain(i,1) + d1(i)*dt1
100 strain(i,2) = strain(i,2) + d2(i)*dt1
101 strain(i,3) = strain(i,3) + d3(i)*dt1
102 strain(i,4) = strain(i,4) + d4(i)*dt1
103 strain(i,5) = strain(i,5) + d5(i)*dt1
104 strain(i,6) = strain(i,6) + d6(i)*dt1
105 ENDDO
106 END IF
107C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
108C ARMATURES
109C . . . . . . . . . . .
110 DO i=1,nel
111 arm1(i) = pm(53)
112 arm2(i) = pm(54)
113 arm3(i) = pm(55)
114 ENDDO
115 vmax = pm(27)
116 rt = pm(34)
117 epsmax = pm(47)
118 yms = pm(50) !young modulus
119 y0s = pm(51) !yield strength
120 ets = pm(52) !tangent modulus
121 icap = nint(pm(57))
122c
123 arma = zero
124 DO i=1,nel
125 arma = arma + arm1(i) + arm2(i) + arm3(i)
126 ENDDO
127c GAMA = repere d'armature
128 CALL rotloc(
129 1 nel, gama, rx, ry,
130 2 rz, sx, sy, sz,
131 3 r11, r12, r13, r21,
132 4 r22, r23, r31, r32,
133 5 r33, jcvt, jsph)
134c
135 CALL gloa24(nel,strain,dt1,arm1,arm2,arm3,
136 . d1,d2,d3,d4,d5,d6,
137 . r11,r12,r13,r21,r22,
138 . r23,r31,r32,r33,
139 . deps1,deps2,deps3,deps4,deps5,deps6)
140c
141 IF (arma > zero ) THEN
142 CALL carm24(nel,yms,y0s,ets,
143 . epxa,siga,deps1,deps2,deps3,
144 . deps4,deps5,deps6)
145 ENDIF
146c
147c------
148C BETON
149c------
150C 1 - EVOLUTION DU DOMMAGE ET PREVISION ELASTIQUE
151c------
152 CALL elas24(nel ,pm ,
153 . cdam ,sigc ,dam ,ang ,eps_f,crak ,
154 . c44 ,c55 ,c66 ,de1 ,de2 ,de3 ,
155 . deps1,deps2,deps3,deps4,deps5,deps6,
156 . s01 ,s02 ,s03 ,s04 ,s05 ,s06 ,
157 . scal1,scal2,scal3)
158c------
159C 2 - EVALUATION DU CRITERE
160c------
161 CALL crit24(nel,pm,sigc,vk0,vk,off,
162 . rob,ngl,seq,
163 . s01,s02,s03,s04,s05,s06,
164 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
165 . scal1,scal2,scal3,scle1,scle2,scle3,
166 . sm,dsm)
167c------
168C 3 - ELASTIQUE, ENDOMAGE ET/OU PLASTIQUE
169c------
170 i1 = 0
171 i2 = 0
172c
173 DO i=1,nel
174 IF (off(i) /= zero) THEN !calculated in CRIT24>FR() SCLE3=-/+1 -1:elastic
175 !---------------------------!
176 !--- ELASTIC ---!
177 !---------------------------!
178 IF (scle3(i) < zero) THEN
179 sigc(i,1)=s01(i)
180 sigc(i,2)=s02(i)
181 sigc(i,3)=s03(i)
182 sigc(i,4)=s04(i)
183 sigc(i,5)=s05(i)
184 sigc(i,6)=s06(i)
185 !---------------------------!
186 !--- DAMAGE ---!
187 !---------------------------!
188 ELSEIF (sm(i) + scle2(i)*dsm(i) >= rt) THEN
189 sigc(i,1)=s01(i)
190 sigc(i,2)=s02(i)
191 sigc(i,3)=s03(i)
192 sigc(i,4)=s04(i)
193 sigc(i,5)=s05(i)
194 sigc(i,6)=s06(i)
195 IF (dam(i,1) == zero .or. dam(i,2) == zero .or. dam(i,3) == zero) THEN
196 i1 = i1 + 1
197 index1(i1) = i
198 ENDIF
199 !---------------------------!
200 !--- PLASTIC ---!
201 !---------------------------!
202 ELSEIF (strain(i,1) + strain(i,2) + strain(i,3) > vmax) THEN
203 i2 = i2 + 1
204 index2(i2) = i
205 !---------------------------!
206 !--- ELASTIC ---!
207 !---------------------------!
208 ELSE
209 sigc(i,1)=s01(i)
210 sigc(i,2)=s02(i)
211 sigc(i,3)=s03(i)
212 sigc(i,4)=s04(i)
213 sigc(i,5)=s05(i)
214 sigc(i,6)=s06(i)
215 ENDIF
216 ENDIF
217 ENDDO
218C
219c---------------------------------------------------------------
220 IF (i1 > 0) THEN
221 CALL dama24(nel ,i1 ,index1,ngl ,pm ,scle2 ,
222 . sigc ,dam ,ang ,eps_f ,crak ,cdam ,
223 . s01 ,s02 ,s03 ,s04 ,s05 ,s06 ,
224 . deps1 ,deps2 ,deps3 ,deps4 ,deps5 ,deps6 ,
225 . de1 ,de2 ,de3 ,scal1 ,scal2 ,scal3 )
226 ENDIF
227c---------------------------------------------------------------
228 IF (i2 > 0) THEN
229 IF (icap < 2) THEN
230 CALL plas24(nel ,i2 ,index2,ngl ,pm ,
231 . sigc ,dam ,crak ,
232 . rho ,eint ,vk0 ,vk ,rob ,cdam ,
233 . deps1 ,deps2 ,deps3 ,deps4 ,deps5 ,deps6 ,
234 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
235 . scal1 ,scal2 ,scal3 ,scle2 )
236 ELSE
237 CALL plas24b(nel ,i2 ,index2,ngl ,pm ,
238 . sigc ,dam ,crak ,epsvp ,cdam ,
239 . rho ,eint ,vk0 ,vk ,rob ,pla ,
240 . deps1 ,deps2 ,deps3 ,deps4 ,deps5 ,deps6 ,
241 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
242 . scal1 ,scal2 ,scal3 ,scle2 )
243 ENDIF
244 ENDIF
245c-----
246 DO i=1,nel
247 sig(i,1)=sigc(i,1)
248 sig(i,2)=sigc(i,2)
249 sig(i,3)=sigc(i,3)
250 sig(i,4)=sigc(i,4)
251 sig(i,5)=sigc(i,5)
252 sig(i,6)=sigc(i,6)
253 ENDDO
254c-----
255 damsum(1:nel) = dam(1:nel,1) + dam(1:nel,2) + dam(1:nel,3)
256c-----
257C . . . . . . . . . . . . . .
258C CALCUL DU OFF
259C . . . . . . . . . . . . .
260 DO i=1,nel
261 IF(off(i) < em01) off(i)=zero
262 IF(off(i) < one) off(i)=off(i)*four_over_5
263 ENDDO
264C
265 i1 = 0
266 IF(n2d/=1) THEN
267 DO i=1,nel
268 IF (off(i)>=one) THEN
269 etest= max(crak(i,1),crak(i,2),crak(i,3))
270 IF(etest>=epsmax)THEN
271 off(i)=off(i)*four_over_5
272 i1 = i1 + 1
273 index1(i1) = i
274 ENDIF
275 ENDIF
276 ENDDO
277 ELSE
278 DO i=1,nel
279 IF(off(i)>=one) THEN
280 plus=strain(i,1)+strain(i,2)
281 diff=strain(i,1)-strain(i,2)
282 etest=half*(plus+sqrt(diff**2+strain(i,4)**2))
283 IF (etest>=epsmax)THEN
284 off(i) = off(i)*four_over_5
285 i1 = i1 + 1
286 index1(i1) = i
287 ENDIF
288 ENDIF
289 ENDDO
290 ENDIF
291c-----------------------
292 IF (i1/=0) THEN
293 DO j = 1, i1
294 i = index1(j)
295#include "lockon.inc"
296 WRITE(iout,1000) ngl(i)
297 WRITE(istdo,1000)ngl(i)
298#include "lockoff.inc"
299 ENDDO
300 ENDIF
301c-----------------------
302c RETOUR REPERE ARMATURE
303c-----------------------
304 nbdama = 0
305 DO i=1,nel
306 IF (damsum(i) > zero) THEN
307 nbdama = nbdama + 1
308 damai(nbdama)=i
309 ENDIF
310 ENDDO
311c
312 CALL udam24n(sig,ang,nbdama,damai,nel)
313c
314c ADDITION DES FORCES ARMATURES ET RETOUR REPERE GLOBAL
315 IF (arma > zero) THEN
316 DO i=1,nel
317 sig(i,1) = sig(i,1) * (one - arm1(i)) + arm1(i)*siga(i,1)
318 sig(i,2) = sig(i,2) * (one - arm2(i)) + arm2(i)*siga(i,2)
319 sig(i,3) = sig(i,3) * (one - arm3(i)) + arm3(i)*siga(i,3)
320 ENDDO
321 ENDIF
322c-------------------------
323 CALL aglo24(nel,sig,r11,r12,r13,
324 . r21,r22,r23,r31,r32,r33)
325c-------------------------
326 DO i=1,nel
327 sig(i,1)=sig(i,1)*off(i)
328 sig(i,2)=sig(i,2)*off(i)
329 sig(i,3)=sig(i,3)*off(i)
330 sig(i,4)=sig(i,4)*off(i)
331 sig(i,5)=sig(i,5)*off(i)
332 sig(i,6)=sig(i,6)*off(i)
333 ENDDO
334c-----------
335 1000 FORMAT(1x,'*** TOTAL FAILURE ELEMENT #',i10)
336c-----------
337 RETURN
subroutine aglo24(nel, sig, r11, r12, r13, r21, r22, r23, r31, r32, r33)
Definition aglo24.F:31
subroutine carm24(nel, yms, y0s, ets, epxa, siga, deps1, deps2, deps3, deps4, deps5, deps6)
Definition carm24.F:30
#define my_real
Definition cppsort.cpp:32
subroutine crit24(nel, pm, sig, vk0, vk, off, rob, ngl, seq, s01, s02, s03, s04, s05, s06, s1, s2, s3, s4, s5, s6, scal1, scal2, scal3, scle1, scle2, scle3, sm, dsm)
Definition crit24.F:36
subroutine dama24(nel, nindx, indx, ngl, pm, scle2, sig, dam, ang, eps_f, crak, cdam, s01, s02, s03, s04, s05, s06, deps1, deps2, deps3, deps4, deps5, deps6, de1, de2, de3, scal1, scal2, scal3)
Definition dama24.F:36
subroutine elas24(nel, pm, cdam, sigc, dam, ang, eps_f, crak, c44, c55, c66, de1, de2, de3, deps1, deps2, deps3, deps4, deps5, deps6, s01, s02, s03, s04, s05, s06, scal1, scal2, scal3)
Definition elas24.F:36
subroutine gloa24(nel, strain, dt1, arm1, arm2, arm3, d1, d2, d3, d4, d5, d6, r11, r12, r13, r21, r22, r23, r31, r32, r33, deps1, deps2, deps3, deps4, deps5, deps6)
Definition gloa24.F:33
#define max(a, b)
Definition macros.h:21
subroutine plas24(nel, nindx, indx, ngl, pm, sig, dam, crak, rho, eint, vk0, vk, rob, cdam, e1, e2, e3, e4, e5, e6, s1, s2, s3, s4, s5, s6, scal1, scal2, scal3, scle2)
Definition plas24.F:34
subroutine plas24b(nel, nindx, indx, ngl, pm, sig, dam, crak, epsvp, cdam, rho, eint, vk0, vk, rob, pla, deps1, deps2, deps3, deps4, deps5, deps6, s1, s2, s3, s4, s5, s6, scal1, scal2, scal3, scle2)
Definition plas24b.F:34
subroutine rotloc(nel, gama, rx, ry, rz, sx, sy, sz, r11, r12, r13, r21, r22, r23, r31, r32, r33, jcvt, jsph)
Definition rotloc.F:34
subroutine udam24n(sig, ang, nbdama, damai, nel)
Definition udam24.F:98