40 . ISKN,IG,TITR,IGTYP,PROP_TAG,GEO,LSUBMODEL,SUB_ID)
50#include "implicit_f.inc"
57#include "tablen_c.inc"
71 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
72 INTEGER IOUT,NUVAR,ISKN(LISKN,*),IG,IGTYP,SUB_ID
74 CHARACTER(LEN=NCHARTITLE)::TITR
75 TYPE(
prop_tag_) ,
DIMENSION(0:MAXPROP) :: PROP_TAG
76 INTEGER SET_U_PNU,SET_U_GEO,
78 EXTERNAL set_u_pnu,set_u_geo
87 INTEGER ISK,IUTYP,PID1,PID2
89 . xk,
area,ixx,iyy,izz,aa,ray,ry,rz
90 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
93 is_encrypted = .false.
94 is_available = .false.
102 CALL hm_get_intv(
'P36_lutype',iutyp,is_available,lsubmodel)
112 CALL hm_get_intv(
'SKEW_CSID',isk,is_available,lsubmodel)
113 IF(isk == 0 .AND. sub_id /= 0 ) isk = lsubmodel(sub_id)%SKEW
114 CALL hm_get_intv(
'PROP_ID1',pid1,is_available,lsubmodel)
115 CALL hm_get_intv(
'PROP_ID2',pid2,is_available,lsubmodel)
125 ierror = set_u_pnu(1,pid1,kuprop)
126 ierror = set_u_pnu(2,pid2,kuprop)
129 IF(isk == iskn(4,k+1))
THEN
134 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
137 . i1=ig,i2=isk,c3=titr)
144 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
146 WRITE(iout,1000)iskn(4,isk),pid1,pid2,xk
157 CALL hm_get_intv(
'MAT_ID',mid1,is_available,lsubmodel)
168 ierror = set_u_pnu(1,mid1,kumat)
170 IF(ray==0.AND.
area/=0)
THEN
171 IF(ixx==0.OR.iyy==0.OR.izz==0)
THEN
174 . anmode=aninfo_blind_1,
180 IF ((
area<=zero).AND.(ray<=zero))
THEN
181 WRITE(iout,*)
' ** ERROR : PROPERTY INPUT '
182 IF(.NOT. is_encrypted)
THEN
183 WRITE(iout,*)
' AREA =',
area,
' R =',ray
187 IF ((
area<=zero).AND.(ray/=zero))
THEN
190 ixx=
area*ray*ray*half
198 ry=sqrt(four*iyy/
area)
199 rz=sqrt(four*izz/
area)
203 ierror = set_u_geo(1,aa)
204 ierror = set_u_geo(2,
area)
205 ierror = set_u_geo(3,ixx)
206 ierror = set_u_geo(4,iyy)
207 ierror = set_u_geo(5,izz)
208 ierror = set_u_geo(6,ry)
209 ierror = set_u_geo(7,rz)
212 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
214 WRITE(iout,2000)mid1,
area,ixx,iyy,izz,ry,rz
220 prop_tag(igtyp)%G_EINT = 1
221 prop_tag(igtyp)%G_FOR = 3
222 prop_tag(igtyp)%G_MOM = 5
223 prop_tag(igtyp)%G_SKEW = 6
224 prop_tag(igtyp)%G_MASS = 1
225 prop_tag(igtyp)%G_V_REPCVT = 3
226 prop_tag(igtyp)%G_VR_REPCVT = 3
228 IF(nint(geo(25)) > 0) prop_tag(igtyp)%G_NUVAR = nint(geo(25))
232 & 5x,
' USER PROPERTY TYPE 1 (used by spring elements) ',/,
233 & 5x,
' -------------------- ',//,
234 & 5x,
'SKEW ID . . . . . . . . . . . . . . . .=',i10/
235 & 5x,
'FIRST END TYPE 2 USER PROPERTY ID . . .=',i10/
236 & 5x,
'SECOND END TYPE 2 USER PROPERTY ID. . .=',i10/
237 & 5x,
'STIFFNESS FOR INTERFACE . . . . . . . .=',1pg20.13//)
239 & 5x,
' USER PROPERTY TYPE 2 (used by property type 1) ',/,
240 & 5x,
' -------------------- ',//,
241 & 5x,
'USER MATERIAL ID. . . . . . . . . . . .=',i10/,
242 & 5x,
'AREA. . . . . . . . . . . . . . . . . .=',1pg20.13/,
243 & 5x,
'TORSION SECTION INERTIA . . . . . . . .=',1pg20.13/,
244 & 5x,
'BENDING SECTION INERTIA IYY. . . . . . .=',1pg20.13/,
245 & 5x,'bending
section inertia izz. . . . . . .=
',1PG20.13/,
246 & 5X,'bending
section rayon ry . . . . . . .=
',1PG20.13/,
247 & 5X,'bending
section rayon rz . . . . . . .=
',1PG20.13//)
261 SUBROUTINE RINI36(NEL ,IOUT ,IPROP ,
262 3 XL ,MASS ,XINER ,STIFM ,
263 4 STIFR ,VISCM ,VISCR ,UVAR ,NUVAR )
336#include "implicit_f.inc"
340 INTEGER IOUT,NUVAR,NEL,IPROP,
341 . GET_U_PNU,GET_U_PID,GET_U_MID,GET_U_MNU,
344 . XL(NEL) ,MASS(NEL) ,XINER(NEL) ,STIFM(NEL) ,
345 . STIFR(NEL),VISCM(NEL) ,VISCR(NEL),UVAR(NUVAR,*),
346 . GET_U_MAT,GET_U_GEO
347 EXTERNAL GET_U_PNU,GET_U_MNU,GET_U_MAT,GET_U_GEO,GET_U_PID,GET_U_MID
355 . FAC,RHO,AREA,IXX,IYY,IZZ,IMYZ,YOUNG,G,
356 . AREA1,IXX1,IYY1,IZZ1,RHO1,YOUNG1,G1,
357 . AREA2,IXX2,IYY2,IZZ2,RHO2,YOUNG2,G2,
358 . RY1,RZ1,RY2,RZ2,RY,RZ,ktran,krot,
361 . IMAT1,IPROP1,IUTYP1,
362 . IMAT2,IPROP2,IUTYP2
366 IPROP1 = GET_U_PNU(1,IPROP,KPROP)
367 IPROP2 = GET_U_PNU(2,IPROP,KPROP)
371 IUTYP1 = NINT(GET_U_GEO(1,IPROP1))
372 WRITE(IOUT,*)' **
VALUE of iutyp1
',IUTYP1
374 WRITE(IOUT,*)' **error spring user property',
375 .
get_u_pid(iprop),
' REFERS TO WRONG USER PROPERTY',
378 area1 = get_u_geo(2,iprop1)
379 ixx1 = get_u_geo(3,iprop1)
380 iyy1 = get_u_geo(4,iprop1)
381 izz1 = get_u_geo(5,iprop1)
382 ry1 = get_u_geo(6,iprop1)
383 rz1 = get_u_geo(7,iprop1)
385 young1 = get_u_mat(7,imat1)
386 g1 = get_u_mat(6,imat1)
387 rho1 = get_u_mat(0,imat1)
391 iutyp2 = nint(get_u_geo(1,iprop2))
393 WRITE(iout,*)
' **ERROR SPRING USER PROPERTY',
394 .
get_u_pid(iprop),
' REFERS TO WRONG USER PROPERTY',
397 area2 = get_u_geo(2,iprop2)
398 ixx2 = get_u_geo(3,iprop2)
399 iyy2 = get_u_geo(4,iprop2)
400 izz2 = get_u_geo(5,iprop2)
401 ry2 = get_u_geo(6,iprop2)
402 rz2 = get_u_geo(7,iprop2)
407 young2 = get_u_mat(7,imat2)
408 g2 = get_u_mat(6,imat2)
409 rho2 = get_u_mat(0,imat2)
413 area = half*(area1+area2)
414 rho = half*(rho1+rho2)
416 ixx = half*(ixx1+ixx2)
417 iyy = half*(iyy1+iyy2)
418 izz = half*(izz1+izz2)
422 young = half*(young1+young2)
430 WRITE(iout,*)
' **ERROR ZERO LENGTH SPRING :'
438 xiner(i) = xl(i)*rho*
max(ixx,imyz+
area*xl(i)*xl(i)/12)
447 xl2 = xl(i)*xl(i)/12.
448 ary = one/(atmp+xl2/
max(em20,iyy))
449 arz = one/(atmp+xl2/
max(em20,izz))
450 ktran =
max(
area,ary,arz)/xl(i)
451 krot = 4. *
max(iyy/xl(i),izz/xl(i))
452 stifm(i) = young*ktran
453 stifr(i) =
max( g*ixx/xl(i),young*krot)
subroutine section(nnod, n1, n2, n3, nstrf, x, v, vr, fsav, fopta, secfcum, ms, in, ifram, xsec)
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)