41
47
48
49
50#include "implicit_f.inc"
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66#include "tablen_c.inc"
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 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
93 INTEGER IOUT,NUVAR,IGTYP,ID,IUNIT
95 CHARACTER(LEN=NCHARTITLE) :: TITR
96 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
97 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
98
99
100
101
102 INTEGER IFUNC1,IFUNC2,IFUNC3,IFUNC4,IFUNC5,IERROR,KFUNC,
103 . EPSI,IDENS
105 . amas,elastif,xlim1,xlim2,xk,damp,fac_m, fac_l, fac_t,fscale,
106 . scalet,scalex,scalev,scalef,r_epsi,scalex_unit,scalev_unit
107 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
108
109
110 INTEGER SET_U_PNU,SET_U_GEO
112 parameter(kfunc=29)
113
114
115
116
117
118 is_encrypted = .false.
119 is_available = .false.
120
121
122
123
125
126
127
128 CALL hm_get_intv(
'FUN_A1',ifunc1,is_available,lsubmodel)
129 CALL hm_get_intv(
'FUN_B1',ifunc2,is_available,lsubmodel)
130 CALL hm_get_intv(
'FUN_C1',ifunc3,is_available,lsubmodel)
131 CALL hm_get_intv(
'FUN_D1',ifunc4,is_available,lsubmodel)
132 CALL hm_get_intv(
'MAT_IMASS',idens,is_available,lsubmodel)
133 CALL hm_get_intv(
'EPSI',epsi,is_available,lsubmodel)
134
135
136
137 CALL hm_get_floatv(
'PROP_MASS',amas,is_available,lsubmodel,unitab)
138 CALL hm_get_floatv(
'STIFF0',elastif,is_available,lsubmodel,unitab)
139 CALL hm_get_floatv(
'VEL_X',xlim1,is_available,lsubmodel,unitab)
140 CALL hm_get_floatv(
'NFORCE',xlim2,is_available,lsubmodel,unitab)
141 CALL hm_get_floatv(
'STIFF1',xk,is_available,lsubmodel,unitab)
142 CALL hm_get_floatv(
'DAMP1',damp,is_available,lsubmodel,unitab)
143
144 CALL hm_get_floatv(
'FScale11',scalet,is_available,lsubmodel,unitab)
145 CALL hm_get_floatv(
'FScale22',scalex,is_available,lsubmodel,unitab)
146 CALL hm_get_floatv(
'FScale21',scalev,is_available,lsubmodel,unitab)
147 CALL hm_get_floatv(
'FScale12',scalef,is_available,lsubmodel,unitab)
148
151
152
153 IF(.NOT. is_encrypted)THEN
155 ELSE
157 ENDIF
158
159 fac_m = unitab%FAC_M(iunit)
160 fac_l = unitab%FAC_L(iunit)
161 fac_t = unitab%FAC_T(iunit)
162 fscale = fac_m * fac_l / (fac_t **two)
163
164
165 nuvar = 4
166
167
168 IF (xk == zero)THEN
169 xk = elastif
170 ENDIF
171 pargeo(1) = zero
172 pargeo(2) = xk
173
174 pargeo(3) = one
175
176 IF (xlim1 == zero) xlim1 = ep30*scalev_unit
177 IF (scalet == zero) scalet = one*fac_t
178 IF (scalex == zero) scalex = one*scalex_unit
179 IF (scalev == zero) scalev = one*scalev_unit
180 IF (scalef == zero) scalef = one*fscale
181
188 r_epsi = epsi
194 ierror =
set_u_geo(12,(real(idens)+em05))
195
196 ifunc5 = 0
202
203 IF(.NOT. is_encrypted)THEN
204 WRITE(iout,1000)
205 . amas,elastif,xlim1,xlim2,xk,damp,epsi,
206 . ifunc1,ifunc2,ifunc3,
207 . ifunc4,idens,scalef,scalet,scalex,scalev
208 ENDIF
209
210
211
212
213
214 prop_tag(igtyp)%G_FOR = 3
215 prop_tag(igtyp)%G_MOM = 5
216 prop_tag(igtyp)%G_SKEW = 6
217 prop_tag(igtyp)%G_MASS = 1
218 prop_tag(igtyp)%G_V_REPCVT = 3
219 prop_tag(igtyp)%G_VR_REPCVT = 3
220 prop_tag(igtyp)%G_NUVAR = nuvar
221
222 RETURN
223
224 1000 FORMAT(
225 & 5x,'MASS PER ELEMENT . . . . . . . . . . . . .=',e12.4/,
226 & 5x,'STIFFNESS PER UNIT LENGTH. . . . . . . . .=',e12.4/,
227 & 5x,'MAXIMUM STRAIN RATE. . . . . . . . . . . .=',e12.4/,
228 & 5x,'MAXIMUM FORCE. . . . . . . . . . . . . . .=',e12.4/,
229 & 5x,'STIFFNESS FOR INTERFACE. . . . . . . . . .=',e12
230 & 5x,'DAMPING VALUE. . . . . . . . . . . . . . .=',e12.4/,
231 & 5x,'ELONGATION CALCULATION FLAG:1=L;0=L/L_o-1 =',i10/,
232
233 & 5x,'FORCE VS. TIME ACTIVE FUNCTION ID. . . . .=',i10/,
234 & 5x,'FORCE VS. DEFLECTION ACTIVE FUNCTION ID. .=',i10/,
235 & 5x,'force vs. velocity active
FUNCTION id. . .=
',I10/,
236 & 5X,'force vs. deflection passive function
id .=
',I10/,
237
238 & 5X,'flag
for mass input. . . . . . . . . . . .=
',I10/,
239 & 5X,'force scale factor . . . . . . . . . . . .=',E12.4/,
240 & 5X,'time scale factor . . . . . . . . . . . .=',E12.4/,
241 & 5X,'elongation scale factor . . . . . . . . .=',E12.4/,
242 & 5X,'velocity scale factor . . . . . . . . . .=',E12.4//)
243
244 1400 FORMAT(
245 & 5X,'user property set'/,
246 & 5X,'property set number . . . . . . . . . .=',I10)
247
248 1500 FORMAT(
249 & 5X,'user property set'/,
250 & 5X,'property set number . . . . . . . . . .=',I10,
251 & 5X,'confidential data'//)
252
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)
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)