40
41
42
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "units_c.inc"
56#include "param_c.inc"
57#include "tablen_c.inc"
58
59
60
61 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
62 INTEGER IGEO(NPROPGI),IGTYP,IG
63
65 CHARACTER(LEN=NCHARTITLE) :: IDTITL
66 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
67 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
68
69
70
71 INTEGER J, IFUNC, IFUNC2, IFUNC3, IECROU, IFV, ISENS,IFL,
72 . ILENG,FTAB_ID,IFRIC
73
75 . a, b, d, e, f, dn, dx
76 . yscalef,xscalef,fmax,fmin
78 . a_unit,d_unit,e_unit,f_unit,lscale_unit,gf3_unit,rup_unit,xscale_unit,fmin_unit
79 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
80
81
82 pun = em01
83
84 is_encrypted = .false.
85 is_available = .false.
86
87
88 igeo( 1)=ig
89 igeo(11)=igtyp
90 geo(12) =igtyp+pun
91
92
93
94
96
97
98
99 CALL hm_get_intv(
'ISENSOR',isens,is_available,lsubmodel)
100 CALL hm_get_intv(
'ISFLAG',ifl,is_available,lsubmodel)
101 CALL hm_get_intv(
'Ileng',ileng,is_available,lsubmodel)
102 CALL hm_get_intv(
'FUN_A1',ifunc,is_available,lsubmodel)
103 CALL hm_get_intv(
'HFLAG1',iecrou,is_available,lsubmodel)
104 CALL hm_get_intv(
'FUN_B1',ifv,is_available,lsubmodel)
105 CALL hm_get_intv(
'fct_ID31',ifunc2,is_available,lsubmodel)
106 CALL hm_get_intv(
'FUN_A2',ifunc3,is_available,lsubmodel)
107
108 CALL hm_get_intv(
'FUNCT_ID',ftab_id,is_available,lsubmodel)
109 CALL hm_get_intv(
'P12_SPR_PUL_Ifric',ifric,is_available,lsubmodel)
110
111
112
113 CALL hm_get_floatv(
'MASS',geo(1),is_available,lsubmodel,unitab)
114 CALL hm_get_floatv(
'FRIC',fric,is_available,lsubmodel,unitab)
115 CALL hm_get_floatv(
'STIFF1',geo(2),is_available,lsubmodel,unitab)
116 CALL hm_get_floatv(
'DAMP1',geo(3),is_available,lsubmodel,unitab)
117 CALL hm_get_floatv(
'Acoeft1',a,is_available,lsubmodel,unitab)
118 CALL hm_get_floatv(
'Bcoeft1',b,is_available,lsubmodel,unitab)
119 CALL hm_get_floatv(
'Dcoeft1',d,is_available,lsubmodel,unitab)
120 CALL hm_get_floatv(
'MIN_RUP1',dn,is_available,lsubmodel,unitab)
121 CALL hm_get_floatv(
'MAX_RUP1',dx,is_available,lsubmodel,unitab)
122 CALL hm_get_floatv(
'Prop_X_F',f,is_available,lsubmodel,unitab)
123 CALL hm_get_floatv(
'Prop_X_E',e,is_available,lsubmodel,unitab)
124 CALL hm_get_floatv(
'scale1',lscale,is_available,lsubmodel,unitab
126
127 CALL hm_get_floatv(
'scale2',yscalef,is_available,lsubmodel,unitab)
128 CALL hm_get_floatv(
'scale3',xscalef,is_available,lsubmodel,unitab)
129 CALL hm_get_floatv(
'P12_SPR_PUL_F_min',fmin,is_available,lsubmodel,unitab)
130 CALL hm_get_floatv(
'P12_SPR_PUL_F_max',fmax,is_available,lsubmodel,unitab)
131
140 CALL hm_get_floatv_dim(
'P12_SPR_PUL_F_min',fmin_unit,is_available,lsubmodel,unitab)
141
142 IF(geo(2)==zero.AND.geo(3)==zero.AND.ifunc==zero) THEN
144 . msgtype=msgerror,
145 . anmode=aninfo_blind_1,
146 . i1=ig,
147 . c1=idtitl)
148 END IF
149 IF(geo(1)<=em15)THEN
151 . msgtype=msgerror,
152 . anmode=aninfo_blind_1,
153 . i1=ig,
154 . c1=idtitl)
155 ENDIF
156
157
158
159
160
161
162! ENDIF
163 IF(iecrou==4.AND.(ifunc==0.OR.ifunc2==0))THEN
165 . msgtype=msgerror,
166 . anmode=aninfo_blind_1,
167 . i1=ig,
168 . c1=idtitl)
169 ENDIF
170 IF(iecrou==4.AND.geo(2)==zero)THEN
172 . msgtype=msgerror,
173 . anmode=aninfo_blind_1,
174 . i1=ig,
175 . c1=idtitl)
176 ENDIF
177 IF(iecrou==5.AND.(ifunc==0.OR.ifunc2==0))THEN
179 . msgtype=msgerror,
180 . anmode=aninfo_blind_1,
181 . i1=ig,
182 . c1=idtitl)
183 ENDIF
184 IF(iecrou==6.AND.(ifunc==0.OR.ifunc2==0))THEN
186 . msgtype=msgerror,
187 . anmode=aninfo_blind_1,
188 . i1=ig,
189 . c1=idtitl)
190 ENDIF
191 IF(iecrou==7.AND.ifunc==0)THEN
193 . msgtype=msgerror,
194 . anmode=aninfo_blind_1,
195 . i1=ig,
196 . c1=idtitl)
197
198 ELSEIF(iecrou==7.AND.ifunc2==0)THEN
200 . msgtype=msgwarning,
201 . anmode=aninfo_blind_1,
202 . i1=ig,
203 . c1=idtitl,
204 . i2=iecrou)
205 iecrou = 2
206 ENDIF
207 IF (ifunc == 0 .AND. a /= zero .AND. a /= one) THEN
209 . msgtype=msgwarning,
210 . anmode=aninfo_blind_1,
211 . i1=ig,
212 . c1=idtitl)
213 ENDIF
214
215 IF (a == zero) a = one * a_unit
216 IF (d == zero) d = one * d_unit
217 IF (e == zero) e = one * e_unit
218 IF (f == zero) f = one * f_unit
219 IF (lscale == zero) lscale = one * lscale_unit
220 IF (gf3 == zero) gf3 = one * gf3_unit
221 IF (ifunc == 0) THEN
222 a = one
223 b = zero
224 e = zero
225 ENDIF
226 IF (ifl == 1) isens=-isens
227
228 IF (dn == zero) dn=-ep30
229 IF (dx == zero) dx= ep30
230 dn = dn * lscale / rup_unit
231 dx = dx * lscale / rup_unit
232
233 IF (xscalef == zero) xscalef = one * xscale_unit
234 IF (yscalef == zero) yscalef = one
235 IF (fmin == zero) fmin = -ep30
236 IF (fmax == zero) fmax = ep30
237
238 IF(is_encrypted)THEN
239 WRITE(iout,1000)ig
240 ELSE
241 IF (iecrou/=5) THEN
242 WRITE(iout,1400)ig,(geo(j),j=1,3),ifunc,lscale,ifunc2,f,iecrou,
243 . a,b,d,e,ifv,gf3,ifunc3,dn,dx,abs(isens),ifl,ileng,fric,
244 . ftab_id,ifric,yscalef,xscalef,fmin,fmax
245 ELSE
246 WRITE(iout,1500)ig,(geo(j),j=1,3),ifunc,lscale,ifunc2,f,iecrou,
247 . a,b,d,e,ifv,gf3,ifunc3,dn,dx,abs(isens),ifl,ileng,fric,
248 . ftab_id,ifric,yscalef,xscalef,fmin,fmax
249 ENDIF
250 ENDIF
251
252
253
254 geo(2) = geo(2) / a
255 geo(7) = iecrou+pun
256 geo(8) = 3
257 geo(9) = zero
258 geo(10) = a
259 geo(11) = b
260 geo(13) = d
261 geo(18) = one / f
262 geo(39) = one / lscale
263 geo(40) = e
264 geo(132)= gf3
265 geo(15) = dn
266 geo(16) = dx
267 geo(17) = fric
268 geo(20) = one/xscalef
269 geo(80) = ifl
270 geo(93) = ileng
271 geo(138) = fmin
272 geo(139) = fmax
273 geo(140) = yscalef
274 igeo(3) = isens
275
276 IF (iecrou == 6) THEN
277 geo(25) = 1
278 ENDIF
279
280 igeo(101) = ifunc
281 igeo(102) = ifv
282 igeo(103) = ifunc2
283 igeo(201) = ftab_id
284 igeo(119) = ifunc3
285 igeo(202) = ifric
286
287
288
289
290
291 prop_tag(igtyp)%G_EINT = 1
292 prop_tag(igtyp)%G_FOR = 1
293 prop_tag(igtyp)%G_LENGTH = 1
294 prop_tag(igtyp)%G_TOTDEPL = 1
295 prop_tag(igtyp)%G_FOREP = 1
296 prop_tag(igtyp)%G_DEP_IN_TENS = 1
297 prop_tag(igtyp)%G_DEP_IN_COMP = 1
298 prop_tag(igtyp)%G_POSX = 5
299 prop_tag(igtyp)%G_YIELD = 1
300 prop_tag(igtyp)%G_LENGTH_ERR = 1
301 prop_tag(igtyp)%G_DFS = 1
302 prop_tag(igtyp)%G_INIFRIC = 1
303 prop_tag(igtyp)%G_NUVAR =
max(prop_tag(igtyp)%G_NUVAR,nint(geo(25)))
304 prop_tag(igtyp)%G_DEFINI = 1
305 prop_tag(igtyp)%G_FORINI = 1
306
307
308 1000 FORMAT(
309 & 5x,'SPRING PROPERTY SET'/,
310 & 5x,'-------------------'/,
311 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
312 & 5x,'CONFIDENTIAL DATA'//)
313 1400 FORMAT(
314 & 5x,'SPRING PROPERTY SET (3 NODES PULLEY)'/,
315 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
316 & 5x,'SPRING MASS . . . . . . . . . . . . . .=',1pg20.13/,
317 & 5x,'SPRING STIFFNESS. . . . . . . . . . . .=',1pg20.13/,
318 & 5x,'SPRING DAMPING. . . . . . . . . . . . .=',1pg20.13/,
319 & 5x,'FUNCTION IDENTIFIER FOR LOADING ',/,
320 & 5x,'FORCE-DISPLACEMENT CURVE. . . . . . . .=',i10/,
321 & 5x,'ABSCISSA SCALE FACTOR ON CURVE . . . . =',1pg20.13/,
322 & 5x,'FUNCTION IDENTIFIER FOR UNLOADING ',/,
323 & 5x,'FORCE-DISPLACEMENT CURVE (H=4,5,7). . .=',i10/,
324 & 5x,'ABSCISSA SCALE FACTOR ON CURVE . . . . =',1pg20.13/,
325 & 5x,'HARDENING FLAG H. . . . . . . . . . . .=',i10/
326 & 5x,'0:ELASTIC 1:ISOTROPIC 2:UNCOUPLED',/,
327 & 5x,'4:KINEMATIC 5:UNCOUPLED NL (UN/RE)LOADING',/,
328 & 5x,'6:ELASTO PLASTIC WITH HARDENING 7: ELASTIC HYSTERESIS',/,
329 & 5x,'DYNAMIC AMPLIFICATION FACTOR A. . . . .=',1pg20.13/,
330 & 5x,'DYNAMIC AMPLIFICATION FACTOR B. . . . .=',1pg20.13/,
331 & 5x,'DYNAMIC AMPLIFICATION FACTOR D. . . . .=',1pg20.13/,
332 & 5x,'DYNAMIC AMPLIFICATION FACTOR E. . . . .=',1pg20.13/,
333 & 5x,'FUNCTION IDENTIFIER FOR ',/,
334 & 5x,'FORCE-VELOCITY CURVE. . . . . . . . . .=',i10/,
335 & 5x,'DYNAMIC AMPLIFICATION FACTOR GF3. . . .=',1pg20.13/,
336 & 5x,'FUNCTION IDENTIFIER FOR THE ADDITIONAL ',/,
337 & 5x,'FORCE-VELOCITY CURVE. . . . . . . . . .=',i10/,
338 & 5x,'NEGATIVE FAILURE DISPLACEMENT . . . . .=',1pg20.13/,
339 & 5x,'POSITIVE FAILURE DISPLACEMENT . . . . .=',1pg20.13/,
340 & 5x,'SENSOR NUMBER (0:NOT USED). . . . . . .=',i10/,
341 & 5x,'SENSOR FLAG (0:ACTIV 1:DEACT 2:BOTH). .=',i10/,
342 & 5x,'UNIT LENGTH FLAG. . . . . . . . . . . .=',i10/,
343 & 5x,'IF=1 UNIT LENGTH MASS,STIFFNESS AND INPUT',/,
344 & 5x,' CURVE ARE STRAIN DEPENDING',/,
345 & 5x,'CONSTANT PULLEY FRICTION COEFFICIENT. .=',1pg20.13/
346 & 5x,'TABLE ID OF VARIABLE FRICTION FUNCTIONS=',i10/,
347 & 5x,'FRICTION FLAG . . . . . . . . . . . . .=',i10/,
348 & 5x,'Y SCALE FACTOR IN FRICTION TABLE. . . .=',1pg20.13/
349 & 5x,'FORCE ABSCISSA SCALE IN FRICTION TABLE.=',1pg20.13/
350 & 5x,'NON REVERSIBLE NEGATIVE LIMIT FORCE . .=',1pg20.13/
351 & 5x,'NON REVERSIBLE POSITIVE LIMIT FORCE . .=',1pg20.13/)
352 1500 FORMAT(
353 & 5x,'SPRING PROPERTY SET (3 NODES PULLEY)'/,
354 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
355 & 5x,'SPRING MASS . . . . . . . . . . . . . .=',1pg20.13/,
356 & 5x,'SPRING STIFFNESS. . . . . . . . . . . .=',1pg20.13/,
357 & 5x,'SPRING DAMPING. . . . . . . . . . . . .=',1pg20.13/,
358 & 5x,'FUNCTION IDENTIFIER FOR LOADING ',/,
359 & 5x,'FORCE-DISPLACEMENT CURVE. . . . . . . .=',i10/,
360 & 5x,'ABSCISSA SCALE FACTOR ON CURVE . . . . =',1pg20.13/,
361 & 5x,'PERMANENT DISPL./MAX. DISPL. CURVE(H=5)=',i10/
362 & 5x,'ABSCISSA SCALE FACTOR ON CURVE . . . . =',1pg20.13/,
363 & 5x,'HARDENING FLAG H. . . . . . . . . . . .=',i10/,
364 & 5x,'0:ELASTIC 1:ISOTROPIC 2:UNCOUPLED',/,
365 & 5x,'4:KINEMATIC 5:UNCOUPLED NL (UN/RE)LOADING',/,
366 & 5x,'6:ELASTO PLASTIC WITH HARDENING 7: ELASTIC HYSTERESIS',/,
367 & 5x,'DYNAMIC AMPLIFICATION FACTOR A. . . . .=',1pg20.13/,
368 & 5x,'DYNAMIC AMPLIFICATION FACTOR B. . . . .=',1pg20.13/,
369 & 5x,'DYNAMIC AMPLIFICATION FACTOR D. . . . .=',1pg20.13/,
370 & 5x,'DYNAMIC AMPLIFICATION FACTOR E. . . . .=',1pg20.13/,
371 & 5x,'FUNCTION IDENTIFIER FOR ',/,
372 & 5x,'FORCE-VELOCITY CURVE. . . . . . . . . .=',i10/,
373 & 5x,'DYNAMIC AMPLIFICATION FACTOR GF3. . . .=',1pg20.13/,
374 & 5x,'FUNCTION IDENTIFIER FOR THE ADDITIONAL ',/,
375 & 5x,'FORCE-VELOCITY CURVE. . . . . . . . . .=',i10/,
376 & 5x,'NEGATIVE FAILURE DISPLACEMENT . . . . .=',1pg20.13/,
377 & 5x,'POSITIVE FAILURE DISPLACEMENT . . . . .=',1pg20.13/,
378 & 5x,'SENSOR NUMBER (0:NOT USED). . . . . . .=',i10/,
379 & 5x,'SENSOR FLAG (0:ACTIV 1:DISACT 2:BOTH) .=',i10/,
380 & 5x,'UNIT LENGTH FLAG. . . . . . . . . . . .=',i10/,
381 & 5x,'IF=1 UNIT LENGTH MASS,STIFFNESS AND INPUT',/,
382 & 5x,' CURVE ARE STRAIN DEPENDING',/,
383 & 5x,'CONSTANT PULLEY FRICTION COEFFICIENT. .=',1pg20.13/
384 & 5x,'TABLE ID OF VARIABLE FRICTION FUNCTIONS=',i10/,
385 & 5x,'FRICTION FLAG . . . . . . . . . . . . .=',i10/,
386 & 5x,'Y SCALE FACTOR IN FRICTION TABLE. . . .=',1pg20.13/
387 & 5x,'FORCE ABSCISSA SCALE IN FRICTION TABLE.=',1pg20.13/
388 & 5x,'NON REVERSIBLE NEGATIVE LIMIT FORCE . .=',1pg20.13/
389 & 5x,'NON REVERSIBLE POSITIVE LIMIT FORCE . .=',1pg20.13/)
390
391 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
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)