43
44
45
51 USE defaults_mod
52
53
54
55#include "implicit_f.inc"
56
57
58
59#include "units_c.inc"
60#include "com01_c.inc"
61#include "com04_c.inc"
62#include "param_c.inc"
63#include "scr16_c.inc"
64#include "scr17_c.inc"
65#include "tablen_c.inc"
66#include "sphcom.inc"
67
68
69
70 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
71 INTEGER
72 . IGTYP , IGEO(*),ISKN(,*), IG
73 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
74 my_real geo(*),rtrans(ntransf,*)
75
76 CHARACTER(LEN=NCHARTITLE)::IDTITL
77
78 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
79 TYPE(SHELL_DEFAULTS_), INTENT(IN) :: DEFAULTS_SHELL
80
81
82
83 INTEGER I, ISMSTR, NIP, J,
84 . ISHEAR, IP, ISTRAIN,
85 . IHBE,IPLAST,ITHK,IBID,IDF,IHBEOUTP,K,N,
86 . IUNIT,ISEN,ISS,
87 . PID1,IPID1, IHGFLU, IHBE_OLD,NSTACK,IGMAT,NN,NUMS
88 INTEGER FLAG_FMT,FLAG_FMT_TMP
89 INTEGER ISH3N,ISROT,SUB_ID,IRP,IDSK,ISK,IUN,IPOS
90 INTEGER IHBE_D,IPLA_D,ISTR_D,ITHK_D,ISHEA_D,ISST_D,
91 . ISH3N_D, ISTRA_D,NPTS_D,IDRIL_D
92
94 . angl,pun,cvis,rbid,vx,vy,vz,
95 . pthk, an, phi,zshift
96 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
97 CHARACTER(LEN=NCHARTITLE) :: TITR
98
99
100
101 DATA iun/1/
102 DATA pun/0.1/
103
104
105
106
107
108 ihbe=0
109 ismstr=0
110 isrot=0
111 igmat =0
112 pthk = zero
113 irp = 0
114 idsk = 0
115 ipos = 0
116
117 is_encrypted = .false.
118 is_available = .false.
119
120 ihbe_d = defaults_shell%ishell
121 ish3n_d= defaults_shell%ish3n
122 isst_d = defaults_shell%ismstr
123 ipla_d = defaults_shell%iplas
124 ithk_d = defaults_shell%ithick
125 idril_d= defaults_shell%idrill
126 ishea_d = 0
127 npts_d = 0
128 istra_d = 1
129
130
131
132 ishear = 0
133
134 cvis = zero
135
136 isen = 0
137
138
139
141
142
143
144 CALL hm_get_intv(
'Ishell',ihbe,is_available,lsubmodel)
145 CALL hm_get_intv(
'Ismstr',ismstr,is_available,lsubmodel)
146 CALL hm_get_intv(
'ISH3N',ish3n,is_available,lsubmodel)
147 CALL hm_get_intv(
'Idrill',isrot,is_available,lsubmodel)
149
150 CALL hm_get_intv(
'ITHICK',ithk,is_available,lsubmodel)
151 CALL hm_get_intv(
'IPLAS',iplast,is_available,lsubmodel)
152 CALL hm_get_intv(
'SKEW_CSID',idsk,is_available,lsubmodel)
153 CALL hm_get_intv(
'Ipos',ipos,is_available,lsubmodel)
155
156
157
159 CALL hm_get_floatv(
'Hm',geo(13),is_available,lsubmodel,unitab)
160 CALL hm_get_floatv('hf
',GEO(14),IS_AVAILABLE,LSUBMODEL,UNITAB)
161 CALL HM_GET_FLOATV('hr',GEO(15),IS_AVAILABLE,LSUBMODEL,UNITAB)
162 CALL HM_GET_FLOATV('dm',GEO(16),IS_AVAILABLE,LSUBMODEL,UNITAB)
163 CALL HM_GET_FLOATV('dn',GEO(17),IS_AVAILABLE,LSUBMODEL,UNITAB)
164 CALL HM_GET_FLOATV('thick',GEO(1),IS_AVAILABLE,LSUBMODEL,UNITAB)
165 CALL HM_GET_FLOATV('area_shear',GEO(38),IS_AVAILABLE,LSUBMODEL,UNITAB)
166 CALL HM_GET_FLOATV('v_x',VX,IS_AVAILABLE,LSUBMODEL,UNITAB)
167 CALL HM_GET_FLOATV('v_y',VY,IS_AVAILABLE,LSUBMODEL,UNITAB)
168 CALL HM_GET_FLOATV('v_z',VZ,IS_AVAILABLE,LSUBMODEL,UNITAB)
169 CALL HM_GET_FLOATV('mat_beta',PHI,IS_AVAILABLE,LSUBMODEL,UNITAB)
170
171
172
173 IF (SUB_ID /= 0)
174 . CALL SUBROTVECT(VX,VY,VZ,RTRANS,SUB_ID,LSUBMODEL)
175
176
177
178 ISTRAIN=1
179 IF (PTHK == ZERO) PTHK = ONE-EM06
180 PTHK = MIN(PTHK, ONE)
181 PTHK = MAX(PTHK,-ONE)
182 GEO(42) = PTHK
183
184 IF(IHBE==0)IHBE=IHBE_D
185 IHBEOUTP=IHBE
186.AND..AND. IF (IHBE == 4 ISH3N==0 ISH3N_D == 1) THEN
187 CALL ANCMSG(MSGID=680,
188 . MSGTYPE=MSGWARNING,
189 . ANMODE=ANINFO_BLIND_1,
190 . I1=IG,
191 . C1=IDTITL)
192 ENDIF
193.OR. IF (IHBE==22IHBE==23) THEN
194 CALL ANCMSG(MSGID=539,
195 . MSGTYPE=MSGWARNING,
196 . ANMODE=ANINFO_BLIND_1,
197 . I1=IG,
198 . C1=IDTITL)
199 IHBE=24
200 ENDIF
201 IF(ISH3N==0) ISH3N = ISH3N_D
202 IGEO(18) = ISH3N
203 IF (GEO(16) == ZERO) IGEO(31) = 1
204
205 IF (IHBE==24) THEN
206 IF (CVIS==ZERO) CVIS=ONE
207 IF (GEO(17)==ZERO) GEO(17)=ZEP015
208 IF (GEO(16)==ZERO) THEN
209
210
211 END IF
212 ENDIF
213
214 IF(ISMSTR==0)ISMSTR=ISST_D
215 IF (ISST_D == -2) ISMSTR = -1
216 IF(IHBE==3)THEN
217 IF(GEO(13)==ZERO)GEO(13)=EM01
218 IF(GEO(14)==ZERO)GEO(14)=EM01
219 IF(GEO(15)==ZERO)GEO(15)=EM02
220 ELSE
221 IF(GEO(13)==ZERO)GEO(13)=EM02
222 IF(GEO(14)==ZERO)GEO(14)=EM02
223 IF(GEO(15)==ZERO)GEO(15)=EM02
224 ENDIF
225 IF(ISROT==0)ISROT=IDRIL_D
226 IF(ISROT==2) ISROT = 0
227 IGEO(20)=ISROT
228
229.AND..AND. IF (ISMSTR==10ISROT>0IDROT==0) IDROT = 1
230
231
232.AND..AND. IF(N2D>0IHBE/=0IHBE/=2)THEN
233 IHBE_OLD=IHBE
234 IHBE=0
235 CALL ANCMSG(MSGID=321,
236 . MSGTYPE=MSGWARNING,
237 . ANMODE=ANINFO_BLIND_2,
238 . I1=IG,
239 . C1=IDTITL,
240 . I2=IHBE_OLD,
241 . I3=IHBE)
242 ENDIF
243
244
245
246
247
248 GEO(3)=ISMSTR
249
250 IF(ISMSTR==3)THEN
251 GEO(5)=EP06
252 ENDIF
253
254
255 IGEO( 1)=IG
256 IGEO(10)=IHBE
257 IGEO(11)=IGTYP
258 GEO(12) =IGTYP+PUN
259 GEO(171)=IHBE
260
261.AND. IF (IHBE>11IHBE<29) THEN
262
263 GEO(13)=GEO(17)
264 GEO(17)=CVIS
265
266 ENDIF
267
268
269 IF(ISMSTR==0)ISMSTR=2
270 GEO(3)=ISMSTR
271 IGEO(5) = ISMSTR
272
273
274
275
276 ISH3N = IGEO(18)
277
278 IF (GEO(38) == ZERO)GEO(38)=FIVE_OVER_6
279 IF (NIP == -1)NIP=NPTS_D
280 IF (NIP == 0) NIP = 1
281 IF (NIP == 1) GEO(38)= ZERO
282 AN=SQRT(VX*VX+VY*VY+VZ*VZ)
283 IF(AN < EM10)THEN
284 VX=ONE
285 VY=ZERO
286 VZ=ZERO
287 IF (IRP==23) THEN
288 CALL ANCMSG(MSGID=1922,
289 . MSGTYPE=MSGERROR,
290 . ANMODE=ANINFO,
291 . C1='property',
292 . I1=IG,
293 . C2='property',
294 . C3=TITR,
295 . I2=IRP)
296 END IF
297 ELSE
298 VX=VX/AN
299 VY=VY/AN
300 VZ=VZ/AN
301 ENDIF
302 PHI=PHI/HUNDRED80*PI
303 GEO(6)=NIP ! to be cleaned
304 IGEO(4) = NIP
305
306
307 GEO(7)=VX
308 GEO(8)=VY
309 GEO(9)=VZ
310 GEO(10)=PHI
311 ISK = 0
312 IF (IDSK/=0) THEN
313 DO J=0,NUMSKW+MIN(IUN,NSPCOND)*NUMSPH+NSUBMOD
314 IF(IDSK == ISKN(4,J+1)) THEN
315 ISK=J+1
316 GO TO 10
317 ENDIF
318 END DO
319 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
320 CALL ANCMSG(MSGID=184,
321 . MSGTYPE=MSGERROR,
322 . ANMODE=ANINFO,
323 . C1='property',
324 . I1=IG,
325 . C2='property',
326 . C3=TITR,
327 . I2=IDSK)
328 10 CONTINUE
329 ENDIF
330.OR..AND. IF ((IRP==22IRP==25)ISK==0) THEN
331 CALL ANCMSG(MSGID=1923,
332 . MSGTYPE=MSGERROR,
333 . ANMODE=ANINFO,
334 . C1='property',
335 . I1=IG,
336 . C2='property',
337 . C3=TITR,
338 . I2=IRP)
339 END IF
340 IGEO(2)=ISK
341 IGEO(14) = IRP
342 IF(ITHK == 0)ITHK=ITHK_D
343 IF(ITHK_D==-2)ITHK=-1
344 IF(ISHEAR == 0)ISHEAR=ISHEA_D
345 IF(IPLAST == 0)IPLAST=IPLA_D
346 IF(IPLA_D==-2) IPLAST=-1
347
348 GEO(11)=ISTRAIN
349 IHBE=IGEO(10)
350 GEO(35)=ITHK
351 GEO(37)=ISHEAR
352 GEO(39)=IPLAST
353 IGEO(3)=ISEN
354 ISS = INT(GEO(3))
355 IG = IGEO(1)
356 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
357
358 IF(IS_ENCRYPTED)THEN
359 WRITE(IOUT,1000)IG
360 1000 FORMAT(
361 & 5X,'orthotropic shell property set'/,
362 & 5X,'------------------------------'/,
363 & 5X,'property set number . . . . . . . . . .=',I10/,
364 & 5X,'confidential data'//)
365 ELSE
366.AND. IF (IHBE>11IHBE<29) THEN
367 WRITE(IOUT,1011)IG,NIP,ISTRAIN,GEO(1),ISS,IHBE,
368 . ISH3N,IGEO(20) ,
369 . GEO(16),GEO(13),GEO(38),GEO(42),ISHEAR,ITHK,IPLAST,
370 . GEO(7),GEO(8),GEO(9),GEO(10),IDSK,IGEO(14),IPOS
371 ELSE
372 WRITE(IOUT,1010)IG,NIP,ISTRAIN,GEO(1),ISS,IHBE,
373 . ISH3N,
374 . GEO(13),GEO(14),GEO(15),GEO(16),
375 . GEO(38),GEO(42),ISHEAR,ITHK,IPLAST,
376 . GEO(7),GEO(8),GEO(9),GEO(10),IDSK,IGEO(14),IPOS
377 ENDIF
378 ENDIF
379
380 IF (NIP>10) THEN
381 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
382 CALL ANCMSG(MSGID=33,
383 . MSGTYPE=MSGERROR,
384 . ANMODE=ANINFO_BLIND_1,
385 . I1=IG,
386 . C1=TITR,
387 . I2=NIP)
388 ENDIF
389
390
391
392
393
394
395 IHBE=NINT(GEO(171))
396 IF(IHBE==0)THEN
397 GEO(171)=0
398 ELSEIF(IHBE==1)THEN
399 GEO(171)=1
400 ELSEIF(IHBE==2)THEN
401 GEO(171)=0
402.AND..AND. ELSEIF(IHBE>=3IHBE<100IHBE/=4)THEN
403 GEO(171)=IHBE-1
404 ENDIF
405
406
407 ISHEAR = GEO(37)
408 IF(ISHEAR==0)THEN
409 GEO(37)=0
410 ELSEIF(ISHEAR==1)THEN
411 GEO(37)=1
412 ELSEIF(ISHEAR==2)THEN
413 GEO(37)=0
414 ENDIF
415
416 IGEO(99) = IPOS
417 ZSHIFT = ZERO
418 IF (IPOS==3) THEN
419 ZSHIFT = -HALF
420 ELSEIF (IPOS==4) THEN
421 ZSHIFT = HALF
422 END IF
423 GEO(199) = ZSHIFT
424
425
426
427
428 PROP_TAG(IGTYP)%G_SIG = 0
429 PROP_TAG(IGTYP)%G_FOR = 5
430 PROP_TAG(IGTYP)%G_MOM = 3
431 PROP_TAG(IGTYP)%G_THK = 1
432 PROP_TAG(IGTYP)%G_EINT= 2
433 PROP_TAG(IGTYP)%G_EINS= 0
434 PROP_TAG(IGTYP)%G_AREA= 1
435 PROP_TAG(IGTYP)%L_SIG = 5
436
437 PROP_TAG(IGTYP)%L_THK = 0
438 PROP_TAG(IGTYP)%L_EINT= 2
439 PROP_TAG(IGTYP)%L_EINS= 0
440 PROP_TAG(IGTYP)%G_VOL = 0
441 PROP_TAG(IGTYP)%L_VOL = 0
442 PROP_TAG(IGTYP)%LY_DMG = 2
443
444 PROP_TAG(IGTYP)%LY_GAMA = 6
445 PROP_TAG(IGTYP)%LY_DIRA = 2
446
447 PROP_TAG(IGTYP)%LY_PLAPT = 1
448 PROP_TAG(IGTYP)%LY_SIGPT = 5
449 PROP_TAG(IGTYP)%G_FORPG = 5
450 PROP_TAG(IGTYP)%G_MOMPG = 3
451 PROP_TAG(IGTYP)%G_STRPG = 8
452
453
454
455
456
457 IGEO(1) =IG
458 IGEO(11)=IGTYP
459
460.AND. IF(GEO( 3)/=ZEROIGEO( 5)== 0)IGEO( 5)=NINT(GEO( 3))
461
462.AND. IF(GEO(39)/=ZEROIGEO( 9)== 0)IGEO( 9)=NINT(GEO(39))
463.AND. IF(GEO(171)/=ZEROIGEO(10)== 0)
464 . IGEO(10)=NINT(GEO(171))
465
466
467 RETURN
468
469 1010 FORMAT(
470 & 5X,'orthotropic shell property set'/,
471 & 5X,'property set number . . . . . . . . . .=',I10/,
472 & 5X,'number of integration points. . . . . .=',I10/,
473 & 5X,'post processing strain flag . . . . . .=',I10/,
474 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
475 & 5X,'small strain . . . . . . . . . . . . .=',I10/,
476 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
477 & 5X,'3node shell formulation flag. . . . . .=',I10/,
478 & 5X,'shell hourglass membrane
damping. . . .=
',1PG20.13/,
479 & 5X,'shell hourglass flexural
damping. . . .=
',1PG20.13/,
480 & 5X,'shell hourglass rotational
damping. . .=
',1PG20.13/,
481 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
482 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
483 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
484 & 5X,' > 0.0 : fraction of failed thickness ',/,
485 & 5X,' < 0.0 : fraction of failed intg. points',/,
486 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
487 & 5X,'thickness variation flag. . . . . . . .=',I10/,
488 & 5X,'plasticity formulation flag . . . . . .=',I10/,
489 & 5X,'x component of dir 1 of orthotropy. . .=',1PG20.13/,
490 & 5X,'y component of dir 1 of orthotropy. . .=',1PG20.13/,
491 & 5X,'z component of dir 1 of orthotropy. . .=',1PG20.13/,
492 & 5X,'angle(dir 1,proj(dir 1 / shell). . . .=',1PG20.13/,
493 & 5X,'skew of
the first orthotropy direction.=
',I10/,
494 & 5X,'reference direction flag in shell plane=',I10/,
495 & 5X,'shell offset position flag . . . . . . =',I10/)
496 1011 FORMAT(
497 & 5X,'orthotropic shell property set'/,
498 & 5X,'property set number . . . . . . . . . .=',I10/,
499 & 5X,'number of integration points. . . . . .=',I10/,
500 & 5X,'post processing strain flag . . . . . .=',I10/,
501 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
502 & 5X,'small strain . . . . . . . . . . . . .=',I10/,
503 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
504 & 5X,'3node shell formulation flag. . . . . .=',I10/,
505 & 5X,'drilling d.o.f. flag . . . . . . . . .=',I10/,
506 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
507 & 5X,'shell numerical
damping . . . . . . . .=
',1PG20.13/,
508 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
509 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
510 & 5X,' > 0.0 : fraction of failed thickness ',/,
511 & 5X,' < 0.0 : fraction of failed intg. points',/,
512 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
513 & 5X,'thickness variation flag. . . . . . . .=',I10/,
514 & 5X,'plasticity formulation flag . . . . . .=',I10/,
515 & 5X,'x component of dir 1 of orthotropy. . .=',1PG20.13/,
516 & 5X,'y component of dir 1 of orthotropy. . .=',1PG20.13/,
517 & 5X,'z component of dir 1 of orthotropy. . .=',1PG20.13/,
518 & 5X,'angle(dir 1,proj(dir 1 / shell). . . .=',1PG20.13/,
519 & 5X,'skew of
the first orthotropy direction.=
',I10/,
520 & 5X,'reference direction flag in shell plane=',I10/,
521 & 5X,'shell offset position flag . . . . . . =',I10/)
522
523
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
end diagonal values have been computed in the(sparse) matrix id.SOL
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)
subroutine area(d1, x, x2, y, y2, eint, stif0)
integer, parameter nchartitle