58 . IXR ,X ,GEO ,XMAS ,NPC ,
59 . PLD ,XIN ,SKEW ,DTELEM ,NEL ,
60 . STIFN ,STIFR ,PARTSAV ,V ,IPART ,
62 . INR ,STIFINT ,STR ,IGEO ,SIGRS ,
63 . NSIGRS ,IMERGE2 ,IADMERGE2,MSRT ,IXR_KJ,
64 . NOM_OPT ,STRR ,PTSPRI ,IPM ,PM ,
65 . UPARAM ,R_SKEW ,PRELOAD_A,IPRELD ,NPRELOAD_A,
75 USE format_mod ,
ONLY : fmt_10i
79#include "implicit_f.inc"
89#include "vect01_c.inc"
92#include "random_c.inc"
97#include "kincod_c.inc"
101 INTEGER IXR(NIXR,*), NPC(*),IPART(*),ITAB(*),NEL,
102 . IGEO(NPROPGI,*),NSIGRS,IMERGE2(NUMNOD+1),
103 . IADMERGE2(NUMNOD+1),IXR_KJ(5,*),PTSPRI(*),
104 . (NPROPMI,*),R_SKEW(*)
105 INTEGER NOM_OPT(LNOPT1,*)
106 INTEGER ,
INTENT (IN) :: IPRELD,NPRELOAD_A
107 INTEGER ,
INTENT (IN) :: IKINE(3*NUMNOD)
110 . x(3,*), geo(npropg,*), xmas(*), pld(*), xin(*),
111 . skew(lskew,*), dtelem(*),stifn(*),stifr(*),partsav(20,*), v(*),
112 . msr(3,*), inr(3,*),
113 . stifint(*), str(*),sigrs(nsigrs,*), msrt(*),
strr(*),uparam(*),
116 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
117 TYPE(PREL1D_) ,
DIMENSION(NPRELOAD_A),
TARGET :: PRELOAD_A
121 INTEGER ,J,I2, IGTYP, NDEPAR,
123 . I1, I0, I3,NEL3,NUVAR,NUPARAM,NFUNC,IADFUN,
124 . NMAT,IADMAT,NJPID,ILENG,NFUND,
126 . imat,k1,k11,k14,k12,k13,iadbuf,imass,slip,fra,ih,nkin,
130 . dt, dtc, xkm, xcm, xkr, xcr, xm, xine, ex, ey, ez,
131 . al2, sti,rho,kx,kxy,kxz,
133 . uiner(mvsiz) ,ustifm(mvsiz) ,
134 . ustifr(mvsiz),uvism(mvsiz) ,
135 . uvisr(mvsiz), xl(mvsiz), dx(mvsiz,3),ems(mvsiz)
137 . length, ratio, lmin
139 . minl, maxl, rfac, ixx, iyy, ine2
140 INTEGER IDS, CNT1, CNT2, NSPRG, NSPRG4, NSPRG8, NSPRG12,
141 . NSPRG13, NSPRG25, NSPRG26, NSPRGU, IUN,NSPRG23,NSPRG27
142 DATA NSPRG /0/, NSPRG4 /0/, NSPRG8 /0/, NSPRG12 /0/,
143 . NSPRG13 /0/, NSPRG25 /0/,NSPRG26/0/,NSPRGU /0/,
144 . NSPRG23 /0/,NSPRG27/0/
145 INTEGER MINIDL, MAXIDL,IPID,IFUNC
149 CHARACTER(LEN=NCHARTITLE)::TITR
152 TYPE(g_bufel_),
POINTER :: GBUF
154 my_real :: dfs(2), dv(2)
158 gbuf => elbuf_str%GBUF
161 ii(i) = (i-1)*nel + 1
165 noise = two*sqrt(three)*xalea
170 CALL fretitl2(titr,igeo(npropgi-ltitr+1,i),ltitr)
171 IF (igtyp == 4 .OR. igtyp == 12 .OR. igtyp == 27)
THEN
172 CALL rkini3(igeo(101,i),npc,pld,geo(2,i),geo(7,i),igeo(1,i),
173 . geo(10,i) ,geo(39,i) ,id,titr,nom_opt)
174 ELSEIF (igtyp == 8 .OR. igtyp == 13)
THEN
175 CALL rkini3(igeo(101,i),npc,pld,geo(3,i) , geo(7,i) , igeo(1,i),
176 . geo(41,i) ,geo(39,i) ,id,titr,nom_opt)
177 CALL rkini3(igeo(104,i),npc,pld,geo(10,i), geo(14,i), igeo(1,i),
178 . geo(45,i) ,geo(174,i) ,id,titr,nom_opt)
179 CALL rkini3(igeo(107,i),npc,pld,geo(15,i), geo(18,i), igeo(1,i),
180 . geo(49,i) ,geo(175,i) ,id,titr,nom_opt)
181 CALL rkini3(igeo(110,i),npc,pld,geo(19,i), geo(22,i), igeo(1,i),
182 . geo(53,i) ,geo(176,i) ,id,titr,nom_opt)
183 CALL rkini3(igeo(113,i),npc,pld,geo(23,i), geo(26,i), igeo(1,i),
184 . geo(57,i) ,geo(177,i) ,id,titr,nom_opt)
185 CALL rkini3(igeo(116,i),npc,pld,geo(27,i), geo(30,i), igeo(1,i),
186 . geo(61,i) ,geo(178,i) ,id,titr,nom_opt)
187 ELSEIF (igtyp == 25)
THEN
189 . geo(41,i) ,geo(39,i) ,id,titr,nom_opt)
190 CALL rkini3(igeo(106,i),npc,pld,geo(10,i), geo(14,i), igeo(1,i),
191 . geo(45,i) ,geo(174,i) ,id,titr,nom_opt)
192 CALL rkini3(igeo(110,i),npc,pld,geo(19,i), geo(22,i), igeo(1,i),
193 . geo(53,i) ,geo(176,i) ,id,titr,nom_opt)
194 CALL rkini3(igeo(114,i),npc,pld,geo(23,i), geo(26,i), igeo
195 . geo(57,i) ,geo(177,i) ,id,titr,nom_opt)
196 ELSEIF (igtyp == 26)
THEN
201 CALL rkini3(igeo(iadfun+j,i),npc,pld,geo(2,i),one, igeo(1,i),
202 . one ,one ,id,titr,nom_opt)
206 CALL rkini3(igeo(iadfun+j,i),npc,pld,geo(2,i),one, igeo(1,i),
207 . one ,one ,id,titr,nom_opt)
209 ELSEIF (igtyp == 23)
THEN
215 . msgtype=msgwarning,
216 . anmode=aninfo_blind_1,
221 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ipid),ltitr)
229 IF (i1 == i2 .OR. i1 == i3 .OR. i2 == i3)
THEN
230 IF (i1 == i2 .OR. i1 == i3) itmp = i1
231 IF (i2 == i3) itmp = i2
232 IF (imerge2(itmp) /= 0)
THEN
234 . msgtype=msgwarning,
235 . anmode=aninfo_blind_1,
238 WRITE (iout,1000) itab(itmp)
240 DO k=1,iadmerge2(itmp+1) - iadmerge2(itmp)
243 WRITE (iout,fmt=fmt_10i)(itab(imerge2(iadmerge2(itmp)+kk1)),kk1=0,kk-1)
248 WRITE (iout,fmt=fmt_10i)
249 . (itab(imerge2(iadmerge2(itmp)+kk1)),kk1=0,kk-1)
254 . anmode=aninfo_blind_1,
260 IF (igtyp /= 4 .AND. igtyp /= 8 .AND.
261 . igtyp /= 12 .AND. igtyp /= 13 .AND. igtyp /= 25 .AND.
262 . igtyp /= 44 .AND. igtyp /= 26 .AND. igtyp < 29 .AND.
263 . igtyp /= 46 .AND. igtyp /= 23 .AND. igtyp /= 27)
THEN
266 . anmode=aninfo_blind_1,
271 IF (igtyp > 33 .AND. igtyp /= 35 .AND. igtyp /= 36 .AND.
272 . igtyp /= 44 .AND. igtyp /= 45 .AND. igtyp /= 46)
THEN
275 . anmode=aninfo_blind_1,
283 CALL fretitl2(titr,igeo(npropgi-ltitr+1,i0),ltitr)
285 IF (igtyp == 12)
THEN
287 IF (ixr(4,i+nft) == 0)
THEN
294 . i2=ixr(nixr,i+nft))
311 ileng=nint(geo(93,i0))
314 ELSE IF (igtyp == 8)
THEN
316 ELSE IF (igtyp == 12)
THEN
317 nsprg12 = nsprg12 + 1
318 ELSE IF (igtyp == 13)
THEN
319 nsprg13 = nsprg13 + 1
320 ELSE IF (igtyp == 23)
THEN
321 nsprg23 = nsprg23 + 1
323 iadbuf = ipm(7,imat) - 1
324 ileng = nint(uparam(iadbuf + 2))
329 lmin =
max(uparam(iadbuf + 119),uparam(iadbuf + 126))
331 ELSE IF (igtyp == 25)
THEN
332 nsprg25 = nsprg25 + 1
333 ELSE IF (igtyp == 26)
THEN
334 nsprg26 = nsprg26 + 1
335 ELSE IF (igtyp == 27)
THEN
336 nsprg27 = nsprg27 + 1
342 . (x(1,i1)-x(1,i2))*(x(1,i1)-x(1,i2))
343 + + (x(2,i1)-x(2,i2))*(x(2,i1)-x(2,i2))
344 + + (x(3,i1)-x(3,i2))*(x(3,i1)-x(3,i2)) )
345 IF (igtyp == 12)
THEN
346 xl(i) = xl(i) + sqrt(
347 . (x(1,i3)-x(1,i2))*(x(1,i3)-x(1,i2))
348 + + (x(2,i3)-x(2,i2))*(x(2,i3)-x(2,i2))
349 + + (x(3,i3)-x(3,i2))*(x(3,i3)-x(3,i2)) )
351 IF (mtn == 114) xl(i) =
max(xl(i),lmin)
352 IF (xl(i) <=
noise)
THEN
356 . anmode=aninfo_blind_1,
381 . (x(1,i1)-x(1,i2))*(x(1,i1)-x(1,i2))
382 + + (x(2,i1)-x(2,i2))*(x(2,i1)-x(2,i2))
383 + + (x(3,i1)-x(3,i2))*(x(3,i1)-x(3,i2)) )
384 IF (igtyp == 12)
THEN
385 length = length + sqrt(
386 . (x(1,i3)-x(1,i2))*(x(1,i3)-x(1,i2))
387 + + (x(2,i3)-x(2,i2))*(x(2,i3)-x(2,i2))
388 + + (x(3,i3)-x(3,i2))*(x(3,i3)-x(3,i2)) )
391 IF (minl <= 0 .OR. (length < minl .AND. length > em15))
THEN
396 IF (length > maxl)
THEN
401 IF(igtyp == 8 .OR. igtyp==13 .OR. igtyp==25)
THEN
402 ileng=nint(geo(93,i0))
413 IF ((igtyp == 8).AND.( r_skew(i+nft) > 0))
THEN
414 gbuf%SKEW_ID(i) = r_skew(i+nft)
415 ELSEIF (igtyp == 8)
THEN
417 gbuf%SKEW_ID(i) = igeo(2,i0)
418 r_skew(i+nft) = igeo(2,i0)
421 ratio = xm * length * length
422 IF ( (.NOT.((igtyp == 8).AND.(length < em15))) .AND.
423 . (xine < ratio/ep03 .OR. xine > ratio*ep03) )
THEN
424 CALL fretitl2(titr,igeo(npropgi-ltitr+1,i0),ltitr)
426 . msgtype=msgwarning,
427 . anmode=aninfo_blind_2,
432 . i2=ixr(nixr,i+nft),
435 ELSEIF(igtyp == 23)
THEN
437 iadbuf = ipm(7,imat) - 1
438 ileng = nint(uparam(iadbuf + 2))
444 IF ((mtn == 108).AND.( r_skew(i+nft) > 0))
THEN
445 gbuf%SKEW_ID(i) = r_skew(i+nft)
446 ELSEIF (mtn == 108)
THEN
448 gbuf%SKEW_ID(i) = igeo(2,i0)
449 ELSEIF (mtn == 114)
THEN
452 lmin =
max(uparam(iadbuf + 119),uparam(iadbuf + 126))
453 rfac = uparam(iadbuf + 124)
454 ixx = uparam(iadbuf + 122)
455 iyy = uparam(iadbuf + 123)
456 length =
max(length,lmin)
457 IF (uparam(iadbuf + 127) > zero)
THEN
462 uiner(i) =
max(em20,rfac*
max((rho*geo(1,i0)*length
466 gbuf%MASS(i) = geo(1,i0)*length*rho
467 IF ((length == zero).AND.(rho /= zero))
THEN
470 kcond1 = irb(nkin)+irb2(nkin)
472 kcond2 = irb(nkin)+irb2(nkin)
473 CALL fretitl2(titr,igeo(npropgi-ltitr+1,i0),ltitr)
474 IF (((xmas(i1) > zero).OR.(kcond1 > 0)).AND.((xmas(i2) > zero).OR.(kcond1 > 0)).AND.(mtn == 108))
THEN
478 . msgtype=msgwarning,
479 . anmode=aninfo_blind_1,
486 . anmode=aninfo_blind_1,
492 ELSEIF(imass == 2)
THEN
493 gbuf%MASS(i) = geo(1,i0)*rho
501 ratio = xm * length * length
503 IF ( ((length < em15)) .AND.
504 . (xine < ratio/ep03 .OR. xine > ratio*ep03) )
THEN
505 CALL fretitl2(titr,igeo(npropgi-ltitr+1,i0),ltitr
507 . msgtype=msgwarning,
508 . anmode=aninfo_blind_2,
513 . i2=ixr(nixr,i+nft),
521 . msgtype=msgwarning,
522 . anmode=aninfo_blind_2,
527 IF (i7stifs /= 0)
THEN
528 IF (igtyp == 4 .OR. igtyp == 12 .OR. igtyp == 27)
THEN
535 sti = geo(2,i0)*geo(10,i0)/
max(em30,xl(i))
538 ELSEIF (igtyp == 8 .OR. igtyp == 13)
THEN
544 sti =
max(geo(3,i0)*geo(41,i0),geo(10,i0)*geo(45,i0),geo(15,i0)*geo(49,i0))/
max(em30,xl(i))
547 ELSEIF (igtyp == 23 )
THEN
555 iadbuf = ipm(7,imat) - 1
556 kx = uparam(iadbuf + k11 + 1)
557 kxy = uparam(iadbuf + k11 + 2)
558 kxz = uparam(iadbuf + k11 + 3)
559 sti =
max(kx,kxy,kxz)/
max(em30,xl(i))
562 ELSEIF (igtyp == 25)
THEN
568 sti =
max(geo(3,i0)*geo(41,i0),geo(10,i0)*geo(45,i0))/
max(em30,xl(i))
571 ELSEIF (igtyp == 26)
THEN
578 sti = geo(2,i0)/
max(em30,xl(i))
593 ndepar=numels+numelc+numelt+numelp+nft
600 CALL rmass(ixr ,geo ,xmas ,xin ,partsav ,
601 2 x ,v ,ipart(nft+1),xl ,msr(1,nft+1),
602 3 inr(1,nft+1),msrt ,ems )
603 CALL r1buf3(gbuf%OFF ,geo ,x ,gbuf%LENGTH(ii(1)) ,ixr ,gbuf%POSX,
607 .
CALL r4ini(sigrs ,ixr ,nsigrs ,gbuf%EINT ,gbuf%FOR ,
608 2 gbuf%TOTDEPL ,gbuf%FOREP ,gbuf%DEP_IN_TENS ,gbuf%DEP_IN_COMP,gbuf%LENGTH,
609 3 dfs , dv,igtyp ,ptspri ,gbuf%DEFINI(ii(1)),
610 4 gbuf%FORINI(ii(1)))
611 ELSEIF (igtyp == 26)
THEN
612 CALL rmass(ixr ,geo ,xmas ,xin ,partsav ,
613 2 x ,v ,ipart(nft+1),xl ,msr(1,nft+1),
614 3 inr(1,nft+1),msrt ,ems )
615 CALL r1buf3(gbuf%OFF ,geo ,x ,gbuf%LENGTH(ii(1)) ,ixr ,gbuf%POSX,
619 .
CALL r4ini(sigrs ,ixr ,nsigrs ,gbuf%EINT ,gbuf%FOR ,
620 2 gbuf%TOTDEPL ,gbuf%FOREP ,
bidon ,
bidon ,gbuf%LENGTH,
621 3 dfs ,gbuf%DV ,igtyp ,ptspri ,gbuf%DEFINI,
625 ELSEIF (igtyp == 8)
THEN
627 CALL rmass(ixr ,geo ,xmas ,xin,partsav ,
628 2 x ,v ,ipart(nft+1),xl ,msr(1,nft+1),
629 3 inr(1,nft+1),msrt,ems )
630 CALL r2buf3(gbuf%OFF ,geo ,x ,gbuf%LENGTH(ii(1)) ,gbuf%LENGTH(ii(2)),
631 2 gbuf%LENGTH(ii(3)) ,ixr ,skew ,gbuf%POSX,gbuf%POSY,
632 3 gbuf%POSZ ,gbuf%POSXX,gbuf%POSYY,gbuf%POSZZ,igeo ,
637 2 igtyp ,nel ,sigrs ,ixr ,nsigrs ,
638 3 gbuf%FOR(ii(1)) ,gbuf%FOR(ii(2)) ,gbuf%FOR(ii(3)) ,gbuf%MOM(ii(1)) ,gbuf%MOM(ii(2)) ,
639 4 gbuf%MOM(ii(3)) ,gbuf%FOREP(ii(1)) ,gbuf%FOREP(ii(2)) ,gbuf%FOREP(ii(3)) ,gbuf%MOMEP(ii(1
640 5 gbuf%MOMEP(ii(2)) ,gbuf%MOMEP(ii(3)) ,gbuf%DEP_IN_TENS(ii(1)),gbuf%DEP_IN_TENS(ii(2)),gbuf%DEP_IN_TENS(ii(3)),
641 6 gbuf%ROT_IN_TENS(ii(1)),gbuf%ROT_IN_TENS(ii(2)),gbuf%ROT_IN_TENS(ii(3)),gbuf%DEP_IN_COMP(ii(1)),gbuf%DEP_IN_COMP(ii(2)),
642 7 gbuf%DEP_IN_COMP(ii(3)),gbuf%ROT_IN_COMP(ii(1)),gbuf%ROT_IN_COMP(ii(2)),gbuf%ROT_IN_COMP(ii(3)),gbuf%TOTDEPL(ii(1)) ,
643 8 gbuf%TOTDEPL(ii(2)) ,gbuf%TOTDEPL(ii(3)) ,gbuf%TOTROT(ii(1)) ,gbuf%TOTROT(ii(2)) ,gbuf%TOTROT
644 9 gbuf%LENGTH(ii(1)) ,gbuf%LENGTH(ii(2)) ,gbuf%LENGTH(ii(3)) ,gbuf%EINT ,gbuf%E6 ,
645 a ptspri ,gbuf%DEFINI(ii(1)) ,gbuf%DEFINI(ii(2)) ,gbuf%DEFINI
646 b gbuf%DEFINI(ii(5)) ,gbuf%DEFINI(ii(6)) ,gbuf%FORINI(ii(1)) ,gbuf%FORINI(ii(2)) ,gbuf%FORINI(ii(3)) ,
647 b gbuf%FORINI(ii(4)) ,gbuf%FORINI(ii(5)) ,gbuf%FORINI(ii(6)) )
649 ELSEIF (igtyp == 12)
THEN
651 CALL rmas12 (ixr ,geo,partsav ,
652 2 x ,v ,ipart(nft+1),xl ,msr(1,nft+1),
657 CALL r3buf3(gbuf%OFF,geo ,x ,gbuf%LENGTH(ii(1)) ,ixr ,gbuf%POSX,igeo ,itab )
660 .
CALL r4ini(sigrs ,ixr ,nsigrs ,gbuf%EINT ,gbuf%FOR ,
661 2 gbuf%TOTDEPL ,gbuf%FOREP ,gbuf%DEP_IN_TENS,gbuf%DEP_IN_TENS,gbuf%LENGTH,
662 3 gbuf%DFS ,dv,igtyp ,ptspri ,gbuf%DEFINI,
665 ELSEIF (igtyp == 13)
THEN
667 CALL rmass(ixr ,geo ,xmas ,xin,partsav ,
668 2 x ,v ,ipart(nft+1),xl ,msr(1,nft+1),
669 3 inr(1,nft+1),msrt,ems )
675 1 gbuf%OFF ,geo ,x ,gbuf%LENGTH(ii(1)),gbuf%LENGTH(ii(2)),
676 2 gbuf%LENGTH(ii(3)),ixr ,skew ,gbuf%SKEW ,gbuf%POSX,
677 3 gbuf%POSY ,gbuf%POSZ ,gbuf%POSXX,gbuf%POSYY ,gbuf%POSZZ,
678 4 itab ,gbuf%E6 ,igeo ,ipm)
682 2 igtyp ,nel ,sigrs ,ixr ,nsigrs ,
683 3 gbuf%FOR(ii(1)) ,gbuf%FOR(ii(2)) ,gbuf%FOR(ii(3)) ,gbuf%MOM(ii(1)) ,gbuf%MOM(ii(2)) ,
684 4 gbuf%MOM(ii(3)) ,gbuf%FOREP(ii(1)) ,gbuf%FOREP(ii(2)) ,gbuf%FOREP(ii(3)) ,gbuf%MOMEP(ii(1)) ,
685 5 gbuf%MOMEP(ii(2)) ,gbuf%MOMEP(ii(3)) ,gbuf%DEP_IN_TENS(ii(1)),gbuf%DEP_IN_TENS(ii(2)),gbuf%DEP_IN_TENS(ii(3)),
686 6 gbuf%ROT_IN_TENS(ii(1)),gbuf%ROT_IN_TENS(ii(2)),gbuf%ROT_IN_TENS(ii(3)),gbuf%DEP_IN_COMP(ii(1)),gbuf%DEP_IN_COMP(ii(2)),
687 7 gbuf%DEP_IN_COMP(ii(3)),gbuf%ROT_IN_COMP(ii(1)),gbuf%ROT_IN_COMP(ii(2)),gbuf%ROT_IN_COMP(ii(3)),gbuf%TOTDEPL(ii(1)) ,
688 8 gbuf%TOTDEPL(ii(2)) ,gbuf%TOTDEPL(ii(3)) ,gbuf%TOTROT(ii(1)) ,gbuf%TOTROT(ii(2)) ,gbuf%TOTROT(ii(3)) ,
689 9 gbuf%LENGTH(ii(1)) ,gbuf%LENGTH(ii(2)) ,gbuf%LENGTH(ii(3)) ,gbuf%EINT ,gbuf%E6 ,
690 a ptspri ,gbuf%DEFINI(ii(1)) ,gbuf%DEFINI(ii(2)) ,gbuf%DEFINI(ii(3)) ,gbuf%DEFINI(ii(4)) ,
691 b gbuf%DEFINI(ii(5)) ,gbuf%DEFINI(ii(6)) ,gbuf%FORINI(ii(1)) ,gbuf%FORINI(ii(2)) ,gbuf%FORINI(ii(3)) ,
692 b gbuf%FORINI(ii(4)) ,gbuf%FORINI(ii(5)) ,gbuf%FORINI(ii(6)) )
694 ELSEIF (igtyp == 23)
THEN
699 CALL r23mass(ixr ,geo ,xmas ,xin,partsav ,
700 2 x ,v ,ipart(nft+1),xl ,msr(1,nft+1),
701 3 inr(1,nft+1),msrt,ems ,gbuf%MASS ,uiner,mtn)
704 CALL r2buf3(gbuf%OFF ,geo ,x ,gbuf%LENGTH(ii(1)) ,gbuf%LENGTH(ii(2)),
705 2 gbuf%LENGTH(ii(3)) ,ixr ,skew ,gbuf%POSX,gbuf%POSY,
706 3 gbuf%POSZ ,gbuf%POSXX,gbuf%POSYY,gbuf%POSZZ,igeo ,
709 ELSEIF (mtn==113)
THEN
711 1 gbuf%OFF ,geo ,x ,gbuf%LENGTH(ii(1)),gbuf%LENGTH(ii(2)),
712 2 gbuf%LENGTH(ii(3)),ixr ,skew ,gbuf%SKEW ,gbuf%POSX,
713 3 gbuf%POSY ,gbuf%POSZ ,gbuf%POSXX,gbuf%POSYY ,gbuf%POSZZ,
714 4 itab ,gbuf%E6 ,igeo ,ipm)
717 ELSEIF(mtn == 114)
THEN
719 1 gbuf%OFF ,geo ,x ,gbuf%LENGTH(ii(1)),gbuf%LENGTH(ii(2)),
720 2 gbuf%LENGTH(ii(3)),ixr ,skew ,gbuf%SKEW ,gbuf%POSX,
721 3 gbuf%POSY ,gbuf%POSZ ,gbuf%POSXX,gbuf%POSYY ,gbuf%POSZZ,
722 4 itab ,gbuf%E6 ,igeo ,ipm)
728 2 igtyp ,nel ,sigrs ,ixr ,nsigrs ,
729 3 gbuf%FOR(ii(1)) ,gbuf%FOR(ii(2)) ,gbuf%FOR(ii(3)) ,gbuf%MOM(ii(1)) ,gbuf%MOM(ii(2)) ,
730 4 gbuf%MOM(ii(3)) ,gbuf%FOREP(ii(1)) ,gbuf%FOREP(ii(2)) ,gbuf%FOREP(ii(3)) ,gbuf%MOMEP(ii(1)) ,
731 5 gbuf%MOMEP(ii(2)) ,gbuf%MOMEP(ii(3)) ,gbuf%DEP_IN_TENS(ii(1)),gbuf%DEP_IN_TENS(ii(2)),gbuf%DEP_IN_TENS(ii(3)),
732 6 gbuf%ROT_IN_TENS(ii(1)),gbuf%ROT_IN_TENS(ii(2)),gbuf%ROT_IN_TENS(ii(3)),gbuf%DEP_IN_COMP(ii(1)),gbuf%DEP_IN_COMP(ii(2)),
733 7 gbuf%DEP_IN_COMP(ii(3)),gbuf%ROT_IN_COMP(ii(1)),gbuf%ROT_IN_COMP(ii(2)),gbuf%ROT_IN_COMP(ii(3)),gbuf%TOTDEPL(ii(1)) ,
734 8 gbuf%TOTDEPL(ii(2)) ,gbuf%TOTDEPL(ii(3)) ,gbuf%TOTROT(ii(1)) ,gbuf%TOTROT(ii(2)) ,gbuf%TOTROT(ii(3)) ,
735 9 gbuf%LENGTH(ii(1)) ,gbuf%LENGTH(ii(2)) ,gbuf%LENGTH(ii(3)) ,gbuf%EINT ,gbuf%E6 ,
736 a ptspri ,gbuf%DEFINI(ii(1)) ,gbuf%DEFINI(ii(2)) ,gbuf%DEFINI(ii(3)) ,gbuf%DEFINI(ii(4)) ,
737 b gbuf%DEFINI(ii(5)) ,gbuf%DEFINI(ii(6)) ,gbuf%FORINI(ii(1)) ,gbuf%FORINI(ii(2)) ,gbuf%FORINI(ii(3)) ,
738 b gbuf%FORINI(ii(4)) ,gbuf%FORINI(ii(5)) ,gbuf%FORINI(ii(6)) )
740 ELSEIF (igtyp == 25)
THEN
742 CALL rmass(ixr ,geo ,xmas ,xin,partsav ,
743 2 x ,v ,ipart(nft+1),xl ,msr(1,nft+1),
744 3 inr(1,nft+1),msrt,ems )
749 2 gbuf%LENGTH(ii(3)),ixr
750 3 gbuf%POSY ,gbuf%POSZ
755 2 igtyp ,nel ,sigrs ,ixr ,nsigrs ,
756 3 gbuf%FOR(ii(1)) ,gbuf%FOR(ii(2)) ,gbuf%FOR(ii(3)) ,gbuf%MOM(ii(1)) ,gbuf%MOM(ii(2)) ,
757 4 gbuf%MOM(ii(3)) ,gbuf%FOREP(ii(1)) ,gbuf%FOREP(ii(2)) ,gbuf%FOREP(ii(3)) ,gbuf%MOMEP(ii(1)) ,
758 5 gbuf%MOMEP(ii(2)) ,gbuf%MOMEP(ii(3)) ,gbuf%DEP_IN_TENS(ii(1)),gbuf%DEP_IN_TENS(ii(2)),gbuf%DEP_IN_TENS(ii(3)),
759 6 gbuf%ROT_IN_TENS(ii(1)),gbuf%ROT_IN_TENS(ii(2)),gbuf%ROT_IN_TENS(ii(3)),gbuf%DEP_IN_COMP(ii(1)),gbuf%DEP_IN_COMP(ii(2)),
760 7 gbuf%DEP_IN_COMP(ii(3)),gbuf%ROT_IN_COMP(ii(1)),gbuf%ROT_IN_COMP(ii(2)),gbuf%ROT_IN_COMP(ii(3)),gbuf%TOTDEPL(ii(1)) ,
761 8 gbuf%TOTDEPL(ii(2)) ,gbuf%TOTDEPL(ii(3)) ,gbuf%TOTROT(ii(1)) ,gbuf%TOTROT(ii(2)) ,gbuf%TOTROT(ii(3)) ,
762 9 gbuf%LENGTH(ii(1)) ,gbuf%LENGTH(ii(2)) ,gbuf%LENGTH(ii(3)) ,gbuf%EINT ,gbuf%E6 ,
763 a ptspri ,gbuf%DEFINI(ii(1)) ,gbuf%DEFINI(ii(2)) ,gbuf%DEFINI(ii(3)) ,gbuf%DEFINI(ii(4)) ,
764 b gbuf%DEFINI(ii(5)) ,gbuf%DEFINI(ii(6)) ,gbuf%FORINI(ii(1)) ,gbuf%FORINI(ii(2)) ,gbuf%FORINI(ii(3)) ,
765 b gbuf%FORINI(ii(4)) ,gbuf%FORINI(ii(5)) ,gbuf%FORINI(ii(6)) )
767 ELSEIF (igtyp == 27)
THEN
769 CALL rmass(ixr ,geo ,xmas ,xin ,partsav ,
770 2 x ,v ,ipart(nft+1),xl ,msr(1,nft+1),
771 3 inr(1,nft+1),msrt ,ems )
772 CALL r1buf3(gbuf%OFF ,geo ,x ,gbuf%LENGTH(ii(1)) ,ixr ,gbuf%POSX,
776 .
CALL r4ini(sigrs ,ixr ,nsigrs ,gbuf%EINT ,gbuf%FOR ,
777 2 gbuf%TOTDEPL ,gbuf%FOREP ,gbuf%DEP_IN_TENS ,gbuf%DEP_IN_COMP,gbuf%LENGTH,
778 3 dfs,dv,igtyp ,ptspri ,gbuf%DEFINI(ii(1)),
779 4 gbuf%FORINI(ii(1)))
781 ELSEIF (igtyp == 32 .OR. igtyp == 33 .OR. igtyp == 45)
THEN
783 CALL rini1u(gbuf%OFF ,geo ,x ,ul ,ixr ,
784 2 skew ,gbuf%SKEW,itab ,uix ,igeo)
785 nuvar = nint(geo(25,i0))
786 nuparam = nint(geo(26,i0))
787 IF (igtyp == 32)
THEN
790 2 uix ,ul ,gbuf%MASS,uiner ,ustifm ,
791 3 ustifr ,uvism ,uvisr ,gbuf%VAR,nuvar ,id,titr,
792 4 gbuf%EINT,npc ,pld )
793 ELSEIF (igtyp == 33)
THEN
798 dx(i,1) = (x(1,i2)-x(1,i1))
799 dx(i,2) = (x(2,i2)-x(2,i1))
800 dx(i,3) = (x(3,i2)-x(3,i1))
802 CALL rini33(nel ,iout ,i0 ,uix,dx,
803 1 gbuf%MASS ,uiner ,ustifm ,ustifr,
804 2 uvism ,uvisr ,gbuf%VAR,nuvar )
805 ELSEIF (igtyp == 45)
THEN
810 dx(i,1) = (x(1,i2)-x(1,i1))
811 dx(i,2) = (x(2,i2)-x(2,i1))
812 dx(i,3) = (x(3,i2)-x(3,i1))
814 CALL rini45(nel ,iout ,i0 ,uix ,x ,dx,
815 . gbuf%MASS,uiner ,ustifm ,ustifr ,uvism ,
816 . uvisr ,gbuf%VAR,nuvar ,ixr ,ixr_kj,id ,titr)
832 stifn(i1)=stifn(i1)+xkm
833 stifn(i2)=stifn(i2)+xkm
834 stifr(i1)=stifr(i1)+xkr
835 stifr(i2)=stifr(i2)+xkr
837 IF (xcm+xkm<em15) xm =one
838 IF (xcr+xkr<em15) xine=one
844 dtc=(sqrt(xcr*xcr+xine
846 dtc=half*xine /
max( em15,xcr)
852 1 ixr ,gbuf%MASS,uiner,
853 2 partsav ,x ,v ,ipart(nft+1),msr(1,nft+1),
854 3 inr(1,nft+1),msrt ,ems )
857 2 sigrs ,nsigrs ,nuvar ,gbuf%FOR(ii(1)) ,
858 3 gbuf%FOR(ii(2)) ,gbuf%FOR(ii(3)) ,gbuf%MOM(ii(1)) ,gbuf%MOM(ii(2)) ,gbuf%MOM(ii(3)) ,
859 4 gbuf%V_REPCVT(ii(1)) ,gbuf%V_REPCVT(ii(2)),gbuf%V_REPCVT(ii(3)),gbuf%VR_REPCVT(ii(1)),gbuf%VR_REPCVT(ii(2)),
860 5 gbuf%VR_REPCVT(ii(3)),gbuf%VAR ,gbuf%EINT ,
863 ELSEIF (igtyp == 35 .OR. igtyp == 36)
THEN
865 CALL rini3u(gbuf%OFF ,geo ,x ,ul ,ixr ,
866 2 skew ,gbuf%SKEW ,itab ,uix ,igeo)
867 nuvar = nint(geo(25,i0))
868 nuparam = nint(geo(26,i0))
870 IF (igtyp == 35)
THEN
873 2 uix ,ul ,gbuf%MASS,uiner ,ustifm ,
874 3 ustifr ,uvism ,uvisr ,gbuf%VAR,nuvar )
875 ELSEIF (igtyp == 36)
THEN
878 2 uix ,ul ,gbuf%MASS,uiner ,ustifm ,
879 3 ustifr ,uvism ,uvisr ,gbuf%VAR,nuvar )
895 stifn(i1)=stifn(i1)+xkm
896 stifn(i2)=stifn(i2)+xkm
897 stifr(i1)=stifr(i1)+xkr
898 stifr(i2)=stifr(i2)+xkr
900 IF (xcm+xkm<em15) xm =one
901 IF (xcr+xkr<em15) xine=one
904 dt=(sqrt(xcm*xcm+xm*xkm)-xcm)/xkm
905 dtc=half*xm /
max(em15,xcm)
907 dtc=(sqrt(xcr*xcr+xine*xkr)-xcr)/xkr
909 dtc=half*xine /
max( em15,xcr)
914 1 ixr ,gbuf%MASS,uiner,
915 2 partsav ,x ,v ,ipart(nft+1),msr(1,nft+1),
916 3 inr(1,nft+1),msrt ,ems )
919 2 sigrs ,nsigrs ,nuvar ,gbuf%FOR(ii(1)) ,
920 3 gbuf%FOR(ii(2)) ,gbuf%FOR(ii(3)) ,gbuf%MOM(ii(1)) ,gbuf%MOM(ii(2)) ,gbuf%MOM
921 4 gbuf%V_REPCVT(ii(1)) ,gbuf%V_REPCVT(ii(2)),gbuf%V_REPCVT(ii(3)),gbuf%VR_REPCVT(ii(1)),gbuf%VR_REPCVT(ii(2)),
922 5 gbuf%VR_REPCVT(ii(3)),gbuf%VAR ,gbuf%EINT ,
926 ELSEIF (igtyp > 28 .AND. igtyp < 43)
THEN
928 CALL rini3u(gbuf%OFF ,geo ,x ,ul ,ixr ,
929 2 skew ,gbuf%SKEW ,itab ,uix ,igeo)
930 nuvar = nint(geo(25,i0))
931 nuparam = nint(geo(26,i0))
933 IF (igtyp == 29)
THEN
934 IF (userl_avail == 1)
THEN
935 CALL st_userlib_riniuser(igtyp,rootnam,rootlen,
937 2 uix ,ul ,gbuf%MASS ,uiner ,ustifm ,
938 3 ustifr ,uvism ,uvisr ,gbuf%VAR,nuvar )
941 option=
'/PROP/USER29'
947 ELSEIF (igtyp == 30)
THEN
948 IF (userl_avai l == 1)
THEN
949 CALL st_userlib_riniuser(igtyp,rootnam,rootlen,
951 2 uix ,ul ,gbuf%MASS ,uiner ,ustifm ,
952 3 ustifr ,uvism ,uvisr ,gbuf%VAR,nuvar )
955 option=
'/PROP/USER30'
961 ELSEIF (igtyp == 31)
THEN
962 IF (userl_avail == 1)
THEN
963 CALL st_userlib_riniuser(igtyp,rootnam,rootlen,
965 2 uix ,ul ,gbuf%MASS ,uiner ,ustifm ,
966 3 ustifr ,uvism ,uvisr ,gbuf%VAR,nuvar )
969 option=
'/PROP/USER31'
975 ELSEIF (igtyp == 37)
THEN
976 IF (userl_avail == 1)
THEN
977 CALL st_userlib_riniuser(igtyp,rootnam,rootlen,
979 2 uix ,ul ,gbuf%MASS ,uiner ,ustifm ,
980 3 ustifr ,uvism ,uvisr ,gbuf%VAR,nuvar )
983 option=
'/PROP/USER37'
989 ELSEIF (igtyp == 38)
THEN
990 IF (userl_avail == 1)
THEN
991 CALL st_userlib_riniuser(igtyp,rootnam,rootlen,
993 2 uix ,ul ,gbuf%MASS ,uiner ,ustifm ,
994 3 ustifr ,uvism ,uvisr ,gbuf%VAR,nuvar )
997 option='/prop/user38
'
998 CALL ANCMSG(MSGID=1155,
1003 ELSEIF (IGTYP == 39) THEN
1004 IF (USERL_AVAIL == 1) THEN
1005 CALL ST_USERLIB_RINIUSER(IGTYP,ROOTNAM,ROOTLEN,
1007 2 UIX ,UL ,GBUF%MASS ,UINER ,USTIFM ,
1008 3 USTIFR ,UVISM ,UVISR ,GBUF%VAR,NUVAR )
1009 CALL USER_OUTPUT(IOUT,IGTYP,ROOTNAM,ROOTLEN,0)
1011 OPTION='/prop/user39
'
1012 CALL ANCMSG(MSGID=1155,
1017 ELSEIF (IGTYP == 40) THEN
1018 IF (USERL_AVAIL == 1) THEN
1019 CALL ST_USERLIB_RINIUSER(IGTYP,ROOTNAM,ROOTLEN,
1021 2 UIX ,UL ,GBUF%MASS ,UINER ,USTIFM ,
1022 3 USTIFR ,UVISM ,UVISR ,GBUF%VAR,NUVAR )
1023 CALL USER_OUTPUT(IOUT,IGTYP,ROOTNAM,ROOTLEN,0)
1025 OPTION='/prop/user40
'
1026 CALL ANCMSG(MSGID=1155,
1031 ELSEIF (IGTYP == 41) THEN
1032 IF (USERL_AVAIL == 1) THEN
1033 CALL ST_USERLIB_RINIUSER(IGTYP,ROOTNAM,ROOTLEN,
1035 2 UIX ,UL ,GBUF%MASS ,UINER ,USTIFM ,
1036 3 USTIFR ,UVISM ,UVISR ,GBUF%VAR,NUVAR )
1037 CALL USER_OUTPUT(IOUT,IGTYP,ROOTNAM,ROOTLEN,0)
1039 OPTION='/prop/user41
'
1040 CALL ANCMSG(MSGID=1155,
1045 ELSEIF (IGTYP == 42) THEN
1046 IF (USERL_AVAIL == 1) THEN
1047 CALL ST_USERLIB_RINIUSER(IGTYP,ROOTNAM,ROOTLEN,
1049 2 UIX ,UL ,GBUF%MASS ,UINER ,USTIFM ,
1050 3 USTIFR ,UVISM ,UVISR ,GBUF%VAR,NUVAR )
1051 CALL USER_OUTPUT(IOUT,IGTYP,ROOTNAM,ROOTLEN,0)
1053 OPTION='/prop/user42
'
1054 CALL ANCMSG(MSGID=1155,
1074 STIFN(I1)=STIFN(I1)+XKM
1075 STIFN(I2)=STIFN(I2)+XKM
1076 STIFR(I1)=STIFR(I1)+XKR
1077 STIFR(I2)=STIFR(I2)+XKR
1079 IF (XCM+XKM<EM15) XM =ONE
1080 IF (XCR+XKR<EM15) XINE=ONE
1083 DT=(SQRT(XCM*XCM+XM*XKM)-XCM)/XKM
1084 DTC=HALF*XM / MAX(EM15,XCM)
1086 DTC=(SQRT(XCR*XCR+XINE*XKR)-XCR)/XKR
1088 DTC=HALF*XINE / MAX( EM15,XCR)
1090 DTELEM(NDEPAR+I)= DT
1094 1 IXR ,GBUF%MASS,UINER,
1095 2 PARTSAV ,X ,V ,IPART(NFT+1),MSR(1,NFT+1),
1096 3 INR(1,NFT+1),MSRT ,EMS )
1099 2 SIGRS ,NSIGRS ,NUVAR ,GBUF%FOR(II(1)) ,
1100 3 GBUF%FOR(II(2)) ,GBUF%FOR(II(3)) ,GBUF%MOM(II(1)) ,GBUF%MOM(II(2)) ,GBUF%MOM(II(3)) ,
1101 4 GBUF%V_REPCVT(II(1)) ,GBUF%V_REPCVT(II(2)),GBUF%V_REPCVT(II(3)),GBUF%VR_REPCVT(II(1)),GBUF%VR_REPCVT(II(2)),
1102 5 GBUF%VR_REPCVT(II(3)),GBUF%VAR ,GBUF%EINT ,
1105 ELSEIF (IGTYP == 44) THEN
1107 CALL RINI3U(GBUF%OFF ,GEO ,X ,UL ,IXR ,
1108 2 SKEW ,GBUF%SKEW ,ITAB ,UIX ,IGEO)
1109 NUVAR = NINT(GEO(25,I0))
1110 NUPARAM = NINT(GEO(26,I0))
1113 2 UIX ,UL ,GBUF%MASS ,UINER ,USTIFM ,
1114 3 USTIFR ,UVISM ,UVISR ,GBUF%VAR,NUVAR )
1129 STIFN(I1)=STIFN(I1)+XKM
1130 STIFN(I2)=STIFN(I2)+XKM
1131 STIFR(I1)=STIFR(I1)+XKR
1132 STIFR(I2)=STIFR(I2)+XKR
1134 IF(XCM+XKM<EM15)XM =ONE
1135 IF(XCR+XKR<EM15)XINE=ONE
1138 DT=(SQRT(XCM*XCM+XM*XKM)-XCM)/XKM
1139 DTC=HALF*XM / MAX(EM15,XCM)
1141 DTC=(SQRT(XCR*XCR+XINE*XKR)-XCR)/XKR
1143 DTC=HALF*XINE / MAX( EM15,XCR)
1145 DTELEM(NDEPAR+I)= DT
1148 1 IXR ,GBUF%MASS,UINER,
1149 2 PARTSAV ,X ,V ,IPART(NFT+1),MSR(1,NFT+1),
1150 3 INR(1,NFT+1),MSRT ,EMS )
1153 2 SIGRS ,NSIGRS ,NUVAR ,GBUF%FOR(II(1)) ,
1154 3 GBUF%FOR(II(2)) ,GBUF%FOR(II(3)) ,GBUF%MOM(II(1)) ,GBUF%MOM(II(2)) ,GBUF%MOM(II(3)) ,
1155 4 GBUF%V_REPCVT(II(1)) ,GBUF%V_REPCVT(II(2)),GBUF%V_REPCVT(II(3)),GBUF%VR_REPCVT(II(1)),GBUF%VR_REPCVT(II(2)),
1156 5 GBUF%VR_REPCVT(II(3)),GBUF%VAR ,GBUF%EINT ,
1159 ELSEIF (IGTYP == 46) THEN
1161 CALL RINI3U(GBUF%OFF ,GEO ,X ,UL ,IXR ,
1162 2 SKEW ,GBUF%SKEW ,ITAB ,UIX ,IGEO)
1163 NUVAR = NINT(GEO(25,I0))
1164 NUPARAM = NINT(GEO(26,I0))
1167 2 UIX ,UL ,GBUF%MASS ,UINER ,USTIFM ,
1168 3 USTIFR ,UVISM ,UVISR ,GBUF%VAR,NUVAR )
1183 STIFN(I1)=STIFN(I1)+XKM
1184 STIFN(I2)=STIFN(I2)+XKM
1185 STIFR(I1)=STIFR(I1)+XKR
1186 STIFR(I2)=STIFR(I2)+XKR
1188 IF (XCM+XKM<EM15) XM =ONE
1189 IF (XCR+XKR<EM15) XINE=ONE
1192 DT=(SQRT(XCM*XCM+XM*XKM)-XCM)/XKM
1193 DTC=HALF*XM / MAX(EM15,XCM)
1195 DTC=(SQRT(XCR*XCR+XINE*XKR)-XCR)/XKR
1197 DTC=HALF*XINE / MAX( EM15,XCR)
1199 DTELEM(NDEPAR+I)= DT
1203 1 IXR ,GBUF%MASS,UINER,
1204 2 PARTSAV ,X ,V ,IPART(NFT+1),MSR(1,NFT+1),
1205 3 INR(1,NFT+1),MSRT ,EMS )
1209 2 SIGRS ,NSIGRS ,NUVAR ,GBUF%FOR(II(1)) ,
1210 3 GBUF%FOR(II(2)) ,GBUF%FOR(II(3)) ,GBUF%MOM(II(1)) ,GBUF%MOM(II(2)) ,GBUF%MOM(II(3)) ,
1211 4 GBUF%V_REPCVT(II(1)) ,GBUF%V_REPCVT(II(2)),GBUF%V_REPCVT(II(3)),GBUF%VR_REPCVT(II(1)),GBUF%VR_REPCVT(II(2)),
1212 5 GBUF%VR_REPCVT(II(3)),GBUF%VAR ,GBUF%EINT ,
1234 IF (IGTYP == 4) THEN
1235 XM = GEO(1,I0)*XL(I)
1236 XKM= GEO(2,I0)*GEO(10,I0)/XL(I)
1237 XCM= (GEO(3,I0)) +GEO(141,I0) /XL(I)!
1238.AND.
IF (XCM /= ZERO XKM /= ZERO) THEN
1239 DT=XM/(SQRT(XCM*XCM+XKM*XM)+XCM)
1240 ELSEIF (XKM /= ZERO) THEN
1242 ELSEIF (XCM /= ZERO) THEN
1247 DTC=HALF*XM / MAX(EM15,XCM)
1248 DTELEM(NDEPAR+I)=MIN(DT,DTC)
1251 STI = (SQRT(XCM**2+XKM*MAS2)+XCM)**2/MAS2
1255 STIFN(I1)=STIFN(I1)+STI
1256 STIFN(I2)=STIFN(I2)+STI
1257 ELSEIF (IGTYP == 26) THEN
1258 XM = GEO(1,I0)*XL(I)
1259 XKM= GEO(2,I0)/XL(I)
1261 IF (XKM > ZERO) THEN
1266 DTC=HALF*XM / MAX(EM15,XCM)
1267 DTELEM(NDEPAR+I)=MIN(DT,DTC)
1268 STIFN(I1)=STIFN(I1)+XKM
1269 STIFN(I2)=STIFN(I2)+XKM
1270 ELSEIF (IGTYP == 8) THEN
1271 XKM= MAX(GEO(3,I0)*GEO(41,I0),
1272 . GEO(10,I0)*GEO(45,I0),
1273 . GEO(15,I0)*GEO(49,I0))/XL(I)
1274 XCM= (MAX(GEO(4,I0),GEO(11,I0),GEO(16,I0))
1275 . + MAX(GEO(141,I0),GEO(142,I0),GEO(143,I0)))/XL(I)
1276 XKR= MAX(GEO(19,I0)*GEO(53,I0),
1277 . GEO(23,I0)*GEO(57,I0),
1278 . GEO(27,I0)*GEO(61,I0))/XL(I)
1279 XCR= (MAX(GEO(20,I0),GEO(24,I0),GEO(28,I0))
1280 . + MAX(GEO(144,I0),GEO(145,I0),GEO(146,I0)))/XL(I)
1282 XINE=GEO(9,I0)*XL(I)
1283 IF (XCM+XKM<EM15) XM =ONE
1284 IF (XCR+XKR<EM15) XINE=ONE
1287 DT=XM/MAX(EM15,SQRT(XCM*XCM+XKM*XM)+XCM)
1288 DTC=XINE/MAX(EM15,SQRT(XCR*XCR+XINE*XKR)+XCR)
1289 DTELEM(NDEPAR+I)=MIN(DT,DTC)
1292 STI = (SQRT(XCM**2+XKM*MAS2)+XCM)**2/MAS2
1296 STIFN(I1)=STIFN(I1)+STI
1297 STIFN(I2)=STIFN(I2)+STI
1300 STI = (SQRT(XCR**2+XKR*MAS2)+XCR)**2/MAS2
1304 STIFR(I1)=STIFR(I1)+STI
1305 STIFR(I2)=STIFR(I2)+STI
1307 ELSEIF(IGTYP == 12) THEN
1308 XM = GEO(1,I0)*XL(I)
1309 XKM= GEO(2,I0)/XL(I)
1310 XCM= (GEO(3,I0)+GEO(141,I0))/XL(I)
1311.AND.
IF (XCM /= ZERO XKM /= ZERO) THEN
1312 DT=XM/(TWO*SQRT(XCM*XCM+XKM*XM)+XCM)
1313 ELSEIF (XKM /= ZERO) THEN
1315 ELSEIF (XCM /= ZERO) THEN
1320 DTC=HALF*XM / MAX(EM15,XCM)
1321 DTELEM(NDEPAR+I)=MIN(DT,DTC)
1324 STI = (SQRT(XCM**2+XKM*MAS2)+XCM)**2/MAS2
1328 STIFN(I2)=STIFN(I2)+STI
1330 STI = (SQRT(XCM**2+XKM*MAS2)+XCM)**2/MAS2
1331 STIFN(I1)=STIFN(I1)+STI
1332 STIFN(I3)=STIFN(I3)+STI
1333 ELSEIF (IGTYP == 13) THEN
1337 AL2= EX*EX+EY*EY+EZ*EZ
1338 XKM= MAX(GEO(3,I0)*GEO(41,I0),
1339 . GEO(10,I0)*GEO(45,I0),
1340 . GEO(15,I0)*GEO(49,I0))/XL(I)
1341 XCM= (MAX(GEO(4,I0),GEO(11,I0),GEO(16,I0))
1342 . + MAX(GEO(141,I0),GEO(142,I0),GEO(143,I0)) )/XL(I)
1343 XKR= MAX(GEO(10,I0)*GEO(45,I0),
1344 . GEO(15,I0)*GEO(49,I0)) * AL2
1345 XCR= (MAX(GEO(11,I0),GEO(16,I0))+ MAX(GEO(142,I0),GEO(143,I0)))* AL2
1347 . +MAX(GEO(19,I0)*GEO(53,I0),
1348 . GEO(23,I0)*GEO(57,I0),
1349 . GEO(27,I0)*GEO(61,I0)))/XL(I)
1350 XCR= (XCR+MAX(GEO(20,I0),GEO(24,I0),GEO(28,I0))
1351 . + MAX(GEO(144,I0),GEO(145,I0),GEO(146,I0)) )/XL(I)
1353 XINE=GEO(9,I0)*XL(I)
1354 IF (XCM+XKM<EM15) XM =ONE
1355 IF (XCR+XKR<EM15) XINE=ONE
1358 DT=XM/MAX(EM15,SQRT(XCM*XCM+XKM*XM)+XCM)
1359 DTC=XINE/MAX(EM15,SQRT(XCR*XCR+XINE*XKR)+XCR)
1361 DTELEM(NDEPAR+I)= DT
1364 STI = (SQRT(XCM**2+XKM*MAS2)+XCM)**2/MAS2
1368 STIFN(I1)=STIFN(I1)+STI
1369 STIFN(I2)=STIFN(I2)+STI
1372 STI = (SQRT(XCR**2+XKR*MAS2)+XCR)**2/MAS2
1376 STIFR(I1)=STIFR(I1)+STI
1377 STIFR(I2)=STIFR(I2)+STI
1379 ELSEIF (IGTYP == 23) THEN
1381 IADBUF = IPM(7,IMAT) - 1
1384 XKM= MAX(UPARAM(IADBUF + K11 + 1)*UPARAM(IADBUF + K1 + 1),
1385 . UPARAM(IADBUF + K11 + 2)*UPARAM(IADBUF + K1 + 2),
1386 . UPARAM(IADBUF + K11 + 3)*UPARAM(IADBUF + K1 + 3))/XL(I)
1387 XCM= MAX(UPARAM(IADBUF + K12 + 1),UPARAM(IADBUF + K12 + 2),UPARAM(IADBUF + K12 + 3))
1389 XKR= MAX(UPARAM(IADBUF + K11 + 4)*UPARAM(IADBUF + K1 + 4),
1390 . UPARAM(IADBUF + K11 + 5)*UPARAM(IADBUF + K1 + 5),
1391 . UPARAM(IADBUF + K11 + 6)*UPARAM(IADBUF + K1 + 6))/XL(I)
1393 XCR= (MAX(UPARAM(IADBUF + K12 + 4),UPARAM(IADBUF + K12 + 5),UPARAM(IADBUF + K12 + 6)))/XL(I)
1394 ! old Geo 144,145,146 not used.
1395 XM = GBUF%MASS(I)*XL(I)
1396 XINE= GEO(2,I0)*XL(I)
1397 IF (XCM+XKM<EM15) XM =ONE
1398 IF (XCR+XKR<EM15) XINE=ONE
1401 DT =XM/MAX(EM15,SQRT(XCM*XCM+XKM*XM)+XCM)
1402 DTC=XINE/MAX(EM15,SQRT(XCR*XCR+XINE*XKR)+XCR)
1403 DTELEM(NDEPAR+I)=MIN(DT,DTC)
1404 GEO(4,I0)= MIN(GEO(4,I0),DT,DTC) ! to be fixed also put it in buffer material
1407 ELSEIF (MTN==113) THEN
1411 AL2= EX*EX+EY*EY+EZ*EZ
1412 XKM= MAX(UPARAM(IADBUF + K11 + 1)*UPARAM(IADBUF + K1 + 1),
1413 . UPARAM(IADBUF + K11 + 2)*UPARAM(IADBUF + K1 + 2),
1414 . UPARAM(IADBUF + K11 + 3)*UPARAM(IADBUF + K1 + 3))/XL(I)
1415 XCM= (MAX(UPARAM(IADBUF + K12 +1),UPARAM(IADBUF + K12 +2 ),UPARAM(IADBUF + K12 + 3))
1416 . + MAX(UPARAM(IADBUF + K14 + 1),UPARAM(IADBUF + K14 + 2),UPARAM(IADBUF + K14 + 3)))/XL(I)
1417 XKR= MAX(UPARAM(IADBUF + K11 + 2)*UPARAM(IADBUF + K1 + 2),
1418 . UPARAM(IADBUF + K11 + 3)*UPARAM(IADBUF + K1 + 3)) * AL2
1419 XCR= (MAX(UPARAM(IADBUF + K12 + 2),UPARAM(IADBUF + K12 + 3)) +
1420 . MAX(UPARAM(IADBUF + K14 + 2),UPARAM(IADBUF + K14 + 3)))* AL2
1422 . + MAX(UPARAM(IADBUF + K11 + 4)*UPARAM(IADBUF + K1 + 4),
1423 . UPARAM(IADBUF + K11 + 5)*UPARAM(IADBUF + K1 + 5),
1424 . UPARAM(IADBUF + K11 + 6)*UPARAM(IADBUF + K1 + 6)))/XL(I)
1425 XCR= (XCR+MAX(UPARAM(IAD + K12 + 1),UPARAM(IADBUF + K12 + 2),UPARAM(IADBUF + K12 + 3))
1426 . + MAX(UPARAM(IAD + K14 + 4),UPARAM(IADBUF + K14 + 5),UPARAM(IADBUF + K14 + 6)) )/XL(I)
1428 XINE=GEO(2,I0)*XL(I)
1429 IF (XCM+XKM<EM15) XM =ONE
1430 IF (XCR+XKR<EM15) XINE=ONE
1433 DT =XM/MAX(EM15,SQRT(XCM*XCM+XKM*XM)+XCM)
1434 DTC=XINE/MAX(EM15,SQRT(XCR*XCR+XINE*XKR)+XCR)
1436 GEO(4,I0)= MIN(GEO(4,I0),DT)
1437 DTELEM(NDEPAR+I)= DT
1440 ELSEIF (MTN==114) THEN
1444 AL2= EX*EX+EY*EY+EZ*EZ
1446 XKM= MAX(UPARAM(IADBUF + K11 + 1)*UPARAM(IADBUF + K1 + 1),
1447 . UPARAM(IADBUF + K11 + 2)*UPARAM(IADBUF + K1 + 2),
1448 . UPARAM(IADBUF + K11 + 3)*UPARAM(IADBUF + K1 + 3),
1449 . UPARAM(IADBUF+117)*GEO(1,I0))/XL(I)
1451 XCM= (MAX(UPARAM(IADBUF + K12 +1),UPARAM(IADBUF + K12 +2 ),UPARAM(IADBUF + K12 + 3))
1452 . + MAX(UPARAM(IADBUF + K14 + 1),UPARAM(IADBUF + K14 + 2),UPARAM(IADBUF + K14 + 3)))/XL(I)
1453 XKR= MAX(UPARAM(IADBUF + K11 + 2)*UPARAM(IADBUF + K1 + 2),
1454 . UPARAM(IADBUF + K11 + 3)*UPARAM(IADBUF + K1 + 3)) * AL2
1455 XCR= (MAX(UPARAM(IADBUF + K12 + 2),UPARAM(IADBUF + K12 + 3)) +
1456 . MAX(UPARAM(IADBUF + K14 + 2),UPARAM(IADBUF + K14 + 3)))* AL2
1458 . + MAX(UPARAM(IADBUF + K11 + 4)*UPARAM(IADBUF + K1 + 4),
1459 . UPARAM(IADBUF + K11 + 5)*UPARAM(IADBUF + K1 + 5),
1460 . UPARAM(IADBUF + K11 + 6)*UPARAM(IADBUF + K1 + 6)))/XL(I)
1461 XCR= (XCR+MAX(UPARAM(IADBUF+K12 + 1),UPARAM(IADBUF+ K12 + 2),UPARAM(IADBUF+ K12 + 3))
1462 . + MAX(UPARAM(IADBUF+K14 + 4),UPARAM(IADBUF+ K14 + 5),UPARAM(IADBUF+ K14 + 6)) )/XL(I)
1464 IF (UPARAM(IADBUF + 127) > ZERO) THEN
1466 RHO = UPARAM(IADBUF+128)
1467 XM = RHO*XL(I)*GEO(1,I0)
1468 XINE=MAX(EM20,MAX((RHO*GEO(1,I0)*LENGTH*LENGTH*LENGTH)/TWELVE+ RHO*IYY*LENGTH,RHO*IXX*LENGTH))
1469 GBUF%MASS(I) = XM*GBUF%FRAM_FACTOR(I)
1470 GBUF%INTVAR(I) = XINE*GBUF%FRAM_FACTOR(I)
1474 GBUF%FRAM_FACTOR(I) = ONE
1477 GBUF%INTVAR(I) = XINE
1482 IF (GBUF%SLIPRING_STRAND(I) > 0) THEN
1484 SLIP = GBUF%SLIPRING_ID(I)
1485 FRA = GBUF%SLIPRING_FRAM_ID(I)
1487.AND.
IF ((SLIPRING(SLIP)%FRAM(FRA)%NODE(KK)/=I1)(SLIPRING(SLIP)%FRAM(FRA)%NODE(KK)/=I2)) THEN
1488 IXR(4,J)=SLIPRING(SLIP)%FRAM(FRA)%NODE(KK)
1491 ELSEIF (GBUF%RETRACTOR_ID(I) < 0) THEN
1494 GBUF%RETRACTOR_ID(I) = 0
1497 IF (XCM+XKM<EM15) XM =ONE
1498 IF (XCR+XKR<EM15) XINE=ONE
1501 DT =XM/MAX(EM15,SQRT(XCM*XCM+XKM*XM)+XCM)
1502 DTC=XINE/MAX(EM15,SQRT(XCR*XCR+XINE*XKR)+XCR)
1504 GEO(4,I0)= MIN(GEO(4,I0),DT)
1505 DTELEM(NDEPAR+I)= DT
1508 STI = (SQRT(XCM**2+XKM*MAS2)+XCM)**2/MAS2
1512 STIFN(I1)=STIFN(I1)+STI
1513 STIFN(I2)=STIFN(I2)+STI
1515 STI = (SQRT(XCR**2+XKR*INE2)+XCR)**2/INE2
1519 STIFR(I1)=STIFR(I1)+STI
1520 STIFR(I2)=STIFR(I2)+STI
1522 ELSEIF (IGTYP == 25) THEN
1526 AL2= EX*EX+EY*EY+EZ*EZ
1527 XKM= MAX(GEO(3,I0)*GEO(41,I0),
1528 . GEO(10,I0)*GEO(45,I0))/XL(I)
1529 XCM= (MAX(GEO(4,I0),GEO(11,I0))
1530 . + MAX(GEO(141,I0),GEO(142,I0)))/XL(I)
1531 XKR= GEO(10,I0)*GEO(45,I0)*AL2
1533 . +MAX(GEO(19,I0)*GEO(53,I0),GEO(23,I0)*GEO(57,I0)))/XL(I)
1534 XCR= (GEO(11,I0)+GEO(142,I0))*AL2
1536 . MAX(GEO(141,I0),GEO(142,I0))+MAX(GEO(20,I0),GEO(24,I0))
1537 . +MAX(GEO(143,I0),GEO(144,I0)) )/XL(I)
1539 XINE=GEO(9,I0)*XL(I)
1540 IF (XCM+XKM<EM15) XM =ONE
1541 IF (XCR+XKR<EM15) XINE=ONE
1544 DT=XM/MAX(EM15,SQRT(XCM*XCM+XKM*XM)+XCM)
1545 DTC=XINE/MAX(EM15,SQRT(XCR*XCR+XINE*XKR)+XCR)
1546 DTELEM(NDEPAR+I)=MIN(DT,DTC)
1549 STI = (SQRT(XCM**2+XKM*MAS2)+XCM)**2/MAS2
1553 STIFN(I1)=STIFN(I1)+STI
1554 STIFN(I2)=STIFN(I2)+STI
1557 STI = (SQRT(XCR**2+XKR*MAS2)+XCR)**2/MAS2
1561 STIFR(I1)=STIFR(I1)+STI
1562 STIFR(I2)=STIFR(I2)+STI
1564 ELSEIF (IGTYP == 27) THEN
1565 XM = GEO(1,I0)*XL(I)
1566 XKM= GEO(2,I0)*GEO(10,I0)/XL(I)
1567 XCM= (GEO(3,I0)+GEO(141,I0))/XL(I)!
1568.AND.
IF (XCM /= ZERO XKM /= ZERO) THEN
1569 DT=XM/(SQRT(XCM*XCM+XKM*XM)+XCM)
1570 ELSEIF (XKM /= ZERO) THEN
1572 ELSEIF (XCM /= ZERO) THEN
1577 DTC=HALF*XM / MAX(EM15,XCM)
1578 DTELEM(NDEPAR+I)=MIN(DT,DTC)
1581 STI = (SQRT(XCM**2+XKM*MAS2)+XCM)**2/MAS2
1585 STIFN(I1)=STIFN(I1)+STI
1586 STIFN(I2)=STIFN(I2)+STI
1595 IH = NINT(GEO(7,I0))
1596 IFUNC = IGEO(101,I0)
1598.OR.
IF (IH==0IH==8) THEN
1599 CALL ANCMSG(MSGID=3057,
1601 . ANMODE=ANINFO_BLIND_1,
1608 UNDAMP = XM/DTELEM(NDEPAR+I)
1609 GBUF%BPRELD(I) = PRELOAD_A(IPRELD)%preload
1610 GBUF%BPRELD(I+NEL) = UNDAMP*PRELOAD_A(IPRELD)%damp
1618 IFUNC = IPM(10 + 1,IMAT)
1619 IADBUF = IPM(7,IMAT) - 1
1620 IH= NINT(UPARAM(IADBUF + 4 + 12*6 + 1))
1622.OR.
IF (IH==0IH==8) THEN
1623 CALL ANCMSG(MSGID=3057,
1625 . ANMODE=ANINFO_BLIND_1,
1632 UNDAMP = XM/DTELEM(NDEPAR+I)
1633 GBUF%BPRELD(I) = PRELOAD_A(IPRELD)%preload
1634 GBUF%BPRELD(I+NEL) = UNDAMP*PRELOAD_A(IPRELD)%damp
1638 CALL ANCMSG(MSGID=3053,
1640 . ANMODE=ANINFO_BLIND_1,
1646 CALL ANCMSG(MSGID=3053,
1648 . ANMODE=ANINFO_BLIND_1,
1656 1000 FORMAT('list of possible cnodes merged with node of id=
',I10)