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_RX,IFUN_RY,IFUN_RZ,
74 . IFUN_CRX,IFUN_CRY,IFUN_CRZ, ZEROI,OFLAG
76 . xk,xtyp,xflg,xsk1,xsk2,knn,krx,kry,krz,cr,crx,cry,crz,
77 . mass,iner,fac_m,fac_l,fac_t,fac_ct,fac_cr,fac_kt,fac_kr,
78 . fac_ctx,fac_crx,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_mm = one / fac_t
92 fac_ct = fac_m / fac_t
93 fac_cr = fac_m * fac_l**2 / fac_t
94 fac_kt = fac_ct / fac_t
95 fac_kr = fac_cr / fac_t
96 fac_ctx = fac_t / fac_l
97 fac_crx = fac_t
98 oflag = 0
99
100
101
102
103 CALL hm_get_intv(
'Idsk1',idsk1,is_available,lsubmodel)
104 CALL hm_get_intv(
'Idsk2',idsk2,is_available,lsubmodel)
105 CALL hm_get_intv(
'Xr_fun',ifun_rx,is_available,lsubmodel)
106 CALL hm_get_intv(
'Yr_fun',ifun_ry,is_available,lsubmodel)
107 CALL hm_get_intv(
'Zr_fun',ifun_rz,is_available,lsubmodel)
108
109
110
114 CALL HM_GET_FLOATV('krx',KRX,IS_AVAILABLE,LSUBMODEL,UNITAB)
115 CALL HM_GET_FLOATV('kry',KRY,IS_AVAILABLE,LSUBMODEL,UNITAB)
116 CALL HM_GET_FLOATV('krz',KRZ,IS_AVAILABLE,LSUBMODEL,UNITAB)
117
118
119
120
121 CALL HM_GET_INTV('crx_fun',IFUN_CRX,IS_AVAILABLE,LSUBMODEL)
122.NOT. IF(IS_AVAILABLE) OFLAG = OFLAG + 1
123 CALL HM_GET_INTV('cry_fun',IFUN_CRY,IS_AVAILABLE,LSUBMODEL)
124.NOT. IF(IS_AVAILABLE) OFLAG = OFLAG + 1
125 CALL HM_GET_INTV('crz_fun',IFUN_CRZ,IS_AVAILABLE,LSUBMODEL)
126.NOT. IF(IS_AVAILABLE) OFLAG = OFLAG + 1
127
128
129
130 CALL HM_GET_FLOATV('crx',CRX,IS_AVAILABLE,LSUBMODEL,UNITAB)
131.NOT. IF(IS_AVAILABLE) OFLAG = OFLAG + 1
132 CALL HM_GET_FLOATV('cry',CRY,IS_AVAILABLE,LSUBMODEL,UNITAB)
133.NOT. IF(IS_AVAILABLE) OFLAG = OFLAG + 1
134 CALL HM_GET_FLOATV('crz',CRZ,IS_AVAILABLE,LSUBMODEL,UNITAB)
135.NOT. IF(IS_AVAILABLE) OFLAG = OFLAG + 1
136
137.OR. IF (IDSK1<=0IDSK1<=0) THEN
138 CALL ANCMSG(MSGID=386,
139 . MSGTYPE=MSGERROR,
140 . ANMODE=ANINFO_BLIND_1,
141 . I1=ID,
142 . C1=TITR)
143 ENDIF
144 IF (KNN==0.) THEN
145 CALL ANCMSG(MSGID=387,
146 . MSGTYPE=MSGERROR,
147 . ANMODE=ANINFO_BLIND_1,
148 . I1=ID,
149 . C1=TITR)
150 ENDIF
151.OR. IF (CR<ZEROCR>1.) THEN
152 CALL ANCMSG(MSGID=388,
153 . MSGTYPE=MSGERROR,
154 . ANMODE=ANINFO_BLIND_1,
155 . I1=ID,
156 . C1=TITR)
157 ENDIF
158 IF (CR==ZERO) CR = FIVEEM2
159
160 XTYP = ITYP
161 XFLG = SKFLAG
162 XSK1 = IDSK1
163 XSK2 = IDSK2
164 MASS = ZERO
165 INER = ZERO
166
167.AND. IF(CRX==ZEROIFUN_CRX/=0)CRX = ONE
168.AND. IF(CRY==ZEROIFUN_CRY/=0)CRY = ONE
169.AND. IF(CRZ==ZEROIFUN_CRZ/=0)CRZ = ONE
170.AND. IF(KRX==ZEROIFUN_RX/=0) KRX = ONE
171.AND. IF(KRY==ZEROIFUN_RY/=0) KRY = ONE
172.AND. IF(KRZ==ZEROIFUN_RZ/=0) KRZ = ONE
173
174 IF (IFUN_RX /= 0) KRX = KRX * FAC_MM
175 IF (IFUN_RY /= 0) KRY = KRY * FAC_MM
176 IF (IFUN_RZ /= 0) KRZ = KRZ * FAC_MM
177 IF (IFUN_CRX /= 0) CRX = CRX * FAC_MM
178 IF (IFUN_CRY /= 0) CRY = CRY * FAC_MM
179 IF (IFUN_CRZ /= 0) CRZ = CRZ * FAC_MM
180
181 PARGEO(1) = 0
182 PARGEO(2) = XK
183 PARGEO(3) = 0
184
185 IERROR = SET_U_GEO(1,XTYP)
186 IERROR = SET_U_GEO(2,XSK1)
187 IERROR = SET_U_GEO(3,XSK2)
188 IERROR = SET_U_GEO(4,KNN)
189 IERROR = SET_U_GEO(5,KNN)
190 IERROR = SET_U_GEO(6,KNN)
191 IERROR = SET_U_GEO(7,KRX)
192 IERROR = SET_U_GEO(8,KRY)
193 IERROR = SET_U_GEO(9,KRZ)
194 IERROR = SET_U_GEO(10,KNN)
195 IERROR = SET_U_GEO(11,ZERO)
196 IERROR = SET_U_GEO(12,MASS)
197 IERROR = SET_U_GEO(13,INER)
198 IERROR = SET_U_GEO(14,XFLG)
199 IERROR = SET_U_GEO(15,CR)
200 IERROR = SET_U_GEO(16,CR)
201 IERROR = SET_U_GEO(17,CR)
202 IERROR = SET_U_GEO(18,ZERO)
203 IERROR = SET_U_GEO(19,ZERO)
204 IERROR = SET_U_GEO(20,ZERO)
205 IERROR = SET_U_GEO(21,ZERO)
206 IERROR = SET_U_GEO(22,ZERO)
207 IERROR = SET_U_GEO(23,ZERO)
208 IERROR = SET_U_GEO(24,CRX)
209 IERROR = SET_U_GEO(25,CRY)
210 IERROR = SET_U_GEO(26,CRZ)
211 IERROR = SET_U_GEO(27,FAC_CTX)
212 IERROR = SET_U_GEO(28,FAC_CRX)
213 IERROR = SET_U_PNU(1,ZEROI,KFUNC)
214 IERROR = SET_U_PNU(2,ZEROI,KFUNC)
215 IERROR = SET_U_PNU(3,ZEROI,KFUNC)
216 IERROR = SET_U_PNU(4,IFUN_RX,KFUNC)
217 IERROR = SET_U_PNU(5,IFUN_RY,KFUNC)
218 IERROR = SET_U_PNU(6,IFUN_RZ,KFUNC)
219 IERROR = SET_U_PNU(7,ZEROI,KFUNC)
220 IERROR = SET_U_PNU(8,ZEROI,KFUNC)
221 IERROR = SET_U_PNU(9,ZEROI,KFUNC)
222 IERROR = SET_U_PNU(10,IFUN_CRX,KFUNC)
223 IERROR = SET_U_PNU(11,IFUN_CRY,KFUNC)
224 IERROR = SET_U_PNU(12,IFUN_CRZ,KFUNC)
225
226 WRITE(IOUT,500)
227 IF(IS_ENCRYPTED)THEN
228 WRITE(IOUT,'(5x,a,//)')'confidential data'
229 ELSE
230 IF (OFLAG==6) THEN
231 WRITE(IOUT,1001) IDSK1,IDSK2,XK,CR,KNN,KRX,KRY,KRZ,
232 . IFUN_RX,IFUN_RY,IFUN_RZ
233 ELSE
234 WRITE(IOUT,1000) IDSK1,IDSK2,XK,CR,KNN,KRX,KRY,KRZ,
235 . IFUN_RX,IFUN_RY,IFUN_RZ,CRX,CRY,CRZ,
236 . IFUN_CRX,IFUN_CRY,IFUN_CRZ
237 ENDIF
238 ENDIF
239
240 RETURN
241 500 FORMAT(
242 & 5X,'joint TYPE . . . . . . . . . spherical joint'//)
243 1000 FORMAT(
244 & 5X,'skew 1 frame
id. . . . . . . . . . . . =
',I10/,
245 & 5X,'skew 2 frame
id. . . . . . . . . . . . =
',I10/,
246 & 5X,'stiffness
for INTERFACE k=e*a/l. . . . =
',1PG20.13/,
247 & 5X,'critical
damping coefficient . . . . . =
',1PG20.13/,
248 & 5X,'blocking stiffness knn . . . . . . . . =',1PG20.13/,
249 & 5X,'linear rotational stiffness krx. . . . =',1PG20.13/,
250 & 5X,'linear rotational stiffness kry. . . . =',1PG20.13/,
251 & 5X,'linear rotational stiffness krz. . . . =',1PG20.13/,
252 & 5X,'user x rot function. . . . . . . . . . =',I10/,
253 & 5X,'user y rot function. . . . . . . . . . =',I10/,
254 & 5X,'user z rot function. . . . . . . . . . =',I10/,
255 & 5X,'linear
damping crx . . . . . . . . . . =
',1PG20.13/,
256 & 5X,'linear
damping cry . . . . . . . . . . =
',1PG20.13/,
257 & 5X,'linear
damping crz . . . . . . . . . . =
',1PG20.13/,
258 & 5X,'user rx
damping FUNCTION . . . . . . . =
',I10/,
259 & 5X,'user ry
damping function . . . . . . . =
',I10/,
260 & 5X,'user rz
damping function . . . . . . . =
',I10//)
261 1001 FORMAT(
262 & 5X,'skew 1 frame
id. . . . . . . . . . . . =
',I10/,
263 & 5X,'skew 2 frame
id. . . . . . . . . . . . =
',I10/,
264 & 5X,'stiffness
for interface k=e*a/l. . . . =
',1PG20.13/,
265 & 5X,'critical
damping coefficient . . . . . =
',1PG20.13/,
266 & 5X,'blocking stiffness knn . . . . . . . . =',1PG20.13/,
267 & 5X,'linear rotational stiffness krx. . . . =',1PG20.13/,
268 & 5X,'linear rotational stiffness kry. . . . =',1PG20.13/,
269 & 5X,'linear rotational stiffness krz. . . . =',1PG20.13/,
270 & 5X,'user x rot function. . . . . . . . . . =',I10/,
271 & 5X,'user y rot function. . . . . . . . . . =',I10/,
272 & 5X,'user z rot function. . . . . . . . . . =',I10//)
273 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
integer function set_u_pnu(ivar, ip, k)
integer function set_u_geo(ivar, a)