32 1 XSEED ,UNITAB ,QP_IPERTURB,QP_RPERTURB,
33 2 EIGIPM , EIGRPM ,DEFAULTS,DAMP_RANGE_PART)
45#include "implicit_f.inc"
59#include "tabsiz_c.inc"
60#include "random_c.inc"
67 INTEGER,
INTENT(IN) :: NOM_OPT(LNOPT1,SNOM_OPT1), INOM_OPT(SINOM_OPT),
68 . IRAND(*),QP_IPERTURB(NPERTURB,6),EIGIPM(NEIPM,*)
69 my_real,
INTENT(IN) :: dampr(nrdamp,*),alea(*),xseed(*),eigrpm(nerpm,*)
70 my_real,
INTENT(IN) :: qp_rperturb(nperturb,4)
71 INTEGER,
INTENT(IN) :: DAMP_RANGE_PART(NPART)
72 TYPE (UNIT_TYPE_) ::UNITAB
73 TYPE(defaults_) ,
INTENT(IN) :: DEFAULTS
77 INTEGER I,II,MY_ID, MY_DAMP,TEMP_INT,
78 . MY_RAND, MY_UNIT, MY_DEFAULTINTER,
79 . ids(nperturb),idx(nperturb),idseig(neig),idxeig(neig),my_eig
80 CHARACTER(LEN=NCHARTITLE) :: TITR
81 INTEGER IHBE_DS,ISST_DS,IFRAME_DS,ITET4_D,ITET10_D,ICPRE_D,IMAS_DS,
82 . ihbe_d,ipla_d,ithk_d,ishea_d,isst_d,
83 . ish3n_d, istra_d,npts_d,idril_d,def_inter(100)
84 CHARACTER (LEN=255) :: VARNAME
85 DOUBLE PRECISION TEMP_DOUBLE
90 ihbe_ds= defaults%SOLID%ISOLID
91 isst_ds= defaults%SOLID%ISMSTR
92 icpre_d= defaults%SOLID%ICPRE
93 itet4_d= defaults%SOLID%ITETRA4
94 itet10_d= defaults%SOLID%ITETRA10
95 imas_ds= defaults%SOLID%IMAS
96 iframe_ds= defaults%SOLID%IFRAME
98 ihbe_d = defaults%SHELL%ishell
99 ish3n_d= defaults%SHELL%ish3n
100 isst_d = defaults%SHELL%ismstr
101 ipla_d = defaults%SHELL%iplas
102 ithk_d = defaults%SHELL%ithick
103 idril_d= defaults%SHELL%idrill
114 my_id = nint(dampr(1,my_damp))
115 IF(len_trim(titr)/=0)
THEN
116 CALL qaprint(titr(1:len_trim(titr)),my_id,0.0_8)
118 CALL qaprint(
'A_DAMP_FAKE_NAME', my_id,0.0_8)
122 IF(dampr(i,my_damp)/=zero)
THEN
125 WRITE(varname,
'(A,I0)')
'DAMPR_',i
126 temp_double = dampr(i,my_damp)
127 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
136 IF (
myqakey(
'/DAMP/INTER'))
THEN
140 my_id = nint(dampr(1,my_damp))
141 IF(len_trim(titr)/=0)
THEN
142 CALL qaprint(titr(1:len_trim(titr)),my_id,0.0_8)
144 CALL qaprint(
'A_DAMP_INTER_FAKE_NAME', my_id,0.0_8)
148 IF(dampr(i,my_damp)/=zero)
THEN
151 WRITE(varname,
'(A,I0)')
'DAMPR_',i
152 temp_double = dampr(i,my_damp)
153 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
157 IF(idamp_rdof/=zero)
THEN
158 WRITE(varname,
'(A)')
'IDAMP_RDOF_'
159 temp_double = idamp_rdof
160 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
168 IF (
myqakey(
'/DAMP/FREQ_RANGE'))
THEN
171 IF (nint(dampr(31,my_damp))==1)
THEN
173 my_id = nint(dampr(1,my_damp))
174 IF(len_trim(titr)/=0)
THEN
175 CALL qaprint(titr(1:len_trim(titr)),my_id,0.0_8)
177 CALL qaprint(
'A_DAMP_INTER_FAKE_NAME', my_id,0.0_8)
181 IF(dampr(i,my_damp)/=zero)
THEN
184 WRITE(varname,
'(A,I0)')
'DAMPR_',i
185 temp_double = dampr(i,my_damp)
186 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
191 IF (damp_range_part(i) == my_damp)
THEN
192 WRITE(varname,
'(A)')
'PART_'
194 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
209 WRITE(varname,
'(A)')
'NANALY'
211 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
213 WRITE(varname,
'(A)')
'IPARI0'
215 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
221 IF (
myqakey(
'/DEF_SOLID'))
THEN
223 CALL qaprint(
'DEF_SOLID', 0,0.0_8)
225 WRITE(varname,
'(A)')
'Isolid'
227 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
229 WRITE(varname,
'(A)')
'Ismstr'
231 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
233 WRITE(varname,
'(A)')
'Icpre'
235 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
237 WRITE(varname,
'(A)')
'Istrain'
239 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
241 WRITE(varname,
'(A)')
'Itetra4'
243 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
245 WRITE(varname,
'(A)')
'Itetra10'
247 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
249 WRITE(varname,
'(A)')
'Imas'
251 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
253 WRITE(varname,
'(A)')
'Iframe'
255 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
260 IF (
myqakey(
'/DEF_SHELL'))
THEN
262 CALL qaprint(
'DEF_SHELL', 0,0.0_8)
264 WRITE(varname,
'(A)')
'Ishell'
266 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
268 WRITE(varname,
'(A)')
'Ismstr'
270 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
272 WRITE(varname,
'(A)')
'Ithick'
274 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
276 WRITE(varname,
'(A)')
'Iplas'
278 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
280 WRITE(varname,
'(A)')
'Istrain'
282 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
284 WRITE(varname,
'(A)')
'Ish3n'
286 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
288 WRITE(varname,
'(A)')
'Idrill'
290 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
301 WRITE(varname,
'(A,I0)')
'IRAND_',my_rand
302 temp_int = irand(my_rand)
303 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
305 IF(alea(my_rand)/=zero)
THEN
307 WRITE(varname,
'(A,I0)')
'ALEA_',my_rand
308 temp_double = alea(my_rand)
309 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
312 IF(xseed(my_rand)/=zero)
THEN
314 WRITE(varname,
'(A,I0)')
'XSEED_',my_rand
315 temp_double = xseed(my_rand)
316 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
327 CALL qaprint(
'IMPLICIT',0,0.0_8)
329 WRITE(varname,
'(A,I0)')
'IIMPLICIT'
331 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
333 WRITE(varname,
'(A,I0)')
'IPLA_D'
335 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
337 WRITE(varname,
'(A,I0)')
'IHBE_DS'
339 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
341 WRITE(varname,
'(A,I0)')
'IHBE_D'
343 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
345 WRITE(varname,
'(A,I0)')
'IDRIL_D'
347 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
357 WRITE(varname,
'(A,I0)')
'DECTYP'
359 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
361 WRITE(varname,'(a,i0)
') 'nspmd
'
363 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
365 WRITE(VARNAME,'(a,i0)
') 'decani
'
367 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
369 WRITE(VARNAME,'(a,i0)
') 'decmot
'
371 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
373 WRITE(VARNAME,'(a,i0)
') 'decneq
'
375 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
377 WRITE(VARNAME,'(a,i0)
') 'nthread
'
379 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
385 IF (MYQAKEY('/sphglo
')) THEN
387 CALL QAPRINT('sphglo
',0,0.0_8)
389 IF(SPASORT/=ZERO)THEN
391 WRITE(VARNAME,'(a,i0)
') 'spasort
'
392 TEMP_DOUBLE = SPASORT
393 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
396 WRITE(VARNAME,'(a,i0)
') 'lvoisph
'
398 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
400 WRITE(VARNAME,'(a,i0)
') 'kvoisph
'
402 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
404 WRITE(VARNAME,'(a,i0)
') 'itsol2sph
'
406 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
412 IF (MYQAKEY('/caa
')) THEN
414 CALL QAPRINT('caa
',0,0.0_8)
416 WRITE(VARNAME,'(a,i0)
') 'icaa
'
417 TEMP_INT = ALE%GLOBAL%ICAA
418 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
424 IF (MYQAKEY('/ioflag
')) THEN
426 CALL QAPRINT('ioflag
',0,0.0_8)
428 WRITE(VARNAME,'(a,i0)
') 'ipri
'
430 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
432 WRITE(VARNAME,'(a,i0)
') 'ioutput
'
434 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
436 WRITE(VARNAME,'(a,i0)
') 'outyy_fmt
'
438 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
440 WRITE(VARNAME,'(a,i0)
') 'irootyy
'
442 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
444 WRITE(VARNAME,'(a,i0)
') 'idrot
'
446 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
448 WRITE(VARNAME,'(a,i0)
') 'irform
'
450 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
456 IF (MYQAKEY('/ams
')) THEN
458 CALL QAPRINT('ams
',0,0.0_8)
460 WRITE(VARNAME,'(a,i0)
') 'isms
'
462 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
464 WRITE(VARNAME,'(a,i0)
') 'idtgrs
'
466 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
468 WRITE(VARNAME,'(a,i0)
') 'isms_selec
'
469 TEMP_INT = ISMS_SELEC
470 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
472 WRITE(VARNAME,'(a,i0)
') 'irest_mselt
'
473 TEMP_INT = IREST_MSELT
474 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
476 IF(DT_SMS_SWITCH/=ZERO)THEN
478 WRITE(VARNAME,'(a,i0)
') 'dt_sms_switch
'
479 TEMP_DOUBLE = DT_SMS_SWITCH
480 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
487 IF (MYQAKEY('/unit
')) THEN
489 DO MY_UNIT=1,UNITAB%NUNITS
491 TITR(1:nchartitle)=''
492 MY_ID = UNITAB%UNIT_ID(MY_UNIT)
493 IF(LEN_TRIM(TITR)/=0)THEN
494 CALL QAPRINT(TITR(1:LEN_TRIM(TITR)),MY_ID,0.0_8)
496 CALL QAPRINT('a_unit_fake_name
', MY_ID,0.0_8)
499 IF(UNITAB%FAC_M(MY_UNIT)/=ZERO)THEN
501 WRITE(VARNAME,'(a,i0)
') 'fac_m_
',MY_UNIT
502 TEMP_DOUBLE = UNITAB%FAC_M(MY_UNIT)
503 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
506 IF(UNITAB%FAC_L(MY_UNIT)/=ZERO)THEN
508 WRITE(VARNAME,'(a,i0)
') 'fac_l_
',MY_UNIT
509 TEMP_DOUBLE = UNITAB%FAC_L(MY_UNIT)
510 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
513 IF(UNITAB%FAC_T(MY_UNIT)/=ZERO)THEN
515 WRITE(VARNAME,'(a,i0)
') 'fac_t_
',MY_UNIT
516 TEMP_DOUBLE = UNITAB%FAC_T(MY_UNIT)
517 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
520 END DO ! MY_UNIT=1,UNITAB%NUNITS
526 IF (MYQAKEY('/default/inter
')) THEN
528 DEF_INTER(1:100) = DEFAULTS%interface%DEF_INTER(1:100)
529 CALL QAPRINT('/default/inter
', 0,0.0_8)
531 DO MY_DEFAULTINTER=1,100
533 IF(DEF_INTER(MY_DEFAULTINTER) /= 0) THEN
534 WRITE(VARNAME,'(a,i0)
') 'def_inter_
',MY_DEFAULTINTER
535 TEMP_INT = DEF_INTER(MY_DEFAULTINTER)
536 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
539 ENDDO ! MY_DEFAULTINTER=1,100
545 IF (MYQAKEY('/intthick
')) THEN
547 IF (IINTTHICK > 0) THEN
548 CALL QAPRINT('/intthick
',0,0.0_8)
549 WRITE(VARNAME,'(a)
') 'intthick_
'
551 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
558 OK_QA = MYQAKEY('/
ale/grid
')
560 TEMP_DOUBLE = ALE%GRID%ALPHA
561 WRITE(VARNAME,'(a)
') 'alpha_
'
562 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
563 TEMP_DOUBLE = ALE%GRID%GAMMA
564 WRITE(VARNAME,'(a)
') 'gamma_
'
565 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
566 TEMP_DOUBLE = ALE%GRID%VGX
567 WRITE(VARNAME,'(a)
') 'vgx_
'
568 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
569 TEMP_DOUBLE = ALE%GRID%VGY
570 WRITE(VARNAME,'(a)
') 'vgy_
'
571 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
572 TEMP_DOUBLE = ALE%GRID%VGZ
573 WRITE(VARNAME,'(a)
') 'vgz_
'
574 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
579 IF (MYQAKEY('/shfra
')) THEN
581 IF (ISHFRAM > 0) THEN
582 CALL QAPRINT('/ishfra
',0,0.0_8)
583 WRITE(VARNAME,'(a)
') 'ishfram_
'
585 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
592 OK_QA = MYQAKEY('/
upwind')
594 TEMP_DOUBLE = ALE%UPWIND%UPWMG
595 WRITE(VARNAME,'(a)
') 'upcoef1_
'
596 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
597 TEMP_DOUBLE = ALE%UPWIND%UPWOG
598 WRITE(VARNAME,'(a)
') 'upcoef2_
'
599 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
600 TEMP_DOUBLE = ALE%UPWIND%UPWSM
601 WRITE(VARNAME,'(a)
') 'upcoef3_
'
602 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
608 IF (MYQAKEY('/perturb
')) THEN
610 IF (NPERTURB > 0) THEN
612! Sort by ID to ensure internal order independent output
614 IDS(I) = QP_IPERTURB(I,1)
617 CALL QUICKSORT_I2(IDS, IDX, 1, NPERTURB)
623 CALL QAPRINT('/perturb_fake_name
',II,0.0_8)
626 WRITE(VARNAME,'(a,i0)
') 'qp_iperturb_
',I
627 TEMP_INT = QP_IPERTURB(MY_ID,I)
628 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
632 WRITE(VARNAME,'(a,i0)
') 'qp_rperturb_
',I
633 TEMP_DOUBLE = QP_RPERTURB(MY_ID,I)
634 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
645 IF (MYQAKEY('/stamping
')) THEN
647 CALL QAPRINT('stamping
',0,0.0_8)
649 WRITE(VARNAME,'(a,i0)
') 'istamping
'
651 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
656 IF (MYQAKEY('/
eig')) THEN
658! Sort by ID to ensure internal order independent output
660 IDSEIG(I) = EIGIPM(1,I)
663 IF (NEIG>0) CALL QUICKSORT_I2(IDSEIG, IDXEIG, 1, NEIG)
668 WRITE(VARNAME,'(a,i0)
') 'eigid_
',MY_EIG
669 TEMP_INT = EIGIPM(1,MY_EIG)
670 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
673 IF(EIGIPM(I,MY_EIG) /=0)THEN
675 WRITE(VARNAME,'(a,i0)
') 'eigipm_
',I
676 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),EIGIPM(I,MY_EIG),0.0_8)
681 IF(EIGRPM(I,MY_EIG) /=ZERO)THEN
682 WRITE(VARNAME,'(a,i0)
') 'eigrpm_
',I
683 TEMP_DOUBLE = EIGRPM(I,MY_EIG)
684 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
694 IF (MYQAKEY('/anim/vers
')) THEN
696 WRITE(VARNAME,'(a)
') 'anim_vers
'
698 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
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)