45
46
47
48 USE elbufdef_mod
52
53
54
55#include "implicit_f.inc"
56
57
58
59#include "mvsiz_p.inc"
60
61
62
63#include "param_c.inc"
64#include "com01_c.inc"
65#include "com04_c.inc"
66#include "scr03_c.inc"
67#include "scr17_c.inc"
68
69
70
71 INTEGER IC(NIXT,*),IPART(*),IGEO(NPROPGI,*),PTTRUSS(*)
72 INTEGER NFT,NEL,NSIGTRUSS
73 INTEGER , INTENT (IN ) :: IPRELD,NPRELOAD_A
75 . pm(*),x(*), geo(npropg,*),xmas(*),dtelem(*),
76 . stifn(*),partsav(20,*),v(*),mst(*),stifint(*),stt(*),
77 . sigtruss(nsigtruss,*)
78
79 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
80 TYPE(PREL1D_) , DIMENSION(NPRELOAD_A), TARGET :: PRELOAD_A
81
82
83
84 INTEGER I,IGTYP,NDEPAR,IPID1
85 INTEGER MAT(MVSIZ), MXG(MVSIZ), NC1(MVSIZ), NC2(MVSIZ)
87 . x1(mvsiz), x2(mvsiz),
88 . y1(mvsiz), y2(mvsiz),
89 . z1(mvsiz), z2(mvsiz)
91 . deltax(mvsiz),xx,yy,zz, dtx(mvsiz)
92 INTEGER IDMIN,IDMAX
93 INTEGER ID
94 CHARACTER(LEN=NCHARTITLE)::TITR
95 DATA idmin /-1/, idmax /-1/
97 . lgthmin, lgthmax,xnor,undamp,cc1
98 DATA lgthmin /-1/, lgthmax /-1/
99
100 TYPE(),POINTER :: GBUF
101
102 gbuf => elbuf_str%GBUF
103
104 ipid1=ic(nixt-1,nft+1)
106 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ipid1),ltitr)
107
108 CALL tcoori(x,ic(1,nft+1),mat, mxg, nc1, nc2,
109 . x1, x2, y1, y2, z1, z2)
110
111
112
113 CALL tibuf3(gbuf%OFF,gbuf%AREA,geo, mxg)
114 DO i=1,nel
115 xnor=(x1(i)-x2(i))**2+(y1(i)-y2(i))**2+(z1(i)-z2(i))**2
116 IF (xnor <= 1.e-20) THEN
117 CALL ancmsg(msgid=269, msgtype=msgerror, anmode=aninfo, i1=
id, c1=titr, i2=ic(5,i+nft))
118 ENDIF
119 gbuf%LENGTH(i) = sqrt(xnor)
120 END DO
121
122
123
124 IF (isigi /= 0)
125 .
CALL tsigini(nsigtruss ,sigtruss ,pttruss , gbuf%EINT ,gbuf%FOR,
126 . gbuf%G_PLA ,gbuf%PLA ,gbuf%AREA )
127 CALL tmass(x ,ic ,geo ,pm ,xmas ,
128 . stifn ,partsav ,v ,ipart(nft+1),mst(nft+1),
129 . stifint,stt(nft+1) ,gbuf%AREA, mat, nc1, nc2,
130 . x1, x2, y1, y2, z1, z2)
131
132
133
134
135 DO i=1,nel
136 igtyp=geo(12,ic(4,i+nft))
137 IF (igtyp /= 2 .AND. invers > 14) THEN
138 CALL ancmsg(msgid=270, msgtype=msgerror, anmode=aninfo_blind_1, i1=
id, c1=titr, i2=ic(nixt,i),i3=igtyp)
139 ENDIF
140 xx = (x1(i) - x2(i))*(x1(i) - x2(i))
141 yy = (y1(i) - y2(i))*(y1(i) - y2(i))
142 zz = (z1(i) - z2(i))*(z1(i) - z2(i))
143 deltax(i)=sqrt(xx+yy+zz)
144 IF (lgthmin == -1 .OR. deltax(i) < lgthmin) THEN
145 lgthmin = deltax(i)
146 idmin = ic(5,i+nft)
147 ENDIF
148 IF (lgthmax == -1 .OR. deltax(i) > lgthmax) THEN
149 lgthmax = deltax(i)
150 idmax = ic(5,i+nft)
151 ENDIF
152 ENDDO
153
154 CALL dt1lawt(pm, deltax, mat, mxg, dtx)
155 ndepar=numels+numelc+nft
156 DO i=1,nel
157 dtelem(ndepar + i) = dtx(i)
158 ENDDO
159
160 IF (ipreld>0) THEN
161 cc1 =two*sqrt(two)
162 DO i=1,nel
163 undamp = cc1*mst(nft+i)*gbuf%LENGTH(i)/dtx(i)
164 gbuf%BPRELD(i) = preload_a(ipreld)%preload
165 gbuf%BPRELD(i+nel) = undamp*preload_a(ipreld)%damp
166 ENDDO
167 END IF
168
169 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)