106
107
108
112 USE elbufdef_mod
114 USE intbufdef_mod
119 USE multi_fvm_mod
123 USE sensor_mod
125 USE matparam_def_mod
126 use glob_therm_mod
127 USE output_mod , ONLY : output_
128
129
130
131#include "implicit_f.inc"
132
133
134
135#include "com01_c.inc"
136#include "com04_c.inc"
137#include "com06_c.inc"
138#include "com08_c.inc"
139#include "com09_c.inc"
140#include "com_xfem1.inc"
141#include "sphcom.inc"
142#include "scr05_c.inc"
143#include "scr14_c.inc"
144#include "scr17_c.inc"
145#include "scr23_c.inc"
146#include "param_c.inc"
147#include "units_c.inc"
148#include "chara_c.inc"
149#include "task_c.inc"
150#include "spmd_c.inc"
151#include "impl1_c.inc"
152#include "buckcom.inc"
153#if defined(MUMPS5)
154#include "dmumps_struc.h"
155#endif
156
157
158
159 INTEGER ,INTENT(IN) :: NSENSOR
160 INTEGER NDDL0, NNZK0, IPM(NPROPMI,*),IGEO(NPROPGI,*),
161 . IXS(*), IXQ(NIXQ,*), IXC(NIXC,*), IXT(NIXT,*),
162 . IXP(NIXP,*),IXR(,*),IXTG(NIXTG,*),INDX_CRK(*),
163 . IXTG1(4,*), IPARG(NPARG,*),
164 . NPC(*), ICODT(*), ICODR(*), ISKEW(*), IBFV(NIFV,*),
165 . LPBY(*), NPBY(NNPBY,*), ITAB(*),
166 . WEIGHT(*),IPARI(NPARI,*),ITASK, ICUT(*), NSTRF(*), NPRW(*),
167 . DD_IAD(NSPMD+1,*), IPART(*),
168 . NOM_OPT(LNOPT1,*), IDATA(*),KXX(NIXX,*),
169 . IXX(*), KXSP(NISP,*), IXSP(KVOISPH,*), NOD2SP(*),
170 . IXS10(6,*), IXS20(12,*), IXS16(8,*), MONVOL(*),
171 . NODGLOB(*), IAD_ELEM(2,*), FR_ELEM(*),
172 . FR_SEC(NSPMD+1,*), FR_RBY2(3,*), IAD_RBY2(4,*),
173 . FR_WALL(*),DIRUL(*),SH4TREE(*),SH3TREE(*),
174 . WEIGHT_MD(*),NV46,NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),
175 . LESDVOIS(*),XEDGE4N(4,*),XEDGE3N(3,*),SPH2SOL(*)
176 INTEGER IFRAME(LISKN,*),LPRW(*), IRBE3(*),LRBE3(*),
177 . FR_I2M(*),IAD_I2M(*),FR_RBE3M(*),IAD_RBE3M(*),IBCL(*),
178 . IRBE2(*),LRBE2(*),(*),FR_RBE2(*),
179 . DIMFB,STABSEN,(*)
181 . pm(npropm,*), geo(npropg,*),
182 . elbuf(*), tf(*), w16(*), bufmat(*),
183 . thke(*), bufgeo(*),rby(*),
184 . skew(lskew,*), wa(*), vel(lfxvelr,*), ms(*),
185 . in(*),fr_wave(*), cont(3,*),
186 . xcut(*), fint(*), fext(3,*), fopt(6,*), anin(*), rwbuf(*),
187 . tani(*), eani(*), bufsf(*), rdata(*), spbuf(*), vr(3,*),
188 . volmon(*), x(3,*), v(3,*), a(3,*), partsav(npsav,*),
189 . xframe(nxframe,*),
190 . fncont(3,*),ftcont(3,*),temp(*), err_thk_sh4(*),
191 . err_thk_sh3(*),frbe3(*),forc(*),fcluster(*),mcluster(*),
192 . fncontp2(3,*) ,ftcontp2(3,*)
194 . fsav(nthvki,*) ,fsavd(nthvki,*), rwsav(*),ar(3,*),w(*),
195 . stifn(*),stifr(*),fcont_max(*)
196 TYPE(PRGRAPH) :: GRAPHE(*)
197 double precision
198 . frwl6(*)
199 double precision
200 . fbsav6(12,6,dimfb)
201 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
202 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP,NXEL) :: XFEM_TAB
203 TYPE (CLUSTER_) ,DIMENSION(NCLUSTER) :: CLUSTER
204 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
205 TYPE (XFEM_EDGE_) , DIMENSION(*) ::
206 TYPE (STACK_PLY) :: STACK
207 TYPE(H3D_DATABASE) :: H3D_DATA
208 TYPE (SUBSET_) , DIMENSION(NSUBS) :: SUBSET
209 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
210 TYPE () , DIMENSION(NSURF) :: IGRSURF
211 TYPE(DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
212 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
213 TYPE () ,TARGET :: IMPBUF_TAB
214 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ::
215 TYPE(DRAPEG_) :: DRAPEG
216 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MATPARAM_TAB
217 type (glob_therm_) ,intent(inout) :: glob_therm
218 TYPE(OUTPUT_),INTENT(INOUT) :: OUTPUT
219#if defined(MUMPS5) && defined(DNC)
220
221
222
223 TYPE(DMUMPS_STRUC) MUMPS_PAR
224 INTEGER I, NM, NMMAX, MAXITR, N, MAXNCV, NEV, NCV, MAXN,
225 . MAXNEV, LDV, ISHFTS, MODE, INFO, PRSP,
226 . NEL3D, NEL2D, NEL1D, NEL, N1, N2, N3, N4, N5, N6, N7, N8,
227 . N9, N10, K1, K2, K3, K4, K5, , K7, K8, K9, K10, K11, L1,
228 . L2, L3, LI1, LI2, LI3, LI4, LI5, LI6, LI7, LI8, LI9, LI10,
229 . LI11, LI12,LI13,LI14,LI15, NT_RW, IPRI, NDDL_INI0,K12,
230 . SN1,SN2,SN3,SN4,SN5,SN6,SN7,SN8,SN9,NELG,
231 . SKUIX, SKXUSR ,SKFACPTX,SKXEDGE,SKXFACET,SKXSOLID,,
232 . SKNUMX2,SKNUMX3,SKOFFX1,SKOFFX2,SKOFFX3,SKMASS1,SKMASS2,
233 . SKMASS3,SKFUNC1,SKFUNC2,SKFUNC3,SKFIN,
234 . IBID, IBID1, IBID2, INFO_FAC, J, NNZL, NTMP,
235 . NNMAX, NKMAX, IWKLI, IPMESS, IOPT, IRQTAG, MSGOFF, NDDLC,
236 . INO, II, NBLF, LTITR1, LENG, NDDLI7, MULTN(NUMNOD),
237 . MULTD(NDDL0), IACTI(NDDL0), CDDLP(NDDL0), JJ, ND, ID, NKC,
238 . , NNZKG0, NDDLG, NNZKG, NNMAXG, NDDL0P(NSPMD),
239 . NNZK0P(NSPMD), NDDLP(NSPMD), NNZKP(NSPMD), NKLOC,NNDL,
240 . NKFRONT, NKFLOC, NZLOC, NNZ, NNMAXP(NSPMD), NN,RIBID(1),IBID_(1)
242 . shift, tol, cmax, x0(3,numnod), d(3,numnod), dr(3,numnod),
243 . dmax, scale, rbid, bbid(nddl0), cmaxp, dmaxp, mass(nddl0),
244 . tol0, rrbid(1)
245 CHARACTER*2 WHICH, *80
246 INTEGER, DIMENSION(:), ALLOCATABLE :: ROWIND, COLPTR
247 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ITK
249 . , DIMENSION(:), ALLOCATABLE :: value_op,
250 . value_k, value_kg,
251 . diag_op, lt_op, rtk
253 . ,
DIMENSION(:,:),
ALLOCATABLE :: vect,
eig, vectd
254 INTEGER, POINTER :: NDDL,NNZK,NRBYAC,NINT2,NMC,NMC2,NMONV
255 INTEGER, DIMENSION(:) ,POINTER :: IADK,JDIK
256 INTEGER, DIMENSION(:) ,POINTER :: IDDL,NDOF,INLOC,LSIZE,IKC,
257 . IRBYAC,NSC,IINT2,NKUD,IMONV,
258 . IKINW,IKUD
259 my_real,
DIMENSION(:) ,
POINTER :: diag_k,lt_k,bkud,elbuf_c,bufmat_c
260 my_real,
DIMENSION(:) ,
POINTER :: d_imp,dr_imp, lb
261 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
262 DATA msgoff /100000/
263
264 nddl => impbuf_tab%NDDL
265 nnzk => impbuf_tab%NNZK
266 nrbyac => impbuf_tab%NRBYAC
267 nint2 => impbuf_tab%NINT2
268 nmc => impbuf_tab%NMC
269 nmc2 => impbuf_tab%NMC2
270 nmonv => impbuf_tab%NMONV
271 iadk => impbuf_tab%IADK
272 jdik => impbuf_tab%JDIK
273 iddl => impbuf_tab%IDDL
274 ndof => impbuf_tab%NDOF
275 inloc => impbuf_tab%INLOC
276 lsize => impbuf_tab%LSIZE
277 irbyac => impbuf_tab%IRBYAC
278 nsc => impbuf_tab%NSC
279 iint2 => impbuf_tab%IINT2
280 nkud => impbuf_tab%NKUD
281 imonv => impbuf_tab%IMONV
282 ikinw => impbuf_tab%IKINW
283 ikc => impbuf_tab%IKC
284 ikud => impbuf_tab%IKUD
285
286 diag_k =>impbuf_tab%DIAG_K
287 lt_k =>impbuf_tab%LT_K
288 bkud =>impbuf_tab%BKUD
289 d_imp =>impbuf_tab%D_IMP
290 dr_imp =>impbuf_tab%DR_IMP
291 elbuf_c =>impbuf_tab%ELBUF_C
292 bufmat_c=>impbuf_tab%BUFMAT_C
293 lb =>impbuf_tab%LB
294
295 l1 = 1+nixs*numels
296 l2 = l1+6*numels10
297 l3 = l2+12*numels20
298
299
300 IF (ispmd==0) THEN
301 WRITE(iout,*)
302 WRITE(iout,*)' ** BUCKLING MODES COMPUTATION **'
303 WRITE(istdo,*)
304 WRITE(istdo,*)' ** BUCKLING MODES COMPUTATION **'
305 WRITE(iout,*)
306 WRITE(istdo,*)
307 ENDIF
308 nddli7=0
309 ibid=0
310 ribid(1) = 0
311 rrbid(1) = zero
312
313 IF (ibuckl==0) THEN
314 IF (nrwall>0) THEN
315 CALL ancmsg(msgid=75,anmode=aninfo,
316 . c1='RIGID WALLS')
318 ENDIF
319 nt_rw=0
320 DO i=1,numnod
321 n1 = 3*(i-1)+1
322 n2 = 3*(i-1)+2
323 n3 = 3*(i-1)+3
324 x(1,i)=x(1,i)-d_imp(n1)
325 x(2,i)=x(2,i)-d_imp(n2)
326 x(3,i)=x(3,i)-d_imp(n3)
327 ENDDO
330 ENDIF
331
332 ALLOCATE(diag_kg(nddl0), lt_kg(nnzk0))
333 diag_kg=zero
334 lt_kg =zero
335 nddl=nddl0
336 nnzk=nnzk0
337 nddl_l = nddl
338 nnmax=lsize(9)
339 nkmax=lsize(10)
340 nmc2=lsize(11)
341
342 li1 =1
343 li2 = li1+lsize(4)
344 li3 = li2+lsize(5)
345 li4 = li3+lsize(1)
346 li5 = li4+lsize(3)
347 li6 = li5+lsize(7)
348 li7 = li6+lsize(2)
349 li8 = li7+lsize(6)
350 li9 = li8+nint2
351 li10 = li9+lsize(8)
352 li11 = li10+(lsize(8)-lcokm)*lsize(9)
353 li12 = li11+lcokm*lsize(10)
354 li13 = li12+4*lsize(11)
355 li14 = li13+lsize(14)
356 li15 = li14+lsize(15)
357
358 ntmp=0
359
360
361
362 IF (ibuckl>0) THEN
363
364
365
366 IF(nfxvel/=0) THEN
367 CALL fv_imp(ibfv ,npc ,tf ,vel ,sensor_tab,
368 1 d_imp ,dr_imp ,ikc ,iddl ,nsensor ,
369 2 skew ,iframe ,xframe ,v ,vr ,
370 3 x ,dirul ,ndof ,a ,ar )
371 ENDIF
372
373 nt_rw=0
374 imconv = 1
375 IF (nrwall>0) THEN
377 1 x ,d_imp ,v ,rwbuf ,lprw ,
378 2 nprw ,ms ,fsav(1,ninter+1),fr_wall ,
379 3 fopt ,rwsav ,weight ,
380 4 fsavd(1,ninter+1),
381 5 nt_rw ,iddl ,ikc ,imconv,ndof,frwl6,
382 6 weight_md ,dimfb , fbsav6,stabsen,tabsensor, output%TH%WFEXT, output%TH%WFEXT_MD)
383 IF(nt_rw>0) THEN
384 CALL fv_rw(iddl ,ikc ,ndof ,d_imp ,v )
385 ENDIF
386 ENDIF
387
388
389
390 ngdone = 1
391 ikg=0
392
393
394
396 1 pm ,geo ,ipm ,igeo ,elbuf ,
397 2 ixs ,ixq ,ixc ,ixt ,ixp ,
398 3 ixr ,ixtg ,ixtg1 ,ixs(l1) ,
399 4 ixs(l2) ,ixs(l3) ,iparg ,tf ,npc ,
400 5 fr_wave ,w16 ,bufmat ,thke ,bufgeo ,
401 6 rby ,skew ,x ,
402 7 wa ,iddl ,ndof ,diag_k ,lt_k ,
403 8 iadk ,jdik ,ikg ,ibid ,itask ,
404 9 elbuf_tab ,stack ,drape_sh4n, drape_sh3n ,drapeg )
405
406
407
408
409
410
412 1 icodt ,icodr ,iskew ,ibfv ,npc ,
413 2 tf ,vel ,xframe ,
414 3 rby ,x ,skew ,lpby ,npby ,
415 4 itab ,weight ,ms ,in ,nrbyac ,
416 5 irbyac ,nsc ,ikinw(li1),nmc ,ikinw(li2),
417 6 ikinw(li3),ikinw(li4),nint2 ,iint2 ,ikinw(li8),
418 7 ikinw(li5),ikinw(li6),ikinw(li7),ipari ,intbuf_tab,
419 8 nddl ,nnzk ,iadk ,jdik ,
420 9 diag_k ,lt_k ,ndof ,iddl ,ikc ,
421 a d_imp ,lb ,nkud ,ikud ,bkud ,
422 b nmc2 ,ikinw(li12),nt_rw ,dr_imp ,dirul ,
423 c irbe3 ,lrbe3 ,frbe3 ,ikinw(li13),irbe2 ,
424 d lrbe2 ,ikinw(li14),ikinw(li15))
425
426 IF (nspmd>1) THEN
428 1 iadk ,jdik ,ndof ,ikc ,iddl ,
429 2 inloc ,fr_elem ,iad_elem ,nddl )
430 ENDIF
431 nddl=nddl0
432 nnzk=nnzk0
433
434
435
436 ENDIF
437
439 1 itab ,nrbyac ,irbyac ,nsc ,ikinw(li1),
440 2 nmc ,ikinw(li2),ikinw(li3),ikinw(li4),nint2 ,
441 3 iint2 ,ipari ,intbuf_tab ,ikinw(li8),ikinw(li5),
442 4 ikinw(li6),ikinw(li7),iparg ,elbuf ,elbuf_tab ,
443 5 ixs ,ixq ,ixc ,ixt ,ixp ,
444 6 ixr ,ixtg ,ixtg1 ,ixs(l1) ,ixs(l2) ,
445 7 ixs(l3) ,iddl ,ndof ,iadk ,
446 8 jdik ,nddl ,nnzk ,nnmax ,lsize(8) ,
447 9 inloc ,nkmax ,ikinw(li9),ikinw(li10),ikinw(li11),
448 a nmc2 ,ikinw(li12),ntmp ,lsize(12) ,lsize(13) ,
449 b fr_elem ,iad_elem ,ipm ,igeo ,irbe3 ,
450 c lrbe3 ,ikinw(li13),fr_i2m ,iad_i2m ,fr_rbe3m ,
451 d iad_rbe3m ,irbe2 ,lrbe2 ,ikinw(li14),ikinw(li15))
452
453
454 ngdone = 1
455 ikg=1
456
457
458
460 1 pm ,geo ,ipm ,igeo ,elbuf ,
461 2 ixs ,ixq ,ixc ,ixt ,ixp ,
462 3 ixr ,ixtg ,ixtg1 ,ixs(l1) ,
463 4 ixs(l2) ,ixs(l3) ,iparg ,tf ,npc ,
464 5 fr_wave ,w16 ,bufmat ,thke ,bufgeo ,
465 6 rby ,skew ,x ,
466 7 wa ,iddl ,ndof ,diag_kg ,lt_kg ,
467 8 iadk ,jdik ,ikg ,ibid ,itask ,
468 9 elbuf_tab ,stack ,drape_sh4n, drape_sh3n ,drapeg )
469
470
471
472
473
474
475
476 IF (ikpres>0) THEN
478 2 skew ,nsensor,sensor_tab,weight,ibid ,
479 3 iddl ,ndof ,iadk ,jdik ,diag_kg,
480 4 lt_kg )
481 END IF
483 1 icodt ,icodr ,iskew ,ibfv ,npc ,
484 2 tf ,vel ,xframe ,
485 3 rby ,x ,skew ,lpby ,npby ,
486 4 itab ,weight ,ms ,in ,nrbyac ,
487 5 irbyac ,nsc ,ikinw(li1),nmc ,ikinw(li2),
488 6 ikinw(li3),ikinw(li4),nint2 ,iint2 ,ikinw(li8),
489 7 ikinw(li5),ikinw(li6),ikinw(li7),ipari ,intbuf_tab,
490 8 nddl ,nnzk ,iadk ,jdik ,
491 9 diag_kg ,lt_kg ,ndof ,iddl ,ikc ,
492 a d_imp ,lb ,nkud ,ikud ,bkud ,
493 b nmc2 ,ikinw(li12),nt_rw ,dr_imp ,dirul ,
494 c irbe3 ,lrbe3 ,frbe3 ,ikinw(li13),irbe2 ,
495 d lrbe2 ,ikinw(li14),ikinw(li15))
496
497 IF (nspmd>1) THEN
499 1 iadk ,jdik ,ndof ,ikc ,iddl ,
500 2 inloc ,fr_elem ,iad_elem ,nddl )
501 ENDIF
502
503 DO i=1,nddl
504 diag_kg(i)=-(diag_kg(i)-diag_k(i))
505 ENDDO
506 DO i=1,nnzk
507 lt_kg(i)=-(lt_kg(i)-lt_k(i))
508 ENDDO
509
510 IF (bisolv>=2) THEN
511 WRITE(6,*) "/IMPL/GRAPH is deprecated"
513 ENDIF
514
515 nm=bincv
516 nmmax=bmaxncv
517 maxitr=bniter
518 n=nddl
519 maxncv=nmmax*nbuck
520 shift=shftbuck
521 nev=nbuck
522 ncv=nm*nev
523
524 IF (nspmd==1) ncv=
min(ncv,n)
525 maxn=n
526 maxnev=nev
527 ldv=maxn
528 which='LM'
529 ishfts=1
530 mode=4
531 info=0
532 tol=zero
533 ipri=bipri
534
535 ALLOCATE(vect(ldv,maxncv),
eig(maxncv,2))
536
537
538
539
540
541
542
543 IF (bisolv==1) THEN
544
545 ALLOCATE(diag_op(nddl), lt_op(nnzk))
546 DO i=1,nddl
547 diag_op(i)=diag_k(i)-shift*diag_kg(i)
548 ENDDO
549 DO i=1,nnzk
550 lt_op(i)=lt_k(i)-shift*lt_kg(i)
551 ENDDO
552
553 DO i=1,numnod
554 multn(i)=1
555 ENDDO
556 DO i=1,nspmd
557 IF (i==ispmd+1) cycle
558 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
559 jj=fr_elem(j)
560 multn(jj)=multn(jj)+1
561 ENDDO
562 ENDDO
563 nkc=0
564 DO nn=1,numnod
565 i=inloc(nn)
566 DO j=1,ndof(i)
567 nd=iddl(i)+j
569 IF (ikc(nd)<1) THEN
571 ELSE
572 nkc=nkc+1
573 ENDIF
574 ENDDO
575 ENDDO
576
578
579 mumps_par%ICNTL(3)=iout
580 mumps_par%ICNTL(4)=1
581 IF (nspmd>1) THEN
582 mumps_par%ICNTL(18)=3
583
584 nddlg0 = nddl0
585 nnzkg0 = 0
586 nddlg = nddl
587 nnzkg = nnzk
588 nnmaxg = 0
590 1 nddlg0 ,nnzkg0 ,nddlg ,nnzkg ,nnmaxg ,
591 2 nddl0p ,nnzk0p ,nddlp ,nnzkp ,nnmaxp )
592
593 CALL spmd_cddl(nddl, nodglob, iddl, ndof, cddlp,
594 . inloc, ikc, nddlg, nddlp)
595
596 ALLOCATE(itk(2,nddl+nnzk), rtk(nddl+nnzk))
597
598 DO i=1,nddl
599 iacti(i)=i
600 ENDDO
601
604 . iadk, jdik, diag_op, lt_op, cddlp,
605 . nkloc, nkfront, itk, rtk, iddl,
606 . inloc, iad_elem, fr_elem, ndof, ikc,
607 . nddl, nnzk, iacti , nddli7,nddli7,
608 . ibid , ibid , ibid , rbid, rbid )
609
610
611
612
613
614 nkfloc = 0
615 nzloc=nkloc+nkfloc
616 ALLOCATE(mumps_par%A_LOC(nzloc),
617 . mumps_par%IRN_LOC(nzloc),
618 . mumps_par%JCN_LOC(nzloc))
619 IF (ispmd==0) THEN
620 ALLOCATE(mumps_par%RHS(nddlg))
621 ELSE
622 ALLOCATE(mumps_par%RHS(0))
623 ENDIF
624 mumps_par%N=nddlg
625 mumps_par%NZ_LOC=nzloc
626
627 DO i=1,nzloc
628 mumps_par%IRN_LOC(i)=itk(1,i)
629 mumps_par%JCN_LOC(i)=itk(2,i)
630 mumps_par%A_LOC(i)=rtk(i)
631 ENDDO
632 DEALLOCATE(itk, rtk)
633 ELSE
634 mumps_par%ICNTL(18)=0
635
636 DO i=1,nddl
637 cddlp(i)=i
638 ENDDO
639
640 ALLOCATE(mumps_par%A(nddl+nnzk),
641 . mumps_par%IRN(nddl+nnzk),
642 . mumps_par%JCN(nddl+nnzk),
643 . mumps_par%RHS(nddl))
644
645 nnz=0
646 DO i=1,nddl
647 nnz=nnz+1
648 mumps_par%IRN(nnz)=i
649 mumps_par%JCN(nnz)=i
650 mumps_par%A(nnz)=diag_op(i)
651 DO j=iadk(i),iadk(i+1)-1
652 jj=jdik(j)
653 nnz=nnz+1
654 mumps_par%IRN(nnz)=i
655 mumps_par%JCN(nnz)=jj
656 mumps_par%A(nnz)=lt_op(j)
657 ENDDO
658 ENDDO
659
660 IF (ispmd==0) THEN
661 WRITE(istdo,*)
662 WRITE(istdo,'(A21,I8,A8,I8)')
663 . ' MUMPS DIM : NNZ =',nnz,' NNZFR =',0
664 ENDIF
665
666 mumps_par%N=nddl
667 mumps_par%NZ=nnz
668 nddlg=nddl
669 ENDIF
670
671#ifdef DNC
672 CALL eigbuckp(n, nev, ncv, which, info,
673 . maxn, maxnev, maxncv, ldv, ishfts,
674 . maxitr, mode, tol, iadk, jdik,
675 . diag_k, lt_k, diag_kg, lt_kg,
eig,
676 . vect, ipri, shift, mumps_par, cddlp,
677 . nddl, multd )
678#endif
679
680 DEALLOCATE(diag_op, lt_op)
681 ELSEIF (bisolv==2) THEN
682 WRITE(6,*) "/IMPL/GRAPH is deprecated"
684 ENDIF
685
686 IF ((nspmd==1.OR.ispmd==0).AND.bisolv==1) THEN
687 WRITE(iout,'(A6,1PG11.4,A35,I10)')
688 . 'SHIFT ',shift,' NUMBER OF BUCKLING CRITICAL LOADS ',nbuck
689 WRITE(iout,'(A)') ' CRITICAL LOADS:'
690 WRITE(iout,'(A)') ' NUMBER CRITICAL LOAD'
691 DO i=1,nbuck
692 WRITE(iout,
'(5X,I10,4X,1PG11.4)') i,
eig(i,1)
693 ENDDO
694 WRITE(iout,*)
695 ENDIF
696
697 cmax=zero
698 DO i=1,numnod
699 x0(1,i)=x(1,i)
700 x0(2,i)=x(2,i)
701 x0(3,i)=x(3,i)
702 cmax=
max(cmax,abs(x(1,i)))
703 cmax=
max(cmax,abs(x(2,i)))
704 cmax=
max(cmax,abs(x(3,i)))
705 ENDDO
706
707 IF (nspmd>1) THEN
708 IF (ispmd==0) THEN
709 DO i=1,nspmd-1
710 irqtag=msgoff + i
713 ENDDO
714 ELSE
715 irqtag=msgoff + ispmd
717 ENDIF
719 ENDIF
720
721 nel3d = numels + numsph + 3*numels16
722 nel2d = numelc + numeltg + numelq
723 nel1d = numelt + numelp + 2*numelr + nanim1d
724 nel =
max(nel1d,nel2d,nel3d)
725 nelg =
max( numelsg+3*numels16g+numsphg,
726 . numelcg+numeltgg+numelqg,
727 . numeltg + numelpg + 2*numelrg)
728
729 sn1 =
max(3*numnod,6*nel3d,3*nel2d,9*nel1d,numsph)
730 sn2 = nel+3*numels16+numsph
731 sn3 = 3 * numnod + 2*numels16
732 sn4 = npart + 1
733 sn5 = nel2d
734 sn6 = npart
735 sn7 = nelg+1
736
737 n1 = 1
738 n2 = n1 +
max(3*numnod,6*nel3d,3*nel2d,9*nel1d)
739 n3 = n2 + nel
740 n4 = n3 + 3 * numnod
741 n5 = n4 + npart + 1
742 n6 = n5 + nel2d
743 n7 = n6 + npart
744 n8 = n7 + nel + 1
745 IF (numelx>0) THEN
746 skuix = 2*maxnx
747 skxusr = 3*maxnx
748 skfacptx = npart
749 skxedge = 2*nanim1d
750 skxfacet = 4*nanim2d
751 skxsolid = 8*nanim3d
752 sknumx1 = nanim1d
753 sknumx2 = nanim2d
754 sknumx3 = nanim3d
755 skoffx1 = nanim1d
756 skoffx2 = nanim2d
757 skoffx3 = nanim3d
758 skmass1 = nanim1d
759 skmass2 = nanim2d
760 skmass3 = nanim3d
761 skfunc1 = 10*nanim1d
762 skfunc2 = 10*nanim2d
763 skfunc3 = 10*nanim3d
764 ELSE
765 skuix = 1
766 skxusr = 1
767 skfacptx = 1
768 skxedge = 1
769 skxfacet = 1
770 skxsolid = 1
771 sknumx1 = 1
772 sknumx2 = 1
773 sknumx3 = 1
774 skoffx1 = 1
775 skoffx2 = 1
776 skoffx3 = 1
777 skmass1 = 1
778 skmass2 = 1
779 skmass3 = 1
780 skfunc1 = 1
781 skfunc2 = 1
782 skfunc3 = 1
783 ENDIF
784 sn9 = npart
785
786 k1=1+lipart1*(npart+nthpart)+2*9*(npart+nthpart)
787 k2=k1+numels
788 k3=k2+numelq
789 k4=k3+numelc
790 k5=k4+numelt
791 k6=k5+numelp
792 k7=k6+numelr
793 k8=k7
794 k9=k8+numeltg
795 k10=k9+numelx
796 k11=k10+numsph
797 k12=k11+numelig3d
798 l1=1+6*(numelc+numeltg)*iepsdot
799
800 DO i=1,numnod
801 d(1,i)=zero
802 d(2,i)=zero
803 d(3,i)=zero
804 dr(1,i)=zero
805 dr(2,i)=zero
806 dr(3,i)=zero
807 ENDDO
808
809 DO i=1,nbuck
810 CALL recudis(nddl, iddl, ndof, ikc, vect(1,i),
811 . d, dr, inloc)
812
813 CALL recukin(rby, lpby, npby, skew, iskew,
814 . itab, weight, ms, in,
815 . ibfv, vel, icodt , icodr,
816 . nrbyac, irbyac, nint2, iint2, ipari,
817 . intbuf_tab , ndof, d, dr,
818 . x , xframe , dirul, ixr ,ixc ,
819 . ixtg ,sh4tree ,sh3tree, irbe3 ,lrbe3,
820 7 frbe3 , irbe2 ,lrbe2 )
821
822 dmax=zero
823 DO j=1,numnod
824 dmax=
max(dmax,abs(d(1,j)))
825 dmax=
max(dmax,abs(d(2,j)))
826 dmax=
max(dmax,abs(d(3,j)))
827 ENDDO
828
829 IF (nspmd>1) THEN
830 IF (ispmd==0) THEN
831 DO j=1,nspmd-1
832 irqtag=msgoff + nspmd + j
835 ENDDO
836 scale=zero
837 IF (dmax>zero) scale=one/dmax
838 ELSE
839 irqtag=msgoff + nspmd + ispmd
841 ENDIF
843 ELSE
844 scale=zero
845 IF (dmax>zero) scale=one/dmax
846 ENDIF
847
848 DO j=1,numnod
849 x(1,j)=x0(1,j)+scale*d(1,j)
850 x(2,j)=x0(2,j)+scale*d(2,j)
851 x(3,j)=x0(3,j)+scale*d(3,j)
852 ENDDO
853
854 IF (dtanim>zero) THEN
855 ianim=ianim+1
858 1 x ,d ,v ,a ,elbuf ,
859 2 ixs ,ixq ,ixc ,ixt ,ixp ,
860 3 ixr ,ixtg ,sn1 ,sn2 ,sn3 ,
861 4 sn4 ,iparg ,pm ,geo ,ms ,
862 5 sn5 ,cont ,sn6 ,icut ,skew ,
863 6 xcut ,fint ,itab ,sn7 ,fext ,
864 7 fopt ,anin ,lpby ,npby ,nstrf ,
865 8 rwbuf ,nprw ,tani ,elbuf_tab ,matparam_tab,
866 a dd_iad ,weight ,eani ,ipart ,cluster ,
867 b ipart(k1) ,ipart(k2) ,ipart(k3) ,ipart(k4) ,ipart(k5) ,
868 c ipart(k6) ,ipart(k7) ,ipart(k8) ,
869 d rby ,sn3 ,tani(l1) ,nom_opt ,igrsurf ,
870 e bufsf ,idata ,rdata ,sn9 ,bufmat ,
871 f bufgeo ,kxx ,ixx ,ipart(k9) ,skuix ,
872 g skxusr ,skfacptx ,skxedge ,skxfacet ,skxsolid ,
873 h sknumx1 ,sknumx2 ,sknumx3 ,skoffx1 ,skoffx2 ,
874 i skoffx3 ,skmass1 ,skmass2 ,skmass3 ,skfunc1 ,
875 j skfunc2 ,skfunc3 ,kxsp ,ixsp ,nod2sp ,
876 k ipart(k10) ,spbuf ,ixs10 ,ixs20 ,ixs16 ,
877 l vr ,monvol ,volmon ,ipm ,igeo ,nodglob,
878 m iad_elem ,fr_elem ,fr_sec ,fr_rby2 ,iad_rby2 ,
879 n fr_wall ,ribid ,rrbid ,fncont ,ftcont ,
880 o temp ,thke ,err_thk_sh4,err_thk_sh3 ,rrbid
881 p ipari ,rrbid ,rrbid ,ale_connect ,
882 q irbe2 ,irbe3 ,lrbe2 ,lrbe3 ,fr_rbe2,
883 r fr_rbe3m ,iad_rbe2 ,rrbid ,ribid ,ribid ,
884 s rrbid ,rrbid ,rrbid ,rrbid ,rrbid ,
885 s rrbid ,ribid ,ribid ,ribid ,ribid ,
886 u rrbid ,rrbid ,weight_md ,ribid ,ribid ,
887 v fcluster ,mcluster ,xfem_tab ,w ,
888 w nv46 ,ipart(k11),ribid ,ribid ,ibid ,
889 x rrbid ,rrbid ,nercvois ,nesdvois ,lercvois ,
890 y lesdvois ,crkedge ,indx_crk ,xedge4n ,xedge3n ,
891 z stack ,sph2sol ,stifn ,stifr ,igrnod ,
892 1 h3d_data ,subset ,multi_fvm ,rrbid ,rrbid ,
893 2 fcont_max ,fncontp2 ,ftcontp2 ,glob_therm ,
894 . drape_sh4n ,drape_sh3n,drapeg ,output)
895 ENDIF
896
897 IF (dtoutp>zero) THEN
898 IF (ispmd==0) THEN
899 leng = numnodg
900 ELSE
901 leng = 0
902 ENDIF
903 ioutp=ioutp+1
906 1 x ,d ,v ,a ,
907 2 ixs ,ixq ,ixc ,ixt ,ixp ,
908 3 ixr ,ixtg ,iparg ,pm ,igeo ,
909 4 ms ,cont ,itab ,partsav,fint ,
910 5 fext ,tani ,eani ,anin ,ipart ,
911 6 vr ,elbuf_tab ,dd_iad,weight,
912 7 ipm ,kxsp ,spbuf ,nodglob,leng ,
913 8 fopt ,nom_opt ,npby ,fncont ,ftcont ,
914 9 geo ,thke ,stack ,drape_sh4n, drape_sh3n ,drapeg,output )
915 ENDIF
916 ENDDO
917
918 DEALLOCATE(diag_kg, lt_kg, vect,
eig)
919
920 DO i=1,numnod
921 x(1,i)=x0(1,i)
922 x(2,i)=x0(2,i)
923 x(3,i)=x0(3,i)
924 ENDDO
925
926
927
928
929 RETURN
930#endif
subroutine eig(k_diag, k_lt, iadk, jdik, ms, in, nddl, ndof, nnzl, x, d, v, a, bufel, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, pm, geo, cont, icut, skew, xcut, fint, itab, fext, fopt, anin, lpby, npby, nstrf, rwbuf, nprw, tani, elbuf_tab, matparam_tab, dd_iad, fr_iad, dd_front, cluster, weight, eani, ipart, rby, nom_opt, igrsurf, bufsf, idata, rdata, bufmat, bufgeo, kxx, ixx, kxsp, ixsp, nod2sp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, ipm, igeo, iparg, eigipm, eigibuf, eigrpm, ldiag, ljdik, ljdik2, ikc, maxncv, thke, nms, nint2, iint2, ipari, intbuf_tab, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, inloc, iddl, partsav, fncont, ftcont, temp, err_thk_sh4, err_thk_sh3, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, weight_md, fcluster, mcluster, xfem_tab, w, nv46, nercvois, nesdvois, lercvois, lesdvois, crkedge, indx_crk, xedge4n, xedge3n, stack, sph2sol, stifn, stifr, drape_q4, drape_t3, h3d_data, subset, igrnod, fcont_max, fncontp2, ftcontp2, ale_connectivity, glob_therm)
subroutine fv_rw(iddl, ikc, ndof, ud, v)
subroutine fv_imp(ibfv, npc, tf, vel, sensor_tab, ud, rd, ifix, iddl, nsensor, skew, iframe, xframe, v, vr, x, lj, ndof, a, ar)
subroutine genani(x, d, v, a, bufel, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, swaft, smas, sxnorm, siad, iparg, pm, geo, ms, sinvert, cont, smater, icut, skew, xcut, fint, itab, sel2fa, fext, fopt, anin, lpby, npby, nstrf, rwbuf, nprw, tani, elbuf_tab, mat_param, dd_iad, weight, eani, ipart, cluster, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartur, iparttg, rby, swa4, tors, nom_opt, igrsurf, bufsf, idata, rdata, siadg, bufmat, bufgeo, kxx, ixx, ipartx, suix, sxusr, snfacptx, sixedge, sixfacet, sixsolid, snumx1, snumx2, snumx3, soffx1, soffx2, soffx3, smass1, smass2, smass3, sfunc1, sfunc2, sfunc3, kxsp, ixsp, nod2sp, ipartsp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, ipm, igeo, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, iflow, rflow, fncont, ftcont, temp, thke, err_thk_sh4, err_thk_sh3, diag_sms, ipari, fncont2, dr, ale_connectivity, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, dxancg, nod_pxfem, iel_pxfem, zi_ply, vgaz, fcontg, fncontg, ftcontg, fanreac, inod_crk, iel_crk, elcutc, iadc_crk, pdama2, res_sms, weight_md, nodglobxfe, nodedge, fcluster, mcluster, xfem_tab, w, nv46, ipartig3d, kxig3d, ixig3d, sig3dsolid, knot, wige, nercvois, nesdvois, lercvois, lesdvois, crkedge, indx_crk, xedge4n, xedge3n, stack, sph2sol, stifn, stifr, igrnod, h3d_data, subset, multi_fvm, knotlocpc, knotlocel, fcont_max, fncontp2, ftcontp2, glob_therm, drape_sh4n, drape_sh3n, drapeg, output)
subroutine genoutp(x, d, v, a, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, iparg, pm, igeo, ms, cont, itab, partsav, fint, fext, tani, eani, anin, ipart, vr, elbuf_tab, dd_iad, weight, ipm, kxsp, spbuf, nodglob, leng, fopt, nom_opt, npby, fncont, ftcont, geo, thke, stack, drape_sh4n, drape_sh3n, drapeg, output)
subroutine upd_fr_k(iadk, jdik, ndof, ikc, iddl, inloc, fr_elem, iad_elem, nddl)
subroutine imp_glob_khp(pm, geo, ipm, igeo, elbuf, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iparg, tf, npc, fr_wave, w16, bufmat, thke, bufgeo, rby, skew, x, wa, iddl, ndof, k_diag, k_lt, iadk, jdik, ikgeo, etag, itask0, elbuf_tab, stack, drape_sh4n, drape_sh3n, drapeg)
subroutine imp_kpres(ib, fac, npc, tf, x, skew, nsensor, sensor_tab, weight, iadc, iddl, ndof, iadk, jdik, k_diag, k_lt)
subroutine mumps_set2(iadk, jdik, diag_k, lt_k, cddlp, nkloc, nkfront, itk, rtk, iddl, inloc, iad_elem, fr_elem, ndof, ikc, nddl, nnzk, iacti, nddli, nnzi, iadi, jdii, itok, diag_i, lt_i)
subroutine spmd_mumps_ini(mumps_par, sym)
subroutine spmd_inf_g(nddl0, nzzk0, nddl, nzzk, nnmax, nddl0p, nzzk0p, nddlp, nzzkp, nnmaxp)
subroutine spmd_cddl(nddl, nodglob, iddl, ndof, cddlp, inloc, ikc, nddlg, nddlp)
subroutine ind_glob_k(npby, lpby, itab, nrbyac, irbyac, nsc, isij, nmc, imij, nss, iss, nint2, iint2, ipari, intbuf_tab, nsc2, isij2, nss2, iss2, iparg, elbuf, elbuf_tab, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iddl, ndof, iadk, jdik, nddl, nnzk, nnmax, nkine, inloc, nkmax, nrowk, icok, icokm, nmc2, imij2, irk, npn, npp, fr_elem, iad_elem, ipm, igeo, irbe3, lrbe3, iss3, fr_i2m, iad_i2m, fr_rbe3m, iad_rbe3m, irbe2, lrbe2, isb2, nsrb2)
subroutine recudis(nddl, iddl, ndof, ikc, lx, d, dr, inloc)
subroutine recukin(rby, lpby, npby, skew, iskew, itab, weight, ms, in, ibfv, vel, icodt, icodr, nrbyac, irbyac, nint2, iint2, ipari, intbuf_tab, ndof, d, dr, x, xframe, lj, ixr, ixc, ixtg, sh4tree, sh3tree, irbe3, lrbe3, frbe3, irbe2, lrbe2)
subroutine rgwal0_imp(x, d, v, rwbuf, lprw, nprw, ms, fsav, fr_wall, fopt, rwsav, weight, fsavd, nt_rw, iddl, ikc, icomv, ndof, frwl6, weight_md, dimfb, fbsav6, stabsen, tabsensor, wfext, wfext_md)
subroutine spmd_ds_rsend(buf, size, itag, idest)
subroutine spmd_ds_rrecv(buf, size, itag, iprov)
subroutine spmd_rbcast(tabi, tabr, n1, n2, from, add)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
subroutine upd_glob_k(icodt, icodr, iskew, ibfv, npc, tf, vel, xframe, rby, x, skew, lpby, npby, itab, weight, ms, in, nrbyac, irbyac, nsc, isij, nmc, imij, nss, iss, nint2, iint2, nsc2, isij2, nss2, iss2, ipari, intbuf_tab, nddl, nnz, iadk, jdik, diag_k, lt_k, ndof, iddl, ikc, ud, b, nkud, ikud, bkud, nmc2, imij2, nt_rw, rd, lj, irbe3, lrbe3, frbe3, iss3, irbe2, lrbe2, isb2, nsrb2)