40
41
42
44 USE elbufdef_mod
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "parit_c.inc"
53#include "scr02_c.inc"
54#include "scr18_c.inc"
55#include "com08_c.inc"
56
57
58
59 INTEGER, INTENT(IN) :: NFT
60 INTEGER, INTENT(IN) ::
61 INTEGER, INTENT(IN) :: NEL
62 INTEGER, INTENT(IN) :: IMAT
63 INTEGER, INTENT(IN) :: ITASK
65 my_real,
DIMENSION(9,9),
INTENT(IN) :: ws
66 my_real,
DIMENSION(9,9),
INTENT(IN) :: as
67 my_real,
DIMENSION(NEL,NLAY),
INTENT(INOUT) :: var_reg
68 my_real,
DIMENSION(NEL),
INTENT(IN) :: vol
69 my_real,
DIMENSION(NEL),
INTENT(IN) :: off
70 my_real,
DIMENSION(NEL),
INTENT(IN) :: vol0
72 my_real,
DIMENSION(NEL),
INTENT(IN) :: px1
73 my_real,
DIMENSION(NEL),
INTENT(IN) :: px2
74 my_real,
DIMENSION(NEL),
INTENT(IN) :: px3
75 my_real,
DIMENSION(NEL),
INTENT(IN) :: px4
76 my_real,
DIMENSION(NEL),
INTENT(IN) :: py1
77 my_real,
DIMENSION(NEL),
INTENT(IN) :: py2
78 my_real,
DIMENSION(NEL),
INTENT(IN) :: py3
79 my_real,
DIMENSION(NEL),
INTENT(IN) :: py4
80 my_real,
DIMENSION(NEL),
INTENT(IN) :: pz1
81 my_real,
DIMENSION(NEL),
INTENT(IN) :: pz2
82 my_real,
DIMENSION(NEL),
INTENT(IN) :: pz3
83 my_real,
DIMENSION(NEL),
INTENT(IN) :: pz4
84 TYPE(NLOCAL_STR_), INTENT(INOUT), TARGET :: NLOC_DMG
85 TYPE(BUF_NLOCTS_), INTENT(INOUT), TARGET :: BUFNLTS
86 TYPE(BUF_NLOCS_) , INTENT(IN) :: NLOCS
87
88
89
90 INTEGER I,II,J,K,L,N1,N2,N3,N4,N5,N6,N7,N8,
91 . L_NLOC,NDDL,NDNOD,NINDX6,INDX6(NEL),
92 . NINDX8,INDX8(NEL)
93 INTEGER :: NODA_DT
94 INTEGER, DIMENSION(:), ALLOCATABLE ::
95 . POS1,POS2,POS3,POS4,POS5,POS6,POS7,POS8
97 . l2,ntn_unl,ntn_vnl,xi,ntvar,a,dtnl,le_max,
98 . b1,b2,b3,b4,b5,b6,b7,b8,zeta,sspnl,maxstif,
99 . bth1,bth2,nth1,nth2,dt2p,dtnod,k1,k2,k12,
100 . dtnl_th,ntn6,ntn8
101 my_real,
DIMENSION(:) ,
ALLOCATABLE ::
102 . btb11,btb12,btb13,btb14,btb22,btb23,btb24,
103 . btb33,btb34,btb44,lc,thk,lthk
104 my_real,
DIMENSION(:,:) ,
ALLOCATABLE ::
105 . f1,f2,f3,f4,f5,f6,f7,f8,stifnlth,dtn,
106 . sti1,sti2,sti3,sti4,sti5,sti6,sti7,sti8
107 my_real,
POINTER,
DIMENSION(:) ::
108 . vnl,fnl,unl,stifnl,mass,mass0,vnl0
109 my_real,
POINTER,
DIMENSION(:,:) ::
110 . massth,unlth,vnlth,fnlth
111
112 my_real,
PARAMETER :: csta = 40.0d0
113
114 my_real,
PARAMETER :: cdamp = 0.7d0
116 . zs(10,9)
117
118 DATA zs /
119 1 0. ,0. ,0. ,
120 1 0. ,0. ,0. ,
121 1 0. ,0. ,0. ,
122 1 0. ,
123 2 -1. ,0. ,1. ,
124 2 0. ,0. ,0. ,
125 2 0. ,0. ,0. ,
126 2 0. ,
127 3 -1. ,-.549193338482966,0.549193338482966,
128 3 1. ,0. ,0. ,
129 3 0. ,0. ,0. ,
130 3 0. ,
131 4 -1. ,-.600558677589454,0. ,
132 4 0.600558677589454,1. ,0. ,
133 4 0. ,0. ,0. ,
134 4 0. ,
135 5 -1. ,-.812359691877328,-.264578928334038,
136 5 0.264578928334038,0.812359691877328,1. ,
137 5 0. ,0. ,0. ,
138 5 0. ,
139 6 -1. ,-.796839450334708,-.449914286274731,
140 6 0. ,0.449914286274731,0.796839450334708,
141 6 1. ,0. ,0. ,
142 6 0. ,
143 7 -1. ,-.898215824685518,-.584846546513270,
144 7 -.226843756241524,0.226843756241524,0.584846546513270,
145 7 0.898215824685518,1. ,0. ,
146 7 0. ,
147 8 -1. ,-.878478166955581,-.661099443664978,
148 8 -.354483526205989,0. ,0.354483526205989,
149 8 0.661099443664978,0.878478166955581,1. ,
150 8 0. ,
151 9 -1. ,-.936320479015252,-.735741735638020,
152 9 -.491001129763160,-.157505717044458,0.157505717044458,
153 9 0.491001129763160,0.735741735638020,0.936320479015252,
154 9 1. /
155
156 noda_dt = nodadt
157
158
159 l2 = nloc_dmg%LEN(imat)**2
160 xi = nloc_dmg%DAMP(imat)
161 l_nloc = nloc_dmg%L_NLOC
162 zeta = nloc_dmg%DENS(imat)
163 sspnl = nloc_dmg%SSPNL(imat)
164 le_max = nloc_dmg%LE_MAX(imat)
165
166
167 ALLOCATE(btb11(nel),btb12(nel),btb13(nel),btb14(nel),btb22(nel),
168 . btb23(nel),btb24(nel),btb33(nel),btb34(nel),btb44(nel),
169 . f1(nel,nlay),f2(nel,nlay),f3(nel,nlay),f4(nel,nlay),
170 . f5(nel,nlay),f6(nel,nlay),f7(nel,nlay),f8(nel,nlay),
171 . pos1(nel),pos2(nel),pos3(nel),pos4(nel)
172 . pos6(nel),pos7(nel),pos8(nel),lc(nel),thk(nel),lthk(nel))
173
174
175 nindx6 = 0
176 indx6(1:nel) = 0
177 ntn6 = six*six
178 nindx8 = 0
179 indx8(1:nel) = 0
180 ntn8 = eight*eight
181
182
183 lc(1:nel) = zero
184
185 IF (noda_dt > 0) THEN
186
187 ALLOCATE(sti1(nel,nlay),sti2(nel,nlay),sti3(nel
188 . sti5(nel,nlay),sti6(nel,nlay),sti7
189
190 mass => nloc_dmg%MASS(1:l_nloc)
191
192 mass0 => nloc_dmg%MASS0(1:l_nloc)
193 ELSE
194 NULLIFY(mass,mass0)
195 ALLOCATE(sti1(1,1),sti2(1,1),sti3(1,1),sti4(1,1),
196 . sti5(1,1),sti6(1,1),sti7(1,1),sti8(1,1))
197 ENDIF
198
199 vnl => nloc_dmg%VNL(1:l_nloc)
200
201 vnl0 => nloc_dmg%VNL_OLD(1:l_nloc)
202
203 unl => nloc_dmg%UNL(1:l_nloc)
204
205
206
207
208
209 DO i=1,nel
210
211 btb11(i) = px1(i)**2 + py1(i)**2 + pz1(i)**2
212 btb12(i) = px1(i)*px2(i) + py1(i)*py2(i) + pz1(i)*pz2(i)
213 btb13(i) = px1(i)*px3(i) + py1(i)*py3(i) + pz1(i)*pz3(i)
214 btb14(i) = px1(i)*px4(i) + py1(i)*py4(i) + pz1(i)*pz4(i)
215 btb22(i) = px2(i)**2 + py2(i)**2 + pz2(i)**2
216 btb23(i) = px2(i)*px3(i) + py2(i)*py3(i) + pz2(i)*pz3(i)
217 btb24(i) = px2(i)*px4(i) + py2(i)*py4(i) + pz2(i)*pz4(i)
218 btb33(i) = px3(i)**2 + py3(i)**2 + pz3(i)**2
219 btb34(i) = px3(i)*px4(i) + py3(i)*py4(i) + pz3(i)*pz4(i)
220 btb44(i) = px4(i)**2 + py4(i)**2 + pz4(i)**2
221 ENDDO
222
223
224 DO i=1,nel
225
226
227 IF (nlocs%NL_ISOLNOD(i) == 6) THEN
228
229
230 nindx6 = nindx6 + 1
231 indx6(nindx6) = i
232
233
234 n1 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(1,i))
235 n2 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(2,i))
236 n3 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(3,i))
237 n4 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(4,i))
238 n5 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(5,i))
239 n6 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(6,i))
240
241
242 pos1(i) = nloc_dmg%POSI(n1)
243 pos2(i) = nloc_dmg%POSI(n2)
244 pos3(i) = nloc_dmg%POSI(n3)
245 pos4(i) = nloc_dmg%POSI(n4)
246 pos5(i) = nloc_dmg%POSI(n5)
247 pos6(i) = nloc_dmg%POSI(n6)
248
249
250 ELSEIF (nlocs%NL_ISOLNOD(i) == 8) THEN
251
252
253 nindx8 = nindx8 + 1
254 indx8(nindx8) = i
255
256
257 n1 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(1,i))
258 n2 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(2,i))
259 n3 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(3,i))
260 n4 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(4,i))
261 n5 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(5,i))
262 n6 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(6,i))
263 n7 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(7,i))
264 n8 = nloc_dmg%IDXI(nlocs%NL_SOLNOD(8,i))
265
266
267 pos1(i) = nloc_dmg%POSI(n1)
268 pos2(i) = nloc_dmg%POSI(n2)
269 pos3(i) = nloc_dmg%POSI(n3)
270 pos4(i) = nloc_dmg%POSI(n4)
271 pos5(i) = nloc_dmg%POSI(n5)
272 pos6(i) = nloc_dmg%POSI(n6)
273 pos7(i) = nloc_dmg%POSI(n7)
274 pos8(i) = nloc_dmg%POSI(n8)
275
276 ENDIF
277 ENDDO
278
279
280
281
282 IF ((l2>zero).AND.(nlay > 1)) THEN
283
284
285 DO i = 1,nel
286 thk(i) = vol(i)/
area(i)
287 lthk(i) = (zs(nlay+1,nlay)-zs(nlay,nlay))*thk(i)*half
288 ENDDO
289
290
291 nddl = nlay
292 IF (noda_dt > 0) THEN
293 ALLOCATE(stifnlth(nel,nddl+1))
294 ALLOCATE(dtn(nel,nddl+1))
295 ELSE
296 ALLOCATE(dtn(1,1))
297 dtn = ep20
298 ALLOCATE(stifnlth(1,1))
299 stifnlth = ep20
300 ENDIF
301 ndnod = nddl+1
302
303
304 massth => bufnlts%MASSTH(1:nel,1:ndnod)
305 unlth => bufnlts%UNLTH(1:nel ,1:ndnod
306 vnlth => bufnlts%VNLTH(1:nel ,1:ndnod)
307 fnlth => bufnlts%FNLTH(1:nel ,1:ndnod)
308
309 DO k = 1,ndnod
310 DO i = 1,nel
311
312 fnlth(i,k) = zero
313
314 IF (noda_dt > 0) THEN
315 stifnlth(i,k) = em20
316 ENDIF
317 ENDDO
318 ENDDO
319
320
321 DO k = 1, nddl
322
323
324 nth1 = (as(k,nddl) - zs(k+1,nddl)) /
325 . (zs(k,nddl) - zs(k+1,nddl))
326 nth2 = (as(k,nddl) - zs(k,nddl)) /
327 . (zs(k+1,nddl) - zs(k,nddl))
328
329
330 DO i = 1,nel
331
332
333 bth1 = (one/(zs(k,nddl) - zs(k+1,nddl)))*(two/thk(i))
334 bth2 = (one/(zs(k+1,nddl) - zs(k,nddl)))*(two/thk(i))
335
336
337 k1 = l2*(bth1**2) + nth1**2
338 k12 = l2*(bth1*bth2)+ (nth1*nth2)
339 k2 = l2*(bth2**2) + nth2**2
340
341
342 fnlth(i,k) = fnlth(i,k) + (k1*unlth(i,k) + k12*unlth(i,k+1)
343 . + xi*((nth1**2)*vnlth(i,k)
344 . + (nth1*nth2)*vnlth(i,k+1))
345 . - (nth1*var_reg(i,k)))*half*ws(k,nddl
346 fnlth(i,k+1) = fnlth(i,k+1) + (k12*unlth(i,k) + k2*unlth(i,k+1)
347 . + xi*(nth1*nth2*vnlth(i,k)
348 . + (nth2**2)*vnlth(i,k+1))
349 . - nth2*var_reg(i,k))*half*ws(k,nddl)*vol(i)
350
351
352 IF (noda_dt > 0) THEN
353 stifnlth(i,k) = stifnlth(i,k) +
max(abs(k1)+abs(k12),abs(k12)+abs(k2))*half*ws(k,nddl)*vol(i)
354 stifnlth(i,k+1) = stifnlth(i,k+1) +
max(abs(k1)+abs(k12),abs(k12)+abs(k2))*half*ws(k,nddl)*vol(i)
355 ENDIF
356
357 ENDDO
358 ENDDO
359
360
361 IF (noda_dt > 0) THEN
362
363
364 dtnod = ep20
365 DO k = 1,ndnod
366 DO i = 1,nel
367 dtn(i,k) = dtfac1(11)*cdamp*sqrt(two*massth(i,k)/
max(stifnlth(i,k),em20))
368 dtnod =
min(dtn(i,k),dtnod)
369 ENDDO
370 ENDDO
371
372
373 IF ((idtmin(11)==3).OR.(idtmin(11)==4).OR.(idtmin(11)==8)) THEN
374
375 IF (dtnod < dtmin1(11)*(sqrt(csta))) THEN
376 DO k = 1,ndnod
377 DO i = 1,nel
378 IF (dtn(i,k) < dtmin1(11)) THEN
379 dt2p = dtmin1(11)/(dtfac1(11)*cdamp)
380 massth(i,k) =
max(massth(i,k),csta*half*stifnlth(i,k)*dt2p*dt2p*onep00001)
381 ENDIF
382 ENDDO
383 ENDDO
384 ENDIF
385 dtnod = dtmin1(11)*(sqrt(csta))
386 ENDIF
387
388
389 IF (dtnod < dt2t) THEN
390 dt2t =
min(dt2t,dtnod)
391 ENDIF
392 ENDIF
393
394 DO k = 1,ndnod
395 DO i = 1,nel
396
397 vnlth(i,k) = vnlth(i,k) - (fnlth(i,k)/massth(i,k))*dt12
398 ENDDO
399 ENDDO
400
401 DO k = 1,ndnod
402 DO i = 1,nel
403
404 unlth(i,k) = unlth(i,k) + vnlth(i,k)*dt1
405 ENDDO
406 ENDDO
407
408
409 DO k = 1, nddl
410
411 nth1 = (as(k,nddl) - zs(k+1,nddl))/
412 . (zs(k,nddl) - zs(k+1,nddl))
413 nth2 = (as(k,nddl) - zs(k,nddl))/
414 . (zs(k+1,nddl) - zs(k,nddl))
415
416 DO i = 1,nel
417
418 var_reg(i,k) = nth1*unlth(i,k) + nth2*unlth(i,k+1)
419 ENDDO
420 ENDDO
421 ENDIF
422
423
424
425
426
427 DO k = 1,nlay
428
429
430#include "vectorize.inc"
431 DO ii = 1, nindx8
432
433
434 i = indx8(ii)
435
436
437 IF (off(i) /= zero) THEN
438
439
440 ntn_unl = (unl(pos1(i)+k-1) + unl(pos2(i)+k-1) + unl(pos3(i)+k-1) + unl(pos4(i)+k-1)
441 . + unl(pos5(i)+k-1) + unl(pos6(i)+k-1) + unl(pos7(i)+k-1) + unl
442
443
444 ntn_vnl = (vnl(pos1(i)+k-1) + vnl(pos2(i)+k-1) + vnl(pos3(i)+k-1) + vnl(pos4(i)+k-1)
445 . + vnl(pos5(i)+k-1) + vnl(pos6(i)+k-1) + vnl(pos7(i)+k-1) + vnl(pos8(i)+k-1)) / ntn8
446 IF (noda_dt > 0) THEN
447 ntn_vnl =
min(sqrt(mass(pos1(i)+k-1)/mass0(pos1(i)+k-1)),
448 . sqrt(mass(pos2(i)+k-1)/mass0(pos2(i)+k-1)),
449 . sqrt(mass(pos3(i)+k-1)/mass0(pos3(i)+k-1)),
450 . sqrt(mass(pos4(i)+k-1)/mass0(pos4(i)+k-1)),
451 . sqrt(mass(pos5(i)+k-1)/mass0(pos5(i)+k-1)),
452 . sqrt(mass(pos6(i)+k-1)/mass0(pos6(i)+k-1)),
453 . sqrt(mass(pos7(i)+k-1)/mass0(pos7(i)+k-1)),
454 . sqrt(mass(pos8(i)+k-1)/mass0(pos8(i)+k-1)))*ntn_vnl
455 ENDIF
456
457
458 b1 = l2 * vol(i) * ws(k,nlay) *half * ( btb11(i)*unl(pos1(i)+k-1) + btb12(i)*unl(pos2(i)+k-1)
459 . + btb13(i)*unl(pos3(i)+k-1) + btb14(i)*unl(pos4(i)+k-1) - btb13(i)*unl(pos5(i)+k-1)
460 . - btb14(i)*unl(pos6(i)+k-1) - btb11(i)*unl(pos7(i)+k-1) - btb12(i)*unl(pos8(i)+k-1))
461
462 b2 = l2 * vol(i) * ws(k,nlay) *half * ( btb12(i)*unl(pos1(i)+k-1) + btb22(i)*unl(pos2(i)+k-1)
463 . + btb23(i)*unl(pos3(i)+k-1) + btb24(i)*unl(pos4(i)+k-1) - btb23(i)*unl(pos5(i)+k-1)
464 . - btb24(i)*unl(pos6(i)+k-1) - btb12(i)*unl(pos7(i)+k-1) - btb22(i)*unl(pos8(i)+k-1))
465
466 b3 = l2 * vol(i) * ws(k,nlay) *half * ( btb13(i)*unl(pos1(i)+k-1) + btb23(i)*unl(pos2(i)+k-1)
467 . + btb33(i)*unl(pos3(i)+k-1) + btb34(i)*unl(pos4(i)+k-1) - btb33(i)*unl(pos5(i)+k-1)
468 . - btb34(i)*unl(pos6(i)+k-1) - btb13(i)*unl(pos7(i)+k-1) - btb23(i)*unl(pos8(i)+k-1))
469
470 b4 = l2 * vol(i) * ws(k,nlay) *half * ( btb14(i)*unl(pos1(i)+k-1) + btb24(i)*unl(pos2(i)+k-1)
471 . + btb34(i)*unl(pos3(i)+k-1) + btb44(i)*unl(pos4(i)+k-1) - btb34(i)*unl(pos5(i)+k-1)
472 . - btb44(i)*unl(pos6(i)+k-1) - btb14(i)*unl(pos7(i)+k-1) - btb24(i)*unl(pos8(i)+k-1))
473
474 b5 = l2 * vol(i) * ws(k,nlay) *half * ( -btb13(i)*unl(pos1(i)+k-1)- btb23(i)*unl(pos2(i)+k-1)
475 . - btb33(i)*unl(pos3(i)+k-1) - btb34(i)*unl(pos4(i)+k-1) + btb33(i)*unl(pos5(i)+k-1)
476 . + btb34(i)*unl(pos6(i)+k-1) + btb13(i)*unl(pos7(i)+k-1) + btb23(i)*unl(pos8(i)+k-1))
477
478 b6 = l2 * vol(i) * ws(k,nlay) *half * ( -btb14(i)*unl(pos1(i)+k-1)- btb24(i)*unl(pos2(i)+k-1)
479 . - btb34(i)*unl(pos3(i)+k-1) - btb44(i)*unl(pos4(i)+k-1) + btb34(i)*unl(pos5(i)+k-1)
480 . + btb44(i)*unl(pos6(i)+k-1) + btb14(i)*unl(pos7(i)+k-1) + btb24(i)*unl(pos8(i)+k-1))
481
482 b7 = l2 * vol(i) * ws(k,nlay) *half * ( -btb11(i)*unl(pos1(i)+k-1)- btb12(i)*unl(pos2(i)+k-1)
483 . - btb13(i)*unl(pos3(i)+k-1) - btb14(i)*unl(pos4(i)+k-1) + btb13(i)*unl(pos5(i)+k-1)
484 . + btb14(i)*unl(pos6(i)+k-1) + btb11(i)*unl(pos7(i)+k-1) + btb12(i)*unl(pos8(i)+k-1))
485
486 b8 = l2 * vol(i) * ws(k,nlay) *half * ( -btb12(i)*unl(pos1(i)+k-1)- btb22(i)*unl(pos2(i)+k-1)
487 . - btb23(i)*unl(pos3(i)+k-1) - btb24(i)*unl(pos4(i)+k-1) + btb23(i)*unl(pos5(i)+k-1)
488 . + btb24(i)*unl(pos6(i)+k-1) + btb12(i)*unl(pos7(i)+k-1) + btb22(i)*unl(pos8(i)+k-1))
489
490
491 ntn_unl = ntn_unl * vol(i) * ws(k,nlay) * half
492 ntn_vnl = ntn_vnl * xi * vol(i) * ws(k,nlay) * half
493
494
495 ntvar = var_reg(i,k)*one_over_8* vol(i) * ws(k,nlay) * half
496
497
498 a = ntn_unl + ntn_vnl - ntvar
499 f1(i,k) = a + b1
500 f2(i,k) = a + b2
501 f3(i,k) = a + b3
502 f4(i,k) = a + b4
503 f5(i,k) = a + b5
504 f6(i,k) = a + b6
505 f7(i,k) = a + b7
506 f8(i,k) = a + b8
507
508
509 IF (noda_dt > 0) THEN
510 sti1(i,k) = (abs(l2*btb11(i) + one/ntn8) + abs(l2*btb12(i) + one/ntn8) + abs(l2*btb13(i) + one/ntn8) +
511 . abs(l2*btb14(i) + one/ntn8) + abs(-l2*btb13(i) + one/ntn8) + abs(-l2*btb14(i) + one/ntn8) +
512 . abs(-l2*btb11(i) + one/ntn8) + abs(-l2*btb12(i) + one/ntn8))*vol(i)*ws(k,nlay)*half
513 sti2(i,k) = (abs(l2*btb12(i) + one/ntn8) + abs(l2*btb22(i) + one/ntn8) + abs(l2*btb23(i) + one/ntn8) +
514 . abs(l2*btb24(i) + one/ntn8) + abs(-l2*btb23(i) + one/ntn8) + abs(-l2*btb24(i) + one/ntn8) +
515 . abs(-l2*btb12(i) + one/ntn8) + abs(-l2*btb22(i) + one/ntn8))*vol(i)*ws(k,nlay)*half
516 sti3(i,k) = (abs(l2*btb13(i) + one/ntn8) + abs(l2*btb23(i) + one/ntn8) + abs(l2*btb33(i) + one/ntn8) +
517 . abs(l2*btb34(i) + one/ntn8) + abs(-l2*btb33(i) + one/ntn8) + abs(-l2*btb34(i) + one/ntn8) +
518 . abs(-l2*btb13(i) + one/ntn8) + abs(-l2*btb23(i) + one/ntn8))*vol(i)*ws(k,nlay)*half
519 sti4(i,k) = (abs(l2*btb14(i) + one/ntn8) + abs(l2*btb24(i) + one/ntn8) + abs(l2*btb34(i) + one/ntn8) +
520 . abs(l2*btb44(i) + one/ntn8) + abs(-l2*btb34(i) + one/ntn8) + abs(-l2*btb44(i) + one/ntn8) +
521 . abs(-l2*btb14(i) + one/ntn8) + abs(-l2*btb24(i) + one/ntn8))*vol(i)*ws(k,nlay)*half
522 sti5(i,k) = (abs(-l2*btb13(i) + one/ntn8) + abs(-l2*btb23(i) + one/ntn8) + abs(-l2*btb33(i) + one/ntn8) +
523 . abs(-l2*btb34(i) + one/ntn8) + abs(l2*btb33(i) + one/ntn8) + abs(l2*btb34(i) + one/ntn8) +
524 . abs(l2*btb13(i) + one/ntn8) + abs(l2*btb23(i) + one/ntn8))*vol(i)*ws(k,nlay)*half
525 sti6(i,k) = (abs(-l2*btb14(i) + one/ntn8) + abs(-l2*btb24(i) + one/ntn8) + abs(-l2*btb34(i) + one/ntn8) +
526 . abs(-l2*btb44(i) + one/ntn8) + abs(l2*btb34(i) + one/ntn8) + abs(l2*btb44(i) + one/ntn8) +
527 . abs(l2*btb14(i) + one/ntn8) + abs(l2*btb24(i) + one/ntn8))*vol(i)*ws(k,nlay)*half
528 sti7(i,k) = (abs(-l2*btb11(i) + one/ntn8) + abs(-l2*btb12(i) + one/ntn8) + abs(-l2*btb13(i) + one/ntn8) +
529 . abs(-l2*btb14(i) + one/ntn8) + abs(l2*btb13(i) + one/ntn8) + abs(l2*btb14(i) + one/ntn8) +
530 . abs(l2*btb11(i) + one/ntn8) + abs(l2*btb12(i) + one/ntn8))*vol(i)*ws(k,nlay)*half
531 sti8(i,k) = (abs(-l2*btb12(i) + one/ntn8) + abs(-l2*btb22(i) + one/ntn8) + abs(-l2*btb23(i) + one/ntn8) +
532 . abs(-l2*btb24(i) + one/ntn8) + abs(l2*btb23(i) + one/ntn8) + abs(l2*btb24(i) + one/ntn8) +
533 . abs(l2*btb12(i) + one/ntn8) + abs(l2*btb22(i) + one/ntn8))*vol(i)*ws(k,nlay)*half
534 ENDIF
535
536
537 ELSE
538
539
540 lc(i) = (vol0(i)*ws(k,nlay)*half)**third
541
542 IF (noda_dt > 0) THEN
543
544 f1(i,k) = sqrt(mass(pos1(i)+k-1)/mass0(pos1(i)+k-1))*zeta*sspnl*half*
545 . (vnl(pos1(i)+k-1)+vnl0(pos1(i)+k-1))*(three/four)*(lc(i)**2)
546 f2(i,k) = sqrt(mass(pos2(i)+k-1)/mass0(pos2(i)+k-1))*zeta*sspnl*half*
547 . (vnl(pos2(i)+k-1)+vnl0(pos2(i)+k-1))*(three/four)*(lc(i)**2)
548 f3(i,k) = sqrt(mass(pos3(i)+k-1)/mass0(pos3(i)+k-1))*zeta*sspnl*half*
549 . (vnl(pos3(i)+k-1)+vnl0(pos3(i)+k-1))*(three/four)*(lc(i)**2)
550 f4(i,k) = sqrt(mass(pos4(i)+k-1)/mass0(pos4(i)+k-1))*zeta*sspnl*half*
551 . (vnl(pos4(i)+k-1)+vnl0(pos4(i)+k-1))*(three/four)*(lc(i)**2)
552 f5(i,k) = sqrt(mass(pos5(i)+k-1)/mass0(pos5(i)+k-1))*zeta*sspnl*half*
553 . (vnl(pos5(i)+k-1)+vnl0(pos5(i)+k-1))*(three/four)*(lc(i)**2)
554 f6(i,k) = sqrt(mass(pos6(i)+k-1)/mass0(pos6(i)+k-1))*zeta*sspnl*half*
555 . (vnl(pos6(i)+k-1)+vnl0(pos6(i)+k-1))*(three/four)*(lc(i)**2)
556 f7(i,k) = sqrt(mass(pos7(i)+k-1)/mass0(pos7(i)+k-1))*zeta*sspnl*half*
557 . (vnl(pos7(i)+k-1)+vnl0(pos7(i)+k-1))*(three/four)*(lc(i)**2)
558 f8(i,k) = sqrt(mass(pos8(i)+k-1)/mass0(pos8(i)+k-1))*zeta*sspnl*half*
559 . (vnl(pos8(i)+k-1)+vnl0(pos8(i)+k-1))*(three/four)*(lc(i)**2)
560
561 sti1(i,k) = em20
562 sti2(i,k) = em20
563 sti3(i,k) = em20
564 sti4(i,k) = em20
565 sti5(i,k) = em20
566 sti6(i,k) = em20
567 sti7(i,k) = em20
568 sti8(i,k) = em20
569 ELSE
570
571 f1(i,k) = zeta*sspnl*half*(vnl(pos1(i)+k-1)+vnl0(pos1(i)+k-1))*(three/four)*(lc(i)**2)
572 f2(i,k) = zeta*sspnl*half*(vnl(pos2(i)+k-1)+vnl0(pos2(i)+k-1))*(three/four)*(lc(i)**2)
573 f3(i,k) = zeta*sspnl*half*(vnl(pos3(i)+k-1)+vnl0(pos3(i)+k-1))*(three/four)*(lc(i)**2)
574 f4(i,k) = zeta*sspnl*half*(vnl(pos4(i)+k-1)+vnl0(pos4(i)+k-1))*(three/four)*(lc(i)**2)
575 f5(i,k) = zeta*sspnl*half*(vnl(pos5(i)+k-1)+vnl0(pos5(i)+k-1))*(three/four)*(lc(i)**2)
576 f6(i,k) = zeta*sspnl*half*(vnl(pos6(i)+k-1)+vnl0(pos6(i)+k-1))*(three/four)*(lc(i)**2)
577 f7(i,k) = zeta*sspnl*half*(vnl(pos7(i)+k-1)+vnl0(pos7(i)+k-1))*(three/four)*(lc(i)**2)
578 f8(i,k) = zeta*sspnl*half*(vnl(pos8(i)+k-1)+vnl0(pos8(i)+k-1))*(three/four)*(lc(i)**2)
579 ENDIF
580 ENDIF
581 ENDDO
582
583
584#include "vectorize.inc"
585 DO ii = 1, nindx6
586
587
588 i = indx6(ii)
589
590
591 IF (off(i) /= zero) THEN
592
593
594 ntn_unl = (unl(pos1(i)+k-1) + unl(pos2(i)+k-1) + unl(pos3(i)+k-1) +
595 . unl(pos4(i)+k-1) + unl(pos5(i)+k-1) + unl(pos6(i)+k-1)) / ntn6
596
597
598 ntn_vnl = (vnl(pos1(i)+k-1) + vnl(pos2(i)+k-1) + vnl(pos3(i)+k-1) +
599 . vnl(pos4(i)+k-1) + vnl(pos5(i)+k-1) + vnl(pos6(i)+k-1)) / ntn6
600 IF (noda_dt > 0) THEN
601 ntn_vnl = (sqrt(mass(pos1(i)+k-1)/mass0(pos1
602 . sqrt(mass(pos2(i)+k-1)/mass0(pos2(i)+k-1))*vnl(pos2(i)+k-1) +
603 . sqrt(mass(pos3(i)+k-1)/mass0(pos3(i)+k-1))*vnl(pos3(i)+k-1) +
604 . sqrt(mass(pos4(i)+k-1)/mass0(pos4(i)+k-1))*vnl(pos4(i)+k-1) +
605 . sqrt(mass(pos5(i)+k-1)/mass0(pos5(i)+k-1))*vnl(pos5(i)+k-1) +
606 . sqrt(mass(pos6(i)+k-1)/mass0(pos6(i)+k-1))*vnl(pos6(i)+k-1)) / ntn6
607 ENDIF
608
609
610 b1 = l2 * vol(i) * ws(k,nlay) *half * ( btb11(i)*unl(pos1(i)+k-1) + btb12(i)*unl(pos2(i)+k-1)
611 . + btb13(i)*unl(pos3(i)+k-1) - btb13(i)*unl(pos4(i)+k-1) - btb12(i)*unl(pos5
612 . - btb11(i)*unl(pos6(i)+k-1) )
613
614 b2 = l2 * vol(i) * ws(k,nlay) *half * ( btb12(i)*unl(pos1(i)+k-1) + btb22(i
615 . + btb23(i)*unl(pos3(i)+k-1) - btb23(i)*unl(pos4(i)+k-1) - btb22(i)*unl(pos5(i)+k-1)
616 . - btb12(i)*unl(pos6(i)+k-1) )
617
618 b3 = l2 * vol(i) * ws(k,nlay) *half * ( btb13(i)*unl(pos1(i)+k-1) + btb23(i)*unl(pos2(i)+k-1)
619 . + btb33(i)*unl(pos3(i)+k-1) - btb33(i)*unl(pos4(i)+k-1) - btb23(i)*unl(pos5(i)+k-1)
620 . - btb13(i)*unl(pos6(i)+k-1) )
621
622 b4 = l2 * vol(i) * ws(k,nlay) *half * (-btb13(i)*unl(pos1(i)+k-1) - btb23(i)*unl(pos2(i)+k-1)
623 . - btb33(i)*unl(pos3(i)+k-1) + btb33(i)*unl(pos4(i)+k-1) + btb23(i)*unl(pos5(i)+k-1)
624 . + btb13(i)*unl(pos6(i)+k-1) )
625
626 b5 = l2 * vol(i) * ws(k,nlay) *half * ( -btb12(i)*unl(pos1(i)+k-1)- btb22(i)*unl(pos2(i)+k-1)
627 . - btb23(i)*unl(pos3(i)+k-1) + btb23(i)*unl(pos4(i)+k-1) + btb22(i)*unl(pos5(i)+k-1)
628 . + btb12(i)*unl(pos6(i)+k-1) )
629
630 b6 = l2 * vol(i) * ws(k,nlay) *half * ( -btb11(i)*unl(pos1(i)+k-1)- btb12(i)*unl(pos2(i)+k-1)
631 . - btb13(i)*unl(pos3(i)+k-1) + btb13(i)*unl(pos4(i)+k-1) + btb12(i)*unl(pos5(i)+k-1)
632 . + btb11(i)*unl(pos6(i)+k-1) )
633
634
635 ntn_unl = ntn_unl * vol(i) * ws(k,nlay) * half
636 ntn_vnl = ntn_vnl * xi * vol(i) * ws(k
637
638
639 ntvar = var_reg(i,k)*one_over_6* vol(i) * ws(k,nlay) * half
640
641
642 a = ntn_unl + ntn_vnl - ntvar
643 f1(i,k) = a + b1
644 f2(i,k) = a + b2
645 f3(i,k) = a + b3
646 f4(i,k) = a + b4
647 f5(i,k) = a + b5
648 f6(i,k) = a + b6
649
650
651 IF (noda_dt > 0) THEN
652 sti1(i,k) = (abs(l2*btb11(i) + one/ntn6) + abs(l2*btb12(i) + one/ntn6) +
653 . abs(l2*btb13(i) + one/ntn6) + abs(-l2*btb13(i) + one/ntn6) +
654 . abs(-l2*btb12(i) + one/ntn6) + abs(-l2*btb11(i) + one/ntn6))*vol(i)*ws(k,nlay)*half
655 sti2(i,k) = (abs(l2*btb12(i) + one/ntn6) + abs(l2*btb22(i) + one/ntn6) +
656 . abs(l2*btb23(i) + one/ntn6) + abs(-l2*btb23(i) + one/ntn6) +
657 . abs(-l2*btb22(i) + one/ntn6) + abs(-l2*btb12(i) + one/ntn6))*vol(i)*ws(k,nlay)*half
658 sti3(i,k) = (abs(l2*btb13(i) + one/ntn6) + abs(l2*btb23(i) + one/ntn6) +
659 . abs(l2*btb33(i) + one/ntn6) + abs(-l2*btb33(i) + one/ntn6
660 . abs(-l2*btb23(i) + one/ntn6) + abs(-l2*btb13(i) + one/ntn6))*vol(i)*ws(k,nlay)*half
661 sti4(i,k) = (abs(-l2*btb13(i) + one/ntn6) + abs(-l2*btb23(i) + one/ntn6) +
662 . abs(-l2*btb33(i) + one/ntn6) + abs(l2*btb33(i) + one/ntn6) +
663 . abs(l2*btb23(i) + one/ntn6) + abs(l2*btb13(i) + one
664 sti5(i,k) = (abs(-l2*btb12(i) + one/ntn6) + abs(-l2*btb22(i) + one/ntn6) +
665 . abs(-l2*btb23(i) + one/ntn6) + abs(l2*btb23(i) + one/ntn6) +
666 . abs(l2*btb22(i) + one/ntn6) + abs(l2*btb12(i) + one/ntn6))*vol(i)*ws(k,nlay)*half
667 sti6(i,k) = (abs(-l2*btb11(i) + one/ntn6) + abs(-l2*btb12(i) + one/ntn6) +
668 . abs(-l2*btb13(i) + one/ntn6) + abs(l2*btb13(i) + one/ntn6) +
669 . abs(l2*btb12(i) + one/ntn6) + abs(l2*btb11(i) + one/ntn6))*vol(i)*ws(k,nlay)*half
670 ENDIF
671
672 ELSE
673
674
675 lc(i) = (vol0(i)*ws(k,nlay)*half)**third
676
677 IF (noda_dt > 0) THEN
678
679 f1(i,k) = sqrt(mass(pos1(i)+k-1)/mass0(pos1(i)+k-1))*zeta*sspnl*half*
680 . (vnl(pos1(i)+k-1)+vnl0(pos1(i)+k-1))*(two*third)*(lc(i)**2)
681 f2(i,k) = sqrt(mass(pos2(i)+k-1)/mass0(pos2(i)+k-1))*zeta*sspnl*half*
682 . (vnl(pos2(i)+k-1)+vnl0(pos2(i)+k-1))*(two*third)*(lc(i)**2)
683 f3(i,k) = sqrt(mass(pos3(i)+k-1)/mass0(pos3(i)+k-1))*zeta*sspnl*half*
684 . (vnl(pos3(i)+k-1)+vnl0(pos3(i)+k-1))*(two*third)*(lc(i)**2)
685 f4(i,k) = sqrt(mass(pos4(i)+k-1)/mass0(pos4(i)+k-1))*zeta*sspnl*half*
686 . (vnl(pos4(i)+k-1)+vnl0(pos4(i)+k-1))*(two*third)*(lc(i)**2)
687 f5(i,k) = sqrt(mass(pos5(i)+k-1)/mass0(pos5(i)+k-1))*zeta*sspnl*half*
688 . (vnl(pos5(i)+k-1)+vnl0(pos5(i)+k-1))*(two*third)*(lc(i)**2)
689 f6(i,k) = sqrt(mass(pos6(i)+k-1)/mass0(pos6(i)+k-1))*zeta*sspnl*half*
690 . (vnl(pos6(i)+k-1)+vnl0(pos6(i)+k-1))*(two*third)*(lc(i)**2)
691
692 sti1(i,k) = em20
693 sti2(i,k) = em20
694 sti3(i,k) = em20
695 sti4(i,k) = em20
696 sti5(i,k) = em20
697 sti6(i,k) = em20
698 ELSE
699
700 f1(i,k) = zeta*sspnl*half*(vnl(pos1(i)+k-1)+vnl0(pos1(i)+k-1))*(two*third)*(lc(i)**2)
701 f2(i,k) = zeta*sspnl*half*(vnl(pos2(i)+k-1)+vnl0(pos2(i)+k-1))*(two*third)*(lc(i)**2)
702 f3(i,k) = zeta*sspnl*half*(vnl(pos3(i)+k-1)+vnl0(pos3(i)+k-1))*(two*third)*(lc(i)**2)
703 f4(i,k) = zeta*sspnl*half*(vnl(pos4(i)+k-1)+vnl0(pos4(i)+k-1))*(two*third)*(lc(i)**2)
704 f5(i,k) = zeta*sspnl*half*(vnl(pos5(i)+k-1)+vnl0(pos5(i)+k-1))*(two*third)*(lc(i)**2
705 f6(i,k) = zeta*sspnl*half*(vnl(pos6(i)+k-1)+vnl0(pos6(i)+k-1))*(two*third
706 ENDIF
707 ENDIF
708 ENDDO
709 ENDDO
710
711
712
713
714
715
716 IF (iparit == 0) THEN
717
718 fnl => nloc_dmg%FNL(1:l_nloc,itask+1)
719
720
721
722 DO k=1,nlay
723
724#include "vectorize.inc"
725 DO ii=1,nindx8
726 i = indx8(ii)
727
728 fnl(pos1(i)+k-1) = fnl(pos1(i)+k-1) - f1(i,k)
729 fnl(pos2(i)+k-1) = fnl(pos2(i)+k-1) - f2(i,k)
730 fnl(pos3(i)+k-1) = fnl(pos3(i)+k-1) - f3(i,k)
731 fnl(pos4(i)+k-1) = fnl(pos4(i)+k-1) - f4(i,k)
732 fnl(pos5(i)+k-1) = fnl(pos5(i)+k-1) - f5(i,k)
733 fnl(pos6(i)+k-1) = fnl(pos6(i)+k-1) - f6(i,k)
734 fnl(pos7(i)+k-1) = fnl(pos7(i)+k-1) - f7(i,k)
735 fnl(pos8(i)+k-1) = fnl(pos8(i)+k-1) - f8(i,k)
736 IF (noda_dt > 0) THEN
737
738 maxstif =
max(sti1(i,k),sti2(i,k),sti3(i,k),sti4(i,k),
739 . sti5(i,k),sti6(i,k),sti7(i,k),sti8(i,k))
740
741 nloc_dmg%STIFNL(pos1(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos1(i)+k-1,itask+1) + maxstif
742 nloc_dmg%STIFNL(pos2(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos2(i)+k-1,itask+1) + maxstif
743 nloc_dmg%STIFNL(pos3(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos3(i)+k-1,itask+1) + maxstif
744 nloc_dmg%STIFNL(pos4(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos4(i)+k-1,itask+1) + maxstif
745 nloc_dmg%STIFNL(pos5(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos5(i)+k-1,itask+1) + maxstif
746 nloc_dmg%STIFNL(pos6(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos6(i)+k-1,itask+1) + maxstif
747 nloc_dmg%STIFNL(pos7(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos7(i)+k-1,itask+1) + maxstif
748 nloc_dmg%STIFNL(pos8(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos8(i)+k-1,itask+1) + maxstif
749 ENDIF
750 ENDDO
751
752
753#include "vectorize.inc"
754 DO ii=1,nindx6
755 i = indx6(ii)
756 ! assembling
the forces in
the classic way
757 fnl(pos1(i)+k-1) = fnl(pos1(i)+k-1) - f1(i,k)
758 fnl(pos2(i)+k-1) = fnl(pos2(i)+k-1) - f2(i,k)
759 fnl(pos3(i)+k-1) = fnl(pos3(i)+k-1) - f3(i,k)
760 fnl(pos4(i)+k-1) = fnl(pos4(i)+k-1) - f4(i,k)
761 fnl(pos5(i)+k-1) = fnl(pos5(i)+k-1) - f5(i,k)
762 fnl(pos6(i)+k-1) = fnl(pos6(i)+k-1) - f6(i,k)
763 IF (noda_dt > 0) THEN
764
765 maxstif =
max(sti1(i,k),sti2(i,k),sti3(i,k),
766 . sti4(i,k),sti5(i,k),sti6(i,k))
767
768 nloc_dmg%STIFNL(pos1(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos1(i)+k-1,itask+1) + maxstif
769 nloc_dmg%STIFNL(pos2(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos2(i)+k-1,itask+1) + maxstif
770 nloc_dmg%STIFNL(pos3(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos3(i)+k-1,itask+1) + maxstif
771 nloc_dmg%STIFNL(pos4(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos4(i)+k-1,itask+1) + maxstif
772 nloc_dmg%STIFNL(pos5(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos5(i)+k-1,itask+1) + maxstif
773 nloc_dmg%STIFNL(pos6(i)+k-1,itask+1) = nloc_dmg%STIFNL(pos6(i)+k-1,itask+1) + maxstif
774 ENDIF
775 ENDDO
776 ENDDO
777
778
779 ELSE
780
781 DO j = 1,nlay
782
783
784 DO l = 1,nindx8
785 i = indx8(l)
786 ii = i + nft
787
788
789 IF (noda_dt > 0) THEN
790 maxstif =
max(sti1(i,j),sti2(i,j),sti3(i,j),sti4(i,j),
791 . sti5(i,j),sti6(i,j),sti7(i,j),sti8(i,j))
792 ENDIF
793
794 k = nloc_dmg%IADS(1,ii)
795 nloc_dmg%FSKY(k,j) = -f1(i,j)
796 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
797
798 k = nloc_dmg%IADS(2,ii)
799 nloc_dmg%FSKY(k,j) = -f2(i,j)
800 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
801
802 k = nloc_dmg%IADS(3,ii)
803 nloc_dmg%FSKY(k,j) = -f3(i,j)
804 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
805
806 k = nloc_dmg%IADS(4,ii)
807 nloc_dmg%FSKY(k,j) = -f4(i,j)
808 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
809
810 k = nloc_dmg%IADS(5,ii)
811 nloc_dmg%FSKY(k,j) = -f5(i,j)
812 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
813
814 k = nloc_dmg%IADS(6,ii)
815 nloc_dmg%FSKY(k,j) = -f6(i,j)
816 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
817
818 k = nloc_dmg%IADS(7,ii)
819 nloc_dmg%FSKY(k,j) = -f7(i,j)
820 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
821
822 k = nloc_dmg%IADS(8,ii)
823 nloc_dmg%FSKY(k,j) = -f8(i,j)
824 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
825
826 ENDDO
827
828
829 DO l = 1,nindx6
830 i = indx6(l)
831 ii = i + nft
832
833
834 IF (noda_dt > 0) THEN
835 maxstif =
max(sti1(i,j),sti2(i,j),sti3(i,j),
836 . sti4(i,j),sti5(i,j),sti6(i,j))
837 ENDIF
838
839 k = nloc_dmg%IADS(1,ii)
840 nloc_dmg%FSKY(k,j) = -f1(i,j)
841 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
842
843 k = nloc_dmg%IADS(2,ii)
844 nloc_dmg%FSKY(k,j) = -f2(i,j)
845 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
846
847 k = nloc_dmg%IADS(3,ii)
848 nloc_dmg%FSKY(k,j) = -f3(i,j)
849 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
850
851 k = nloc_dmg%IADS(5,ii)
852 nloc_dmg%FSKY(k,j) = -f4(i,j)
853 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
854
855 k = nloc_dmg%IADS(6,ii)
856 nloc_dmg%FSKY(k,j) = -f5(i,j)
857 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
858
859 k = nloc_dmg%IADS(7,ii)
860 nloc_dmg%FSKY(k,j) = -f6(i,j)
861 IF (noda_dt > 0) nloc_dmg%STSKY(k,j) = maxstif
862
863 ENDDO
864 ENDDO
865 ENDIF
866
867
868
869
870 IF (noda_dt == 0) THEN
871 DO i = 1,nel
872
873 IF (off(i)/=zero) THEN
874
875 dtnl = (two*(
min((vol(i))**third,le_max))*sqrt(three*zeta))/
876 . sqrt(twelve*l2 + (
min((vol(i))**third,le_max))**2)
877
878 IF ((l2>zero).AND.(nlay > 1)) THEN
879 dtnl_th = (two*(
min(lthk(i),le_max))*sqrt(three*zeta))/
880 . sqrt(twelve*l2 + (
min(lthk(i),le_max))**2)
881 ELSE
882 dtnl_th = ep20
883 ENDIF
884
885 dt2t =
min(dt2t,dtfac1(1)*cdamp*dtnl_th,dtfac1(1)*cdamp*dtnl)
886 ENDIF
887 ENDDO
888 ENDIF
889
890
891 IF (ALLOCATED(btb11)) DEALLOCATE(btb11)
892 IF (ALLOCATED(btb12)) DEALLOCATE(btb12)
893 IF (ALLOCATED(btb13)) DEALLOCATE(btb13)
894 IF (ALLOCATED(btb14)) DEALLOCATE(btb14)
895 IF (ALLOCATED(btb22)) DEALLOCATE(btb22)
896 IF (ALLOCATED(btb23)) DEALLOCATE(btb23)
897 IF (ALLOCATED(btb24)) DEALLOCATE(btb24)
898 IF (ALLOCATED(btb33)) DEALLOCATE(btb33)
899 IF (ALLOCATED(btb34)) DEALLOCATE(btb34)
900 IF (ALLOCATED(btb44)) DEALLOCATE(btb44)
901 IF (ALLOCATED(pos1)) DEALLOCATE(pos1)
902 IF (ALLOCATED(pos2)) DEALLOCATE(pos2)
903 IF (ALLOCATED(pos3)) DEALLOCATE(pos3)
904 IF (ALLOCATED(pos4)) DEALLOCATE(pos4)
905 IF (ALLOCATED(pos5)) DEALLOCATE(pos5)
906 IF (ALLOCATED(pos6)) DEALLOCATE(pos6)
907 IF (ALLOCATED(pos7)) DEALLOCATE(pos7)
908 IF (ALLOCATED(pos8)) DEALLOCATE(pos8)
909 IF (ALLOCATED(f1)) DEALLOCATE(f1)
910 IF (ALLOCATED(f2)) DEALLOCATE(f2)
911 IF (ALLOCATED(f3)) DEALLOCATE(f3)
912 IF (ALLOCATED(f4)) DEALLOCATE(f4)
913 IF (ALLOCATED(f5)) DEALLOCATE(f5)
914 IF (ALLOCATED(f6)) DEALLOCATE(f6)
915 IF (ALLOCATED(f7)) DEALLOCATE(f7)
916 IF (ALLOCATED(f8)) DEALLOCATE(f8)
917 IF (ALLOCATED(sti1)) DEALLOCATE(sti1)
918 IF (ALLOCATED(sti2)) DEALLOCATE(sti2)
919 IF (ALLOCATED(sti3)) DEALLOCATE(sti3)
920 IF (ALLOCATED(sti4)) DEALLOCATE(sti4)
921 IF (ALLOCATED(sti5)) DEALLOCATE(sti5)
922 IF (ALLOCATED(sti6)) DEALLOCATE(sti6)
923 IF (ALLOCATED(sti7)) DEALLOCATE(sti7)
924 IF (ALLOCATED(sti8)) DEALLOCATE(sti8)
925 IF (ALLOCATED(stifnlth)) DEALLOCATE(stifnlth)
926 IF (ALLOCATED(dtn)) DEALLOCATE(dtn)
927 IF (ALLOCATED(lc)) DEALLOCATE(lc)
928 IF (ALLOCATED(thk)) DEALLOCATE(thk)
929 IF (ALLOCATED(lthk)) DEALLOCATE(lthk)
930
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine area(d1, x, x2, y, y2, eint, stif0)