77
78
79
80 USE mat_elem_mod
82 USE preload_axial_mod
83 USE elbufdef_mod
85 USE sensor_mod
86 use element_mod , only : nixp
87
88
89
90#include "implicit_f.inc"
91
92
93
94#include "mvsiz_p.inc"
95
96
97
98#include "param_c.inc"
99#include "com01_c.inc"
100#include "com08_c.inc"
101#include "parit_c.inc"
102
103
104
105 INTEGER, INTENT(IN) :: NFT,IGRE,JSMS,IFAIL
106 INTEGER ,INTENT(IN) :: SBUFMAT
107 INTEGER ,INTENT(IN) :: SNPC
108 INTEGER ,INTENT(IN) :: STF
109 INTEGER ,INTENT(IN) :: NUMMAT
110 INTEGER ,INTENT(IN) :: NUMGEO
111 INTEGER ,INTENT(IN) :: IOUT
112 INTEGER ,INTENT(IN) :: ISTDO
113 INTEGER ,INTENT(IN) :: IMPL_S
114 INTEGER ,INTENT(IN) :: IDYNA
115 INTEGER ,INTENT(IN) :: IMCONV
116 INTEGER ,INTENT(INOUT) :: IDEL7NOK
117 INTEGER,INTENT(IN) :: NTABLE
118 TYPE(TTABLE), DIMENSION(NTABLE), INTENT(INOUT) :: TABLE
119 INTEGER NCC(NIXP,*),IADP(2,*),IPARTP(*),IGEO(NPROPGI,*),
120 . IPM(NPROPMI,*),NPF(*),GRTH(*),IGRTH(*)
121 INTEGER JFT,JLT,NELTST,ITYPTST,OFFSET,NEL,JTHE,
122 . MTN,ISMSTR,NPT,IOUTPRT,ITASK,IEXPAN
124 . pm(npropm,*), x(*), f(*), m(*), v(*), r(*),geo(npropg,*),tf(*),
125 . bufmat(*),partsav(*),stifn(*),stifr(*),fsky(*),tani(15,*),
126 . fx1(mvsiz),fy1(mvsiz),fz1(mvsiz),
127 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
128 . mx1(mvsiz),my1(mvsiz),mz1(mvsiz),
129 . mx2(mvsiz),my2(mvsiz),mz2(mvsiz),
130 . gresav(*),msp(*),dmelp(*),temp(*),fthe(*),
131 . fthesky(*)
132 my_real,
INTENT(IN) :: preld1,stf_f
133
134 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
135 TYPE (H3D_DATABASE) :: H3D_DATA
136 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
137 TYPE (DT_), INTENT(IN) :: DT
138 type (sensors_),INTENT(INOUT) :: SENSORS
139
140
141
142 INTEGER I, IFLAG, IGTYP, NUVAR, IFUNC_ALPHA, IMAT
143 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ),
144 . NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),IPT
146 . sti(mvsiz),stir(mvsiz),off(mvsiz),al(mvsiz),exx(mvsiz),
147 . exy(mvsiz),exz(mvsiz),kxx(mvsiz),kyy(mvsiz),kzz(mvsiz),
148 . f1(mvsiz),f2(mvsiz),f3(mvsiz),m1(mvsiz),m2(mvsiz),m3(mvsiz),
149 . x1(mvsiz),x2(mvsiz),x3(mvsiz),y1(mvsiz),y2(mvsiz),
150 . y3(mvsiz),z1(mvsiz),z2(mvsiz),z3(mvsiz),rx1g(mvsiz),rx2g(mvsiz),
151 . ry1g(mvsiz),ry2g(mvsiz),rz1g(mvsiz),rz2g(mvsiz),
152 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),e2y(mvsiz),e2z(mvsiz),
153 . e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),vx1g(mvsiz),vx2g(mvsiz),
154 . vy1g(mvsiz),vy2g(mvsiz),vz1g(mvsiz),vz2g(mvsiz),
155 . f11(mvsiz), f12(mvsiz), f21(mvsiz),
156 . f22(mvsiz), f31(mvsiz), f32(mvsiz),
157 . m11(mvsiz), m12(mvsiz), m21(mvsiz),
158 . m22(mvsiz), m31(mvsiz), m32(mvsiz),tempel(mvsiz),dtemp(mvsiz),
159 . fscal_alpha,eth(mvsiz),deintth,
alpha,df,vl12(mvsiz),dtinv
160
161 my_real :: kc,phix, ca,cb,
area, fphi(mvsiz,2),die(mvsiz)
162 my_real ,
DIMENSION(NEL) :: sigx,sapt,vecnul
163 my_real ,
DIMENSION(:) ,
POINTER :: uvar
164 my_real ,
DIMENSION(:) ,
POINTER :: el_temp
165 TYPE(G_BUFEL_) ,POINTER :: GBUF
166
167 TARGET :: tempel,vecnul
168
170 EXTERNAL finter
171
172 gbuf => elbuf_str%GBUF
173 vecnul(:) = zero
174
176 1 x, ncc, mat, pid,
177 2 ngl, nc1, nc2, nc3,
178 3 x1, x2, x3, y1,
179 4 y2, y3, z1, z2,
180 5 z3, nel)
181 igtyp = igeo(11,pid(1))
182 imat = mat(1)
183
185 1 gbuf%SKEW,r, al, nc1,
186 2 nc2, nc3, x1, x2,
187 3 x3, y1, y2, y3,
188 4 z1, z2, z3, rx1g,
189 5 rx2g, ry1g, ry2g, rz1g,
190 6 rz2g, e1x, e1y, e1z,
191 7 e2x, e2y, e2z, e3x,
192 8 e3y, e3z, nel)
193 IF (ismstr /= 0)
CALL ppxpy3(gbuf%LENGTH,al,nel)
195 1 jft, jlt, pm, geo,
196 2 gbuf%OFF, dt2t, neltst, ityptst,
197 3 sti, stir, msp, dmelp,
198 4 gbuf%G_DT,gbuf%DT, al, mat,
199 5 pid, ngl, nel, igtyp,
200 6 jsms)
202 1 v, exx, exy, exz,
203 2 al, nc1, nc2, nc3,
204 3 e1x, e1y, e1z, e2x,
205 4 e2y, e2z, e3x, e3y,
206 5 e3z, vx1g, vx2g, vy1g,
207 6 vy2g, vz1g, vz2g, nel)
209 1 r, geo, gbuf%OFF,off,
210 2 exx, exy, exz, kxx,
211 3 kyy, kzz, al, nc1,
212 4 nc2, nc3, rx1g, rx2g,
213 5 ry1g, ry2g, rz1g, rz2g,
214 6 e1x, e1y, e1z, e2x,
215 7 e2y, e2z, e3x, e3y,
216 8 e3z, pid, nel)
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 ifunc_alpha = mat_param(imat)%THERM%FUNC_THEXP
232 fscal_alpha = mat_param(imat)%THERM%SCALE_THEXP
233 DO i=1,nel
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)) * mat_param(imat)%THERM%EFRAC
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 = mat_param(imat)%THERM%AS
380 cb = mat_param(imat)%THERM%BS
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)