76
77
78
79 USE mat_elem_mod
81 USE preload_axial_mod
82 USE elbufdef_mod
84 USE sensor_mod
85
86
87
88#include "implicit_f.inc"
89
90
91
92#include "mvsiz_p.inc"
93
94
95
96#include "param_c.inc"
97#include "com01_c.inc"
98#include "com08_c.inc"
99#include "parit_c.inc"
100
101
102
103 INTEGER, INTENT(IN) :: NFT,IGRE,JSMS,IFAIL
104 INTEGER ,INTENT(IN) :: SBUFMAT
105 INTEGER ,INTENT(IN) :: SNPC
106 INTEGER ,INTENT(IN) :: STF
107 INTEGER ,INTENT(IN) :: NUMMAT
108 INTEGER ,INTENT(IN) :: NUMGEO
109 INTEGER ,INTENT(IN) :: IOUT
110 INTEGER ,INTENT(IN) :: ISTDO
111 INTEGER ,INTENT(IN) :: IMPL_S
112 INTEGER ,INTENT(IN) :: IDYNA
113 INTEGER ,INTENT(IN) :: IMCONV
114 INTEGER ,INTENT(INOUT) :: IDEL7NOK
115 INTEGER,INTENT(IN) :: NTABLE
116 TYPE(TTABLE), DIMENSION(NTABLE), INTENT(INOUT) :: TABLE
117 INTEGER NCC(NIXP,*),IADP(2,*),IPARTP(*),IGEO(NPROPGI,*),
118 . IPM(NPROPMI,*),NPF(*),GRTH(*),IGRTH(*)
119 INTEGER JFT,JLT,NELTST,ITYPTST,OFFSET,NEL,JTHE,
120 . MTN,ISMSTR,NPT,IOUTPRT,ITASK,IEXPAN
122 . pm(npropm,*), x(*), f(*), m(*), v(*), r(*),geo(npropg,*),tf(*),
123 . bufmat(*),partsav(*),stifn(*),stifr(*),fsky(*),tani(15,*),
124 . fx1(mvsiz),fy1(mvsiz),fz1(mvsiz),
125 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
126 . mx1(mvsiz),my1(mvsiz),mz1(mvsiz),
127 . mx2(mvsiz),my2(mvsiz),mz2(mvsiz),
128 . gresav(*),msp(*),dmelp(*),temp(*),fthe(*),
129 . fthesky(*)
130 my_real,
INTENT(IN) :: preld1,stf_f
131
132 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
133 TYPE (H3D_DATABASE) :: H3D_DATA
134 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
135 TYPE (DT_), INTENT(IN) :: DT
136 type (sensors_),INTENT(INOUT) :: SENSORS
137
138
139
140 INTEGER I,IFLAG,IGTYP,NUPARAM,NUVAR,NFUNC,IFUNC_ALPHA,IMAT
141 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),IFUNC(100),
142 . NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),IPT
144 . sti(mvsiz),stir(mvsiz),off(mvsiz),al(mvsiz),exx(mvsiz),
145 . exy(mvsiz),exz(mvsiz),kxx(mvsiz),kyy(mvsiz),kzz(mvsiz),
146 . f1(mvsiz),f2(mvsiz),f3(mvsiz),m1(mvsiz),m2(mvsiz),m3(mvsiz),
147 . x1(mvsiz),x2(mvsiz),x3(mvsiz),y1(mvsiz),y2(mvsiz),
148 . y3(mvsiz),z1(mvsiz),z2(mvsiz),z3(mvsiz),rx1g(mvsiz),rx2g(mvsiz),
149 . ry1g(mvsiz),ry2g(mvsiz),rz1g(mvsiz),rz2g(mvsiz),
150 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),e2y(mvsiz),e2z(mvsiz),
151 . e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),vx1g(mvsiz),vx2g(mvsiz),
152 . vy1g(mvsiz),vy2g(mvsiz),vz1g(mvsiz),vz2g(mvsiz),
153 . f11(mvsiz), f12(mvsiz), f21(mvsiz),
154 . f22(mvsiz), f31(mvsiz), f32(mvsiz),
155 . m11(mvsiz), m12(mvsiz), m21(mvsiz),
156 . m22(mvsiz), m31(mvsiz), m32(mvsiz),tempel(mvsiz),dtemp(mvsiz),
157 . fscal_alpha,eth(mvsiz),deintth,
alpha,df,vl12(mvsiz),dtinv
158
159 my_real :: kc,phix, ca,cb,
area, fphi(mvsiz,2),die(mvsiz)
160 my_real ,
DIMENSION(NEL) :: sigx,sapt,vecnul
161 my_real ,
DIMENSION(:) ,
POINTER :: uvar
162 my_real ,
DIMENSION(:) ,
POINTER :: el_temp
163 TYPE(G_BUFEL_) ,POINTER :: GBUF
164 TYPE(BUF_LAY_) ,POINTER :: BUFLY
165 TARGET :: tempel,vecnul
166
168 EXTERNAL finter
169
170 gbuf => elbuf_str%GBUF
171 vecnul(:) = zero
172
174 1 x, ncc, mat, pid,
175 2 ngl, nc1, nc2, nc3,
176 3 x1, x2, x3, y1,
177 4 y2, y3, z1, z2,
178 5 z3, nel)
180 1 gbuf%SKEW,r, al, nc1,
181 2 nc2, nc3, x1, x2,
182 3 x3, y1, y2, y3,
183 4 z1, z2, z3, rx1g,
184 5 rx2g, ry1g, ry2g, rz1g,
185 6 rz2g, e1x, e1y, e1z,
186 7 e2x, e2y, e2z, e3x,
187 8 e3y, e3z, nel)
188 IF (ismstr /= 0)
CALL ppxpy3(
189 1 gbuf%LENGTH,al, nel)
190 igtyp = igeo(11,pid(1))
192 1 jft, jlt, pm, geo,
193 2 gbuf%OFF, dt2t, neltst, ityptst,
194 3 sti, stir, msp, dmelp,
195 4 gbuf%G_DT,gbuf%DT, al, mat,
196 5 pid, ngl, nel, igtyp,
197 6 jsms)
199 1 v, exx, exy, exz,
200 2 al, nc1, nc2, nc3,
201 3 e1x, e1y, e1z, e2x,
202 4 e2y, e2z, e3x, e3y,
203 5 e3z, vx1g, vx2g, vy1g,
204 6 vy2g, vz1g, vz2g, nel)
206 1 r, geo, gbuf%OFF,off,
207 2 exx, exy, exz, kxx,
208 3 kyy, kzz, al, nc1,
209 4 nc2, nc3, rx1g, rx2g,
210 5 ry1g, ry2g, rz1g, rz2g,
211 6 e1x, e1y, e1z, e2x,
212 7 e2y, e2z, e3x, e3y,
213 8 e3z, pid, nel)
214
215 imat = mat(1)
216 nuparam = ipm(9,mat(1))
217
218 die(1:nel) = zero
219 IF (jthe > 0) THEN
220 DO i=1,nel
221 tempel(i) = half *( temp(nc1(i)) + temp(nc2(i)))
222 die(i) = gbuf%EINT(i) + gbuf%EINT(nel + i)
223 ENDDO
224 ENDIF
225
226 IF (iexpan > 0 .AND. jthe > 0) THEN
227 IF (tt == zero) gbuf%TEMP(1:nel) = tempel(1:nel)
228 dtemp(1:nel) = tempel(1:nel) - gbuf%TEMP(1:nel)
229 gbuf%TEMP(1:nel) = tempel(1:nel)
230
231 DO i=1,nel
232 ifunc_alpha = ipm(219, mat(i))
233 fscal_alpha = pm(191, mat(i))
234 alpha = fscal_alpha*finter(ifunc_alpha,tempel(i),npf,tf,df)
235 eth(i) =
alpha*dtemp(i)
236 deintth = - half*gbuf%FOR(i)*eth(i)*al(i)*off(i)
237 gbuf%EINTTH(i) = gbuf%EINTTH(i) + deintth
238 ENDDO
239 ENDIF
240
241 if (jthe /= 0) then
242 el_temp => tempel(1:nel)
243 else if (igtyp == 3) then
244 if (elbuf_str%gbuf%g_temp > 0) then
245 el_temp => elbuf_str%gbuf%temp
246 else
247 el_temp => vecnul(1:nel)
248 end if
249 else if (igtyp == 18) then
250 if (elbuf_str%bufly(1)%l_temp > 0) then
251 el_temp => elbuf_str%bufly(1)%lbuf(1,1,1)%temp
252 else
253 el_temp => vecnul(1:nel)
254 endif
255 endif
256
257 IF (igtyp == 3) THEN
258
259 nuvar = gbuf%G_NUVAR
260 uvar => gbuf%VAR
261
263 . elbuf_str,nel ,mtn ,jthe ,ifail ,
264 . ipm ,pm ,geo ,el_temp ,off ,
265 . mat ,pid ,ngl ,tt ,dt1 ,
266 . al ,npf ,tf ,exx ,exy ,
267 . exz ,kxx ,kyy ,kzz ,f1 ,
268 . f2 ,f3 ,m1 ,m2 ,m3 ,
269 . bufmat ,npropg ,npropmi ,npropm ,nummat ,
270 . numgeo ,sbufmat ,snpc ,stf ,iout ,
271 . istdo ,nuvar ,uvar ,gbuf%EPSD,imat ,
272 . gbuf%FOR ,gbuf%MOM ,gbuf%EINT,ismstr ,mat_param(imat),
273 . ntable ,table )
274
275 ELSEIF (igtyp == 18) THEN
276
278 1 nel ,npt ,mtn ,imat ,
279 2 pid ,ngl ,pm ,ipm ,
280 3 geo ,off ,gbuf%FOR ,gbuf%MOM ,
281 4 gbuf%EINT ,al ,gbuf%EPSD ,bufmat ,npf ,
282 5 tf ,exx ,exy ,exz ,kxx ,
283 6 kyy ,kzz ,f1 ,f2 ,f3 ,
284 7 m1 ,m2 ,m3 ,jthe ,el_temp ,
285 8 ifail ,sbufmat ,snpc ,stf ,nummat ,
286 9 numgeo ,iout ,istdo ,npropmi ,npropm ,
287 a npropg ,tt ,dt1 ,idel7nok ,isigi ,
288 b imconv ,ismstr ,mat_param(imat),
289 c ntable ,table )
290 ENDIF
291
292
293
294 CALL pdamp3(pm ,geo ,off ,imat ,pid(1),
295 . nel ,ngl ,exx ,exy ,exz ,
296 . kxx ,kyy ,kzz ,al ,f1 ,
297 . f2 ,f3 ,m1 ,m2 ,m3 ,
298 . impl_s ,idyna ,dt1 )
299
300
301
302 IF (jthe > 0) THEN
303 IF (iexpan > 0) THEN
304 IF (igtyp == 3) THEN
306 . off ,eth ,gbuf%FOR ,gbuf%EINT )
307
308 ELSEIF(igtyp == 18) THEN
310 . nel ,npt ,mat ,pid ,pm ,
311 . geo ,al ,eth ,off ,gbuf%FOR ,
312 . gbuf%EINT)
313 ENDIF
314
315 DO i=1,nel
316 deintth = -half*gbuf%FOR(i)*eth(i)*al(i)*off(i)
317 gbuf%EINT(i) = gbuf%EINT(i) + deintth
318 ENDDO
319 ENDIF
320 DO i=1,nel
321 die(i) = (gbuf%EINT(i) + gbuf%EINT(nel + i) - die(i))*pm(90,mat(i))
322 ENDDO
323 ENDIF
324
325
326
327 iflag = mod(ncycle,ncpri)
328 IF (ioutprt > 0)
330 1 pm, v, gbuf%EINT,geo,
331 2 partsav, ipartp, tani, gbuf%FOR,
332 3 gbuf%MOM, gresav, grth, igrth,
333 4 gbuf%OFF, nel, al, nc1,
334 5 nc2, nc3, e1x, e1y,
335 6 e1z, e2x, e2y, e2z,
336 7 mat, pid, vx1g, vx2g,
337 8 vy1g, vy2g, vz1g, vz2g,
338 9 x1, x2, y1, y2,
339 a z1, z2, itask, h3d_data,
340 b igre, sensors,gbuf%G_WPLA,gbuf%WPLA)
341
342
343
344 IF (preld1>zero) THEN
345 dtinv = dt1/
max(dt1**2,em20)
346 DO i=1,nel
347 vl12(i) = exx(i)*dtinv
348 ENDDO
349 CALL preload_axial(nel,preld1,gbuf%BPRELD,vl12,stf_f,f1 )
350 IF (igtyp == 18) THEN
351 sapt(1:nel)=zero
352 DO ipt = 1,npt
353 DO i=1,nel
354 sapt(i) = sapt(i) + geo(400+ipt,pid(i))
355 ENDDO
356 ENDDO
357 sigx(1:nel) = f1(1:nel)/sapt(1:nel)
358 DO ipt = 1,npt
359 elbuf_str%BUFLY(1)%LBUF(1,1,ipt)%SIG(1:nel) = sigx(1:nel)
360 ENDDO
361 END IF
362 gbuf%FOR(1:nel) = f1(1:nel)
363 END IF
364
365
366
367 CALL pfint3(gbuf%FOR ,gbuf%MOM ,geo ,gbuf%OFF ,off,
368 . al ,f1 ,f2 ,f3 ,m1 ,
369 . m2 ,m3 ,sti ,stir ,nel,
370 . pid ,f11 ,f12 ,f21 ,f22,
371 . f31 ,f32 ,m11 ,m12 ,m21,
372 . m22 ,m31 ,m32 )
373
374
375
376
377 IF (jthe > 0) THEN
378 DO i=1,nel
379 ca = pm(75,mat(i))
380 cb = pm(76,mat(i))
382 kc = (ca + cb*tempel(i))*dt2t *
area/al(i)
383 phix = kc*(temp(nc2(i)) - temp(nc1(i)))
384
385
386
387 fphi(i,1) = half * die(i) + phix
388 fphi(i,2) = half * die(i) - phix
389 ENDDO
390 ENDIF
391
392
393
394 IF (iparit == 0) THEN
396 1 f, sti, stifn, fx1,
397 2 fx2, fy1, fy2, fz1,
398 3 fz2, nc1, nc2, nc3,
399 4 e1x, e1y, e1z, e2x,
400 5 e2y, e2z, e3x, e3y,
401 6 e3z, f11, f12, f21,
402 7 f22, f31, f32, fphi,
403 8 fthe, nel, jthe)
405 1 m, stir, stifr, mx1,
406 2 mx2, my1, my2, mz1,
407 3 mz2, nc1, nc2, nc3,
408 4 e1x, e1y, e1z, e2x,
409 5 e2y, e2z, e3x, e3y,
410 6 e3z, m11, m12, m21,
411 7 m22, m31, m32, nel)
412 ELSE
414 1 sti, fsky, fsky, iadp,
415 2 fx1, fx2, fy1, fy2,
416 3 fz1, fz2, nc1, nc2,
417 4 nc3, e1x, e1y, e1z,
418 5 e2x, e2y, e2z, e3x,
419 6 e3y, e3z, f11, f12,
420 7 f21, f22, f31, f32,
421 8 fphi, fthesky, nel, nft,
422 9 jthe)
423
425 1 stir, fsky, fsky, iadp,
426 2 mx1, mx2, my1, my2,
427 3 mz1, mz2, nc1, nc2,
428 4 nc3, e1x, e1y, e1z,
429 5 e2x, e2y, e2z, e3x,
430 6 e3y, e3z, m11, m12,
431 7 m21, m22, m31, m32,
432 8 nel, nft)
433 ENDIF
434
435 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine main_beam18(elbuf_str, nel, npt, mtn, imat, pid, ngl, pm, ipm, geo, off, for, mom, eint, al, epsd, bufmat, npf, tf, exx, exy, exz, kxx, kyy, kzz, f1, f2, f3, m1, m2, m3, jthe, tempel, ifail, sbufmat, snpc, stf, nummat, numgeo, iout, istdo, npropmi, npropm, npropg, time, dtime, idel7nok, isigi, imconv, ismstr, mat_param, ntable, table)
subroutine main_beam3(elbuf_str, nel, ilaw, jthe, ifail, ipm, pm, geo, tempel, off, mat, pid, ngl, time, dtime, al, npf, tf, exx, exy, exz, kxx, kyy, kzz, f1, f2, f3, m1, m2, m3, bufmat, npropg, npropmi, npropm, nummat, numgeo, sbufmat, snpc, stf, iout, istdo, nuvar, uvar, epsd, imat, for, mom, eint, ismstr, mat_param, ntable, table)
subroutine pbilan(pm, v, eint, geo, partsav, ipartp, tani, for, mom, gresav, grth, igrth, off_dum, nel, al, nc1, nc2, nc3, e1x, e1y, e1z, e2x, e2y, e2z, mat, pid, vx1g, vx2g, vy1g, vy2g, vz1g, vz2g, x1g, x2g, y1g, y2g, z1g, z2g, itask, h3d_data, igre, sensors, g_wpla, wpla)
subroutine pcoor3(x, ncc, mat, pid, ngl, nc1, nc2, nc3, x1, x2, x3, y1, y2, y3, z1, z2, z3, nel)
subroutine pcurv3(r, geo, offg, off, exx, exy, exz, kxx, kyy, kzz, al, nc1, nc2, nc3, rx1g, rx2g, ry1g, ry2g, rz1g, rz2g, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, pid, nel)
subroutine pdamp3(pm, geo, off, imat, ipid, nel, ngl, exx, exy, exz, kxx, kyy, kzz, al, fa1, fa2, fa3, ma1, ma2, ma3, impl_s, idyna, dt1)
subroutine pdefo3(v, exx, exy, exz, al, nc1, nc2, nc3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, vx1g, vx2g, vy1g, vy2g, vz1g, vz2g, nel)
subroutine pdlen3(jft, jlt, pm, geo, offg, dt2t, neltst, ityptst, sti, stir, msp, dmelp, g_dt, dtel, al, mat, pid, ngl, nel, igtyp, jsms)
subroutine pevec3(rloc, r, al, nc1, nc2, nc3, x1, x2, x3, y1, y2, y3, z1, z2, z3, rx1g, rx2g, ry1g, ry2g, rz1g, rz2g, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, nel)
subroutine pfcum3(f, sti, stifn, fx1, fx2, fy1, fy2, fz1, fz2, nc1, nc2, nc3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, f11, f12, f21, f22, f31, f32, fphi, fthe, nel, jthe)
subroutine pfcum3p(sti, fsky, fskyv, iadp, fx1, fx2, fy1, fy2, fz1, fz2, nc1, nc2, nc3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, f11, f12, f21, f22, f31, f32, fphi, fthesky, nel, nft, jthe)
subroutine pfint3(for, mom, geo, offg, off, al, f1, f2, f3, m1, m2, m3, sti, stir, nel, pid, f11, f12, f21, f22, f31, f32, m11, m12, m21, m22, m31, m32)
subroutine pmcum3(m, stir, stifr, mx1, mx2, my1, my2, mz1, mz2, nc1, nc2, nc3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, m11, m12, m21, m22, m31, m32, nel)
subroutine pmcum3p(stir, fsky, fskyv, iadp, mx1, mx2, my1, my2, mz1, mz2, nc1, nc2, nc3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, m11, m12, m21, m22, m31, m32, nel, nft)
subroutine ppxpy3(dl, al, nel)
subroutine thermexppi(elbuf_str, nel, npt, mat, pid, pm, geo, al, eth, off, for, eint)
subroutine thermexppg(nel, mat, pid, pm, geo, off, eth, for, eint)