45
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "tablen_c.inc"
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
97 INTEGER IOUT,NUVAR(*),IGTYP,IUNIT
99 INTEGER SET_U_PNU,SET_U_GEO,
100 . KFUNC
102 parameter(kfunc=29)
103 INTEGER ID
104 CHARACTER(LEN=NCHARTITLE) :: TITR
105 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
106 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
107
108
109
110 INTEGER IERROR,I
111 INTEGER IFUNC, IFV, IVTYP, NIP
113 . xk,xvtyp,rho, xc, dmn, dmx, mu1, mu2, fric,y_scal,x_scal
115 . fac_m, fac_l, fac_t
116 CHARACTER(LEN=NCHARFIELD) :: KEYWORD
117 CHARACTER(LEN=NCHARLINE) :: CART
118 INTEGER IP
119 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
120
121
122C
123 is_encrypted = .false.
124 is_available = .false.
125
126
127
129
130
131
132 CALL hm_get_intv(
'FUN_A1',ifunc,is_available,lsubmodel)
133 CALL hm_get_intv(
'FUN_B1',ifv,is_available,lsubmodel)
135
136
137
139 CALL hm_get_floatv(
'STIFF2',xk,is_available,lsubmodel,unitab)
141 CALL hm_get_floatv(
'STRAIN1',dmn,is_available,lsubmodel,unitab)
142 CALL hm_get_floatv(
'STRAIN2',dmx,is_available,lsubmodel,unitab)
143 CALL hm_get_floatv(
'FScale11',y_scal,is_available,lsubmodel,unitab)
144 CALL hm_get_floatv(
'FScale22',x_scal,is_available,lsubmodel,unitab)
145 CALL hm_get_floatv(
'MAT_MUE1',mu1,is_available,lsubmodel,unitab)
146 CALL hm_get_floatv(
'MAT_MUE2',mu2,is_available,lsubmodel,unitab)
147
148
149
151
152 cart=' '
153 pargeo(1) = 0
154
155 pargeo(2) = 0.0
156
157 nuvar(1) = 3
158 nuvar(2) = 5
159
160 fac_m = unitab%FAC_M(iunit)
161 fac_l = unitab%FAC_L(iunit)
162 fac_t = unitab%FAC_T(iunit)
163
164 IF (dmn == zero) dmn=-ep30
165 IF (dmx == zero) dmx= ep30
166 IF (y_scal == zero) y_scal = one * fac_m * fac_l / ( fac_t * fac_t )
167 IF (x_scal == zero) x_scal = one / fac_t
168
170 IF (ierror>0) THEN
172 . msgtype=msgerror,
173 . anmode=aninfo_blind_1,
175 . c1=titr,
176 . c2='SET_U_GEO(10,MU1)')
177 ENDIF
179 IF (ierror>0) THEN
181 . msgtype=msgerror,
182 . anmode=aninfo_blind_1,
184 . c1=titr,
185 . c2='SET_U_GEO(11,MU2)')
186 ENDIF
188 IF (ierror>0) THEN
190 . msgtype=msgerror,
191 . anmode=aninfo_blind_1,
193 . c1=titr,
194 . c2='SET_U_GEO(3,RHO)')
195 ENDIF
197 IF (ierror>0) THEN
199 . msgtype=msgerror,
200 . anmode=aninfo_blind_1,
202 . c1=titr,
203 . c2='SET_U_GEO(4,XK)')
204 ENDIF
206 IF (ierror>0) THEN
208 . msgtype=msgerror,
209 . anmode=aninfo_blind_1,
211 . c1=titr,
212 . c2='SET_U_GEO(5,XC)')
213 ENDIF
215 IF (ierror>0) THEN
217 . msgtype=msgerror,
218 . anmode=aninfo_blind_1,
220 . c1=titr,
221 . c2='SET_U_PNU(1,IFUNC,KFUNC)')
222 ENDIF
224 IF (ierror>0) THEN
226 . msgtype=msgerror,
227 . anmode=aninfo_blind_1,
229 . c1=titr,
230 . c2='SET_U_PNU(2,IFV,KFUNC)')
231 ENDIF
232 ivtyp=100
233 xvtyp=ivtyp
235 IF (ierror>0) THEN
237 . msgtype=msgerror,
238 . anmode=aninfo_blind_1,
240 . c1=titr,
241 . c2='SET_U_GEO(7,XVTYP)')
242 ENDIF
244 IF (ierror>0) THEN
246 . msgtype=msgerror,
247 . anmode=aninfo_blind_1,
249 . c1=titr,
250 . c2='SET_U_GEO(8,DMN)')
251 ENDIF
253 IF (ierror>0) THEN
255 . msgtype=msgerror,
256 . anmode=aninfo_blind_1,
258 . c1=titr,
259 . c2='SET_U_GEO(9,DMX)')
260 ENDIF
261 IF(rho==0.)THEN
263 . msgtype=msgerror,
264 . anmode=aninfo,
266 . c1=titr)
267 ENDIF
268
270 IF (ierror > 0) THEN
272 . msgtype=msgerror,
273 . anmode=aninfo_blind_1,
275 . c1=titr,
276 . c2='SET_U_GEO(12,Y_SCAL)')
277 ENDIF
279 IF (ierror > 0) THEN
281 . msgtype=msgerror,
282 . anmode=aninfo_blind_1,
284 . c1=titr,
285 . c2='SET_U_GEO(13,X_SCAL)')
286 ENDIF
287
288 IF(.NOT. is_encrypted)THEN
289 WRITE(iout,3000) rho,xk,xc,ifunc,ifv,y_scal,x_scal,
290 . dmn,dmx,mu1,mu2
291 ELSE
292 WRITE(iout,'(5X,A)')' NSTRAND PROPERTY SET'
293 WRITE(iout,'(5X,A,/)')' --------------------'
294 WRITE(IOUT,'(5x,a,//)')' confidential data'
295 ENDIF
296
297 DO I=1,475
298
299 FRIC=-1.0
300 IERROR=SET_U_GEO(50+I,FRIC)
301 IF (IERROR>0) THEN
302 CALL ANCMSG(MSGID=378,
303 . MSGTYPE=MSGERROR,
304 . ANMODE=ANINFO_BLIND_1,
305 . I1=ID,
306 . C1=TITR,
308 ENDIF
309 IERROR=SET_U_GEO(525+I,FRIC)
310 IF (IERROR>0) THEN
311 CALL ANCMSG(MSGID=378,
312 . MSGTYPE=MSGERROR,
313 . ANMODE=ANINFO_BLIND_1,
314 . I1=ID,
315 . C1=TITR,
317 ENDIF
318 ENDDO
319
320 WRITE(IOUT,4000)
321
322 DO IP=1,NIP
323
324 CALL HM_GET_STRING_INDEX('name_array',KEYWORD,IP,6,IS_AVAILABLE)
325 CALL HM_GET_INT_ARRAY_INDEX('nb1_arr',I,IP,IS_AVAILABLE,LSUBMODEL)
326 CALL HM_GET_FLOAT_ARRAY_INDEX('mu_arr',FRIC,IP,IS_AVAILABLE,LSUBMODEL,UNITAB)
327
328 IF (KEYWORD(1:6)=='pulley') THEN
329.OR. IF (I<2I>475) THEN
330 CALL ANCMSG(MSGID=379,
331 . MSGTYPE=MSGERROR,
332 . ANMODE=ANINFO_BLIND_1,
333 . I1=ID,
334 . C1=TITR,
335 . C2='pulley',
336 . I2=I)
337 ENDIF
338 IERROR=SET_U_GEO(50+I,FRIC)
339 IF (IERROR>0) THEN
340 CALL ANCMSG(MSGID=378,
341 . MSGTYPE=MSGERROR,
342 . ANMODE=ANINFO_BLIND_1,
343 . I1=ID,
344 . C1=TITR,
346 ENDIF
347.NOT. IF( IS_ENCRYPTED) WRITE(IOUT,'(a,i10,a,1pg20.13)')
348 . 'pulley friction coefficient : pulley number =',I,
349 . 'VALUE =',FRIC
350 ELSEIF (KEYWORD(1:6)=='strand') THEN
351.OR. IF (I<1I>475) THEN
352 CALL ANCMSG(MSGID=379,
353 . MSGTYPE=MSGERROR,
354 . ANMODE=ANINFO_BLIND_1,
355 . I1=ID,
356 . C1=TITR,
357 . C2='strand',
358 . I2=I)
359 ENDIF
360 IERROR=SET_U_GEO(525+I,FRIC)
361 IF (IERROR>0) THEN
362 CALL ANCMSG(MSGID=378,
363 . MSGTYPE=MSGERROR,
364 . ANMODE=ANINFO_BLIND_1,
365 . I1=ID,
366 . C1=TITR,
368 ENDIF
369
370.NOT. IF( IS_ENCRYPTED) WRITE(IOUT,'(a,i10,a,1pg20.13)')
371 . 'strand friction coefficient : strand number =',I,
372 . 'VALUE =',FRIC
373 ELSE
374 CALL ANCMSG(MSGID=380,
375 . MSGTYPE=MSGERROR,
376 . ANMODE=ANINFO_BLIND_1,
377 . I1=ID,
378 . C1=TITR,
379 . C2=KEYWORD)
380 ENDIF
381
382 ENDDO
383
384
385
386
387 PROP_TAG(IGTYP)%G_EINT = 1
388 PROP_TAG(IGTYP)%G_MASS = 1
389 PROP_TAG(IGTYP)%G_NUVAR = NUVAR(1)
390
391
392
393 RETURN
394 999 CALL ANCMSG(MSGID=606,
395 . MSGTYPE=MSGERROR,
396 . ANMODE=ANINFO,
397 . C1=CART)
398 3000 FORMAT(
399 & 5X,' nstrand property set ',/,
400 & 5X,' -------------------- ',/,
401 & 5X,'mass per length unit. . . . . . . . . .=',1PG20.13/,
402 & 5X,'unitary stiffness . . . . . . . . . . .=',1PG20.13/,
403 & 5X,'unitary
damping . . . . . . . . . . . .=
',1PG20.13/,
404 & 5X,'force/strain curve number . . . . . . .=',I10/,
405 & 5X,'dynamic amplification curve number. . .=',I10/,
406 & 5X,'force scale factor. . . . . . . . . . .=',1PG20.13/,
407 & 5X,'strain rate scale factor. . . . . . . .=',1PG20.13/,
408 & 5X,'negative failure strain . . . . . . . .=',1PG20.13/,
409 & 5X,'positive failure strain . . . . . . . .=',1PG20.13/,
410 & 5X,'pulley friction default coefficient . .=',1PG20.13/,
411 & 5X,'strand friction default coefficient . .=',1PG20.13/)
412 4000 FORMAT(
413 & 5X,' specified friction coefficients : ',/,
414 & 5X,' +++++++++++++++++++++++++++++++ ',/)
415
416 1400 FORMAT(
417 & 5X,'user property set'/,
418 & 5X,'property set number . . . . . . . . . .=',I10)
419
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)
subroutine hm_option_is_encrypted(is_encrypted)
integer, parameter nchartitle
integer, parameter ncharfield
integer, parameter ncharline
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)