34 1 WEIGHT ,IXR,IPART,X,
35 2 IPARTR,IGEO,GEO,NPBY,IPARG,ELBUF_TAB,DMAS,DINER)
40 use element_mod ,
only : nixr
44#include "implicit_f.inc"
59 INTEGER ITAB(*),WEIGHT(*),IXR(NIXR,*),
60 . IPART(LIPART1,*),IPARTR(*),IGEO(NPROPGI,*),NPBY(NNPBY,*),
63 my_real stifn(*), stifr(*),ms(*) ,in(*),x(3,*),
64 . dmas,diner,geo(npropg,*)
66 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
70 INTEGER I,J,M1,M2,IG,IGTYP,N1,N2,ITYP,NG,JFT,JLT,NEL,
71 . FLAG,NFT,NUVAR,JNTYP,IRB1,IRB2,FLAG_S,FLAG_PR,NV
72 my_real iner1,iner2,km1,krm1,km2,krm2,xx,kx1,kx2,kr1,dtc,
alpha,
73 . xl,kxmax,krmax,kx,kr,scf,get_u_geo,
74 . xx1,xx2,dta,mass1,mass2
75 CHARACTER(LEN=30) :: INFO_MESSAGE
77 TYPE(g_bufel_),
POINTER :: GBUF
90 dtc =
max(dtc,dtmin1(11)/dtfac1(11))
91 IF (dtmx>em20) dtc =
min(dtc,dtmx)
96 print *,
"ERROR NO TARGET TIME STEP DT=",dtc
97 print *,
"STIFFNESS CAN NOT BE COMPUTED"
112 gbuf => elbuf_tab(ng)%GBUF
113 IF (ityp /= 6)
GOTO 250
117 ig = ipart(2,ipartr(j))
119 nuvar = nint(geo(25,ig))
122 scf = get_u_geo(11,ig)
123 jntyp = nint(get_u_geo(1,ig))
124 flag = nint(get_u_geo(10,ig))
131 irb1 = nint(gbuf%VAR(nv + 37))
138 irb2 = nint(gbuf%VAR(nv + 38))
145 xl = ((x(1,n1)-x(1,n2))**2)+((x(2,n1)-x(2,n2))**2)
146 . +((x(3,n1)-x(3,n2))**2)
147 xx1 = ((x(1,n1)-x(1,m1))**2)+((x(2,n1)-x(2,m1))**2)
148 . +((x(3,n1)-x(3,m1))**2)
149 xx2 = ((x(1,n2)-x(1,m2))**2)+((x(2,n2)-x(2,m2))**2)
159 kx1 = (2*mass1/(
alpha*dtc*dtc)) - km1
160 IF (iner1 > zero)
THEN
161 kx2 = 0.8*(iner1/(
alpha*dtc*dtc)- krm1)/(
max(em20,(xx+xl)))
162 kr = iner1/(
alpha*dtc*dtc)- krm1
175 kx1 = (2*mass2/(
alpha*dtc*dtc)) - km2
176 IF (iner2 > zero)
THEN
177 kx2 = 0.8*(iner2/(
alpha*dtc*dtc)- krm2)/(
max(em20,(xx+xl)))
178 kr1 = iner2/(
alpha*dtc*dtc)- krm2
184 kxmax =
min(kx1,kx2,kxmax)
188 kx =
max(kxmax,2*km1,2*km2)
189 IF ((kx - kxmax)>1e-8) flag_s = 1
190 IF ((iner1 == zero).OR.(iner2 == zero))
THEN
197 kr =
max(kr,2*krm1,2*krm2)
201 IF ((kx-kxmax)>1e-8 .OR. (kr-krmax)>1e-8)
THEN
202 IF ((irb1 > 0).AND.(irb2 > 0))
THEN
203 info_message =
'(FROM RIGID BODIES)'
205 info_message =
'(FROM CONNECTED STRUCTURES)'
210 kr =
max(kr,1.3*kx*(xx+xl))
216 WRITE(iout,'(i10,i10,8x,1pe11.4,8x,1pe11.4,1x,a)
')
217 . IXR(NIXR,J),JNTYP,KX,KR,INFO_MESSAGE
219 GBUF%VAR(NV + 16) = KX
220 GBUF%VAR(NV + 17) = KR
224 GBUF%VAR(NV + 18) = KX
225 GBUF%VAR(NV + 19) = KX
226 GBUF%VAR(NV + 20) = KX
228 ELSEIF (JNTYP==2) THEN
229 GBUF%VAR(NV + 18) = KX
230 GBUF%VAR(NV + 19) = KX
231 GBUF%VAR(NV + 20) = KX
232 GBUF%VAR(NV + 31) = KR
233 GBUF%VAR(NV + 32) = KR
235 ELSEIF (JNTYP==3) THEN
236 GBUF%VAR(NV + 19) = KX
237 GBUF%VAR(NV + 20) = KX
238 GBUF%VAR(NV + 31) = KR
239 GBUF%VAR(NV + 32) = KR
241 ELSEIF (JNTYP==4) THEN
242 GBUF%VAR(NV + 18) = KX
243 GBUF%VAR(NV + 31) = KR
244 GBUF%VAR(NV + 32) = KR
246 ELSEIF (JNTYP==5) THEN
247 GBUF%VAR(NV + 18) = KX
248 GBUF%VAR(NV + 19) = KX
249 GBUF%VAR(NV + 20) = KX
250 GBUF%VAR(NV + 30) = KR
252 ELSEIF (JNTYP==6) THEN
253 GBUF%VAR(NV + 19) = KX
254 GBUF%VAR(NV + 20) = KX
255 GBUF%VAR(NV + 30) = KR
256 GBUF%VAR(NV + 31) = KR
257 GBUF%VAR(NV + 32) = KR
259 ELSEIF (JNTYP==7) THEN
260 GBUF%VAR(NV + 18) = KX
261 GBUF%VAR(NV + 30) = KR
262 GBUF%VAR(NV + 31) = KR
263 GBUF%VAR(NV + 32) = KR
265 ELSEIF (JNTYP==8) THEN
266 GBUF%VAR(NV + 18) = KX
267 GBUF%VAR(NV + 19) = KX
268 GBUF%VAR(NV + 20) = KX
269 GBUF%VAR(NV + 30) = KR
270 GBUF%VAR(NV + 31) = KR
271 GBUF%VAR(NV + 32) = KR
275 ENDIF ! IF (IGTYP==45)
subroutine joint_block_stiffness(itab, ms, in, stifn, stifr, weight, ixr, ipart, x, ipartr, igeo, geo, npby, iparg, elbuf_tab, dmas, diner)