32 1 NLOC_DMG ,VAR_REG ,NEL ,OFF ,
33 2 VOL ,NC1 ,NC2 ,NC3 ,
34 3 NC4 ,NC5 ,NC6 ,NC7 ,
35 4 NC8 ,PX1 ,PX2 ,PX3 ,
36 5 PX4 ,PY1 ,PY2 ,PY3 ,
37 6 PY4 ,PZ1 ,PZ2 ,PZ3 ,
38 7 PZ4 ,IMAT ,ITASK ,DT2T ,
39 8 VOL0 ,NFT ,NLAY ,WS ,
49#include "implicit_f.inc"
60 TYPE(
nlocal_str_),
INTENT(INOUT),
TARGET :: NLOC_DMG
61 my_real,
DIMENSION(NEL,NLAY),
INTENT(INOUT) :: VAR_REG
62 INTEGER,
INTENT(IN) :: NEL
63 my_real,
DIMENSION(NEL),
INTENT(IN) :: OFF
64 my_real,
DIMENSION(NEL),
INTENT(IN) :: VOL
65 INTEGER,
DIMENSION(NEL) :: NC1
66 INTEGER,
DIMENSION(NEL) :: NC2
67 INTEGER,
DIMENSION(NEL) :: NC3
68 INTEGER,
DIMENSION(NEL) :: NC4
69 INTEGER,
DIMENSION(NEL) :: NC5
70 INTEGER,
DIMENSION(NEL) :: NC6
71 INTEGER,
DIMENSION(NEL) :: NC7
72 INTEGER,
DIMENSION(NEL) :: NC8
73 my_real,
DIMENSION(NEL),
INTENT(IN) :: px1
74 my_real,
DIMENSION(NEL),
INTENT(IN) :: px2
75 my_real,
DIMENSION(NEL),
INTENT(IN) :: px3
76 my_real,
DIMENSION(NEL),
INTENT(IN) :: px4
77 my_real,
DIMENSION(NEL),
INTENT(IN) :: py1
78 my_real,
DIMENSION(NEL),
INTENT(IN) :: py2
79 my_real,
DIMENSION(NEL),
INTENT(IN) :: py3
80 my_real,
DIMENSION(NEL),
INTENT(IN) :: py4
81 my_real,
DIMENSION(NEL),
INTENT(IN) :: pz1
82 my_real,
DIMENSION(NEL),
INTENT(IN) :: pz2
83 my_real,
DIMENSION(NEL),
INTENT(IN) :: pz3
84 my_real,
DIMENSION(NEL),
INTENT(IN) :: pz4
85 INTEGER,
INTENT(IN) :: IMAT
86 INTEGER,
INTENT(IN) :: ITASK
87 my_real,
INTENT(INOUT) :: dt2t
88 my_real,
DIMENSION(NEL),
INTENT(IN) :: vol0
89 INTEGER,
INTENT(IN) :: NFT
90 INTEGER,
INTENT(IN) :: NLAY
91 my_real,
DIMENSION(9,9),
INTENT(IN) :: ws
92 my_real,
DIMENSION(9,9),
INTENT(IN) :: as
93 my_real,
DIMENSION(NEL),
INTENT(IN) ::
area
94 TYPE(buf_nlocts_),
INTENT(INOUT),
TARGET :: BUFNLTS
98 INTEGER I, II, J, K, N1, , N3, N4, N5, N6, N7, N8,
101 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
102 . pos1,pos2,pos3,pos4,pos5,pos6,pos7,pos8
104 . l2,ntn_unl,ntn_vnl,xi,ntvar,a,dtnl,le_max,
105 . b1,b2,b3,b4,b5,b6,b7,b8,zeta,sspnl,maxstif,
106 . bth1,bth2,nth1,nth2,dt2p,dtnod,k1,k2,k12,
108 my_real,
DIMENSION(:) ,
ALLOCATABLE ::
109 . btb11,btb12,btb13,btb14,btb22,btb23,btb24,
110 . btb33,btb34,btb44,lc,thk,lthk
111 my_real,
DIMENSION(:,:) ,
ALLOCATABLE ::
112 . f1,f2,f3,f4,f5,f6,f7,f8,stifnlth,dtn,
113 . sti1,sti2,sti3,sti4,sti5,sti6,sti7,sti8
114 my_real,
POINTER,
DIMENSION(:) ::
115 . vnl,fnl,unl,mass,mass0,vnl0
116 my_real,
POINTER,
DIMENSION(:,:) ::
117 . massth,unlth,vnlth,fnlth
130 3 -1. ,-.549193338482966,0.549193338482966,
134 4 -1. ,-.600558677589454,0. ,
135 4 0.600558677589454,1. ,0. ,
138 5 -1. ,-.812359691877328,-.264578928334038,
139 5 0.264578928334038,0.812359691877328,1. ,
142 6 -1. ,-.796839450334708,-.449914286274731,
143 6 0. ,0.449914286274731,0.796839450334708,
146 7 -1. ,-.898215824685518,-.584846546513270,
147 7 -.226843756241524,0.226843756241524,0.584846546513270,
148 7 0.898215824685518,1. ,0. ,
150 8 -1. ,-.878478166955581,-.661099443664978,
151 8 -.354483526205989,0. ,0.354483526205989,
152 8 0.661099443664978,0.878478166955581,1. ,
154 9 -1. ,-.936320479015252,-.735741735638020,
155 9 -.491001129763160,-.157505717044458,0.157505717044458,
156 9 0.491001129763160,0.735741735638020,0.936320479015252,
162 l2 = nloc_dmg%LEN(imat)**2
163 xi = nloc_dmg%DAMP(imat)
164 l_nloc = nloc_dmg%L_NLOC
165 zeta = nloc_dmg%DENS(imat)
166 sspnl = nloc_dmg%SSPNL(imat)
167 le_max = nloc_dmg%LE_MAX(imat)
170 ALLOCATE(btb11(nel),btb12(nel),btb13(nel),btb14(nel),btb22(nel),
171 . btb23(nel),btb24(nel),btb33(nel),btb34(nel),btb44(nel),
172 . f1(nel,nlay),f2(nel,nlay),f3(nel,nlay),f4(nel,nlay),
173 . f5(nel,nlay),f6(nel,nlay),f7(nel,nlay),f8(nel,nlay),
174 . pos1(nel),pos2(nel),pos3(nel),pos4(nel),pos5(nel),
175 . pos6(nel),pos7(nel),pos8(nel),lc(nel),thk(nel),lthk(nel))
181 IF (noda_dt > 0)
THEN
183 ALLOCATE(sti1(nel,nlay),sti2(nel,nlay),sti3(nel,nlay),sti4(nel,nlay),
184 . sti5(nel,nlay),sti6(nel,nlay),sti7(nel,nlay),sti8(nel,nlay))
186 mass => nloc_dmg%MASS(1:l_nloc)
188 mass0 => nloc_dmg%MASS0(1:l_nloc)
191 ALLOCATE(sti1(1,1),sti2(1,1),sti3(1,1),sti4(1,1),
192 . sti5(1,1),sti6(1,1),sti7(1,1),sti8(1,1))
195 vnl => nloc_dmg%VNL(1:l_nloc)
197 vnl0 => nloc_dmg%VNL_OLD(1:l_nloc)
199 unl => nloc_dmg%UNL(1:l_nloc)
208 n1 = nloc_dmg%IDXI(nc1(i))
209 n2 = nloc_dmg%IDXI(nc2(i))
210 n3 = nloc_dmg%IDXI(nc3(i))
211 n4 = nloc_dmg%IDXI(nc4(i))
212 n5 = nloc_dmg%IDXI(nc5(i))
213 n6 = nloc_dmg%IDXI(nc6(i))
214 n7 = nloc_dmg%IDXI(nc7(i))
215 n8 = nloc_dmg%IDXI(nc8(i))
218 pos1(i) = nloc_dmg%POSI(n1)
219 pos2(i) = nloc_dmg%POSI(n2)
220 pos3(i) = nloc_dmg%POSI(n3)
221 pos4(i) = nloc_dmg%POSI(n4)
222 pos5(i) = nloc_dmg%POSI(n5)
223 pos6(i) = nloc_dmg%POSI(n6)
224 pos7(i) = nloc_dmg%POSI(n7)
225 pos8(i) = nloc_dmg%POSI(n8)
228 btb11(i) = px1(i)**2 + py1(i)**2 + pz1(i)**2
229 btb12(i) = px1(i)*px2(i) + py1(i)*py2(i) + pz1(i)*pz2(i)
230 btb13(i) = px1(i)*px3(i) + py1(i)*py3(i) + pz1(i)*pz3(i)
231 btb14(i) = px1(i)*px4(i) + py1(i)*py4(i) + pz1(i)*pz4(i)
232 btb22(i) = px2(i)**2 + py2(i)**2 + pz2(i)**2
233 btb23(i) = px2(i)*px3(i) + py2(i)*py3(i) + pz2(i)*pz3(i)
234 btb24(i) = px2(i)*px4(i) + py2(i)*py4(i) + pz2(i)*pz4(i)
235 btb33(i) = px3(i)**2 + py3(i)**2 + pz3(i)**2
236 btb34(i) = px3(i)*px4(i) + py3(i)*py4(i) + pz3(i)*pz4(i)
237 btb44(i) = px4(i)**2 + py4(i)**2 + pz4(i)**2
244 IF ((l2>zero).AND.(nlay > 1))
THEN
248 thk(i) = vol(i)/
area(i)
249 lthk(i) = (zs(nlay+1,nlay)-zs(nlay,nlay))*thk(i)*half
254 IF (noda_dt > 0)
THEN
255 ALLOCATE(stifnlth(nel,nddl+1))
256 ALLOCATE(dtn(nel,nddl+1))
260 ALLOCATE(stifnlth(1,1))
266 massth => bufnlts%MASSTH(1:nel,1:ndnod)
267 unlth => bufnlts%UNLTH(1:nel ,1:ndnod)
268 vnlth => bufnlts%VNLTH(1:nel ,1:ndnod)
269 fnlth => bufnlts%FNLTH(1:nel ,1:ndnod)
276 IF (noda_dt > 0)
THEN
286 nth1 = (as(k,nddl) - zs(k+1,nddl)) /
287 . (zs(k,nddl) - zs(k+1,nddl))
288 nth2 = (as(k,nddl) - zs(k,nddl)) /
289 . (zs(k+1,nddl) - zs(k,nddl))
295 bth1 = (one/(zs(k,nddl) - zs(k+1,nddl)))*(two/thk(i))
296 bth2 = (one/(zs(k+1,nddl) - zs(k,nddl)))*(two/thk(i))
299 k1 = l2*(bth1**2) + nth1**2
300 k12 = l2*(bth1*bth2)+ (nth1*nth2)
301 k2 = l2*(bth2**2) + nth2**2
304 fnlth(i,k) = fnlth(i,k) + (k1*unlth(i,k) + k12*unlth(i,k+1)
305 . + xi*((nth1**2)*vnlth(i,k)
306 . + (nth1*nth2)*vnlth(i,k+1))
307 . - (nth1*var_reg(i,k)))*half*ws(k,nddl)*vol(i)
308 fnlth(i,k+1) = fnlth(i,k+1) + (k12*unlth(i,k) + k2*unlth(i,k+1)
309 . + xi*(nth1*nth2*vnlth(i,k)
310 . + (nth2**2)*vnlth(i,k+1))
311 . - nth2*var_reg(i,k))*half*ws(k,nddl)*vol(i)
314 IF (noda_dt > 0)
THEN
315 stifnlth(i,k) = stifnlth(i,k) +
max(abs(k1)+abs(k12),abs(k12)+abs(k2))*half*ws(k,nddl)*vol(i)
316 stifnlth(i,k+1) = stifnlth(i,k+1) +
max(abs(k1)+abs(k12),abs(k12)+abs(k2))*half*ws(k,nddl)*vol(i)
323 IF (noda_dt > 0)
THEN
329 dtn(i,k) = dtfac1(11)*cdamp*sqrt(two*massth(i,k)/
max(stifnlth(i,k),em20))
330 dtnod =
min(dtn(i,k),dtnod)
335 IF ((idtmin(11)==3).OR.(idtmin(11)==4).OR.(idtmin(11)==8))
THEN
337 IF (dtnod < dtmin1(11)*(sqrt(csta)))
THEN
340 IF (dtn(i,k) < dtmin1(11))
THEN
341 dt2p = dtmin1(11)/(dtfac1(11)*cdamp)
342 massth(i,k) =
max(massth(i,k),csta*half*stifnlth(i,k)*dt2p*dt2p*onep00001)
346 dtnod = dtmin1(11)*(sqrt(csta))
351 IF (dtnod < dt2t)
THEN
352 dt2t =
min(dt2t,dtnod)
359 vnlth(i,k) = vnlth(i,k) - (fnlth(i,k)/massth(i,k))*dt12
366 unlth(i,k) = unlth(i,k) + vnlth(i,k)*dt1
373 nth1 = (as(k,nddl) - zs(k+1,nddl))/
374 . (zs(k,nddl) - zs(k+1,nddl))
375 nth2 = (as(k,nddl) - zs(k,nddl))/
376 . (zs(k+1,nddl) - zs(k,nddl))
380 var_reg(i,k) = nth1*unlth(i,k) + nth2*unlth(i,k+1)
395 IF (off(i) /= zero)
THEN
398 ntn_unl = (unl(pos1(i)+k-1) + unl(pos2(i)+k-1) + unl(pos3(i)+k-1) + unl(pos4(i)+k-1)
399 . + unl(pos5(i)+k-1) + unl(pos6(i)+k-1) + unl(pos7(i)+k-1) + unl(pos8(i)+k-1)) / ntn
402 ntn_vnl = (vnl(pos1(i)+k-1) + vnl(pos2(i)+k-1) + vnl(pos3(i)+k-1) + vnl(pos4(i)+k-1)
403 . + vnl(pos5(i)+k-1) + vnl(pos6(i)+k-1) + vnl(pos7(i)+k-1) + vnl(pos8(i)+k-1)) / ntn
404 IF (noda_dt > 0)
THEN
405 ntn_vnl =
min(sqrt(mass(pos1(i)+k-1)/mass0(pos1(i)+k-1)),
406 . sqrt(mass(pos2(i)+k-1)/mass0
407 . sqrt(mass(pos3(i)+k-1)/mass0(pos3(i)+k-1)),
408 . sqrt(mass(pos4(i)+k-1)/mass0(pos4(i)+k-1)),
409 . sqrt(mass(pos5(i)+k-1)/mass0(pos5(i)+k-1)),
410 . sqrt(mass(pos6(i)+k-1)/mass0(pos6(i)+k-1)),
411 . sqrt(mass(pos7(i)+k-1)/mass0(pos7(i)+k-1)
412 . sqrt(mass(pos8(i)+k-1)/mass0(pos8(i)+k-1)))*ntn_vnl
416 b1 = l2 * vol(i) * ws(k,nlay) *half * ( btb11(i)*unl(pos1(i)+k-1) + btb12(i)*unl(pos2(i)+k-1)
417 . + btb13(i)*unl(pos3(i)+k-1) + btb14(i)*unl(pos4(i)+k-1) - btb13(i)*unl(pos5(i)+k-1)
418 . - btb14(i)*unl(pos6(i)+k-1) - btb11(i)*unl(pos7(i)+k-1) - btb12(i)*unl(pos8(i)+k-1))
420 b2 = l2 * vol(i) * ws(k,nlay) *half * ( btb12(i)*unl(pos1(i)+k-1) + btb22(i)*unl(pos2(i)+k-1)
421 . + btb23(i)*unl(pos3(i)+k-1) + btb24(i)*unl(pos4(i)+k-1) - btb23(i)*unl(pos5(i)+k-1)
422 . - btb24(i)*unl(pos6(i)+k-1) - btb12(i)*unl(pos7(i)+k-1) - btb22(i)*unl(pos8(i)+k-1))
424 b3 = l2 * vol(i) * ws(k,nlay) *half * ( btb13(i)*unl(pos1(i)+k-1) + btb23(i)*unl(pos2(i)+k-1)
425 . + btb33(i)*unl(pos3(i)+k-1) + btb34(i)*unl(pos4(i)+k-1) - btb33(i)*unl(pos5
426 . - btb34(i)*unl(pos6(i)+k-1) - btb13(i)*unl(pos7(i)+k-1) - btb23(i)*unl(pos8(i)+k-1))
428 b4 = l2 * vol(i) * ws(k,nlay) *half * ( btb14(i)*unl(pos1(i)+k-1) + btb24(i)*unl(pos2(i)+k-1)
429 . + btb34(i)*unl(pos3(i)+k-1) + btb44(i)*unl(pos4(i)+k-1) - btb34(i)*unl(pos5(i)+k-1)
430 . - btb44(i)*unl(pos6(i)+k-1) - btb14(i)*unl(pos7(i)+k-1) - btb24(i)*unl(pos8(i)+k-1))
432 b5 = l2 * vol(i) * ws(k,nlay) *half * ( -btb13(i)*unl(pos1(i)+k-1)- btb23(i)*unl(pos2(i)+k-1)
433 . - btb33(i)*unl(pos3(i)+k-1) - btb34(i)*unl(pos4(i)+k-1) + btb33(i)*unl(pos5(i)+k-1)
434 . + btb34(i)*unl(pos6(i)+k-1) + btb13(i)*unl(pos7(i)+k-1) + btb23(i)*unl(pos8(i)+k-1))
436 b6 = l2 * vol(i) * ws(k,nlay) *half * ( -btb14(i)*unl(pos1(i)+k-1)- btb24(i)*unl(pos2(i)+k-1)
437 . - btb34(i)*unl(pos3(i)+k-1) - btb44(i)*unl(pos4(i)+k-1) + btb34(i)*unl(pos5(i)+k-1)
438 . + btb44(i)*unl(pos6(i)+k-1) + btb14(i)*unl(pos7(i)+k-1) + btb24(i)*unl(pos8(i)+k-1))
440 b7 = l2 * vol(i) * ws(k,nlay) *half * ( -btb11(i)*unl(pos1
441 . - btb13(i)*unl(pos3(i)+k-1) - btb14(i)*unl(pos4(i)+k-1) + btb13(i)*unl(pos5(i)+k-1)
442 . + btb14(i)*unl(pos6(i)+k-1) + btb11(i)*unl(pos7(i)+k-1) + btb12(i)*unl(pos8(i)+k-1))
444 b8 = l2 * vol(i) * ws(k,nlay) *half * ( -btb12(i)*unl(pos1(i
445 . - btb23(i)*unl(pos3(i)+k-1) - btb24(i)*unl(pos4(i)+k-1) + btb23(i)*unl(pos5(i)+k-1)
446 . + btb24(i)*unl(pos6(i)+k-1) + btb12(i
449 ntn_unl = ntn_unl * vol(i) * ws(k,nlay) * half
453 ntvar = var_reg(i,k)*one_over_8* vol(i) * ws(k,nlay) * half
456 a = ntn_unl + ntn_vnl - ntvar
467 IF (noda_dt > 0)
THEN
468 sti1(i,k) = (abs(l2*btb11(i) + one/ntn) + abs(l2*btb12(i) + one/ntn) + abs( l2*btb13(i) + one/ntn) +
469 . abs(l2*btb14(i) + one/ntn) + abs(-l2*btb13(i) + one/ntn) + abs(-l2*btb14(i) + one/ntn) +
470 . abs(-l2*btb11(i) + one/ntn) + abs(-l2*btb12(i) + one/ntn))*vol(i)*ws(k,nlay)*half
471 sti2(i,k) = (abs(l2*btb12(i) + one/ntn) + abs(l2*btb22(i) + one/ntn) + abs( l2*btb23(i) + one/ntn) +
472 . abs(l2*btb24(i) + one/ntn) + abs(-l2*btb23(i) + one/ntn) + abs(-l2*btb24(i) + one/ntn) +
473 . abs(-l2*btb12(i) + one/ntn) + abs(-l2*btb22(i) + one/ntn))*vol(i)*ws(k,nlay)*half
474 sti3(i,k) = (abs(l2*btb13(i) + one/ntn) + abs(l2*btb23(i) + one/ntn) + abs( l2*btb33(i) + one/ntn) +
475 . abs(l2*btb34(i) + one/ntn) + abs(-l2*btb33(i) + one/ntn) + abs(-l2*btb34(i) + one/ntn) +
476 . abs(-l2*btb13(i) + one/ntn) + abs(-l2*btb23(i) + one/ntn))*vol(i)*ws(k,nlay)*half
477 sti4(i,k) = (abs(l2*btb14(i) + one/ntn) + abs(l2*btb24(i) + one/ntn) + abs( l2*btb34(i) + one/ntn) +
478 . abs(l2*btb44(i) + one/ntn) + abs(-l2*btb34(i) + one/ntn) + abs(-l2*btb44(i) + one/ntn) +
479 . abs(-l2*btb14(i) + one/ntn) + abs(-l2*btb24(i) + one/ntn))*vol(i)*ws(k,nlay)*half
480 sti5(i,k) = (abs(-l2*btb13(i) + one/ntn) + abs(-l2*btb23(i) + one/ntn) + abs(-l2*btb33(i) + one/ntn) +
481 . abs(-l2*btb34(i) + one/ntn) + abs(l2*btb33(i) + one/ntn) + abs( l2*btb34(i) + one/ntn) +
482 . abs(l2*btb13(i) + one/ntn) + abs(l2*btb23(i) + one/ntn))*vol(i)*ws(k,nlay)*half
483 sti6(i,k) = (abs(-l2*btb14(i) + one/ntn) + abs(-l2*btb24(i) + one/ntn) + abs(-l2*btb34(i) + one/ntn) +
484 . abs(-l2*btb44(i) + one/ntn) + abs(l2*btb34(i) + one/ntn) + abs( l2*btb44(i) + one/ntn) +
485 . abs(l2*btb14(i) + one/ntn) + abs(l2*btb24(i) + one/ntn))*vol(i)
486 sti7(i,k) = (abs(-l2*btb11(i) + one/ntn) + abs(-l2*btb12(i) + one/ntn) + abs(-l2*btb13(i) + one/ntn) +
488 . abs(l2*btb11(i) + one/ntn) + abs(l2*btb12(i) + one/ntn))*vol(i)*ws(k,nlay)*half
489 sti8(i,k) = (abs(-l2*btb12(i) + one/ntn) + abs(-l2*btb22(i) + one/ntn) + abs(-l2*btb23(i) + one/ntn) +
490 . abs(-l2*btb24(i) + one/ntn) + abs(l2*btb23(i) + one/ntn) + abs( l2*btb24(i) + one/ntn) +
491 . abs(l2*btb12(i) + one/ntn) + abs(l2*btb22(i) + one/ntn))*vol(i)*ws(k,nlay)*half
498 lc(i) = (vol0(i)*ws(k,nlay)*half)**third
500 IF (noda_dt > 0)
THEN
502 f1(i,k) = sqrt(mass(pos1(i)+k-1)/mass0(pos1(i)+k-1))*zeta*sspnl*half*
503 . (vnl(pos1(i)+k-1)+vnl0(pos1(i)+k-1))*(three/four)*(lc(i)**2)
504 f2(i,k) = sqrt(mass(pos2(i)+k-1)/mass0(pos2(i)+k-1))*zeta*sspnl*half*
505 . (vnl(pos2(i)+k-1)+vnl0(pos2(i)+k-1))*(three/four)*(lc(i)**2)
506 f3(i,k) = sqrt(mass(pos3(i)+k-1)/mass0(pos3(i)+k-1))*zeta*sspnl*half*
507 . (vnl(pos3(i)+k-1)+vnl0(pos3(i)+k-1))*(three/four)*(lc(i)**2)
508 f4(i,k) = sqrt(mass(pos4(i)+k-1)/mass0(pos4(i)+k-1))*zeta*sspnl*half*
509 . (vnl(pos4(i)+k-1)+vnl0(pos4(i)+k-1))*(three/four)*(lc(i)**2)
510 f5(i,k) = sqrt(mass(pos5(i)+k-1)/mass0(pos5(i)+k-1))*zeta*sspnl*half*
511 . (vnl(pos5(i)+k-1)+vnl0(pos5(i)+k-1))*(three/four)*(lc(i)**2)
512 f6(i,k) = sqrt(mass(pos6(i)+k-1)/mass0(pos6(i)+k-1))*zeta*sspnl*half*
513 . (vnl(pos6(i)+k-1)+vnl0(pos6(i)+k-1))*(three/four)*(lc(i)**2)
514 f7(i,k) = sqrt(mass(pos7(i)+k-1)/mass0(pos7(i)+k-1))*zeta*sspnl*half*
515 . (vnl(pos7(i)+k-1)+vnl0(pos7(i)+k-1))*(three/four)*(lc(i)**2)
516 f8(i,k) = sqrt(mass(pos8(i)+k-1)/mass0(pos8(i)+k-1))*zeta*sspnl*half*
517 . (vnl(pos8(i)+k-1)+vnl0(pos8(i)+k-1))*(three/four)*(lc(i)**2)
529 f1(i,k) = zeta*sspnl*half*(vnl(pos1(i)+k-1)+vnl0(pos1(i)+k-1))*(three/four)*(lc(i)**2)
530 f2(i,k) = zeta*sspnl*half*(vnl(pos2(i)+k-1)+vnl0(pos2(i)+k-1))*(three/four)*(lc(i)**2)
531 f3(i,k) = zeta*sspnl*half*(vnl(pos3(i)+k-1)+vnl0(pos3(i)+k-1))*(three/four)*(lc(i)**2)
532 f4(i,k) = zeta*sspnl*half*(vnl(pos4(i)+k-1)+vnl0(pos4(i)+k-1))*(three/four)*(lc(i)**2)
533 f5(i,k) = zeta*sspnl*half*(vnl(pos5(i)+k-1)+vnl0(pos5(i)+k-1))*(three/four)*(lc(i)**2)
534 f6(i,k) = zeta*sspnl*half*(vnl(pos6(i)+k-1)+vnl0(pos6(i)+k-1))*(three/four)*(lc(i)**2)
535 f7(i,k) = zeta*sspnl*half*(vnl(pos7(i)+k-1)+vnl0(pos7(i)+k-1))*(three/four)*(lc(i)**2)
536 f8(i,k) = zeta*sspnl*half*(vnl(pos8(i)+k-1)+vnl0(pos8(i)+k-1))*(three/four)*(lc(i)**2)
547 IF (iparit == 0)
THEN
549 fnl => nloc_dmg%FNL(1:l_nloc,itask+1)
557 fnl(pos1(i)+k-1) = fnl(pos1(i)+k-1) - f1(i,k)
558 fnl(pos2(i)+k-1) = fnl(pos2(i)+k-1) - f2(i,k)
559 fnl(pos3(i)+k-1) = fnl(pos3(i)+k-1) - f3(i,k)
560 fnl(pos4(i)+k-1) = fnl(pos4(i)+k-1) - f4(i,k)
561 fnl(pos5(i)+k-1) = fnl(pos5(i)+k-1) - f5(i,k)
562 fnl(pos6(i)+k-1) = fnl(pos6(i)+k-1) - f6(i,k)
563 fnl(pos7(i)+k-1) = fnl(pos7(i)+k-1) - f7(i,k)
564 fnl(pos8(i)+k-1) = fnl(pos8(i)+k-1) - f8(i,k)
565 IF (noda_dt > 0)
THEN
567 maxstif =
max(sti1(i,k),sti2(i,k),sti3(i,k),sti4(i,k),
568 . sti5(i,k),sti6(i,k),sti7(i,k),sti8(i,k))
570 nloc_dmg%STIFNL(pos1(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos1(i)+k-1,itask+1) + maxstif
571 nloc_dmg%STIFNL(pos2(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos2(i)+k-1,itask
572 nloc_dmg%STIFNL(pos3(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos3(i
573 nloc_dmg%STIFNL(pos4(i)+k-1,itask+1) = nloc_dmg%STIFNL
574 nloc_dmg%STIFNL(pos5(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos5(i)+k-1,itask+1) + maxstif
575 nloc_dmg%STIFNL(pos6(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos6(i)+k-1,itask+1) + maxstif
576 nloc_dmg%STIFNL(pos7(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos7(i)+k-1,itask+1) + maxstif
577 nloc_dmg%STIFNL(pos8(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos8(i)+k-1,itask+1) + maxstif
592 IF (noda_dt > 0)
THEN
593 maxstif =
max(sti1(i,j),sti2(i,j),sti3(i,j),sti4(i,j),
594 . sti5(i,j),sti6(i,j),sti7(i,j),sti8(i,j))
597 k = nloc_dmg%IADS(1,ii)
598 nloc_dmg%FSKY(k,j) = -f1(i,j)
599 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
601 k = nloc_dmg%IADS(2,ii)
602 nloc_dmg%FSKY(k,j) = -f2(i,j)
603 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
605 k = nloc_dmg%IADS(3,ii)
606 nloc_dmg%FSKY(k,j) = -f3(i,j)
607 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
609 k = nloc_dmg%IADS(4,ii)
610 nloc_dmg%FSKY(k,j) = -f4(i,j)
611 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
613 k = nloc_dmg%IADS(5,ii)
614 nloc_dmg%FSKY(k,j) = -f5(i,j)
615 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
617 k = nloc_dmg%IADS(6,ii)
618 nloc_dmg%FSKY(k,j) = -f6(i,j)
619 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
621 k = nloc_dmg%IADS(7,ii)
622 nloc_dmg%FSKY(k,j) = -f7(i,j)
623 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
625 k = nloc_dmg%IADS(8,ii)
626 nloc_dmg%FSKY(k,j) = -f8(i,j)
627 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
636 IF (noda_dt == 0)
THEN
639 IF (off(i)/=zero)
THEN
641 dtnl = (two*(
min((vol(i))**third,le_max))*sqrt(three*zeta))/
642 . sqrt(twelve*l2 + (
min((vol(i))**third,le_max))**2)
644 IF ((l2>zero).AND.(nlay > 1))
THEN
645 dtnl_th = (two*(
min(lthk(i),le_max))*sqrt(three*zeta))/
646 . sqrt(twelve*l2 + (
min(lthk(i),le_max))**2)
651 dt2t =
min(dt2t,dtfac1(1)*cdamp*dtnl_th,dtfac1(1)*cdamp*dtnl)
657 IF (
ALLOCATED(btb11))
DEALLOCATE(btb11)
658 IF (
ALLOCATED(btb12))
DEALLOCATE(btb12)
659 IF (
ALLOCATED(btb13))
DEALLOCATE(btb13)
660 IF (
ALLOCATED(btb14))
DEALLOCATE(btb14)
661 IF (
ALLOCATED(btb22))
DEALLOCATE(btb22)
662 IF (
ALLOCATED(btb23))
DEALLOCATE(btb23)
663 IF (
ALLOCATED(btb24))
DEALLOCATE(btb24)
664 IF (
ALLOCATED(btb33))
DEALLOCATE(btb33)
665 IF (
ALLOCATED(btb34))
DEALLOCATE(btb34)
666 IF (
ALLOCATED(btb44))
DEALLOCATE(btb44)
667 IF (
ALLOCATED(pos1))
DEALLOCATE(pos1)
668 IF (
ALLOCATED(pos2))
DEALLOCATE(pos2)
669 IF (
ALLOCATED(pos3))
DEALLOCATE(pos3)
670 IF (
ALLOCATED(pos4))
DEALLOCATE(pos4)
671 IF (
ALLOCATED(pos5))
DEALLOCATE(pos5)
672 IF (
ALLOCATED(pos6))
DEALLOCATE(pos6)
673 IF (
ALLOCATED(pos7))
DEALLOCATE(pos7)
674 IF (
ALLOCATED(pos8))
DEALLOCATE(pos8)
675 IF (
ALLOCATED(f1))
DEALLOCATE(f1)
676 IF (
ALLOCATED(f2))
DEALLOCATE(f2)
677 IF (
ALLOCATED(f3))
DEALLOCATE(f3)
678 IF (
ALLOCATED(f4))
DEALLOCATE(f4)
679 IF (
ALLOCATED(f5
DEALLOCATE(f5)
680 IF (
ALLOCATED(f6))
DEALLOCATE(f6)
681 IF (
ALLOCATED(f7))
DEALLOCATE(f7)
682 IF (
ALLOCATED(f8))
DEALLOCATE(f8)
683 IF (
ALLOCATED(sti1
DEALLOCATE(sti1)
684 IF (
ALLOCATED(sti2))
DEALLOCATE(sti2)
685 IF (
ALLOCATED(sti3))
DEALLOCATE(sti3
686 IF (
ALLOCATED(sti4))
DEALLOCATE(sti4)
687 IF (
ALLOCATED(sti5))
DEALLOCATE(sti5)
688 IF (
ALLOCATED(sti6))
DEALLOCATE(sti6)
689 IF (
ALLOCATED(sti7))
DEALLOCATE(sti7)
690 IF (
ALLOCATED(sti8))
DEALLOCATE(sti8)
691 IF (
ALLOCATED(stifnlth))
DEALLOCATE(stifnlth)
692 IF (
ALLOCATED(dtn))
DEALLOCATE(dtn)
693 IF (
ALLOCATED(lc))
DEALLOCATE(lc)
694 IF (
ALLOCATED(thk))
DEALLOCATE(thk)
695 IF (
ALLOCATED(lthk))
DEALLOCATE(lthk)
subroutine scforc3(timers, output, elbuf_tab, ng, pm, geo, ixs, x, a, v, ms, w, flux, flu1, veul, fv, ale_connect, iparg, tf, npf, bufmat, partsav, nloc_dmg, dt2t, neltst, ityptst, stifn, fsky, iads, offset, eani, iparts, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, nel, icp, icsig, nvc, ipm, istrain, temp, fthe, fthesky, iexpan, igeo, gresav, grth, igrth, mssa, dmels, table, xdp, voln, condn, condnsky, itask, ioutprt, mat_elem, h3d_strain, dt, snpc, stf, sbufmat, svis, nsvois, idtmins, iresp, idel7ng, idel7nok, maxfunc, imon_mat, userl_avail, glob_therm, impl_s, idyna, sensors)