43
44
45
46#include "implicit_f.inc"
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
63 INTEGER IOUT, ITYP, SKFLAG,IUNIT
65
66 INTEGER ID
67 CHARACTER(LEN=NCHARTITLE) :: TITR
68 LOGICAL IS_ENCRYPTED
69 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
70
71
72
73 INTEGER IERROR,IDSK1,IDSK2,IFUN_XX,IFUN_RX,IFUN_CXX,IFUN_CRX,
74 . ZEROI,OFLAG
76 . xk,xtyp,xflg,xsk1,xsk2,knn,kxx,krx,cr,cxx,crx,mass,iner,
77 . fac_m,fac_l,fac_t,fac_ct,fac_cr,fac_kt,fac_kr,fac_ctx,fac_crx,
78 . fac_ff,fac_mm
79
80 INTEGER SET_U_PNU,SET_U_GEO,KFUNC
82 parameter(kfunc=29)
83 DATA zeroi/0/
84 LOGICAL IS_AVAILABLE
85
86
87
88 fac_m = unitab%FAC_M(iunit)
89 fac_l = unitab%FAC_L(iunit)
90 fac_t = unitab%FAC_T(iunit)
91 fac_ff = fac_m / fac_t
92 fac_mm = one / fac_t
93 fac_ct = fac_m / fac_t
94 fac_cr = fac_m * fac_l**2 / fac_t
95 fac_kt = fac_ct / fac_t
96 fac_kr = fac_cr / fac_t
97 fac_ctx = fac_t / fac_l
98 fac_crx = fac_t
99 oflag = 0
100
101
102
103
104 CALL hm_get_intv(
'Idsk1',idsk1,is_available,lsubmodel)
105 CALL hm_get_intv(
'Idsk2',idsk2,is_available,lsubmodel)
106 CALL hm_get_intv(
'Xt_fun',ifun_xx,is_available,lsubmodel)
107 CALL hm_get_intv(
'Xr_fun',ifun_rx,is_available,lsubmodel)
108
109
110
116
117
118
119
120 CALL hm_get_intv(
'Ctx_Fun',ifun_cxx,is_available,lsubmodel)
121 IF(.NOT.is_available) oflag = oflag + 1
122 CALL hm_get_intv(
'Crx_Fun',ifun_crx,is_available,lsubmodel)
123 IF(.NOT.is_available) oflag = oflag + 1
124
125
126
128 IF(.NOT.is_available) oflag = oflag + 1
130 IF(.NOT.is_available) oflag = oflag + 1
131
132 IF (idsk1<=0.OR.idsk1<=0) THEN
134 . msgtype=msgerror,
135 . anmode=aninfo_blind_1,
137 . c1=titr)
138 ENDIF
139 IF (knn==0.) THEN
141 . msgtype=msgerror,
142 . anmode=aninfo_blind_1,
144 . c1=titr)
145 ENDIF
146 IF (cr<zero.OR.cr>1.) THEN
148 . msgtype=msgerror,
149 . anmode=aninfo_blind_1,
151 . c1=titr)
152 ENDIF
153 IF (cr==zero) cr = fiveem2
154
155 xtyp = ityp
156 xflg = skflag
157 xsk1 = idsk1
158 xsk2 = idsk2
159 mass = zero
160 iner = zero
161
162 IF(cxx==zero.AND.ifun_cxx/=0)cxx = one
163 IF(crx==zero.AND.ifun_crx/=0)crx = one
164 IF(kxx==zero.AND.ifun_xx/=0) kxx = one
165 IF(krx==zero.AND.ifun_rx/=0) krx = one
166
167 IF (ifun_xx /= 0) kxx = kxx * fac_ff
168 IF (ifun_rx /= 0) krx = krx * fac_mm
169 IF (ifun_cxx /= 0) cxx = cxx * fac_ff
170 IF (ifun_crx /= 0) crx = crx * fac_mm
171
172 pargeo(1) = 0
173 pargeo(2) = xk
174 pargeo(3) = 0
175
216
217 WRITE(iout,500)
218 IF(is_encrypted)THEN
219 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
220 ELSE
221 IF (oflag==4) THEN
222 WRITE(iout,1001) idsk1,idsk2,xk,cr,knn,kxx,krx,
223 . ifun_xx,ifun_rx
224 ELSE
225 WRITE(iout,1000) idsk1,idsk2,xk,cr,knn,kxx,krx,
226 . ifun_xx,ifun_rx,cxx,crx,ifun_cxx,ifun_crx
227 ENDIF
228 ENDIF
229
230 RETURN
231
232 500 FORMAT(
233 & 5x,'JOINT TYPE . . . . . . CYLINDRICAL JOINT'//)
234 1000 FORMAT(
235 & 5x,'SKEW 1 FRAME ID. . . . . . . . . . . . =',i10/,
236 & 5x,'SKEW 2 FRAME ID. . . . . . . . . . . . =',i10/,
237 & 5x,'STIFFNESS FOR INTERFACE K=E*A/L. . . . =',1pg20.13/,
238 & 5x,'CRITICAL DAMPING COEFFICIENT . . . . . =',1pg20.13/,
239 & 5x,'BLOCKING STIFFNESS KNN . . . . . . . . =',1pg20.13/,
240 & 5x,'LINEAR TRANSLATIONAL STIFFNESS KXX . . =',1pg20.13/,
241 & 5x,'LINEAR TORSIONAL STIFFNESS KRX . . . . =',1pg20.13/,
242 & 5x,'user x translation function. . . . . . =',I10/,
243 & 5X,'user rx torsion
FUNCTION id. . . . . . =
',I10/,
244 & 5X,'linear
damping cxx . . . . . . . . . . =
',1PG20.13/,
245 & 5X,'linear
damping crx . . . . . . . . . . =
',1PG20.13/,
246 & 5X,'user xx
damping function . . . . . . . =
',I10/,
247 & 5X,'user rx
damping function . . . . . . . =
',I10//)
248 1001 FORMAT(
249 & 5X,'skew 1 frame
id. . . . . . . . . . . . =
',I10/,
250 & 5X,'skew 2 frame
id. . . . . . . . . . . . =
',I10/,
251 & 5X,'stiffness
for interface k=e*a/l. . . . =
',1PG20.13/,
252 & 5X,'critical
damping coefficient . . . . . =
',1PG20.13/,
253 & 5X,'blocking stiffness knn . . . . . . . . =',1PG20.13/,
254 & 5X,'linear translational stiffness kxx . . =',1PG20.13/,
255 & 5X,'linear torsional stiffness krx . . . . =',1PG20.13/,
256 & 5X,'user x translation function. . . . . . =',I10/,
257 & 5X,'user rx torsion function
id. . . . . . =
',I10//)
258
259 RETURN
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
for(i8=*sizetab-1;i8 >=0;i8--)
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)
integer function set_u_pnu(ivar, ip, k)
integer function set_u_geo(ivar, a)