OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_prop11.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| hm_read_prop11 ../starter/source/properties/shell/hm_read_prop11.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_properties ../starter/source/properties/hm_read_properties.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| fretitl2 ../starter/source/starter/freform.F
30!|| hm_get_float_array_index ../starter/source/devtools/hm_reader/hm_get_float_array_index.F
31!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
32!|| hm_get_int_array_index ../starter/source/devtools/hm_reader/hm_get_int_array_index.F
33!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
34!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
35!|| subrotvect ../starter/source/model/submodel/subrot.f
36!||--- uses -----------------------------------------------------
37!|| defaults_mod ../starter/source/modules/defaults_mod.F90
38!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
39!|| message_mod ../starter/share/message_module/message_mod.F
40!|| submodel_mod ../starter/share/modules1/submodel_mod.F
41!||====================================================================
42 SUBROUTINE hm_read_prop11(GEO ,IGEO ,PM ,IPM ,ISKN ,
43 . UNITAB ,RTRANS ,LSUBMODEL,SUB_ID ,IDTITL ,
44 . PROP_TAG ,IG ,IGTYP ,DEFAULTS_SHELL )
45C-----------------------------------------------
46C M o d u l e s
47C-----------------------------------------------
48 USE unitab_mod
49 USE elbuftag_mod
50 USE submodel_mod
51 USE message_mod
52 USE defaults_mod
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
61#include "units_c.inc"
62#include "com04_c.inc"
63#include "param_c.inc"
64#include "scr16_c.inc"
65#include "scr17_c.inc"
66#include "sphcom.inc"
67#include "tablen_c.inc"
68C-----------------------------------------------
69C D u m m y A r g u m e n t s
70C-----------------------------------------------
71 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
72 INTEGER IGEO(NPROPGI),IPM(NPROPMI,*),SUB_ID,IG,IGTYP
74 . geo(npropg), pm(npropm,*),rtrans(ntransf,*)
76 . fac_m, fac_l, fac_t
77 TYPE(submodel_data) LSUBMODEL(*)
78 CHARACTER(LEN=NCHARTITLE)::IDTITL
79 TYPE(prop_tag_) , DIMENSION(0:MAXPROP) :: PROP_TAG
80 TYPE(shell_defaults_), INTENT(IN) :: DEFAULTS_SHELL
81C-----------------------------------------------
82C L o c a l V a r i a b l e s
83C-----------------------------------------------
84 CHARACTER LAW_ID*4
85 INTEGER NUML(100),NLY,NLYMAX,N1,N,J,IERREL,M1,M2,M3,M4,
86 . k, n2, n3, istrain, mlawly1,ishear,iplast,ihbe,ithk,irep,
87 . idsk, isk, ipang, ipthk, ippos, ipos, ipmat, ipweight,iskn(liskn,*),
88 . iss, pid1,ismstr,isrot,ibid,igmat,ihbeoutp,ihbe_old,irp
89 my_real an, vx, vy, vz, thickt, dt, tmin, tmax,weight,pthk,cvis,pun,
90 . phi_i,thk_i,z_i,wf_i,zshift
91 INTEGER ISH3N
92 INTEGER ID,ID1,IUN
93 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
94 INTEGER IHBE_D,IPLA_D,ISTR_D,ITHK_D,ISHEA_D,ISST_D,
95 . ish3n_d, istra_d,npts_d,idril_d
96 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
97C-----------------------------------------------
98C E x t e r n a l F u n c t i o n s
99C-----------------------------------------------
100
101C-----------------------------------------------
102C D a t a
103C-----------------------------------------------
104 DATA iun/1/
105 DATA pun/0.1/
106C----------------------------------------------------------------
107C COMPOSITE LAYERED SHELL
108C LAYERS WITH : -VARIABLE THICKNESS
109C -VARIABLE MATERIAL (BUT LAW 25 OR 27 ONLY)
110C----------------------------------------------------------------
111 is_encrypted = .false.
112 is_available = .false.
113
114 ihbe_d = defaults_shell%ishell
115 ish3n_d= defaults_shell%ish3n
116 isst_d = defaults_shell%ismstr
117 ipla_d = defaults_shell%iplas
118 ithk_d = defaults_shell%ithick
119 idril_d= defaults_shell%idrill
120 ishea_d = 0
121 npts_d = 0
122 istra_d = 1
123!
124 ihbe=0
125 ismstr=0
126 isrot=0
127 pthk = zero
128 irp = 0
129C fixing flag and removed from input
130 istrain=1
131c
132 nlymax= 100
133 ipang = 200
134 ipthk = 300
135 ippos = 400
136 ipmat = 100
137 ipweight = 900
138 idsk = 0
139 irep = 0
140 ipos = 0
141C----------------------
142C HIDDEN FLAGS
143C----------------------
144C ISHEAR NEVER USED
145 ishear = 0
146C CVIS USED in coquez routines
147 cvis = zero
148C IGMAT IS USED GENERALLY > 0 in other routines => put always to 1
149 igmat = 1
150 igeo(98)= igmat
151
152C Double stockage temporaire - supprimer GEO(12,I)=IGTYP apres tests
153 igeo( 1)=ig
154 igeo(11)=igtyp
155 geo(12) =igtyp+pun
156
157C--------------------------------------------------
158C EXTRACT DATA (IS OPTION CRYPTED)
159C--------------------------------------------------
160 CALL hm_option_is_encrypted(is_encrypted)
161C--------------------------------------------------
162C EXTRACT DATAS (INTEGER VALUES)
163C--------------------------------------------------
164 CALL hm_get_intv('Ishell',ihbe,is_available,lsubmodel)
165 CALL hm_get_intv('Ismstr',ismstr,is_available,lsubmodel)
166 CALL hm_get_intv('ISH3N',ish3n,is_available,lsubmodel)
167 CALL hm_get_intv('Idrill',isrot,is_available,lsubmodel)
168 CALL hm_get_intv('NIP',nly,is_available,lsubmodel)
169C CALL HM_GET_INTV('ISTRAIN',ISTRAIN,IS_AVAILABLE,LSUBMODEL)
170 CALL hm_get_intv('ITHICK',ithk,is_available,lsubmodel)
171 CALL hm_get_intv('IPLAS',iplast,is_available,lsubmodel)
172 CALL hm_get_intv('SKEW_CSID',idsk,is_available,lsubmodel)
173 CALL hm_get_intv('Iorth',irep,is_available,lsubmodel)
174 CALL hm_get_intv('Ipos',ipos,is_available,lsubmodel)
175 CALL hm_get_intv('Ip',irp,is_available,lsubmodel)
176C--------------------------------------------------
177C EXTRACT DATAS (REAL VALUES)
178C--------------------------------------------------
179 CALL hm_get_floatv('P_Thick_Fail',pthk,is_available,lsubmodel,unitab)
180 CALL hm_get_floatv('Hm',geo(13),is_available,lsubmodel,unitab)
181 CALL hm_get_floatv('Hf',geo(14),is_available,lsubmodel,unitab)
182 CALL hm_get_floatv('Hr',geo(15),is_available,lsubmodel,unitab)
183 CALL hm_get_floatv('Dm',geo(16),is_available,lsubmodel,unitab)
184 CALL hm_get_floatv('Dn',geo(17),is_available,lsubmodel,unitab)
185 CALL hm_get_floatv('THICK',geo(1),is_available,lsubmodel,unitab)
186 CALL hm_get_floatv('AREA_SHEAR',geo(38),is_available,lsubmodel,unitab)
187 CALL hm_get_floatv('V_X',vx,is_available,lsubmodel,unitab)
188 CALL hm_get_floatv('V_Y',vy,is_available,lsubmodel,unitab)
189 CALL hm_get_floatv('V_Z',vz,is_available,lsubmodel,unitab)
190C----------------------
191
192 IF (pthk == zero) pthk = one-em06
193 pthk = min(pthk, one)
194 pthk = max(pthk,-one)
195 geo(42) = pthk
196C
197 IF(ihbe==0)ihbe=ihbe_d
198 ihbeoutp=ihbe
199 IF (ihbe == 4 .AND. ish3n==0 .AND. ish3n_d == 1) THEN
200 CALL ancmsg(msgid=680,
201 . msgtype=msgwarning,
202 . anmode=aninfo_blind_1,
203 . i1=ig,
204 . c1=idtitl)
205 ENDIF
206 IF (ihbe==22.OR.ihbe==23) THEN
207 CALL ancmsg(msgid=539,
208 . msgtype=msgwarning,
209 . anmode=aninfo_blind_1,
210 . i1=ig,
211 . c1=idtitl)
212 ihbe=24
213 ENDIF
214 IF(ish3n==0) ish3n = ish3n_d
215 igeo(18) = ish3n
216 IF (geo(16) == zero) igeo(31) = 1
217
218 IF (ihbe==24) THEN
219 IF (cvis==zero) cvis=one
220 IF (geo(17)==zero) geo(17)=zep015
221 ENDIF
222C---
223 IF(ismstr==0)ismstr=isst_d
224 IF (isst_d == -2) ismstr = -1
225 IF(ihbe==3)THEN
226 IF(geo(13)==zero)geo(13)=em01
227 IF(geo(14)==zero)geo(14)=em01
228 IF(geo(15)==zero)geo(15)=em02
229 ELSE
230 IF(geo(13)==zero)geo(13)=em02
231 IF(geo(14)==zero)geo(14)=em02
232 IF(geo(15)==zero)geo(15)=em02
233 ENDIF
234 IF(isrot==0)isrot=idril_d
235 IF(isrot==2) isrot = 0
236 igeo(20)=isrot
237C-------to have DR----
238 IF (ismstr==10.AND.isrot>0.AND.idrot==0) idrot = 1
239c
240 IF(ismstr==0) ismstr=2
241 IF(ismstr==3.AND.ihbe/=0.AND.ihbe/=2) THEN
242 ismstr = 2
243 CALL ancmsg(msgid=319,
244 . msgtype=msgwarning,
245 . anmode=aninfo_blind_2,
246 . i1=ig,
247 . c1=idtitl)
248 ENDIF
249 geo(3) = ismstr
250 igeo(5) = ismstr
251C
252C Double stockage temporaire
253 igeo(10)=ihbe
254 geo(171)=ihbe
255C
256 IF(ihbe==3)THEN
257 IF(geo(13)==zero)geo(13)=em01
258 IF(geo(14)==zero)geo(14)=em01
259 IF(geo(15)==zero)geo(15)=em02
260 ELSEIF(ihbe<10)THEN
261 IF(geo(13)==zero)geo(13)=em02
262 IF(geo(14)==zero)geo(14)=em02
263 IF(geo(15)==zero)geo(15)=em02
264 ENDIF
265 IF (ihbe>11.AND.ihbe<29) THEN
266 geo(13)=geo(17)
267 geo(17)=cvis
268 ENDIF
269
270C
271 IF(geo(38) == zero) geo(38)=five_over_6
272 IF(nly == -1)nly=npts_d
273 IF(nly == 0) nly = 1
274 IF(nly == 1) geo(38)= zero
275 an=sqrt(vx*vx+vy*vy+vz*vz)
276C---- error out w/ IRP=22,23
277 IF(an < em10)THEN
278 vx=one
279 vy=zero
280 vz=zero
281 IF (irp==23) THEN
282 CALL ancmsg(msgid=1922,
283 . msgtype=msgerror,
284 . anmode=aninfo,
285 . c1='PROPERTY',
286 . i1=ig,
287 . c2='PROPERTY',
288 . c3=titr,
289 . i2=irp)
290 END IF
291 ELSE
292 vx=vx/an
293 vy=vy/an
294 vz=vz/an
295 ENDIF
296
297 IF (sub_id /= 0)
298 . CALL subrotvect(vx,vy,vz,rtrans,sub_id,lsubmodel)
299
300
301 isk = 0
302 IF (idsk/=0) THEN
303 DO j=0,numskw+min(iun,nspcond)*numsph+nsubmod
304 IF(idsk == iskn(4,j+1)) THEN
305 isk=j+1
306 GO TO 10
307 ENDIF
308 END DO
309 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
310 CALL ancmsg(msgid=184,
311 . msgtype=msgerror,
312 . anmode=aninfo,
313 . c1='PROPERTY',
314 . i1=ig,
315 . c2='PROPERTY',
316 . c3=titr,
317 . i2=idsk)
318 10 CONTINUE
319 ENDIF
320 IF ((irp==22.OR.irp==25).AND.isk==0) THEN
321 CALL ancmsg(msgid=1923,
322 . msgtype=msgerror,
323 . anmode=aninfo,
324 . c1='PROPERTY',
325 . i1=ig,
326 . c2='PROPERTY',
327 . c3=titr,
328 . i2=irp)
329 END IF
330 igeo(2)=isk
331 geo(7)=vx
332 geo(8)=vy
333 geo(9)=vz
334 IF(ithk == 0)ithk=ithk_d
335 IF(ithk_d==-2)ithk=-1
336 IF(ishear == 0)ishear=ishea_d
337 IF(iplast == 0)iplast=ipla_d
338 IF(ipla_d==-2) iplast=-1
339C IF(ISTRAIN == 0)ISTRAIN=ISTR_D
340 geo(11)=istrain
341 ihbe=igeo(10)
342 igeo(6)=irep
343 geo(35)=ithk
344 geo(37)=ishear
345 geo(39)=iplast
346 iss=igeo(5)
347 ig=igeo(1)
348C-----using IGEO(14)=ICSTR
349 igeo(14) = irp
350C-----------------------------------------------------------------
351 IF(is_encrypted)THEN
352 WRITE(iout,1000)ig
353 1000 FORMAT(
354 & 5x,'COMPOSITE LAYERED SHELL PROPERTY SET'/,
355 & 5x,'------------------------------------'/,
356 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
357 & 5x,'CONFIDENTIAL DATA'//)
358 ELSE
359 IF(isk == 0)THEN
360 IF (ihbe>11.AND.ihbe<29) THEN
361 WRITE(iout,2112)ig,nly,istrain,geo(1),iss,ihbe,
362 . ish3n,igeo(20),
363 . geo(16),geo(13),geo(38),geo(42),ishear,ithk,
364 . iplast,irep,geo(7),geo(8),geo(9),igeo(14)
365 ELSE
366 WRITE(iout,2110)ig,nly,istrain,geo(1),iss,ihbe,
367 . ish3n,
368 . geo(13),geo(14),geo(15),geo(16),
369 . geo(38),geo(42),ishear,ithk,iplast,irep,
370 . geo(7),geo(8),geo(9),igeo(14)
371 ENDIF
372 ELSE
373 IF (ihbe>11.AND.ihbe<29) THEN
374 WRITE(iout,2113)ig,nly,istrain,geo(1),iss,ihbe,
375 . ish3n,igeo(20),
376 . geo(16),geo(13),geo(38),geo(42),ishear,ithk,
377 . iplast,irep,idsk,igeo(14)
378 ELSE
379 WRITE(iout,2111)ig,nly,istrain,geo(1),iss,ihbe,
380 . ish3n,
381 . geo(13),geo(14),geo(15),geo(16),geo(38),
382 . geo(42),ishear,ithk,iplast,irep,idsk,igeo(14)
383 ENDIF
384 ENDIF
385 ENDIF
386C---
387 IF (nly == 0) THEN
388 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
389 CALL ancmsg(msgid=27,
390 . msgtype=msgerror,
391 . anmode=aninfo_blind_1,
392 . i1=ig,
393 . c1=titr)
394 ENDIF
395 IF (nly>nlymax) THEN
396 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
397 CALL ancmsg(msgid=28,
398 . msgtype=msgerror,
399 . anmode=aninfo_blind_1,
400 . i2=nlymax,
401 . i1=ig,
402 . c1=titr)
403 ENDIF
404 n1 = min0(nly,nlymax)
405 geo(6)= n1+em01 ! to be cleaned
406 igeo(4) = n1
407C--------------------------------------------------------------------
408C LECTURE DES ANGLES,EPAISSEURS,POSITIONS DE COUCHES ET MATERIAUX
409C--------------------------------------------------------------------
410C----------------------
411C READ LINE 5 -> 5+N1
412C----------------------
413 DO k=1,n1
414 CALL hm_get_int_array_index('Prop_mi',numl(k),k,is_available,lsubmodel)
415
416 CALL hm_get_float_array_index('Prop_phi',phi_i,k,is_available,lsubmodel,unitab)
417 CALL hm_get_float_array_index('Prop_Thick',thk_i,k,is_available,lsubmodel,unitab)
418 CALL hm_get_float_array_index('Prop_Zi',z_i,k,is_available,lsubmodel,unitab)
419 CALL hm_get_float_array_index('Prop_WFi',weight,k,is_available,lsubmodel,unitab)
420
421C----------------------
422 geo(ipang+k) = phi_i
423 geo(ipthk+k) = thk_i
424 geo(ippos+k) = z_i
425 IF (weight == zero) weight = one
426 geo(ipweight+k)= weight
427 ENDDO
428C--- calcul epaisseur & position des couches
429 igeo(99) = ipos
430 zshift = zero
431 IF (ipos > 0)THEN
432 tmin = ep20
433 tmax = -ep20
434
435 DO n=1,n1
436 dt = half*geo(ipthk+n)
437 tmin = min(tmin,geo(ippos+n)-dt)
438 tmax = max(tmax,geo(ippos+n)+dt)
439 ENDDO
440 thickt = tmax - tmin
441 zshift = half*(tmax + tmin)
442 dt = zero
443 IF (defaults_shell%IOFFSET==3) dt = zshift
444 geo(200)=thickt
445 DO n=1,n1
446 geo(ipthk+n)=geo(ipthk+n) / max(thickt,em20)
447 geo(ippos+n)=(geo(ippos+n)-dt) / max(thickt,em20)
448 ENDDO
449 ELSE
450 thickt = zero
451 DO n=1,n1
452 thickt=thickt+geo(ipthk+n)
453 ENDDO
454 DO n=1,n1
455 geo(ipthk+n)=geo(ipthk+n) / max(thickt,em20)
456 ENDDO
457C--- calcul automatique de position des couches
458 geo(ippos+1) = -half + half*geo(ipthk+1)
459 DO n=2,n1
460 geo(ippos+n) = geo(ippos+n-1)
461 . + half*(geo(ipthk+n)+geo(ipthk+n-1))
462 ENDDO
463 geo(200)=thickt
464 ENDIF
465 geo(199) = zshift
466C--- Test validite epaisseur
467 ierrel=nint(abs((thickt-geo(1))/geo(1))*ep02)
468 IF(ierrel>10) THEN
469 pid1=igeo(1)
470 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
471 CALL ancmsg(msgid=29,
472 . msgtype=msgwarning,
473 . anmode=aninfo_blind_1,
474 . i2=ierrel,
475 . i1=pid1,
476 . c1=titr)
477 ENDIF
478C--------------------------------------------------------------
479C MATERIAUX: TRANSFORMATION EN NOS INTERNES + TESTS DE VALIDITE
480C-------LAYER 1
481 DO j=1,nummat
482 IF (ipm(1,j) == numl(1)) THEN
483 igeo(ipmat+1) = j
484 mlawly1= nint(pm(19,j))
485 IF(mlawly1 == 25) GO TO 250
486 IF(mlawly1 == 27) GO TO 250
487 IF(mlawly1 == 15) GO TO 250
488 IF(mlawly1>=29) GO TO 250
489 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
490 CALL fretitl2(titr1,ipm(npropmi-ltitr+1,j),ltitr)
491 CALL ancmsg(msgid=30,
492 . anmode=aninfo,
493 . msgtype=msgerror,
494 . i1=ig,
495 . c1=titr,
496 . i2=numl(1),
497 . c2=titr1,
498 . i3=mlawly1)
499 GO TO 250
500 ENDIF
501 ENDDO
502 CALL fretitl2(titr1,igeo(npropgi-ltitr+1),ltitr)
503 CALL ancmsg(msgid=31,
504 . anmode=aninfo,
505 . msgtype=msgerror,
506 . i1=ig,
507 . c1=titr1,
508 . i2=numl(1))
509 igeo(ipmat+1) = 1
510 250 CONTINUE
511C-----OTHER LAYERS
512 DO 350 n=2,n1
513 DO j=1,nummat
514 IF(ipm(1,j) == numl(n)) THEN
515 igeo(ipmat+n) = j
516 IF(nint(pm(19,j)) == mlawly1) GO TO 350
517 WRITE(law_id,'(I2)')mlawly1
518 IF (mlawly1==99) law_id='USER'
519 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
520 CALL fretitl2(titr1,ipm(npropmi-ltitr+1,j),ltitr)
521 CALL ancmsg(msgid=334,
522 . msgtype=msgerror,
523 . anmode=aninfo_blind_1,
524 . i1=ig,
525 . c1=titr,
526 . i2=numl(n),
527 . c2=titr1,
528 . c3=law_id)
529 GO TO 350
530 ENDIF
531 ENDDO
532 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
533 CALL ancmsg(msgid=31,
534 . anmode=aninfo,
535 . msgtype=msgerror,
536 . i1=ig,
537 . c1=titr,
538 . i2=numl(n))
539 igeo(ipmat+n) = 1
540 350 CONTINUE
541C
542 DO n=1,n1
543 m1=ipang+n
544 m2=ipthk+n
545 m3=ippos+n
546 m4=ipweight+n
547 IF(.NOT. is_encrypted)THEN
548 WRITE(iout,2121)n,geo(m1),geo(m2)*geo(1),geo(m3)*geo(1),
549 . geo(m4),numl(n)
550 ENDIF
551 geo(m1)=geo(m1)*pi/hundred80
552 ENDDO
553C-----------------------------
554C IHBE IPLA ISTRAIN - shells
555C-----------------------------
556 ihbe=nint(geo(171))
557 IF(ihbe==0)THEN
558 geo(171)=0
559 ELSEIF(ihbe==1)THEN
560 geo(171)=1
561 ELSEIF(ihbe==2)THEN
562 geo(171)=0
563 ELSEIF(ihbe>=3.AND.ihbe<100.AND.ihbe/=4)THEN
564 geo(171)=ihbe-1
565 ENDIF
566
567
568 ishear = geo(37)
569 IF(ishear==0)THEN
570 geo(37)=0
571 ELSEIF(ishear==1)THEN
572 geo(37)=1
573 ELSEIF(ishear==2)THEN
574 geo(37)=0
575 ENDIF
576
577c---- Shells
578 prop_tag(igtyp)%G_SIG = 0
579 prop_tag(igtyp)%G_FOR = 5
580 prop_tag(igtyp)%G_MOM = 3
581 prop_tag(igtyp)%G_THK = 1
582 prop_tag(igtyp)%G_EINT= 2
583 prop_tag(igtyp)%G_EINS= 0
584 prop_tag(igtyp)%L_SIG = 5
585 IF (igtyp == 17) prop_tag(igtyp)%L_SIGPLY = 3
586 prop_tag(igtyp)%L_THK = 0
587 prop_tag(igtyp)%L_EINT= 2
588 prop_tag(igtyp)%L_EINS= 0
589 prop_tag(igtyp)%G_VOL = 0
590 prop_tag(igtyp)%L_VOL = 0
591 prop_tag(igtyp)%LY_DMG = 2
592
593 prop_tag(igtyp)%LY_GAMA = 6
594 prop_tag(igtyp)%LY_DIRA = 2
595
596 prop_tag(igtyp)%LY_PLAPT = 1
597 prop_tag(igtyp)%LY_SIGPT = 5
598 prop_tag(igtyp)%G_FORPG = 5
599 prop_tag(igtyp)%G_MOMPG = 3
600 prop_tag(igtyp)%G_STRPG = 8
601 IF(igmat > 1)
602 . prop_tag(igtyp)%LY_DMG = 2
603
604
605 igeo(1) =ig
606 igeo(11)=igtyp
607 IF(geo( 3)/=zero.AND.igeo( 5)== 0)igeo( 5)=nint(geo( 3))
608 IF(geo(39)/=zero.AND.igeo( 9)== 0)igeo( 9)=nint(geo(39))
609 IF(geo(171)/=zero.AND.igeo(10)== 0)
610 . igeo(10)=nint(geo(171))
611
612C----
613 RETURN
614 2110 FORMAT(
615 & 5x,'COMPOSITE LAYERED SHELL PROPERTY SET ',
616 & 'WITH VARIABLE THICKNESSES AND MATERIALS'/,
617 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
618 & 5x,'NUMBER OF LAYERS. . . . . . . . . . . .=',i10/,
619 & 5x,'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
620 & 5x,'SHELL THICKNESS . . . . . . . . . . . .=',1pg20.13/,
621 & 5x,'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
622 & 5x,'SHELL FORMULATION FLAG. . . . . . . . .=',i10/,
623 & 5x,'3NODE SHELL FORMULATION FLAG. . . . . .=',i10/,
624 & 5x,'SHELL HOURGLASS MEMBRANE DAMPING. . . .=',1pg20.13/,
625 & 5x,'SHELL HOURGLASS FLEXURAL DAMPING. . . .=',1pg20.13/,
626 & 5x,'SHELL HOURGLASS ROTATIONAL DAMPING. . .=',1pg20.13/,
627 & 5x,'SHELL MEMBRANE DAMPING. . . . . . . . .=',1pg20.13/,
628 & 5x,'SHEAR AREA REDUCTION FACTOR . . . . . .=',1pg20.13/,
629 & 5x,'ELEMENT DELETION PARAMETER. . . . . . .=',1pg20.13/,
630 & 5x,' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
631 & 5x,' < 0.0 : FRACTION OF FAILED LAYERS ',/,
632 & 5x,'SHEAR FORMULATION FLAG. . . . . . . . .=',i10/,
633 & 5x,'THICKNESS VARIATION FLAG. . . . . . . .=',i10/,
634 & 5x,'PLASTICITY FORMULATION FLAG . . . . . .=',i10/,
635 & 5x,'LOCAL ORTOTHROPY SYSTEM FLAG. . . . . .=',i10/,
636 & 5x,'X COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
637 & 5x,'Y COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
638 & 5x,'Z COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
639 & 5x,'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
640 2111 FORMAT(
641 & 5x,'COMPOSITE LAYERED SHELL PROPERTY SET ',
642 & 'WITH VARIABLE THICKNESSES AND MATERIALS'/,
643 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
644 & 5x,'NUMBER OF LAYERS. . . . . . . . . . . .=',i10/,
645 & 5x,'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
646 & 5x,'SHELL THICKNESS . . . . . . . . . . . .=',1pg20.13/,
647 & 5x,'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
648 & 5x,'SHELL FORMULATION FLAG. . . . . . . . .=',i10/,
649 & 5x,'3NODE SHELL FORMULATION FLAG. . . . . .=',i10/,
650 & 5x,'SHELL HOURGLASS MEMBRANE DAMPING. . . .=',1pg20.13/,
651 & 5x,'SHELL HOURGLASS FLEXURAL DAMPING. . . .=',1pg20.13/,
652 & 5x,'SHELL HOURGLASS ROTATIONAL DAMPING. . .=',1pg20.13/,
653 & 5x,'SHELL MEMBRANE DAMPING. . . . . . . . .=',1pg20.13/,
654 & 5x,'SHEAR AREA REDUCTION FACTOR . . . . . .=',1pg20.13/,
655 & 5x,'ELEMENT DELETION PARAMETER. . . . . . .=',1pg20.13/,
656 & 5x,' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
657 & 5x,' < 0.0 : FRACTION OF FAILED LAYERS ',/,
658 & 5x,'SHEAR FORMULATION FLAG. . . . . . . . .=',i10/,
659 & 5x,'THICKNESS VARIATION FLAG. . . . . . . .=',i10/,
660 & 5x,'PLASTICITY FORMULATION FLAG . . . . . .=',i10/,
661 & 5x,'LOCAL ORTOTHROPY SYSTEM FLAG. . . . . .=',i10/,
662 & 5x,'SKEW OF THE FIRST ORTHOTROPY DIRECTION.=',i10/,
663 & 5x,'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
664 2112 FORMAT(
665 & 5x,'COMPOSITE LAYERED SHELL PROPERTY SET ',
666 & 'WITH VARIABLE THICKNESSES AND MATERIALS'/,
667 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
668 & 5x,'NUMBER OF LAYERS. . . . . . . . . . . .=',i10/,
669 & 5x,'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
670 & 5x,'SHELL THICKNESS . . . . . . . . . . . .=',1pg20.13/,
671 & 5x,'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
672 & 5x,'SHELL FORMULATION FLAG. . . . . . . . .=',i10/,
673 & 5x,'3NODE SHELL FORMULATION FLAG. . . . . .=',i10/,
674 & 5x,'DRILLING D.O.F. FLAG . . . . . . . . .=',i10/,
675 & 5x,'SHELL MEMBRANE DAMPING. . . . . . . . .=',1pg20.13/,
676 & 5x,'SHELL NUMERICAL DAMPING . . . . . . . .=',1pg20.13/,
677 & 5x,'SHEAR AREA REDUCTION FACTOR . . . . . .=',1pg20.13/,
678 & 5x,'ELEMENT DELETION PARAMETER. . . . . . .=',1pg20.13/,
679 & 5x,' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
680 & 5x,' < 0.0 : FRACTION OF FAILED LAYERS ',/,
681 & 5x,'SHEAR FORMULATION FLAG. . . . . . . . .=',i10/,
682 & 5x,'THICKNESS VARIATION FLAG. . . . . . . .=',i10/,
683 & 5x,'PLASTICITY FORMULATION FLAG . . . . . .=',i10/,
684 & 5x,'LOCAL ORTOTHROPY SYSTEM FLAG. . . . . .=',i10/,
685 & 5x,'X COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
686 & 5x,'Y COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
687 & 5x,'Z COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
688 & 5x,'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
689 2113 FORMAT(
690 & 5x,'COMPOSITE LAYERED SHELL PROPERTY SET ',
691 & 'with variable thicknesses and materials'/,
692 & 5X,'property set number . . . . . . . . . .=',I10/,
693 & 5X,'number of layers. . . . . . . . . . . .=',I10/,
694 & 5X,'post processing strain flag . . . . . .=',I10/,
695 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
696 & 5X,'small strain flag . . . . . . . . . . .=',I10/,
697 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
698 & 5X,'3node shell formulation flag. . . . . .=',I10/,
699 & 5X,'drilling d.o.f. flag . . . . . . . . .=',I10/,
700 & 5X,'shell membrane damping. . . . . . . . .=',1PG20.13/,
701 & 5X,'shell numerical damping . . . . . . . .=',1PG20.13/,
702 & 5X,'shear area reduction factor . . . . . .=',1PG20.13/,
703 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
704 & 5X,' > 0.0 : fraction of failed thickness ',/,
705 & 5X,' < 0.0 : fraction of failed layers ',/,
706 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
707 & 5X,'thickness variation flag. . . . . . . .=',I10/,
708 & 5X,'plasticity formulation flag . . . . . .=',I10/,
709 & 5X,'local ortothropy system flag. . . . . .=',I10/,
710 & 5X,'skew of the first orthotropy direction.=',I10/,
711 & 5X,'reference direction flag in shell plane=',I10/)
712 2121 FORMAT(
713 & 5X,'layer ',I3/,
714 & 5X,' angle(dir 1,proj(dir 1 / shell).=',1PG20.13/,
715 & 5X,' thickness . . . . . . . . . . . .=',1PG20.13/,
716 & 5X,' position. . . . . . . . . . . . .=',1PG20.13/,
717 & 5X,' layer failure weight factor . . .=',1PG20.13/,
718 & 5X,' material number . . . . . . . . .=',I10/)
719 END
#define my_real
Definition cppsort.cpp:32
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
Definition damping.F:882
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_prop11(geo, igeo, pm, ipm, iskn, unitab, rtrans, lsubmodel, sub_id, idtitl, prop_tag, ig, igtyp, defaults_shell)
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle
integer nsubmod
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)
Definition message.F:889
subroutine fretitl2(titr, iasc, l)
Definition freform.F:804
program starter
Definition starter.F:39
subroutine subrotvect(x, y, z, rtrans, sub_id, lsubmodel)
Definition subrot.F:54