48
49
50
51 USE nodal_arrays_mod
52 USE connectivity_mod
55 use glob_therm_mod
56
57
58
59#include "implicit_f.inc"
60#include "comlock.inc"
61
62
63
64#include "com01_c.inc"
65#include "com04_c.inc"
66#include "com08_c.inc"
67#include "parit_c.inc"
68#include "units_c.inc"
69#include "param_c.inc"
70#include "task_c.inc"
71#include "scr18_c.inc"
72#include "sphcom.inc"
73
74 INTEGER MAXBLOC,NBLOC,NBVAL,NBCOL,NFACNIT
75 parameter(maxbloc=1000)
76 common/ptmparit/nbloc,nbval(1:maxbloc),nbcol(1:maxbloc)
77
78
79
80 TYPE(nodal_arrays_), intent(inout) :: NODES
81 INTEGER ADSKY(*), ISKY(*),
82 . ADSKYI(0:NUMNOD+1),
83 . NODFT, NODLT, ITASK, PARTFT, PARTLT,GREFT,GRELT,
84 . ADSKY_PXFEM(*),INOD_PXFEM(*), ICNDS10(3,*),NODFT_2 ,NODLT_2
85
86
88 . fskyv(lsky,8),fsky(8,lsky),
89 . fskym(*), msnf(*), fskyi(lskyi,nfskyi),
90 . fthe(*), fthesky(lsky), ftheskyi(lskyi), partsav(*),gresav(*),
91 . af(3,*),ffsky(3,*),msf(*), fskyd(*), dmsph(*),condnsky(lsky),condn(*),
92 . condnskyi(lskyi),ms_2d(*),stifnd(*),forneqs(3,*) ,
93 . forneqsky(3*nfacnit,*)
94 my_real,
DIMENSION(NISKY),
INTENT(INOUT) :: fsky_l
95 type (glob_therm_) ,intent(inout) :: glob_therm
96
97
98
99 INTEGER VSIZE, NBCC, NUM7, KM,IL,IPLY,ND
100 parameter(vsize = 8192)
101 parameter(nbcc = 20)
102 INTEGER I,J,L,K,N,NC,KK,JJ,JJ1,JJ2,NN,NFSKYFT_INTPLY,NFSKYLT_INTPLY,
103 . NISKYFT,NISKYLT,NFSKYFT,NFSKYLT,K1,K2,K3,IJK,NF,
104 . NCT,DIFFADD,NDLT,NDFT,LJ,KKEND,NSTART,KKSTART,KMAX,KSPLIT
105 INTEGER IC(NBCC+1),NN_A(VSIZE),IARRAY(VSIZE)
107 INTEGER :: VIND_SIZE
108 INTEGER, DIMENSION(:), ALLOCATABLE :: VIND1,VIND2,VIND3
109 INTEGER :: CHUNK_NODE,CHUNK_NODE_1
110 INTEGER, PARAMETER :: IVSIZE = 32
111
112
113
114
115 vind_size=
max(nodlt-nodft+1,ivsize)
116 ALLOCATE(vind1(vind_size))
117 ALLOCATE(vind2(vind_size))
118 ALLOCATE(vind3(vind_size))
119 chunk_node = int(numnod / (10*nthread))
120 if( chunk_node<2) chunk_node = int(numnod/nthread)
121 chunk_node =
max(1,chunk_node)
122 chunk_node_1 = (numnod+2)/ (10*nthread)
123 if( chunk_node_1<2) chunk_node_1 = (numnod+1)/nthread
124 chunk_node_1 =
max(1,chunk_node_1)
125
126
127 DO n = 1,numnod+1
128 adskyi(n) = 0
129 ENDDO
130
131
132 DO i=1,nisky
133 n = isky(i)+1
134 adskyi(n) = adskyi(n)+1
135 ENDDO
136
137
138
139 adskyi(0) = 1
140 adskyi(1) = 1
141 DO n = 1, numnod
142 nn = n+1
143 adskyi(nn) = adskyi(nn) + adskyi(n)
144 ENDDO
145
146
147
148 DO i=1,nisky
149 n = isky(i)
150 j = adskyi(n)
151 isky(i) = j
152 adskyi(n) = adskyi(n) + 1
153 ENDDO
154
155
156
157 IF(glob_therm%ITHERM_FE == 0 ) THEN
158
159 IF(
ale%SUB%IFSUBM==0)
THEN
160
161 DO n = 1,numnod
162 nct = adsky(n)-1
163 nc = adsky(n+1)-adsky(n)
164 DO k = nct+1, nct+nc
165 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
166 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
167 nodes%A(3,n) = nodes%A(3,n) + fsky(3,k)
168 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
169 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
170 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
171 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
172 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
173 ENDDO
174 ENDDO
175
176
177 ELSEIF(n2d/=0)THEN
178
179 DO n = 1,numnod
180 nct = adsky(n)-1
181 nc = adsky(n+1)-adsky(n)
182 DO k = nct+1, nct+nc
183 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
184 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
185 nodes%A(3,n) = nodes%A(3,n) + fsky(3,k)
186 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
187 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
188 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
189 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
190 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
191 ms_2d(n) = ms_2d(n) + fskym(k)
192 ENDDO
193 ENDDO
194
195
196 ELSE
197
198 DO n = 1,numnod
199 nct = adsky(n)-1
200 nc = adsky(n+1)-adsky(n)
201 DO k = nct+1, nct+nc
202 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
203 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
204 nodes%A(3,n) = nodes%A(3,n) + fsky(3,k)
205 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
206 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
207 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
208 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
209 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
210 msnf(n) = msnf(n) + fskym(k)
211 ENDDO
212 ENDDO
213
214 ENDIF
215
216
217 ELSE
218
219 IF(glob_therm%NODADT_THERM == 1) THEN
220
221 IF(
ale%SUB%IFSUBM==0)
THEN
222
223 DO n = 1,numnod
224 nct = adsky(n)-1
225 nc = adsky(n+1)-adsky(n)
226 DO k = nct+1, nct+nc
227 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
228 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
229
230 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
231 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
232 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
233 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
234 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
235 fthe(n) = fthe(n) + fthesky(k)
236 condn(n) = condn(n) + condnsky(k)
237 ENDDO
238 ENDDO
239
240
241 ELSEIF(n2d/=0)THEN
242
243 DO n = 1,numnod
244 nct = adsky(n)-1
245 nc = adsky(n+1)-adsky(n)
246 DO k = nct+1, nct+nc
247 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
248 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
249 nodes%A(3,n) = nodes%A(3,n) + fsky(3,k)
250 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
251 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
252 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
253 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
254 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
255 fthe(n) = fthe(n) + fthesky(k)
256 condn(n) = condn(n) + condnsky(k)
257 ms_2d(n) = ms_2d(n) + fskym(k)
258 ENDDO
259 ENDDO
260
261
262 ELSE
263
264 DO n = 1,numnod
265 nct = adsky(n)-1
266 nc = adsky(n+1)-adsky(n)
267 DO k = nct+1, nct+nc
268 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
269 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
270 nodes%A(3,n) = nodes%A(3,n) + fsky(3,k)
271 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
272 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
273 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
274 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
275 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
276 msnf(n) = msnf(n) + fskym(k)
277 fthe(n) = fthe(n) + fthesky(k)
278 condn(n) = condn(n) + condnsky(k)
279 ENDDO
280 ENDDO
281
282 ENDIF
283
284
285 ELSE
286
287 IF(
ale%SUB%IFSUBM==0)
THEN
288
289 DO n = 1,numnod
290 nct = adsky(n)-1
291 nc = adsky(n+1)-adsky(n)
292 DO k = nct+1, nct+nc
293 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
294 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
295 nodes%A(3,n) = nodes%A(3,n) + fsky(3,k)
296 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
297 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
298 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
299 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
300 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
301 fthe(n) = fthe(n) + fthesky(k)
302 ENDDO
303 ENDDO
304
305
306 ELSEIF(n2d/=0)THEN
307
308 DO n = 1,numnod
309 nct = adsky(n)-1
310 nc = adsky(n+1)-adsky(n)
311 DO k = nct+1, nct+nc
312 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
313 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
314 nodes%A(3,n) = nodes%A(3,n) + fsky(3,k)
315 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
316 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
317 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
318 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
319 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
320 fthe(n) = fthe(n) + fthesky(k)
321 ms_2d(n) = ms_2d(n) + fskym(k)
322 ENDDO
323 ENDDO
324
325
326 ELSE
327
328 DO n = 1,numnod
329 nct = adsky(n)-1
330 nc = adsky(n+1)-adsky(n)
331 DO k = nct+1, nct+nc
332 nodes%A(1,n) = nodes%A(1,n) + fsky(1,k)
333 nodes%A(2,n) = nodes%A(2,n) + fsky(2,k)
334 nodes%A(3,n) = nodes%A(3,n) + fsky(3,k)
335 nodes%AR(1,n) = nodes%AR(1,n) + fsky(4,k)
336 nodes%AR(2,n) = nodes%AR(2,n) + fsky(5,k)
337 nodes%AR(3,n) = nodes%AR(3,n) + fsky(6,k)
338 nodes%STIFN(n) = nodes%STIFN(n) + fsky(7,k)
339 nodes%STIFR(n) = nodes%STIFR(n) + fsky(8,k)
340 msnf(n) = msnf(n) + fskym(k)
341 fthe(n) = fthe(n) + fthesky(k)
342 ENDDO
343 ENDDO
344
345 ENDIF
346
347 ENDIF
348
349 ENDIF
350
351
352
353
354 IF(ialelag > 0) THEN
355
356 DO n = 1,numnod
357 nct = adsky(n)-1
358 nc = adsky(n+1)-adsky(n)
359 DO k = nct+1, nct+nc
360 af(1,n) = af(1,n) + ffsky(1,k)
361 af(2,n) = af(2,n) + ffsky(2,k)
362 af(3,n) = af(3,n) + ffsky(3,k)
363 msnf(n) = msnf(n) + fskym(k)
364 ENDDO
365 ENDDO
366
367 ENDIF
368
369
370
371
372
373 IF(sol2sph_flag/=0)THEN
374
375 DO n = 1,numnod
376 nct = adsky(n)-1
377 nc = adsky(n+1)-adsky(n)
378 DO k = nct+1, nct+nc
379 dmsph(n) = dmsph(n) + fskyd(k)
380 ENDDO
381 ENDDO
382
383 END IF
384
385
386
387
388 IF(iplyxfem > 0) THEN
389
390 DO n = 1,numnod
391 il = inod_pxfem(n)
392 IF(il > 0) THEN
393 nct = adsky_pxfem(il) - 1
394 nc = adsky_pxfem(il+1) - adsky_pxfem(il)
395 DO k = nct+1, nct+nc
396 DO j=1,nplymax
401 ENDDO
402 ENDDO
403 ENDIF
404 ENDDO
405
406 ENDIF
407
408 IF( (n2d/=0).OR.(
ale%SUB%IFSUBM==1).OR.(ialelag > 0) )
CALL my_barrier
409
410
411 IF(n2d/=0) THEN
412!$omp DO schedule(guided)
413 DO i = 1,numnod
414 nodes%MS(i) = nodes%A(1,i)
415 nodes%A(1,i) = zero
416 ENDDO
417
418 ELSEIF(
ale%SUB%IFSUBM==1)
THEN
419
420 DO i = 1,numnod
421 nodes%MS(i) = nodes%MS(i) + msnf(i)
422 ENDDO
423
424 ENDIF
425
426 IF(ialelag > 0) THEN
427
428 DO i = 1,numnod
429 msf(i) = msf(i) + msnf(i)
430 ENDDO
431
432 ENDIF
433
434
435
436 IF(ns10e>0) THEN
438
439#include "vectorize.inc"
440 DO i=1,ns10e
441 nd = iabs(icnds10(1,i))
442 stifnd(i) = nodes%STIFN(nd)
443 ENDDO
444
445 ENDIF
446
447
448
449 IF(nitsche /= 0) THEN
450
451 DO n = 1,numnod
452 nct = adsky(n)-1
453 nc = adsky(n+1)-adsky(n)
454 DO k = nct+1, nct+nc
455 DO nf=1,nfacnit
456 forneqs(1,n) = forneqs(1,n) + forneqsky(3*(nf-1)+1,k)
457 forneqs(2,n) = forneqs(2,n) + forneqsky(3*(nf-1)+2,k)
458 forneqs(3,n) = forneqs(3,n) + forneqsky(3*(nf-1)+3,k)
459 ENDDO
460 ENDDO
461 ENDDO
462
463 ENDIF
464
465
466
467
468 IF(nisky>lskyi)THEN
469 WRITE(iout,*) ' **ERROR** : MEMORY PROBLEM IN PARITH OPTION'
470 WRITE(iout,*)
471 . ' PLEASE, INCREASE MULTIMP FOR INTERFACES 7, 10 AND 11'
472 WRITE(istdo,*)' **ERROR** : MEMORY PROBLEM IN PARITH OPTION'
473 tstop=zero
474
475 RETURN
476 ENDIF
477
478 IF (nisky/=0) THEN
479 niskyft = 1+itask*nisky/ nthread
480 niskylt = (itask+1)*nisky/nthread
481 nfskyft = 1+itask*nfskyi/ nthread
482 nfskylt = (itask+1)*nfskyi/nthread
483
484 IF(intplyxfem > 0 ) THEN
485 nfskyft_intply = 1+itask*5/ nthread
486 nfskylt_intply = (itask+1)*5/nthread
487 ENDIF
488
489
490
491 DO l=1,nfskyi
492
493 DO i=1,nisky
494 j = isky(i)
495 fsky_l(j) = fskyi(i,l)
496 END DO
497
499
500 DO i=1,nisky
501 fskyi(i,l) = fsky_l(i)
502 END DO
503
504 ENDDO
505
506 IF(glob_therm%INTHEAT > 0 ) THEN
507
508 DO i=1,nisky
509 j = isky(i)
510 fskyt(j) = ftheskyi(i)
511 ENDDO
512 DO i=1,nisky
513 ftheskyi(i) = fskyt(i)
514 ENDDO
515
516 IF(glob_therm%NODADT_THERM ==1 ) THEN
517
518 DO i=1,nisky
519 j = isky(i)
520 fskyt(j) = condnskyi(i)
521 ENDDO
522 DO i=1,nisky
523 condnskyi(i) = fskyt(i)
524 ENDDO
525
526 ENDIF
527 ENDIF
528
529 IF(intplyxfem > 0) THEN
530 DO l = nfskyft_intply,nfskylt_intply
531 DO i=1,nisky
532 j = isky(i)
534 END DO
535 DO i=1,nisky
537 END DO
538 ENDDO
539 ENDIF
540
541
542
544 nisky = 0
545
546
547
548
549
550 DO ndft = 1,numnod,ivsize
551
552 ndlt =
min(ndft+ivsize-1,numnod)
553 k1 = 0
554 k2 = 0
555 k3 = 0
556 DO n=ndft,ndlt
557 nn = n-1
558 diffadd = adskyi(n)-1-adskyi(nn)
559 IF(diffadd==0) THEN
560 k1 = k1 + 1
561 vind1(k1) = n
562
563 ELSEIF(diffadd>=1.AND.diffadd<nbcc) THEN
564 k2 = k2 + 1
565 vind2(k2) = n
566 ELSEIF(diffadd>=nbcc) THEN
567 k3 = k3 + 1
568 vind3(k3) = n
569 ENDIF
570 ENDDO
571
572
573
574 IF(glob_therm%INTHEAT == 0 ) THEN
575 IF(kdtint==0)THEN
576#include "vectorize.inc"
577 DO ijk=1,k1
578 n = vind1(ijk)
579 k=adskyi(n-1)
580 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
581 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
582 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
583 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
584 ENDDO
585 ELSE
586#include "vectorize.inc"
587 DO ijk=1,k1
588 n = vind1(ijk)
589 k=adskyi(n-1)
590 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
591 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
592 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
593 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
594 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
595 ENDDO
596 ENDIF
597
598 ELSE
599 IF(glob_therm%NODADT_THERM == 1) THEN
600 IF(kdtint==0)THEN
601#include "vectorize.inc"
602 DO ijk=1,k1
603 n = vind1(ijk)
604 k=adskyi(n-1)
605 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
606 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
607 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
608 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
609 fthe(n) = fthe(n) + ftheskyi(k)
610 condn(n) = condn(n) + condnskyi(k)
611 ftheskyi(k) = zero
612 ENDDO
613 ELSE
614#include "vectorize.inc"
615 DO ijk=1,k1
616 n = vind1(ijk)
617 k=adskyi(n-1)
618 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
619 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
620 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
621 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
622 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
623 fthe(n) = fthe(n) + ftheskyi(k)
624 condn(n) = condn(n) + condnskyi(k)
625 ftheskyi(k) = zero
626 ENDDO
627 ENDIF
628 ELSE
629 IF(kdtint==0)THEN
630#include "vectorize.inc"
631 DO ijk=1,k1
632 n = vind1(ijk)
633 k=adskyi(n-1)
634 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
635 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
636 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
637 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
638 fthe(n) = fthe(n) + ftheskyi(k)
639 ftheskyi(k) = zero
640 ENDDO
641 ELSE
642#include "vectorize.inc"
643 DO ijk=1,k1
644 n = vind1(ijk)
645 k=adskyi(n-1)
646 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
647 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
648 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
649 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
650 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
651 fthe(n) = fthe(n) + ftheskyi(k)
652 ftheskyi(k) = zero
653 ENDDO
654 ENDIF
655 ENDIF
656
657 ENDIF
658
659
660
661
662 IF(intplyxfem > 0) THEN
663#include "vectorize.inc"
664 DO ijk=1,k1
665 n = vind1(ijk)
666 k=adskyi(n-1)
667 il = inod_pxfem(n)
668 IF(il > 0) THEN
669
671 IF(iply > 0) THEN
676 ENDIF
677 ENDIF
678 ENDDO
679 ENDIF
680
681
682
683 IF (ivector==0) THEN
684
685 DO 800 ijk=1,k2
686 n = vind2(ijk)
687 nn = n-1
688 jj1 = adskyi(nn)
689 jj2 = adskyi(n)-1
690
691
692
693 IF(glob_therm%INTHEAT == 0 ) THEN
694 DO 500 k=jj1,jj2-1
695 DO 500 kk=k+1,jj2
696 DO 500 l=1,nfskyi
697 IF(fskyi(kk,l)>fskyi(k,l))THEN
698 ff = fskyi(kk,l)
699 fskyi(kk,l) = fskyi(k,l)
700 fskyi(k,l) = ff
701 ENDIF
702 500 CONTINUE
703
704 ELSE
705 IF(glob_therm%NODADT_THERM == 1 ) THEN
706 DO k=jj1,jj2-1
707 DO kk=k+1,jj2
708 DO l=1,nfskyi
709 IF(fskyi(kk,l)>fskyi(k,l))THEN
710 ff = fskyi(kk,l)
711 fskyi(kk,l) = fskyi(k,l)
712 fskyi(k,l) = ff
713 ENDIF
714 ENDDO
715 IF(ftheskyi(kk)>ftheskyi(k))THEN
716 ff = ftheskyi(kk)
717 ftheskyi(kk) = ftheskyi(k)
718 ftheskyi(k) = ff
719 ENDIF
720 IF(condnskyi(kk)>condnskyi(k))THEN
721 ff = condnskyi(kk)
722 condnskyi(kk) = condnskyi(k)
723 condnskyi(k) = ff
724 ENDIF
725 ENDDO
726 ENDDO
727 ELSE
728 DO k=jj1,jj2-1
729 DO kk=k+1,jj2
730 DO l=1,nfskyi
731 IF(fskyi(kk,l)>fskyi(k,l))THEN
732 ff = fskyi(kk,l)
733 fskyi(kk,l) = fskyi(k,l)
734 fskyi(k,l) = ff
735 ENDIF
736 ENDDO
737 IF(ftheskyi(kk)>ftheskyi(k))THEN
738 ff = ftheskyi(kk)
739 ftheskyi(kk) = ftheskyi(k)
740 ftheskyi(k) = ff
741 ENDIF
742 ENDDO
743 ENDDO
744 ENDIF
745 ENDIF
746
747 IF(intplyxfem > 0 ) THEN
748 DO k=jj1,jj2-1
749 DO kk=k+1,jj2
751 DO l=1,4
756 ENDIF
757 ENDDO
758 ENDIF
759 ENDDO
760 ENDDO
761 ENDIF
762
763
764
765
766
767 IF(glob_therm%INTHEAT == 0 ) THEN
768 IF(kdtint==0)THEN
769 DO k=jj1,jj2
770 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
771 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
772 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
773 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
774 ENDDO
775 ELSE
776 DO k=jj1,jj2
777 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
778 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
779 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
780 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
781 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
782 ENDDO
783 ENDIF
784
785 ELSE
786 IF(glob_therm%NODADT_THERM == 1) THEN
787 IF(kdtint==0)THEN
788 DO k=jj1,jj2
789 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
790 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
791 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
792 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
793 fthe(n) = fthe(n) + ftheskyi(k)
794 condn(n) = condn(n)+ condnskyi(k)
795 ftheskyi(k) = zero
796 ENDDO
797 ELSE
798 DO k=jj1,jj2
799 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
800 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
801 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
802 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
803 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
804 fthe(n) = fthe(n) + ftheskyi(k)
805 condn(n) = condn(n)+ condnskyi(k)
806 ftheskyi(k) = zero
807 ENDDO
808 ENDIF
809 ELSE
810 IF(kdtint==0)THEN
811 DO k=jj1,jj2
812 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
813 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
814 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
815 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
816 fthe(n) = fthe(n) + ftheskyi(k)
817 ftheskyi(k) = zero
818 ENDDO
819 ELSE
820 DO k=jj1,jj2
821 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
822 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
823 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
824 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
825 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
826 fthe(n) = fthe(n) + ftheskyi(k)
827 ftheskyi(k) = zero
828 ENDDO
829 ENDIF
830 ENDIF
831
832 ENDIF
833
834
835
836
837 IF(intplyxfem > 0) THEN
838 DO k=jj1,jj2
839 il = inod_pxfem(n)
840 IF(il > 0) THEN
841
843 IF(iply > 0) THEN
848 ENDIF
849 ENDIF
850 ENDDO
851 ENDIF
852
853
854
855 800 CONTINUE
856 ELSE
857
858 ENDIF
859
860
861
862
863 DO ijk=1,k3
864 n = vind3(ijk)
865 nn = n-1
866 jj1 = adskyi(nn)
867 jj2 = adskyi(n)-1
868
869
870
871 CALL ass2sort(fskyi,jj1,jj2,fskyt,nfskyi)
872 IF(glob_therm%INTHEAT > 0)
CALL ass2sort(ftheskyi,jj1,jj2,fskyt,1)
873 IF(glob_therm%NODADT_THERM == 1)
CALL ass2sort(condnskyi,jj1,jj2,fskyt,1)
874 IF(intplyxfem>0)
876
877
878
879 IF(glob_therm%INTHEAT == 0 ) THEN
880 IF(kdtint==0)THEN
881 DO k=jj1,jj2
882 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
883 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
884 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
885 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
886 ENDDO
887 ELSE
888 DO k=jj1,jj2
889 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
890 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
891 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
892 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
893 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
894 ENDDO
895 ENDIF
896
897 ELSE
898 IF(glob_therm%NODADT_THERM ==1) THEN
899 IF(kdtint==0)THEN
900 DO k=jj1,jj2
901 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
902 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
903 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
904 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
905 fthe(n) = fthe(n) + ftheskyi(k)
906 condn(n)= condn(n) + condnskyi(k)
907 ftheskyi(k) = zero
908 ENDDO
909 ELSE
910 DO k=jj1,jj2
911 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
912 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
913 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
914 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
915 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
916 fthe(n) = fthe(n) + ftheskyi(k)
917 condn(n)= condn(n) + condnskyi(k)
918 ftheskyi(k) = zero
919 ENDDO
920 ENDIF
921 ELSE
922 IF(kdtint==0)THEN
923 DO k=jj1,jj2
924 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
925 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
926 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
927 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
928 fthe(n) = fthe(n) + ftheskyi(k)
929 ftheskyi(k) = zero
930 ENDDO
931 ELSE
932 DO k=jj1,jj2
933 nodes%A(1,n) = nodes%A(1,n) + fskyi(k,1)
934 nodes%A(2,n) = nodes%A(2,n) + fskyi(k,2)
935 nodes%A(3,n) = nodes%A(3,n) + fskyi(k,3)
936 nodes%STIFN(n) = nodes%STIFN(n) + fskyi(k,4)
937 nodes%VISCN(n) = nodes%VISCN(n) + fskyi(k,5)
938 fthe(n) = fthe(n) + ftheskyi(k)
939 ftheskyi(k) = zero
940 ENDDO
941 ENDIF
942 ENDIF
943 ENDIF
944
945 IF(intplyxfem > 0) THEN
946 DO k=jj1,jj2
947 il = inod_pxfem(n)
948 IF(il > 0 ) THEN
950 IF(iply > 0) THEN
955 ENDIF
956 ENDIF
957 ENDDO
958 ENDIF
959
960 ENDDO
961 ENDDO
962!$omp END DO
963
964
965
966 ENDIF
967
968 num7 = npsav*npart
969
970 km = 0
971 DO k=1,nthread-1
972 km = km + num7
973#include "vectorize.inc"
974 DO i=partft,partlt
975 partsav(i) = partsav(i) + partsav(i+km)
976 partsav(i+km) = zero
977 END DO
978 END DO
979
981
982 num7 = npsav*ngpe
983
984 km = 0
985 IF (nthpart > 0) THEN
986 DO k=1,nthread-1
987 km = km + num7
988#include "vectorize.inc"
989 DO i=greft,grelt
990 gresav(i) = gresav(i) + gresav(i+km)
991 gresav(i+km) = zero
992 ENDDO
993 ENDDO
994 ENDIF
996
997
998 DEALLOCATE(vind1)
999 DEALLOCATE(vind2)
1000 DEALLOCATE(vind3)
1001
1002 RETURN
subroutine ass2sort(fskyi, jj1, jj2, fskyt, nfsk)
subroutine ass2sort_pxfem(fskyi, jj1, jj2, fskyt, nfsk)
type(ply_data), dimension(:), allocatable ply
type(ply_data), dimension(:), allocatable plysky
type(ply_data), allocatable plyskyi