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_YY,IFUN_ZZ,
74 . IFUN_RX,IFUN_RY,IFUN_RZ,IFUN_CXX,IFUN_CYY,IFUN_CZZ,
75 . IFUN_CRX,IFUN_CRY,IFUN_CRZ,OFLAG
76 my_real xk,xtyp,xflg,xsk1,xsk2,mass,iner,
77 . cr,kxx,kyy,kzz,krx,kry,krz,cxx,cyy,czz,crx,cry,crz,
78 . fac_m,fac_l,fac_t,fac_ct,fac_cr,fac_kt,fac_kr,fac_ctx,fac_crx,
79 . fac_ff,fac_mm
80
81 INTEGER SET_U_PNU,SET_U_GEO,KFUNC
82 parameter(kfunc=29)
83 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(
'Yt_fun',ifun_yy,is_available,lsubmodel)
108 CALL hm_get_intv(
'Zt_fun',ifun_zz,is_available,lsubmodel)
109 CALL hm_get_intv(
'Xr_fun',ifun_rx,is_available,lsubmodel)
110 CALL hm_get_intv(
'Yr_fun',ifun_ry,is_available,lsubmodel)
111 CALL hm_get_intv(
'Zr_fun',ifun_rz,is_available,lsubmodel)
112
113
114
123
124
125
126
127 CALL hm_get_intv(
'Ctx_Fun',ifun_cxx,is_available,lsubmodel)
128 IF(.NOT.is_available) oflag = oflag + 1
129 CALL hm_get_intv(
'Cty_Fun',ifun_cyy,is_available,lsubmodel)
130 IF(.NOT.is_available) oflag = oflag + 1
131 CALL hm_get_intv(
'Ctz_Fun',ifun_czz,is_available,lsubmodel)
132 IF(.NOT.is_available) oflag = oflag + 1
133 CALL hm_get_intv(
'Crx_Fun',ifun_crx,is_available,lsubmodel)
134 IF(.NOT.is_available) oflag = oflag + 1
135 CALL hm_get_intv(
'Cry_Fun',ifun_cry,is_available,lsubmodel)
136 IF(.NOT.is_available) oflag = oflag + 1
137 CALL hm_get_intv(
'Crz_Fun',ifun_crz,is_available,lsubmodel)
138 IF(.NOT.is_available) oflag = oflag + 1
139
140
141
143 IF(.NOT.is_available) oflag = oflag + 1
145 IF(.NOT.is_available) oflag = oflag + 1
147 IF(.NOT.is_available) oflag = oflag + 1
149 IF(.NOT.is_available) oflag = oflag + 1
151 IF(.NOT.is_available) oflag = oflag + 1
153 IF(.NOT.is_available) oflag = oflag + 1
154
155 IF (idsk1<=0.OR.idsk2<=0) THEN
157 . msgtype=msgerror,
158 . anmode=aninfo_blind_1,
160 . c1=titr)
161 ENDIF
162
163 cr = zero
164 xtyp = ityp
165
166 xsk1 = idsk1
167 xsk2 = idsk2
168 mass = zero
169 iner = zero
170
171 IF(cxx==zero.AND.ifun_cxx/=0)cxx = one
172 IF(cyy==zero.AND.ifun_cyy/=0)cyy = one
173 IF(czz==zero.AND.ifun_czz
174 IF(crx==zero.AND.ifun_crx/=0)crx = one
175 IF(cry==zero.AND.ifun_cry/=0)cry = one
176 IF(crz==zero.AND.ifun_crz/=0)crz = one
177
178 IF(kxx==zero.AND.ifun_xx/=0) kxx = one
179 IF(kyy==zero.AND.ifun_yy/=0) kyy = one
180 IF(kzz==zero.AND.ifun_zz/=0) kzz = one
181 IF(krx==zero.AND.ifun_rx/=0) krx = one
182 IF(kry==zero.AND.ifun_ry/=0) kry = one
183 IF(krz==zero.AND.ifun_rz/=0) krz = one
184
185 IF (ifun_xx /= 0) kxx = kxx * fac_ff
186 IF (ifun_yy /= 0) kyy = kyy * fac_ff
187 IF (ifun_zz /= 0) kzz = kzz * fac_ff
188 IF (ifun_rx /= 0) krx = krx * fac_mm
189 IF (ifun_ry /= 0) kry = kry * fac_mm
190 IF (ifun_rz /= 0) krz = krz * fac_mm
191 IF (ifun_cxx /= 0) cxx = cxx * fac_ff
192 IF (ifun_cyy /= 0) cyy = cyy * fac_ff
193 IF (ifun_czz /= 0) czz = czz * fac_ff
194 IF (ifun_crx /= 0) crx = crx * fac_mm
195 IF (ifun_cry /= 0) cry = cry * fac_mm
196 IF (ifun_crz /= 0) crz = crz * fac_mm
197
198 pargeo(1) = 0
199 pargeo(2) = xk
200 pargeo(3) = 0
201
242
243 WRITE(iout,500)
244 IF(is_encrypted)THEN
245 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
246 ELSE
247 IF (oflag==12) THEN
248 WRITE(iout,1001)idsk1,idsk2,xk,cr,kxx,kyy,kzz,
249 . krx,kry,krz,ifun_xx,ifun_yy,ifun_zz,
250 . ifun_rx,ifun_ry,ifun_rz
251 ELSE
252 WRITE(iout,1000)idsk1,idsk2,xk,cr,kxx,kyy,kzz,
253 . krx,kry,krz,ifun_xx,ifun_yy,ifun_zz,
254 . ifun_rx,ifun_ry,ifun_rz,
255 . cxx,cyy,czz,crx,cry,crz,
256 . ifun_cxx,ifun_cyy,ifun_czz,
257 . ifun_crx,ifun_cry,ifun_crz
258 ENDIF
259 ENDIF
260
261 RETURN
262 500 FORMAT(
263 & 5x,'JOINT TYPE . . . . . . . . . . FREE SPRING JOINT'//)
264 1000 FORMAT(
265 & 5x,'SKEW 1 FRAME ID. . . . . . . . . . . . =',i10/,
266 & 5x,'SKEW 2 FRAME ID. . . . . . . . . . . . =',i10/,
267 & 5x,'STIFFNESS FOR INTERFACE K=E*A/L. . . . =',1pg20.13/,
268 & 5x,'CRITICAL DAMPING COEFFICIENT . . . . . ='
269 & 5x,'LINEAR TRANSLATIONAL STIFFNESS KXX . . =',1pg20.13/,
270 & 5x,'LINEAR TRANSLATIONAL STIFFNESS KYY . . =',1pg20.13/,
271 & 5x,'LINEAR TRANSLATIONAL STIFFNESS KZZ . . =',1pg20.13/,
272 & 5x,'LINEAR TORSIONAL STIFFNESS KRX . . . . =',1pg20.13/,
273 & 5x,'LINEAR TORSIONAL STIFFNESS KRY . . . . =',1pg20.13/,
274 & 5x,'LINEAR TORSIONAL STIFFNESS KRZ . . . . =',1pg20.13/,
275 & 5x,'USER X TRANSLATION FUNCTION. . . . . . =',i10/,
276 & 5x,'USER Y TRANSLATION FUNCTION. . . . . . =',i10/,
277 & 5x,'USER Z TRANSLATION FUNCTION. . . . . . =',i10/,
278 & 5x,'user rx torsion
FUNCTION id. . . . . . =
',I10/,
279 & 5X,'user ry torsion function
id. . . . . . =
',I10/,
280 & 5X,'user rz torsion function
id. . . . . . =
',I10/,
281 & 5X,'linear
damping cxx . . . . . . . . . . =
',1PG20.13/,
282 & 5X,'linear
damping cyy . . . . . . . . . . =
',1PG20.13/,
283 & 5X,'linear
damping czz . . . . . . . . . . =
',1PG20.13/,
284 & 5X,'linear
damping crx . . . . . . . . . . =
',1PG20.13/,
285 & 5X,'linear
damping cry . . . . . . . . . . =
',1PG20.13/,
286 & 5X,'linear
damping crz . . . . . . . . . . =
',1PG20.13/,
287 & 5X,'user xx
damping function . . . . . . . =
',I10/,
288 & 5X,'user yy
damping function . . . . . . . =
',I10/,
289 & 5X,'user zz
damping function . . . . . . . =
',I10/,
290 & 5X,'user rx
damping function . . . . . . . =
',I10/,
291 & 5X,'user ry
damping function . . . . . . . =
',I10/,
292 & 5X,'user rz
damping function . . . . . . . =
',I10//)
293 1001 FORMAT(
294 & 5X,'skew 1 frame
id. . . . . . . . . . . . =
',I10/,
295 & 5X,'skew 2 frame
id. . . . . . . . . . . . =
',I10/,
296 & 5X,'stiffness
for interface k=e*a/l. . . . =
',1PG20.13/,
297 & 5X,'critical
damping coefficient . . . . . =
',1PG20.13/,
298 & 5X,'linear translational stiffness kxx . . =',1PG20.13/,
299 & 5X,'linear translational stiffness kyy . . =',1PG20.13/,
300 & 5X,'linear translational stiffness kzz . . =',1PG20.13/,
301 & 5X,'linear torsional stiffness krx . . . . =',1PG20.13/,
302 & 5X,'linear torsional stiffness kry . . . . =',1PG20.13/,
303 & 5X,'linear torsional stiffness krz . . . . =',1PG20.13/,
304 & 5X,'user x translation function. . . . . . =',I10/,
305 & 5X,'user y translation function. . . . . . =',I10/,
306 & 5X,'user z translation function. . . . . . =',I10/,
307 & 5X,'user rx torsion function
id. . . . . . =
',I10/,
308 & 5X,'user ry torsion function
id. . . . . . =
',I10/,
309 & 5X,'user rz torsion function
id. . . . . . =
',I10//)
310
311 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)