42
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "tablen_c.inc"
56
57
58
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 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
96 INTEGER IOUT,NUVAR,IGTYP
98 INTEGER SET_U_PNU,SET_U_GEO,KFUNC
100 parameter(kfunc=29)
101 INTEGER IG
102 CHARACTER(LEN=NCHARTITLE) :: TITR
103 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
104 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
105
106
107
108
109 INTEGER IFUNC1,IFUNC2,ISENS,IERROR,ITYP,ILOCK
111 . amas,aa,stif00,stif0,stif1,e1
112 . t_unit,l_unit,f_unit
113 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
114
115
116 is_encrypted = .false.
117 is_available = .false.
118
119
120
122
123
124
125 CALL hm_get_intv(
'ISENSOR',isens,is_available,lsubmodel)
126 CALL hm_get_intv(
'ILock',ilock,is_available,lsubmodel)
127 CALL hm_get_intv(
'FUN_A1',ifunc1,is_available,lsubmodel)
128 CALL hm_get_intv(
'FUN_B1',ifunc2,is_available,lsubmodel)
129
130
131
132 CALL hm_get_floatv(
'MASS',amas,is_available,lsubmodel,unitab)
134 CALL hm_get_floatv(
'STIFF1',stif1,is_available,lsubmodel,unitab)
135 CALL hm_get_floatv(
'SPR_PRE_F1',f1,is_available,lsubmodel,unitab)
136 CALL hm_get_floatv(
'SPR_PRE_D1',d1,is_available,lsubmodel,unitab
137 CALL hm_get_floatv(
'SPR_PRE_E1',e1,is_available,lsubmodel,unitab)
138 CALL hm_get_floatv(
'Scale_t',tscal,is_available,lsubmodel,unitab)
140 CALL hm_get_floatv(
'Scale_f',fscal,is_available,lsubmodel,unitab)
141
145
146
147
148 IF(.NOT. is_encrypted)THEN
149 WRITE(iout,1400) ig
150 ELSE
151 WRITE(iout,1500) ig
152 ENDIF
153
154 nuvar = 4
155
156 IF (tscal == zero) tscal = one * t_unit
158 IF (fscal == zero) fscal = one * f_unit
159
160 d1 = -abs(d1)
161 stif00=em20
162 IF(ifunc1/=0.AND.ifunc2/=0)THEN
163 ityp=4
164 ELSEIF(ifunc2/=0)THEN
165 ityp=3
166 ELSEIF(ifunc1/=0)THEN
167 ityp=2
168 ELSE
169 ityp=1
170 IF(f1/=0..AND.d1/=0.)THEN
171 IF(e1/=0..OR.stif1/=0.)THEN
173 . msgtype=msgerror,
174 . anmode=aninfo_blind_2,
175 . i1=ig,
176 . c1=titr)
177 ENDIF
178 ELSEIF(f1/=0..AND.e1/=0.)THEN
179 IF(stif1/=0.)THEN
181 . msgtype=msgerror,
182 . anmode=aninfo_blind_2,
183 . i1=ig,
184 . c1=titr)
185 ENDIF
186 ELSEIF(d1/=0..AND.e1/=0.)THEN
187 IF(stif1/=0.)THEN
189 . msgtype=msgerror,
190 . anmode=aninfo_blind_2,
191 . i1=ig,
192 . c1=titr)
193 ENDIF
194 ENDIF
195 IF(f1/=zero)THEN
196 IF(d1/=zero)THEN
197 stif1=-f1/d1
198 ELSEIF(e1/=zero)THEN
199 stif1=half*f1*f1/e1
200 ELSEIF(stif1==zero)THEN
201 stif1=stif00
202 ENDIF
203 d1=-f1/stif1
204 e1=-half*f1*d1
205 ELSEIF(d1/=zero)THEN
206 IF(e1/=zero)THEN
207 stif1=two*e1/d1/d1
208 ELSEIF(stif1==zero)THEN
209 stif1=stif00
210 ENDIF
211 f1=-stif1*d1
212 e1=-half*f1*d1
213 ELSEIF(e1/=zero)THEN
214 IF(stif1==zero)THEN
215 stif1=stif00
216 ENDIF
217 f1=sqrt(two*e1*stif1)
218 d1=-f1/stif1
219 ELSE
220 IF(stif1==zero)THEN
221 stif1=stif00
222 ENDIF
223 f1=zero
224 e1=zero
225 d1=zero
226 ENDIF
227 ENDIF
228 IF(stif1==zero)stif1=stif0
229 aa = isens
231 aa = ityp
233 aa = ilock
235
236 pargeo(1) = 0
237 pargeo(2) = stif0+stif1
238
239 IF(.NOT. is_encrypted)THEN
240 IF(ityp==1)THEN
241 WRITE(iout,1001)amas,stif0,isens,ilock,f1,d1,e1,stif1
242 ELSEIF(ityp==2)THEN
243 WRITE(iout,1002)amas,stif0,isens,ilock,ifunc1,
dscal
244 ELSEIF(ityp==3)THEN
245 WRITE(iout,1003)amas,stif0,isens,ilock,ifunc2,tscal
246 ELSEIF(ityp==4)THEN
247 WRITE(iout,1004)amas,stif0,isens,ilock,ifunc1,
dscal,ifunc2,tscal
248 ENDIF
249 ENDIF
250
261
262
263
264
265
266 prop_tag(igtyp)%G_FOR = 3
267 prop_tag(igtyp)%G_MOM = 3
268 prop_tag(igtyp)%G_SKEW = 3
269 prop_tag(igtyp)%G_SKEW_ERR = 3
270 prop_tag(igtyp)%G_MASS = 1
271 prop_tag(igtyp)%G_V_REPCVT = 3
272 prop_tag(igtyp)%G_VR_REPCVT = 3
273 prop_tag(igtyp)%G_NUVAR = nuvar
274
275 RETURN
277 . msgtype=msgerror,
278 . anmode=aninfo,
279 . i1=ig,
280 . c2=titr,
281 . c1='USER 32')
282 RETURN
283 1001 FORMAT(
284 & 5x,'LINEAR PRETENSION SPRING',/,
285 & 5x,'MASS. . . . . . . . . . . . . . . . . .=',1pg20.13/,
286 & 5x,'STIFFNESS BEFORE SENSOR ACTIVATION. . .=',1pg20.13/,
287 & 5x,'ACTIVATION SENSOR ID. . . . . . . . . .=',i10/,
288 & 5x,'FLAG FOR LOCK FEATURE ACTIVATION. . . .=',i10/,
289 & 5x,'FORCE AFTER SENSOR ACTIVATION . . . . .=',1pg20.13/,
290 & 5x,'MAX RETRACTION AFTER SENSOR ACTIVATION.=',1pg20.13/,
291 & 5x,'INITIAL ENERGY AFTER SENSOR ACTIVATION.=',1pg20.13/,
292 & 5x,'STIFFNESS AFTER SENSOR ACTIVATION . . .=',1pg20.13//)
293 1002 FORMAT(
294 & 5x,'NON LINEAR PRETENSION SPRING',/,
295 & 5x,'----------------------------',/,
296 & 5x,' DISPLACEMENT DEPENDING F=f(x-x0)',/,
297 & 5x,'MASS. . . . . . . . . . . . . . . . . .=',1pg20.13/,
298 & 5x,'STIFFNESS BEFORE SENSOR ACTIVATION. . .=',1pg20.13/,
299 & 5x,'ACTIVATION SENSOR ID. . . . . . . . . .=',i10/,
300 & 5x,'FLAG FOR LOCK FEATURE ACTIVATION. . . .=',i10/,
301 & 5x,'FORCE SCALE VERSUS DISP. FUNCTION ID. .=',i10/,
302 & 5x,'ABSCISSA SCALE FACTOR ON CURVE. . . . .=',1pg20.13//)
303 1003 FORMAT(
304 & 5x,'NON LINEAR PRETENSION SPRING',/,
305 & 5x,'----------------------------',/,
306 & 5x,' TIME DEPENDING F=f(t-t0)',/,
307 & 5x,'MASS. . . . . . . . . . . . . . . . . .=',1pg20.13/,
308 & 5x,'STIFFNESS BEFORE SENSOR ACTIVATION. . .=',1pg20.13/,
309 & 5x,'ACTIVATION SENSOR ID. . . . . . . . . .=',i10/,
310 & 5x,'LOCK FEATURE. . . . . . . . . . . . . .=',i10/,
311 & 5x,'FORCE SCALE VERSUS TIME FUNCTION ID . .=',i10/,
312 & 5x,'ABSCISSA SCALE FACTOR ON CURVE. . . . .=',1pg20.13//)
313 1004 FORMAT(
314 & 5x,'NON LINEAR PRETENSION SPRING',/,
315 & 5x,'----------------------------',/,
316 & 5x,' DISPLACEMENT AND TIME DEPENDING F=g(t-t0)*f(x-x0)',/,
317 & 5x,'MASS. . . . . . . . . . . . . . . . . .=',1pg20.13/,
318 & 5x,'STIFFNESS BEFORE SENSOR ACTIVATION. . .=',1pg20.13/,
319 & 5x,'ACTIVATION SENSOR ID. . . . . . . . . .=',i10/,
320 & 5x,'FLAG FOR LOCK FEATURE ACTIVATION. . . .=',i10/,
321 & 5x,'FORCE SCALE VERSUS DISP. FUNCTION ID. .=',i10/,
322 & 5x,'ABSCISSA SCALE FACTOR ON CURVE. . . . .=',1pg20.13/,
323 & 5x,'FORCE SCALE VERSUS TIME FUNCTION ID . .=',i10/,
324 & 5x,'ABSCISSA SCALE FACTOR ON CURVE. . . . .=',1pg20.13//)
325
326 1400 FORMAT(
327 & 5x,'USER PROPERTY SET'/,
328 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10)
329
330 1500 FORMAT(
331 & 5x,'USER PROPERTY SET'/,
332 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10,
333 & 5x,'CONFIDENTIAL DATA'//)
334
subroutine dscal(n, da, dx, incx)
DSCAL
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)
integer function set_u_pnu(ivar, ip, k)
integer function set_u_geo(ivar, a)