45
46
47
48 USE elbufdef_mod
52 use element_mod , only : nixt
53
54
55
56#include "implicit_f.inc"
57
58
59
60#include "mvsiz_p.inc"
61
62
63
64#include "param_c.inc"
65#include "com01_c.inc"
66#include "com04_c.inc"
67#include "scr03_c.inc"
68#include "scr17_c.inc"
69
70
71
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,*)
79
80 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
81 TYPE(PREL1D_) , DIMENSION(NPRELOAD_A), TARGET :: PRELOAD_A
82
83
84
85 INTEGER I,IGTYP,NDEPAR,IPID1
86 INTEGER MAT(MVSIZ), MXG(MVSIZ), NC1(MVSIZ), NC2(MVSIZ)
88 . x1(mvsiz), x2(mvsiz),
89 . y1(mvsiz), y2(mvsiz),
90 . z1(mvsiz), z2(mvsiz)
92 . deltax(mvsiz),xx,yy,zz, dtx(mvsiz)
93 INTEGER IDMIN,IDMAX
94 INTEGER ID
95 CHARACTER(LEN=NCHARTITLE)::TITR
96 DATA idmin /-1/, idmax /-1/
98 . lgthmin, lgthmax,xnor,undamp,cc1
99 DATA lgthmin /-1/, lgthmax /-1/
100
101 TYPE(G_BUFEL_),POINTER :: GBUF
102
103 gbuf => elbuf_str%GBUF
104
105 ipid1=ic(nixt-1,nft+1)
107 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ipid1),ltitr)
108
109 CALL tcoori(x,ic(1,nft+1),mat, mxg, nc1, nc2,
110 . x1, x2, y1, y2, z1, z2)
111
112
113
114 CALL tibuf3(gbuf%OFF,gbuf%AREA,geo, mxg)
115 DO i=1,nel
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))
119 ENDIF
120 gbuf%LENGTH(i) = sqrt(xnor)
121 END DO
122
123
124
125 IF (isigi /= 0)
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, nc1, nc2,
131 . x1, x2, y1, y2, z1, z2)
132
133
134
135
136 DO i=1,nel
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)
140 ENDIF
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
146 lgthmin = deltax(i)
147 idmin = ic(5,i+nft)
148 ENDIF
149 IF (lgthmax == -1 .OR. deltax(i) > lgthmax) THEN
150 lgthmax = deltax(i)
151 idmax = ic(5,i+nft)
152 ENDIF
153 ENDDO
154
155 CALL dt1lawt(pm, deltax, mat, mxg, dtx)
156 ndepar=numels+numelc+nft
157 DO i=1,nel
158 dtelem(ndepar + i) = dtx(i)
159 ENDDO
160
161 IF (ipreld>0) THEN
162 cc1 =two*sqrt(two)
163 DO i=1,nel
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
167 ENDDO
168 END IF
169
170 RETURN
subroutine dt1lawt(pm, deltax, mat, mxg, dtx)
integer, parameter nchartitle
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 tcoori(x, ncp, mxt, mxg, nc1, nc2, x1, x2, y1, y2, z1, z2)
subroutine tibuf3(off, area, geo, mxg)
subroutine tmass(x, nc, geo, pm, ms, stifn, partsav, v, ipart, mst, stifint, stt, area, mxt, nc1, nc2, x1, x2, y1, y2, z1, z2)
subroutine tsigini(nsigtruss, sigtruss, pttruss, eint, for, g_pla, pla, area)