OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
cdk6forc3.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/.
23cc
24!||====================================================================
25!|| cdk6forc3 ../engine/source/elements/sh3n/coquedk6/cdk6forc3.F
26!||--- called by ------------------------------------------------------
27!|| forintc ../engine/source/elements/forintc.F
28!||--- calls -----------------------------------------------------
29!|| c3bilan ../engine/source/elements/sh3n/coque3n/c3bilan.F
30!|| cbavisc ../engine/source/elements/shell/coqueba/cbavisc.F
31!|| cdk6coor3 ../engine/source/elements/sh3n/coquedk6/cdk6coor3.F
32!|| cdk6defo3 ../engine/source/elements/sh3n/coquedk6/cdk6defo3.F
33!|| cdk6deri3 ../engine/source/elements/sh3n/coquedk6/cdk6deri3.F
34!|| cdk6fcum3 ../engine/source/elements/sh3n/coquedk6/cdk6fcum3.F
35!|| cdk6fint3 ../engine/source/elements/sh3n/coquedk6/cdk6fint3.F
36!|| cdk6fint_reg ../engine/source/elements/sh3n/coquedk6/cdk6fint_reg.F
37!|| cdk6stra3 ../engine/source/elements/sh3n/coquedk6/cdk6stra3.F
38!|| cdk6updt3 ../engine/source/elements/sh3n/coquedk6/cdk6updt3.F
39!|| cdk6updt3p ../engine/source/elements/sh3n/coquedk6/cdk6updt3.F
40!|| cmain3 ../engine/source/materials/mat_share/cmain3.F
41!|| cncoef3 ../engine/source/elements/sh3n/coquedk/cncoef3.F
42!|| cndt3 ../engine/source/elements/sh3n/coquedk/cndt3.F
43!|| dttherm ../engine/source/time_step/dttherm.F90
44!||--- uses -----------------------------------------------------
45!|| drape_mod ../engine/share/modules/drape_mod.F
46!|| dt_mod ../engine/source/modules/dt_mod.F
47!|| dttherm_mod ../engine/source/time_step/dttherm.F90
48!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.f90
49!|| failwave_mod ../common_source/modules/failwave_mod.F
50!|| glob_therm_mod ../common_source/modules/mat_elem/glob_therm_mod.F90
51!|| mat_elem_mod ../common_source/modules/mat_elem/mat_elem_mod.F90
52!|| nlocal_reg_mod ../common_source/modules/nlocal_reg_mod.F
53!|| sensor_mod ../common_source/modules/sensor_mod.F90
54!|| stack_mod ../engine/share/modules/stack_mod.F
55!|| table_mod ../engine/share/modules/table_mod.F
56!|| timer_mod ../engine/source/system/timer_mod.F90
57!||====================================================================
58 SUBROUTINE cdk6forc3(TIMERS,
59 1 ELBUF_STR, JFT, JLT, PM,
60 2 IXTG, X, F, M,
61 3 V, R, FAILWAVE, NVC,
62 4 MTN, GEO, TF, NPF,
63 5 BUFMAT, PMSAV, DT2T, NELTST,
64 6 ITYPTST, STIFN, STIFR, FSKY,
65 7 IADTG, GROUP_PARAM, EPSDOT, OFFSET,
66 8 IPARTTG, THKE, F11, F12,
67 9 F13, F21, F22, F23,
68 A F31, F32, F33, F14,
69 B F15, F16, F24, F25,
70 C F26, F34, F35, F36,
71 D MAT_ELEM, NEL, ISTRAIN, IHBE,
72 E ITHK, IOFC, IPLA, NFT,
73 F ISMSTR, NPT, KFTS, IXTG1,
74 G IADTG1, IGEO, IPM, IFAILURE,
75 H IEXPAN, GRESAV, GRTH, IGRTH,
76 I MSTG, DMELTG, JSMS, TABLE,
77 J IPARG, SENSORS, PTG, JTHE,
78 K CONDN, CONDNSKY, ISUBSTACK, STACK,
79 L ITASK, DRAPE_SH3N, IPRI, NLOC_DMG,
80 M INDX_DRAPE, IGRE, JTUR, DT,
81 N NCYCLE, SNPC, STF , GLOB_THERM,
82 N NXLAYMAX, IDEL7NOK, USERL_AVAIL, MAXFUNC,
83 O SBUFMAT )
84C-----------------------------------------------
85C M o d u l e s
86C-----------------------------------------------
87 USE timer_mod
88 USE mat_elem_mod
89 USE table_mod
90 USE stack_mod
91 USE failwave_mod
93 USE drape_mod
94 USE sensor_mod
95 USE elbufdef_mod
96 USE dt_mod
97 use glob_therm_mod
98 use dttherm_mod
99C-----------------------------------------------
100C I m p l i c i t T y p e s
101C-----------------------------------------------
102#include "implicit_f.inc"
103C-----------------------------------------------
104C G l o b a l P a r a m e t e r s
105C-----------------------------------------------
106#include "mvsiz_p.inc"
107C-----------------------------------------------
108C C o m m o n B l o c k s
109C-----------------------------------------------
110#include "param_c.inc"
111#include "com04_c.inc"
112#include "com08_c.inc"
113#include "scr18_c.inc"
114#include "parit_c.inc"
115#include "scr14_c.inc"
116C-----------------------------------------------
117C D u m m y A r g u m e n t s
118C-----------------------------------------------
119 TYPE(timer_), INTENT(INOUT) :: TIMERS
120 INTEGER,INTENT(IN) :: USERL_AVAIL ! Flag for User libraries availability
121 INTEGER,INTENT(IN) :: MAXFUNC ! Maximum number of functions
122 INTEGER,INTENT(INOUT) :: IDEL7NOK ! Element deletion flag for IDEL flag in contact interfaces
123 INTEGER,INTENT(IN) :: SBUFMAT ! Buffer material flag
124 INTEGER,INTENT(IN) :: STF ! Size of TF
125 INTEGER,INTENT(IN) :: SNPC ! Size of NPC
126 INTEGER,INTENT(IN) :: NCYCLE ! Current cycle number
127 INTEGER, INTENT(IN) :: NXLAYMAX
128 INTEGER, INTENT(IN) :: JTUR
129 INTEGER, INTENT(IN) :: IGRE
130 INTEGER JFT, JLT, NVC, MTN,NELTST,ITYPTST,OFFSET,
131 . NEL,ISTRAIN,IHBE ,NPT,KFTS,IUN,
132 . ITHK,IOFC,IPLA,NFT,ISMSTR,IFAILURE,IEXPAN , JSMS , JTHE,
133 . ISUBSTACK,ITASK,IPRI
134 INTEGER NPF(*),IXTG(NIXTG,*),IADTG(3,*),IXTG1(4,*),IADTG1(3,*),
135 . IPARTTG(*),IGEO(NPROPGI,*),IPM(NPROPMI,*),GRTH(*),IGRTH(*),
136 . IPARG(*),INDX_DRAPE(STDRAPE)
137C REAL
138 my_real
139 . PM(NPROPM,*), X(*), F(*), M(*), V(*), R(*),
140 . GEO(NPROPG,*), TF(*), BUFMAT(*), PMSAV(*),STIFN(*),
141 . STIFR(*),FSKY(*),EPSDOT(6,*),THKE(*),DT2T,
142 . F11(MVSIZ), F12(MVSIZ), F13(MVSIZ),
143 . F21(MVSIZ), F22(MVSIZ), F23(MVSIZ),
144 . f31(mvsiz), f32(mvsiz), f33(mvsiz),
145 . f14(mvsiz), f15(mvsiz), f16(mvsiz),
146 . f24(mvsiz), f25(mvsiz), f26(mvsiz),
147 . f34(mvsiz), f35(mvsiz), f36(mvsiz),
148 . gresav(*),mstg(*), dmeltg(*), ptg(3,*),condn(*),condnsky(*)
149 TYPE (TTABLE) TABLE(*)
150 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
151 TYPE (STACK_PLY) :: STACK
152 TYPE (FAILWAVE_STR_) ,TARGET :: FAILWAVE
153 TYPE (GROUP_PARAM_) :: GROUP_PARAM
154 TYPE (NLOCAL_STR_), TARGET :: NLOC_DMG
155 TYPE (DRAPE_),DIMENSION(NUMELTG_DRAPE) :: DRAPE_SH3N
156 TYPE (MAT_ELEM_) ,INTENT(INOUT) :: MAT_ELEM
157 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
158 TYPE (DT_) ,INTENT(IN) :: DT
159 type (glob_therm_) ,intent(inout) :: glob_therm
160C-----------------------------------------------
161C L o c a l V a r i a b l e s
162C-----------------------------------------------
163c indx utilise localement contrairement aux coques 4n
164 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),INDX(MVSIZ),IVS(MVSIZ),
165 . FWAVE_EL(NEL)
166 INTEGER
167 . I, J, NG,NPG,NNOD,PT0,PT1,PT2,NVS,IFLAG,IBID,NFAIL,
168 . IR,IS,ILAY,NLAY,L_DIRA,L_DIRB,J1,J2,N1,N2,N3,
169 . IGTYP,IGMAT,NPTTOT,IREP,IFAILWAVE,IDRAPE,IT,NPTT,
170 . ACTIFXFEM,SEDRAPE,NUMEL_DRAPE
171 INTEGER ,DIMENSION(:) ,POINTER :: FWAVE_NOD
172 PARAMETER (NNOD = 3)
173 my_real
174 . sti(mvsiz),stir(mvsiz),rho(mvsiz),
175 . ssp(mvsiz),viscmx(mvsiz),area(mvsiz),area2(mvsiz),
176 . area4(mvsiz),area5(mvsiz),area6(mvsiz)
177 my_real
178 . exx(mvsiz), eyy(mvsiz), exy(mvsiz), exz(mvsiz), eyz(mvsiz),
179 . kxx(mvsiz), kyy(mvsiz), kxy(mvsiz),
180 . px2(mvsiz),py2(mvsiz), px3(mvsiz), py3(mvsiz),
181 . pb1(mvsiz,9),pb2(mvsiz,9),pb3(mvsiz,18),
182 . off(mvsiz), sigy(mvsiz),thk0(mvsiz),
183 . nu(mvsiz) , shf(mvsiz), dt1c(mvsiz)
184 my_real
185 . g(mvsiz) , ym(mvsiz) , a11(mvsiz) , a12(mvsiz),
186 . vol0(mvsiz),thk02(mvsiz),zcfac(mvsiz,2), gs(mvsiz),
187 . alpe(mvsiz)
188 my_real
189 . r11(mvsiz),r12(mvsiz),r13(mvsiz),r21(mvsiz),r22(mvsiz),
190 . r23(mvsiz),r31(mvsiz),r32(mvsiz),r33(mvsiz),
191 . n4x(mvsiz),n4y(mvsiz),n4z(mvsiz),n5x(mvsiz),n5y(mvsiz),
192 . n5z(mvsiz),n6x(mvsiz),n6y(mvsiz),n6z(mvsiz),
193 . x2(mvsiz),y2(mvsiz),x3(mvsiz),y3(mvsiz),
194 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
195 . x5(mvsiz),y5(mvsiz),z5(mvsiz),
196 . x6(mvsiz),y6(mvsiz),z6(mvsiz),
197 . vlx(mvsiz,2),vly(mvsiz,2),vlz(mvsiz,6),
198 . vz4(mvsiz,3),vz5(mvsiz,3),vz6(mvsiz,3),
199 . aldt(mvsiz),amu(mvsiz),vdef(mvsiz,8),die(mvsiz),
200 . tempel(mvsiz),bid,krz(mvsiz),conde(mvsiz),a11r(mvsiz)
201 my_real , DIMENSIOn(NEL) :: zoffset
202 my_real,
203 . ALLOCATABLE, DIMENSION(:), TARGET :: dira,dirb
204 my_real,
205 . DIMENSION(:) ,POINTER :: dir_a,dir_b
206! variables for heat transfer
207 my_real :: dtinv,asrate,eps_m2,eps_k2
208 my_real, dimension(nel) :: epsd_pg
209 my_real, dimension(mvsiz) :: fheat
210!
211C--- Variables pour le non-local
212 INTEGER :: NDDL, K, INOD(3),NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), L_NLOC, IPOS(3),INLOC
213 my_real, DIMENSION(:,:), ALLOCATABLE :: var_reg
214 my_real, DIMENSION(:), POINTER :: dnl,unl
215C-----
216 TYPE(buf_lay_) ,POINTER :: BUFLY
217 TYPE(G_BUFEL_) ,POINTER :: GBUF
218 TYPE(L_BUFEL_) ,POINTER :: LBUF
219 TYPE(L_BUFEL_DIR_) ,POINTER :: LBUF_DIR
220 INTEGER SDIR_A ! Size of DIR_A
221 INTEGER SDIR_B ! Size of DIR_B
222C=======================================================================
223C GENERALIZED STRAINS ARE SAVED AT NB8 (GENERALIZED FOR ALL MATERIALS)
224C NB1 |5*JLT | FORCES
225C NB2 |3*JLT | MOMENTS
226C NB3 |JLT | THK0SEUR
227C NB4 |5*JLT | UNUSED : ONLY FOR FINDING OFF
228C NB5 |2*JLT | ENERGIES
229C NB6 |JLT | OFF
230C NB8 |8*JLT | DEFORMATIONS
231C============================== =========================================
232 gbuf => elbuf_str%GBUF
233 idrape = elbuf_str%IDRAPE
234 iun = 1
235 ibid = 0
236 bid = zero
237 irep = iparg(35)
238 actifxfem = iparg(70)
239 inloc= iparg(78)
240 nlay = elbuf_str%NLAY
241 sedrape = stdrape
242 numel_drape = numeltg_drape
243 ! thermal transfert for 3n shells type cdkforc is not available
244 tempel(:) = zero
245 fheat(:) = zero
246cc NPT = MAX(NLAY,NPTT) --> set to = IPARG(6) , keeping it original
247C to allow for NPT = 0 (global LAW_3
248 npg = 0
249 ir = 1
250 is = 1
251 ng = 1
252C
253 npttot = 0
254 DO ilay=1,nlay
255 npttot = npttot + elbuf_str%BUFLY(ilay)%NPTT
256 ENDDO
257 IF (npt == 0) npttot = npt ! compatibility with global integration
258 nddl = npttot
259 ALLOCATE(var_reg(nel,nddl))
260c--------------------------------------------
261c Front wave
262c--------------------------------------------
263 ifailwave = iparg(79)
264 IF (ifailwave > 0 .and. failwave%WAVE_MOD == 1) THEN
265 DO i=jft,jlt
266 n1 = failwave%IDXI(ixtg(2,i))
267 n2 = failwave%IDXI(ixtg(3,i))
268 n3 = failwave%IDXI(ixtg(4,i))
269 nfail = failwave%FWAVE_NOD(1,n1,1)
270 . + failwave%FWAVE_NOD(1,n2,1)
271 . + failwave%FWAVE_NOD(1,n3,1)
272 IF (nfail > 0) fwave_el(i) = 1
273 ENDDO
274 ENDIF
275c-------------------------------------
276 l_dira = elbuf_str%BUFLY(1)%LY_DIRA
277 l_dirb = elbuf_str%BUFLY(1)%LY_DIRB
278 igtyp = igeo(11,ixtg(5,1))
279 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52)) THEN
280 ALLOCATE(dira(npttot*nel*l_dira))
281 ALLOCATE(dirb(npttot*nel*l_dirb))
282 IF (l_dira == 0) THEN
283 CONTINUE
284 ELSEIF (irep == 0) THEN
285 npttot = 0
286 DO ilay=1,nlay
287 nptt = elbuf_str%BUFLY(ilay)%NPTT
288 DO it=1,nptt
289 j = npttot + it
290 lbuf_dir => elbuf_str%BUFLY(ilay)%LBUF_DIR(it)
291 j1 = 1+(j-1)*l_dira*nel
292 j2 = j*l_dira*nel
293 dira(j1:j2) = lbuf_dir%DIRA(1:nel*l_dira)
294 ENDDO
295 npttot = npttot + nptt
296 ENDDO
297 ENDIF
298 sdir_a=npttot*nel*l_dira
299 sdir_b=npttot*nel*l_dirb
300 dir_a => dira(1:npttot*nel*l_dira)
301 dir_b => dirb(1:npttot*nel*l_dirb)
302 ELSE ! idrape
303 sdir_a=nlay*nel*l_dira
304 sdir_b=nlay*nel*l_dirb
305 ALLOCATE(dira(nlay*nel*l_dira))
306 ALLOCATE(dirb(nlay*nel*l_dirb))
307 dira=zero
308 dirb=zero
309 IF (l_dira == 0) THEN
310 CONTINUE
311 ELSEIF (irep == 0) THEN
312 DO j=1,nlay
313 j1 = 1+(j-1)*l_dira*nel
314 j2 = j*l_dira*nel
315 dira(j1:j2) = elbuf_str%BUFLY(j)%DIRA(1:nel*l_dira)
316 ENDDO
317 ENDIF
318 sdir_a=nlay*nel*l_dira
319 sdir_b=nlay*nel*l_dirb
320 dir_a => dira(1:nlay*nel*l_dira)
321 dir_b => dirb(1:nlay*nel*l_dirb)
322 ENDIF ! IDRAPE
323c-------------------------------------
324 DO i=jft,jlt
325 a11r(i) = zero
326 ENDDO
327c---
328 CALL cdk6coor3(elbuf_str,jft,jlt,mat,pid,
329 . ngl,x,v,r,ixtg,gbuf%OFF,
330 . off,r11,r12,r13,r21,r22,r23,r31,r32,r33,
331 . n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
332 . x2,y2,x3,y3,x4,y4,z4,x5,y5,z5,x6,y6,z6,
333 . gbuf%SMSTR,area,area2,
334 . vlx,vly,vlz,vz4,vz5,vz6,ismstr,nlay,irep,
335 . dir_a ,dir_b ,igeo ,
336 . ixtg1 ,nvs ,ivs ,area4 ,area5 ,
337 . area6 ,nel)
338 igtyp = igeo(11,pid(1))
339 igmat = igeo(98,pid(1))
340C
341 CALL cncoef3(jft ,jlt ,pm ,mat ,geo ,
342 2 pid ,off ,area ,shf ,thk0 ,
343 3 thk02 ,nu ,g ,ym ,
344 4 a11 ,a12 ,gbuf%THK,thke ,ssp ,
345 5 rho ,vol0 ,gs ,mtn ,ithk ,
346 6 npttot ,dt1c , dt1 ,ihbe ,amu ,
347 7 krz ,igeo ,a11r ,isubstack , stack%PM,
348 8 nel ,zoffset)
349 CALL cdk6deri3(jft ,jlt, x2,y2,x3,y3,area2,alpe,aldt,nu,thk02,
350 1 px2,py2,px3,py3,x4,y4,z4,x5,y5,z5,x6,y6,z6,
351 2 n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
352 3 area4,area5,area6,pb1,pb2,pb3,nvs,ivs,ixtg1)
353C
354 CALL cdk6defo3(jft,jlt,vlx,vly,vlz,vz4,vz5,vz6,
355 1 px2,py2,px3,py3,pb1,pb2,pb3,vdef)
356 CALL cdk6stra3(jft, jlt, nft, vdef,gbuf%STRA,
357 1 exx, eyy, exy, exz, eyz,
358 2 kxx, kyy, kxy, dt1c, epsdot,
359 3 iepsdot, istrain,nel)
360c-------------------------------------------
361c COMPUTE Regularized non local variable in Gauss point
362c-------------------------------------------
363 IF (inloc > 0) THEN
364 l_nloc = nloc_dmg%L_NLOC
365 dnl => nloc_dmg%DNL(1:l_nloc) ! DNL = non local variable increment
366 unl => nloc_dmg%UNL(1:l_nloc)
367 DO i = jft,jlt
368 nc1(i) = ixtg(2,i)
369 nc2(i) = ixtg(3,i)
370 nc3(i) = ixtg(4,i)
371 ENDDO
372 DO k = 1,nddl
373#include "vectorize.inc"
374 DO i = jft,jlt
375 inod(1) = nloc_dmg%IDXI(nc1(i))
376 inod(2) = nloc_dmg%IDXI(nc2(i))
377 inod(3) = nloc_dmg%IDXI(nc3(i))
378 ipos(1) = nloc_dmg%POSI(inod(1))
379 ipos(2) = nloc_dmg%POSI(inod(2))
380 ipos(3) = nloc_dmg%POSI(inod(3))
381 var_reg(i,k) = third*(dnl(ipos(1)+k-1)
382 . + dnl(ipos(2)+k-1)
383 . + dnl(ipos(3)+k-1))
384 ENDDO
385 ENDDO
386 ENDIF
387!-------------------------------------------------------------------------------
388! global element strain rate (shell energy equivalent)
389!-----------------------------------------------------------
390! e = 1/t integ[1/2 e (eps_m + k z)^2 dz ]
391! e = 1/2 e eps_eq^2
392! eps_eq = sqrt[ eps_m^2 + 1/12 k^2t^2 ]
393!-------------------------------------------------------------------------------
394 dtinv = dt1 / max(dt1**2,em20) ! inverse of dt
395 asrate = one ! to be changed for default value
396#include "vectorize.inc"
397 do i = 1,nel
398 eps_k2 = (kxx(i)**2+kyy(i)**2+kxx(i)*kyy(i)+fourth*kxy(i)**2)
399 . * one_over_9*gbuf%thk(i)**2
400 eps_m2 = four_over_3*(exx(i)**2+eyy(i)**2+exx(i)*eyy(i) + fourth*exy(i)**2)
401 epsd_pg(i) = sqrt(eps_k2 + eps_m2)*dtinv
402 end do
403!-------------------------------------------------------------------------------
404 CALL cmain3(timers,
405 1 elbuf_str ,jft ,jlt ,nft ,iparg ,
406 2 nel ,mtn ,ipla ,ithk ,group_param,
407 3 pm ,geo ,npf ,tf ,bufmat ,
408 4 ssp ,rho ,viscmx ,dt1c ,sigy ,
409 5 area ,exx ,eyy ,exy ,exz ,
410 6 eyz ,kxx ,kyy ,kxy ,nu ,
411 7 off ,thk0 ,mat ,pid ,mat_elem ,
412 8 gbuf%FOR ,gbuf%MOM ,gbuf%STRA ,failwave ,fwave_el ,
413 9 gbuf%THK ,gbuf%EINT ,iofc ,
414 a g ,a11 ,a12 ,vol0 ,indx ,
415 b ngl ,zcfac ,shf ,gs ,epsd_pg ,
416 c kfts ,ihbe ,alpe ,
417 d dir_a ,dir_b ,igeo ,
418 e ipm ,ifailure ,npg ,fheat ,
419 f tempel ,die ,ibid ,ibid ,bid ,
420 g ibid ,bid ,
421 h bid ,bid ,bid ,bid ,bid ,
422 i bid ,bid ,bid ,r11 ,r12 ,
423 j r13 ,r21 ,r22 ,r23 ,r31 ,
424 k r32 ,r33 ,ng ,table ,ibid ,
425 l bid ,sensors ,bid ,ibid ,
426 m bid ,bid ,aldt ,glob_therm%IDT_THERM ,glob_therm%THEACCFACT,
427 n ismstr ,ir ,is ,nlay ,npt ,
428 o ibid ,ibid ,isubstack ,stack ,
429 p bid ,itask ,drape_sh3n ,var_reg ,nloc_dmg ,
430 r indx_drape,thke ,sedrape ,numel_drape ,dt ,
431 q ncycle ,snpc ,stf ,nxlaymax ,idel7nok ,
432 r userl_avail ,maxfunc ,npttot ,sbufmat ,sdir_a ,sdir_b ,
433 s gbuf%FOR_G)
434C----------------------------------------------------------------------------
435C FORCES VISCOCITE
436C----------------------------
437C uniquement membranaire pour l'instant --------
438 CALL cbavisc(jft ,jlt ,vdef ,amu ,off,
439 2 shf ,nu ,rho ,ssp ,area,
440 3 thk0 ,gbuf%FOR,gbuf%MOM,iun ,mtn,
441 4 iparttg ,pmsav ,dt1 ,nel )
442C----------------------------
443C FORCES INTERNES
444C----------------------------
445 CALL cdk6fint3(jft,jlt,vol0,thk0,gbuf%FOR,gbuf%MOM,
446 1 px2,py2,px3,py3,pb1,pb2,pb3,
447 2 f11,f12,f13,f21,f22,f23,f31,f32,f33,
448 3 f14,f15,f16,f24,f25,f26,f34,f35,f36,
449 4 n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
450 5 nel)
451C-------------------------
452C ASSEMBLE
453C-------------------------
454 CALL cdk6fcum3(jft,jlt,
455 1 r11,r12,r13,r21,r22,r23,r31,r32,r33,
456 2 f11,f12,f13,f21,f22,f23,f31,f32,f33,
457 3 f14,f15,f16,f24,f25,f26,f34,f35,f36)
458C--------------------------
459C PAS DE TEMPS
460C--------------------------
461 CALL cndt3(
462 1 jft ,jlt ,off ,dt2t ,amu ,
463 2 neltst ,ityptst,sti ,stir ,gbuf%OFF,
464 3 ssp ,viscmx , rho , vol0,thk0,thk02,
465 4 a11 ,aldt , alpe , ngl,ismstr,
466 5 iofc ,nnod ,area ,g ,shf ,
467 6 mstg ,dmeltg ,jsms ,ptg ,igtyp ,
468 7 igmat ,a11r ,gbuf%G_DT, gbuf%DT,mtn ,
469 8 pm ,mat(jft), nel ,zoffset)
470C--------------------------
471C THERMAL TIME STEP
472C--------------------------
473 IF (jthe /= 0 .AND. glob_therm%IDT_THERM == 1)THEN
474 call dttherm(nel ,pm(1,mat(1)) ,npropm ,glob_therm ,
475 . jtur ,tempel ,vol0 ,rho ,
476 . aldt ,off ,conde ,gbuf%re ,gbuf%rk )
477 ENDIF
478c-------------------------
479c Virtual internal forces of regularized non local ddl
480c--------------------------
481 IF (inloc > 0) THEN
482 CALL cdk6fint_reg(
483 1 nloc_dmg, var_reg, thk0, nel,
484 2 off, area, nc1, nc2,
485 3 nc3, px2, py2, px3,
486 4 py3, elbuf_str%NLOC(1,1), ixtg(1,jft),
487 5 nddl, itask, dt2t, aldt,
488 6 gbuf%THK_I, gbuf%AREA, nft)
489 ENDIF
490c-------------------------------
491C--------------------------
492C BILANS PAR MATERIAU
493C--------------------------
494 IF(ipri>0)
495 + CALL c3bilan(
496 1 jft, jlt, pm, v,
497 2 gbuf%THK, gbuf%EINT, pmsav, iparttg,
498 3 rho, vol0, ixtg, x,
499 4 r, thk02, area, gresav,
500 5 grth, igrth, off, ibid,
501 6 ibid, ibid, ibid, ibid,
502 7 iexpan, gbuf%EINTTH,itask, mat,
503 8 gbuf%VOL, actifxfem, igre, sensors,
504 9 nel, gbuf%G_WPLA,gbuf%WPLA)
505 IF(iparit==0)THEN
506 CALL cdk6updt3(jft ,jlt ,f ,m ,nvc ,
507 2 gbuf%OFF,off ,sti ,stir,stifn,
508 3 stifr ,ixtg ,ixtg1, f11 ,
509 4 f12 ,f13 ,f21 ,f22 ,f23 ,
510 5 f31 ,f32 ,f33 ,f14 ,f15 ,
511 7 f16 ,f24 ,f25 ,f26 ,f34 ,
512 8 f35 ,f36 ,nvs ,ivs )
513 ELSE
514 CALL cdk6updt3p(jft ,jlt ,gbuf%OFF,off ,sti ,
515 2 stir ,fsky ,fsky ,iadtg ,iadtg1,
516 4 f11 ,f12 ,f13 ,f21 ,f22 ,
517 5 f23 ,f31 ,f32 ,f33 ,f14 ,
518 7 f15 ,f16 ,f24 ,f25 ,f26 ,
519 8 f34 ,f35 ,f36 )
520 ENDIF
521c--------------------------------------------
522c Front wave
523c--------------------------------------------
524 IF (ifailwave > 0 .and. failwave%WAVE_MOD == 1) THEN
525 DO i=jft,jlt
526 n1 = failwave%IDXI(ixtg(2,i))
527 n2 = failwave%IDXI(ixtg(3,i))
528 n3 = failwave%IDXI(ixtg(4,i))
529 IF (fwave_el(i) == -1) THEN
530 failwave%FWAVE_NOD(1,n1,1) = 1
531 failwave%FWAVE_NOD(1,n2,1) = 1
532 failwave%FWAVE_NOD(1,n3,1) = 1
533 ENDIF
534 ENDDO
535 ENDIF
536C-----------
537 IF (ALLOCATED(var_reg)) DEALLOCATE(var_reg)
538 RETURN
539 END
subroutine c3bilan(jft, jlt, pm, v, thk, eint, partsav, iparttg, rho, vol00, ixtg, x, vr, thk02, area, gresav, grth, igrth, off, ixfem, ilev, iel_crk, iadtg_crk, nft1, iexpan, eintth, itask, mat, gvol, actifxfem, igre, sensors, nel, g_wpla, wpla)
Definition c3bilan.F:47
subroutine cbavisc(jft, jlt, vdef, amu, off, shf, nu, rho, ssp, area, thk, for, mom, npt, mtn, ipartc, evis, dt1, nel)
Definition cbavisc.F:34
subroutine cdk6coor3(elbuf_str, jft, jlt, mat, pid, ngl, x, v, r, ixtg, offg, off, r11, r12, r13, r21, r22, r23, r31, r32, r33, n4x, n4y, n4z, n5x, n5y, n5z, n6x, n6y, n6z, xl2, yl2, xl3, yl3, xl4, yl4, zl4, xl5, yl5, zl5, xl6, yl6, zl6, smstr, area, area2, vlx, vly, vlz, vnz4, vnz5, vnz6, ismstr, nlay, irep, dir_a, dir_b, igeo, ixtg1, nvs, ivs, area4, area5, area6, nel)
Definition cdk6coor3.F:44
subroutine cdk6defo3(jft, jlt, vlx, vly, vlz, vz4, vz5, vz6, px2, py2, px3, py3, pb1, pb2, pb3, vdef)
Definition cdk6defo3.F:31
subroutine cdk6deri3(jft, jlt, x2, y2, x3, y3, area2, alpe, aldt, nu, thk2, px2, py2, px3, py3, x4, y4, z4, x5, y5, z5, x6, y6, z6, n4x, n4y, n4z, n5x, n5y, n5z, n6x, n6y, n6z, area4, area5, area6, pb1, pb2, pb3, nvs, ivs, ixtg1)
Definition cdk6deri3.F:32
subroutine cdk6fcum3(jft, jlt, r11, r12, r13, r21, r22, r23, r31, r32, r33, f11, f12, f13, f21, f22, f23, f31, f32, f33, f14, f15, f16, f24, f25, f26, f34, f35, f36)
Definition cdk6fcum3.F:32
subroutine cdk6fint3(jft, jlt, vol, thk0, for, mom, px2, py2, px3, py3, pb1, pb2, pb3, f11, f12, f13, f21, f22, f23, f31, f32, f33, f14, f15, f16, f24, f25, f26, f34, f35, f36, n4x, n4y, n4z, n5x, n5y, n5z, n6x, n6y, n6z, nel)
Definition cdk6fint3.F:34
subroutine cdk6fint_reg(nloc_dmg, var_reg, thk, nel, off, area, nc1, nc2, nc3, px2, py2, px3, py3, bufnl, imat, nddl, itask, dt2t, le, thk0, area0, nft)
subroutine cdk6forc3(timers, elbuf_str, jft, jlt, pm, ixtg, x, f, m, v, r, failwave, nvc, mtn, geo, tf, npf, bufmat, pmsav, dt2t, neltst, ityptst, stifn, stifr, fsky, iadtg, group_param, epsdot, offset, iparttg, thke, f11, f12, f13, f21, f22, f23, f31, f32, f33, f14, f15, f16, f24, f25, f26, f34, f35, f36, mat_elem, nel, istrain, ihbe, ithk, iofc, ipla, nft, ismstr, npt, kfts, ixtg1, iadtg1, igeo, ipm, ifailure, iexpan, gresav, grth, igrth, mstg, dmeltg, jsms, table, iparg, sensors, ptg, jthe, condn, condnsky, isubstack, stack, itask, drape_sh3n, ipri, nloc_dmg, indx_drape, igre, jtur, dt, ncycle, snpc, stf, glob_therm, nxlaymax, idel7nok, userl_avail, maxfunc, sbufmat)
Definition cdk6forc3.F:84
subroutine cdk6stra3(jft, jlt, nft, vdef, gstr, exx, eyy, exy, exz, eyz, kxx, kyy, kxy, dt1c, epsdot, iepsdot, istrain, nel)
Definition cdk6stra3.F:32
subroutine cdk6updt3(jft, jlt, f, m, nvc, offg, off, sti, stir, stifn, stifr, ixtg, ixtg1, f11, f12, f13, f21, f22, f23, f31, f32, f33, f14, f15, f16, f24, f25, f26, f34, f35, f36, nvs, ivs)
Definition cdk6updt3.F:35
subroutine cdk6updt3p(jft, jlt, offg, off, sti, stir, fsky, fskyv, iadtg, iadtg1, f11, f12, f13, f21, f22, f23, f31, f32, f33, f14, f15, f16, f24, f25, f26, f34, f35, f36)
Definition cdk6updt3.F:151
subroutine cmain3(timers, elbuf_str, jft, jlt, nft, iparg, nel, mtn, ipla, ithk, group_param, pm, geo, npf, tf, bufmat, ssp, rho, viscmx, dt1c, sigy, area, exx, eyy, exy, exz, eyz, kxx, kyy, kxy, nu, off, thk0, mat, pid, mat_elem, for, mom, gstr, failwave, fwave_el, thk, eint, iofc, g, a11, a12, vol0, indxdel, ngl, zcfac, shf, gs, epsd_pg, kfts, jhbe, alpe, dir_a, dir_b, igeo, ipm, ifailure, npg, fheat, tempel, die, jthe, iexpan, tempel0, ishplyxfem, ply_exx, ply_eyy, ply_exy, ply_exz, ply_eyz, ply_f, del_ply, th_iply, sig_iply, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, ng, table, ixfem, offi, sensors, a11_iply, elcrkini, dir1_crk, dir2_crk, aldt, idt_therm, theaccfact, ismstr, ir, is, nlay, npt, ixlay, ixel, isubstack, stack, f_def, itask, drape, varnl, nloc_dmg, indx_drape, thke, sedrape, numel_drape, dt, ncycle, snpc, stf, nxlaymax, idel7nok, userl_avail, maxfunc, varnl_npttot, sbufmat, sdir_a, sdir_b, for_g)
Definition cmain3.F:87
subroutine cncoef3(jft, jlt, pm, mat, geo, pid, off, area, shf, thk0, thk02, nu, g, ym, a11, a12, thk, thke, ssp, rho, volg, gs, mtn, ithk, npt, dt1c, dt1, ihbe, amu, krz, igeo, a11r, isubstack, pm_stack, nel, zoffset)
Definition cncoef3.F:303
subroutine cndt3(jft, jlt, off, dt2t, amu, neltst, ityptst, sti, stir, offg, ssp, viscmx, rho, vol0, thk0, thk02, a1, aldt, alpe, ngl, ismstr, iofc, nne, area, g, shf, msc, dmelc, jsms, ptg, igtyp, igmat, a11r, g_dt, dtel, mtn, pm, imat, nel, zoffset)
Definition cndt3.F:42
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define max(a, b)
Definition macros.h:21
integer numeltg_drape
Definition drape_mod.F:92