33 1 WEIGHT ,IXR,IPART,X,
34 2 IPARTR,IGEO,GEO,NPBY,IPARG,ELBUF_TAB,DMAS,DINER)
42#include "implicit_f.inc"
57 INTEGER ITAB(*),WEIGHT(*),IXR(NIXR,*),
58 . IPART(LIPART1,*),IPARTR(*),IGEO(NPROPGI,*),NPBY(NNPBY,*),
61 my_real stifn(*), stifr(*),ms(*) ,in
62 . dmas,diner,geo(npropg,*)
64 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
68 INTEGER ,J,K,M1,M2,IG,IGTYP,N1,N2,KAD,ITYP,NG,JFT,JLT,NEL,
69 . ,FLAG,NFT,NUVAR,JNTYP,IRB1,IRB2,FLAG_S,FLAG_PR,NV
70 my_real mass,iner1,iner2,km1,krm1,km2,krm2,xx,kx1,kx2,kr1,dtc,
alpha,
71 . xl,kxmax,krmax,kxmin1,kxmin2,kx,kr,dtcg,scf,get_u_geo,
72 . xx1,xx2,dta,mass1,mass2
74 TYPE(g_bufel_),
POINTER :: GBUF
87 dtc =
max(dtc,dtmin1(11)/dtfac1(11))
88 IF (dtmx>em20) dtc =
min(dtc,dtmx)
93 print *,
"ERROR NO TARGET TIME STEP DT=",dtc
94 print *,
"STIFFNESS CAN NOT BE COMPUTED"
109 gbuf => elbuf_tab(ng)%GBUF
110 IF (ityp /= 6)
GOTO 250
114 ig = ipart(2,ipartr(j))
116 nuvar = nint(geo(25,ig))
119 scf = get_u_geo(11,ig)
120 jntyp = nint(get_u_geo(1,ig))
121 flag = nint(get_u_geo(10,ig))
134 irb1 = nint(gbuf%VAR(nv + 37))
141 irb2 = nint(gbuf%VAR(nv + 38))
148 xl = ((x(1,n1)-x(1,n2))**2)+((x(2,n1)-x(2,n2))**2)
149 . +((x(3,n1)-x(3,n2))**2)
150 xx1 = ((x(1,n1)-x(1,m1))**2)+((x(2,n1)-x(2,m1))**2)
151 . +((x(3,n1)-x(3,m1))**2)
152 xx2 = ((x(1,n2)-x(1,m2))**2)+((x(2,n2)-x(2,m2))**2)
153 . +((x(3,n2)-x(3,m2))**2)
162 kx1 = (2*mass1/(
alpha*dtc*dtc)) - km1
163 IF (iner1 > zero)
THEN
164 kx2 = 0.8*(iner1/(
alpha*dtc*dtc)- krm1)/(
max(em20,(xx+xl)))
165 kr = iner1/(
alpha*dtc*dtc)- krm1
178 kx1 = (2*mass2/(
alpha*dtc*dtc)) - km2
179 IF (iner2 > zero)
THEN
180 kx2 = 0.8*(iner2/(
alpha*dtc*dtc)- krm2)/(
max(em20,(xx+xl)))
181 kr1 = iner2/(
alpha*dtc*dtc)- krm2
187 kxmax =
min(kx1,kx2,kxmax)
191 kx =
max(kxmax,2*km1,2*km2)
192 IF ((kx - kxmax)>1e-8) flag_s = 1
193 IF ((iner1 == zero).OR.(iner2 == zero))
THEN
200 kr =
max(kr,2*krm1,2*krm2)
203 IF ((irb1 > 0) .AND.(irb2 > 0))
THEN
204 IF ((kx - kxmax)>1e-8)
WRITE(iout,300)
205 IF ((kr - krmax)>1e-8)
WRITE(iout,400)
207 IF ((kx - kxmax)>1e-8)
WRITE(iout,1300)
208 IF ((kr - krmax)>1e-8)
WRITE(iout,1400)
212 kr =
max(kr,1.3*kx*(xx+xl))
218 WRITE(iout,
'(4X,I10,5X,I2,8X,1PE11.4,8X,1PE11.4)')
219 . ixr(nixr,j),jntyp,kx,kr
221 gbuf%VAR(nv + 16) = kx
222 gbuf%VAR(nv + 17) = kr
226 gbuf%VAR(nv + 18) = kx
227 gbuf%VAR(nv + 19) = kx
228 gbuf%VAR(nv + 20) = kx
230 ELSEIF (jntyp==2)
THEN
231 gbuf%VAR(nv + 18) = kx
232 gbuf%VAR(nv + 19) = kx
233 gbuf%VAR(nv + 20) = kx
234 gbuf%VAR(nv + 31) = kr
235 gbuf%VAR(nv + 32) = kr
237 ELSEIF (jntyp==3)
THEN
238 gbuf%VAR(nv + 19) = kx
239 gbuf%VAR(nv + 20) = kx
240 gbuf%VAR(nv + 31) = kr
241 gbuf%VAR(nv + 32) = kr
243 ELSEIF (jntyp==4)
THEN
244 gbuf%VAR(nv + 18) = kx
245 gbuf%VAR(nv + 31) = kr
246 gbuf%VAR(nv + 32) = kr
248 ELSEIF (jntyp==5)
THEN
249 gbuf%VAR(nv + 18) = kx
250 gbuf%VAR(nv + 19) = kx
251 gbuf%VAR(nv + 20) = kx
252 gbuf%VAR(nv + 30) = kr
254 ELSEIF (jntyp==6)
THEN
255 gbuf%VAR(nv + 19) = kx
256 gbuf%VAR(nv + 20) = kx
257 gbuf%VAR(nv + 30) = kr
258 gbuf%VAR(nv + 31) = kr
259 gbuf%VAR(nv + 32) = kr
261 ELSEIF (jntyp==7)
THEN
262 gbuf%VAR(nv + 18) = kx
263 gbuf%VAR(nv + 30) = kr
264 gbuf%VAR(nv + 31) = kr
265 gbuf%VAR(nv + 32) = kr
267 ELSEIF (jntyp==8)
THEN
268 gbuf%VAR(nv + 18) = kx
269 gbuf%VAR(nv + 19) = kx
270 gbuf%VAR(nv + 20) = kx
271 gbuf%VAR(nv + 30) = kr
272 gbuf%VAR(nv + 31) = kr
273 gbuf%VAR(nv + 32) = kr
290 & 1x,
'AUTOMATIC STIFFNESS COMPUTATION FOR JOINTS'
291200
FORMAT(1x,
'JOINT ID',11x,
'TYPE',6x,
'KNN',16x,
'KNR')
293300
FORMAT(1x,
'WARNING TRANS. STIFF. IMPOSED BY STIFF. ON RBODY')
294400
FORMAT(1x,
'WARNING ROT. STIFF. IMPOSED BY STIFF. ON RBODY')
2961300
FORMAT(1x,
'WARNING TRANS. STIFF. IMPOSED BY STIFF. ON CONNECTED STRUCTURES')
2971400
FORMAT(1x,
'WARNING ROT. STIFF. IMPOSED BY STIFF. ON CONNECTED STRUCTURES')
subroutine joint_block_stiffness(itab, ms, in, stifn, stifr, weight, ixr, ipart, x, ipartr, igeo, geo, npby, iparg, elbuf_tab, dmas, diner)