42
43
44
49 USE defaults_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "units_c.inc"
59#include "com04_c.inc"
60#include "param_c.inc"
61#include "tablen_c.inc"
62
63
64
65 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
66 INTEGER IGEO(NPROPGI),IG,ISKN(LISKN,*),SUB_ID,IGTYP
69 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
70 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
71 TYPE(SOLID_DEFAULTS_), INTENT(IN) :: DEFAULTS_SOLID
72
73
74
75 INTEGER IHBE,ISMSTR,IPLAST,ICPRE,ICSTR,NPT,NPTR,NPTS,NPTT,
76 . IINT,JCVT,IP,ISK,IREP,IDSK,ISTRAIN,NLY
78 . cvis,qa,qb,vx,vy,vz,angle,dtmin,pun,vdefmin,vdefmax,aspmax,asptet
79 INTEGER J,IHBE_DS,ISST_DS,ICONTROL_D,ICONTROL
80 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
81 CHARACTER(LEN=NCHARTITLE)::IDTITL
82
83
84
85 DATA pun/0.1/
86
87
88
89
90
91
92 is_encrypted = .false.
93 is_available = .false.
94
95
96
97 istrain = 1
98 iplast = 2
99 jcvt = 2
100 iint = 1
101 icpre = 0
102
103
104 ihbe_ds= defaults_solid%ISOLID
105 isst_ds= defaults_solid%ISMSTR
106 icontrol_d=defaults_solid%ICONTROL
107
108 igeo( 1)=ig
109 igeo(11)=igtyp
110 geo(12) =igtyp+pun
111
112 npt = 0
113
114
115
116
118
119
120
121 CALL hm_get_intv(
'ISOLID',ihbe,is_available,lsubmodel)
122 CALL hm_get_intv(
'Ismstr',ismstr,is_available,lsubmodel)
123 CALL hm_get_intv(
'Icstr',icstr,is_available,lsubmodel)
125 CALL hm_get_intv(
'SKEW_CSID',idsk,is_available,lsubmodel)
126 CALL hm_get_intv(
'Iorth',irep,is_available,lsubmodel)
127 CALL hm_get_intv(
'Icontrol',icontrol,is_available,lsubmodel)
128
129
130
132 CALL hm_get_floatv(
'VECTOR_X',vx,is_available,lsubmodel,unitab)
133 CALL hm_get_floatv(
'VECTOR_Y',vy,is_available,lsubmodel,unitab)
134 CALL hm_get_floatv(
'VECTOR_Z',vz,is_available,lsubmodel,unitab)
135 CALL hm_get_floatv(
'MAT_BETA',angle,is_available,lsubmodel,unitab)
138 CALL hm_get_floatv(
'deltaT_min',dtmin,is_available,lsubmodel,unitab)
139 CALL hm_get_floatv(
'vdef_min',vdefmin,is_available,lsubmodel,unitab)
140 CALL hm_get_floatv(
'vdef_max',vdefmax,is_available,lsubmodel,unitab)
141 CALL hm_get_floatv(
'ASP_max',aspmax,is_available,lsubmodel,unitab)
142 CALL hm_get_floatv(
'COL_min',asptet,is_available,lsubmodel,unitab)
143
144
145
146 IF (sub_id /= 0)
147 .
CALL subrotvect(vx,vy,vz,rtrans,sub_id,lsubmodel)
148
149
150
151
152
153 IF (ihbe == 0) ihbe = ihbe_ds
154 IF (ihbe /= 14 .AND. ihbe /= 15) THEN
155
156
157
159 . msgtype=msgerror,
160 . anmode=aninfo_blind_1,
161 . i1=ig,
162 . c1=idtitl,
163 . i2=ihbe,
164 . i3=21)
165 ENDIF
166
167
168 IF(ismstr == 0) ismstr=isst_ds
169 IF(ismstr == 0) ismstr=4
170 IF (isst_ds == -2.OR.ismstr<0) ismstr=4
171
172
173
174
175 ip = 0
176 IF (ihbe == 14 .AND. icstr == 0) icstr = 10
177 IF (ihbe == 14 .AND.
178 . (icstr /= 1.AND.icstr /= 10.AND.icstr /= 100)) THEN
180 . msgtype=msgerror,
181 . anmode=aninfo_blind_1,
182 . i1=ig,
183 . c1=idtitl,
184 . i2=icstr)
185 ELSE
186 SELECT CASE (icstr)
187 CASE(100)
188 ip = 2
189 CASE(10)
190 ip = 3
191 CASE(1)
192 ip = 1
193 END SELECT
194 END IF
195
196
197
198 nly = 0
199 SELECT CASE (ihbe)
200 CASE(15)
201 IF (npt == 0) npt = 3
202 IF (npt < 1 .OR. npt > 9) THEN
204 . msgtype=msgerror,
205 . anmode=aninfo_blind_1,
206 . i1=ig,
207 . c1=idtitl,
208 . i2=npt,
209 . i3=ihbe)
210 ENDIF
211 nly = npt
212 CASE(14)
213 IF (npt == 0) npt = 222
214 nptr= npt/100
215 npts= mod(npt/10,10)
216 nptt= mod(npt,10)
217 SELECT CASE(icstr)
218 CASE(1)
219 nly = nptt
220 CASE(10)
221 nly = npts
222 CASE(100)
223 nly = nptr
224 END SELECT
225 IF (ihbe == 14 .AND.
226 . (nptr < 1 .OR. npts < 1 .OR. nptt < 1 .OR.
227 . nptr > 9 .OR. npts > 9 .OR. nptt > 9)) THEN
229 . msgtype=msgerror,
230 . anmode=aninfo_blind_1,
231 . i1=ig,
232 . c1=idtitl,
233 . i2=npt,
234 . i3=ihbe)
235 ENDIF
236 END SELECT
237
238 IF (icontrol==0) icontrol=icontrol_d
239 IF (icontrol>1) icontrol=0
240
241
242
243
244 IF (cvis == zero) THEN
245 cvis = em01
246 ENDIF
247
248 IF(qa == zero .AND. qb == zero) igeo(31) = 1
249 IF (qa == zero) qa = onep1
250 IF (qb == zero) qb = fiveem2
251
252
253
254 IF (ihbe /= 14) ip = 3
255
256 isk = 0
257 IF (idsk/=0) THEN
258 DO j=0,numskw
259 IF(idsk==iskn(4,j+1)) THEN
260 isk=j+1
261 GO TO 10
262 ENDIF
263 ENDDO
265 . msgtype=msgerror,
266 . anmode=aninfo,
267 . c1='PROPERTY',
268 . i1=ig,
269 . c2='PROPERTY',
270 . c3=idtitl,
271 . i2=idsk)
272 10 CONTINUE
273 ENDIF
274 IF (ip <= 0) THEN
275 DO j=0,numskw
276 IF(isk == iskn(4,j+1)) THEN
277 ip=-(j+1)
278 GO TO 100
279 ENDIF
280 ENDDO
281 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
282 . c1='PROPERTY',
283 . c2='PROPERTY',
284 . i2=isk,
285 . i1=ig,
286 . c3=idtitl)
287100 CONTINUE
288 ENDIF
289 igeo(2) = ip
290 igeo(4) = npt
291 igeo(5) = ismstr
292 igeo(6) = irep
293 igeo(7) = isk
294 igeo(9) = iplast-1
295 igeo(10) = ihbe
296 igeo(12) = istrain
297 igeo(13) = icpre
298 igeo(14) = icstr
299 igeo(15) = iint
300 igeo(16) = jcvt-1
301 igeo(30) = nly
302 igeo(97) = icontrol
303
304 geo(1) = angle
305 geo(7) = vx
306 geo(8) = vy
307 geo(9) = vz
308 geo(13) = cvis
309 geo(14) = qa
310 geo(15) = qb
311 geo(172) = dtmin
312 geo(172) = dtmin
313 geo(190)= vdefmin
314 geo(191)= vdefmax
315 geo(192)= aspmax
316 geo(193)= asptet
317
318 IF(.NOT.is_encrypted)THEN
319 IF(igeo(31) == 1)THEN
320 WRITE(iout,1100)ig,ihbe,ismstr,npt,icstr,
321 . cvis,qa,qb,dtmin,icontrol
322 ELSE
323 WRITE(iout,1000)ig,ihbe,ismstr,npt,icstr,
324 . cvis,qa,qb,dtmin,icontrol
325 ENDIF
326 IF(isk == 0)THEN
327 WRITE(iout,1002) geo(7),geo(8),geo(9),irep,angle
328 ELSE
329 WRITE(iout,1001) idsk,irep,angle
330 ENDIF
331 ELSE
332 WRITE(iout,1099) ig
333 ENDIF
334 IF((vdefmin+vdefmax+aspmax+asptet)>zero) THEN
335 IF (vdefmax==zero) vdefmax=ep10
336 IF (aspmax==zero) aspmax=ep10
337 WRITE(iout,3000) vdefmin,vdefmax,aspmax,asptet
338 END IF
339
340 IF(geo( 3)/=zero.AND.igeo( 5)== 0) igeo( 5)=nint(geo( 3))
341 IF(geo(39)/=zero.AND.igeo( 9)== 0) igeo( 9)=nint(geo(39))
342 IF(geo(171)/=zero.AND.igeo(10)== 0)igeo(10)=nint(geo(171))
343
344 IF (geo(16) /= zero .OR. geo(17) /= zero) THEN
345 igeo(33) = 1
346 ENDIF
347
348 igeo(17)=1
349
350
351
352
353 prop_tag(igtyp)%G_SIG = 6
354 prop_tag(igtyp)%G_VOL = 1
355 prop_tag(igtyp)%G_EINT = 1
356 prop_tag(igtyp)%G_QVIS = 1
357 prop_tag(igtyp)%L_SIG = 6
358 prop_tag(igtyp)%L_EINT = 1
359 prop_tag(igtyp)%L_VOL = 1
360 prop_tag(igtyp)%L_QVIS = 1
361 prop_tag(igtyp)%G_FILL = 1
362
363 prop_tag(igtyp)%G_GAMA = 6
364 prop_tag(igtyp)%L_SIGL = 6
365
366
367 prop_tag(igtyp)%L_GAMA = 6
368
369
370
371 RETURN
372
373 1000 FORMAT(
374 & 5x,'ORTHOTROPIC THICK SHELL PROPERTY SET'/,
375 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
376 & 5x,'FORMULATION FLAG. . . . . . . . . . . .=',i10/,
377 & 5x,'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
378 & 5x,'NUMBER OF INTEGRATION POINTS. . . . .=',i10/,
379 & 5x,'CONSTANT STRESS FLAG. . . . . . . . . .=',i10/,
380 & 5x,'HOURGLASS NUMERICAL DAMPING . . . . . .=',1pg20.13/,
381 & 5x,'QUADRATIC BULK VISCOSITY. . . . . . . .=',1pg20.13/,
382 & 5x,'LINEAR BULK VISCOSITY . . . . . . . . .=',1pg20.13/,
383 & 5x,'BRICK MINIMUM TIME STEP................=',1pg20.13/,
384 & 5x,'SOLID DISTORTION CONTROL FLAG . . . . .=',i10/)
385 1001 FORMAT(
386 & 5x,'ORTHOTROPIC SKEW FRAME. . . . . . . . .=',i10/,
387 & 5x,'LOCAL ORTHOTROPY SYSTEM FORMULATION . .=',i10/,
388 & 5x,'ORTHOTROPIC ANGLE . . . . . . . . . . .=',1pg20.13/)
389 1002 FORMAT(
390 & 5x,'REFERENCE VECTOR VX . . . . . . . . . .=',1pg20.13/,
391 & 5x,'REFERENCE VECTOR VY . . . . . . . . . .=',1pg20.13/,
392 & 5x,'REFERENCE VECTOR VZ . . . . . . . . . .=',1pg20.13/,
393 & 5x,'LOCAL ORTHOTROPY SYSTEM FORMULATION . .=',i10/,
394 & 5x,'ORTHOTROPIC ANGLE . . . . . . . . . . .=',1pg20.13/)
395 1099 FORMAT(
396 & 5x,'ORTHOTROPIC THICK SHELL PROPERTY SET'/,
397 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i8/,
398 & 5x,'CONFIDENTIAL DATA'//)
399 1100 FORMAT(
400 & 5x,'ORTHOTROPIC THICK SHELL PROPERTY SET'/,
401 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
402 & 5x,'FORMULATION FLAG. . . . . . . . . . . .=',i10/,
403 & 5x,'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
404 & 5x,'NUMBER OF INTEGRATION POINTS. . . . .=',i10/,
405 & 5x,'CONSTANT STRESS FLAG. . . . . . . . . .=',i10/,
406 & 5x,'HOURGLASS NUMERICAL DAMPING . . . . . .=',1pg20.13/,
407 & 5x,'DEFAULT VALUE FOR QUADRATIC BULK. . . . ',/,
408 & 5x,' VISCOSITY (QA) WILL BE USED. . . .=',1pg20.13/,
409 & 5x,'EXCEPT IN CASE LAW 70 WHERE QA = 0. ',/,
410 & 5x,'DEFAULT VALUE FOR LINEAR BULK . . . . . ',/,
411 & 5x,' VISCOSITY (QB) WILL BE USED . . . =',1pg20.13/,
412 & 5x,'EXCEPT IN CASE LAW 70 WHERE QB = 0. ',/,
413 & 5x,'BRICK MINIMUM TIME STEP................=',1pg20.13/,
414 & 5x,'SOLID DISTORTION CONTROL FLAG . . . . .=',i10/)
415 3000 FORMAT(
416 & 5x,'SOLID MINIMUM VOLUMETRIC STRAIN........=',1pg20.13/,
417 & 5x,'SOLID MAXIMUM VOLUMETRIC STRAIN........=',1pg20.13/,
418 & 5x,'SOLID MAXIMUM ASPECT RATIO.............=',1pg20.13/,
419 & 5x,'SOLID MINIMUM COLLAPSE RATIO...........=',1pg20.13/)
420
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
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)
subroutine subrotvect(x, y, z, rtrans, sub_id, lsubmodel)