40 1 IC ,PM ,X ,GEO ,XMAS ,
41 2 DTELEM ,NFT ,NEL ,STIFN ,PARTSAV,
42 3 V ,IPART ,MST ,STIFINT,STT ,
43 4 IGEO ,NSIGTRUSS ,SIGTRUSS ,PTTRUSS,
44 5 PRELOAD_A,IPRELD ,NPRELOAD_A)
52 use element_mod ,
only : nixt
56#include "implicit_f.inc"
72 INTEGER IC(NIXT,*),IPART(*),IGEO(NPROPGI,*),PTTRUSS(*)
73 INTEGER NFT,NEL,NSIGTRUSS
74 INTEGER ,
INTENT (IN ) :: IPRELD,NPRELOAD_A
76 . PM(*),X(*), GEO(NPROPG,*),XMAS(*),DTELEM(*),
77 . stifn(*),partsav(20,*),v(*),mst(*),stifint(*),stt(*),
78 . sigtruss(nsigtruss,*)
80 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
81 TYPE(PREL1D_) ,
DIMENSION(NPRELOAD_A),
TARGET :: PRELOAD_A
85 INTEGER I,IGTYP,NDEPAR,IPID1
86 INTEGER MAT(MVSIZ), MXG(MVSIZ), NC1(MVSIZ), NC2(MVSIZ)
89 . Y1(MVSIZ), Y2(MVSIZ),
90 . z1(mvsiz), z2(mvsiz)
92 . deltax(mvsiz),xx,yy,zz, dtx(mvsiz)
95 CHARACTER(LEN=NCHARTITLE)::TITR
96 DATA idmin /-1/, idmax /-1/
98 . lgthmin, lgthmax,xnor,undamp,cc1
99 DATA lgthmin /-1/, lgthmax /-1/
101 TYPE(g_bufel_),
POINTER :: GBUF
103 gbuf => elbuf_str%GBUF
105 ipid1=ic(nixt-1,nft+1)
107 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ipid1),ltitr)
109 CALL tcoori(x,ic(1,nft+1),mat, mxg, nc1, nc2,
110 . x1, x2, y1, y2, z1, z2)
114 CALL tibuf3(gbuf%OFF,gbuf%AREA,geo, mxg)
116 xnor=(x1(i)-x2(i))**2+(y1(i)-y2(i))**2+(z1(i)-z2(i))**2
117 IF (xnor <= 1.e-20)
THEN
118 CALL ancmsg(msgid=269, msgtype=msgerror, anmode=aninfo, i1=id, c1=titr, i2=ic(5,i+nft))
120 gbuf%LENGTH(i) = sqrt(xnor)
126 .
CALL tsigini(nsigtruss ,sigtruss ,pttruss , gbuf%EINT ,gbuf%FOR,
127 . gbuf%G_PLA ,gbuf%PLA ,gbuf%AREA )
128 CALL tmass(x ,ic ,geo ,pm ,xmas ,
129 . stifn ,partsav ,v ,ipart(nft+1),mst(nft+1),
130 . stifint,stt(nft+1) ,gbuf%AREA, mat
131 . x1, x2, y1, y2, z1, z2)
137 igtyp=geo(12,ic(4,i+nft))
138 IF (igtyp /= 2 .AND. invers > 14)
THEN
139 CALL ancmsg(msgid=270, msgtype=msgerror, anmode=aninfo_blind_1, i1=id, c1=titr, i2=ic(nixt,i),i3=igtyp)
141 xx = (x1(i) - x2(i))*(x1(i) - x2(i))
142 yy = (y1(i) - y2(i))*(y1(i) - y2(i))
143 zz = (z1(i) - z2(i))*(z1(i) - z2(i))
144 deltax(i)=sqrt(xx+yy+zz)
145 IF (lgthmin == -1 .OR. deltax(i) < lgthmin)
THEN
149 IF (lgthmax == -1 .OR. deltax(i) > lgthmax)
THEN
155 CALL dt1lawt(pm, deltax, mat, mxg, dtx)
156 ndepar=numels+numelc+nft
158 dtelem(ndepar + i) = dtx(i)
164 undamp = cc1*mst(nft+i)*gbuf%LENGTH(i)/dtx(i)
165 gbuf%BPRELD(i) = preload_a(ipreld)%preload
166 gbuf%BPRELD(i+nel) = undamp*preload_a(ipreld)%damp
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 tinit3(elbuf_str, ic, pm, x, geo, xmas, dtelem, nft, nel, stifn, partsav, v, ipart, mst, stifint, stt, igeo, nsigtruss, sigtruss, pttruss, preload_a, ipreld, npreload_a)
subroutine tmass(x, nc, geo, pm, ms, stifn, partsav, v, ipart, mst, stifint, stt, area, mxt, nc1, nc2, x1, x2, y1, y2, z1, z2)