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,IPPLY,NLY_TMP,L,M
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 shell 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 PARSE ALL THE PLIES TO COMPUTE NEW PLY NUMBER ACCORDINGLY TO IPPLY
163C--------------------------------------------------
164 CALL hm_get_intv('NIP',nly,is_available,lsubmodel)
165 nly_tmp = 0
166 DO k=1,nly
167 CALL hm_get_int_array_index('Ipply',ipply,k,is_available,lsubmodel)
168 IF(ipply == 0) ipply = 1
169 nly_tmp = nly_tmp + ipply
170 ENDDO
171
172C--------------------------------------------------
173C EXTRACT DATAS (INTEGER VALUES)
174C--------------------------------------------------
175 CALL hm_get_intv('Ishell',ihbe,is_available,lsubmodel)
176 CALL hm_get_intv('Ismstr',ismstr,is_available,lsubmodel)
177 CALL hm_get_intv('ISH3N',ish3n,is_available,lsubmodel)
178 CALL hm_get_intv('Idrill',isrot,is_available,lsubmodel)
179 CALL hm_get_intv('NIP',nly,is_available,lsubmodel)
180C CALL HM_GET_INTV('ISTRAIN',ISTRAIN,IS_AVAILABLE,LSUBMODEL)
181 CALL hm_get_intv('ITHICK',ithk,is_available,lsubmodel)
182 CALL hm_get_intv('IPLAS',iplast,is_available,lsubmodel)
183 CALL hm_get_intv('SKEW_CSID',idsk,is_available,lsubmodel)
184 CALL hm_get_intv('Iorth',irep,is_available,lsubmodel)
185 CALL hm_get_intv('Ipos',ipos,is_available,lsubmodel)
186 CALL hm_get_intv('Ip',irp,is_available,lsubmodel)
187C--------------------------------------------------
188C EXTRACT DATAS (REAL VALUES)
189C--------------------------------------------------
190 CALL hm_get_floatv('P_Thick_Fail',pthk,is_available,lsubmodel,unitab)
191 CALL hm_get_floatv('Hm',geo(13),is_available,lsubmodel,unitab)
192 CALL hm_get_floatv('Hf',geo(14),is_available,lsubmodel,unitab)
193 CALL hm_get_floatv('Hr',geo(15),is_available,lsubmodel,unitab)
194 CALL hm_get_floatv('Dm',geo(16),is_available,lsubmodel,unitab)
195 CALL hm_get_floatv('Dn',geo(17),is_available,lsubmodel,unitab)
196 CALL hm_get_floatv('THICK',geo(1),is_available,lsubmodel,unitab)
197 CALL hm_get_floatv('AREA_SHEAR',geo(38),is_available,lsubmodel,unitab)
198 CALL hm_get_floatv('V_X',vx,is_available,lsubmodel,unitab)
199 CALL hm_get_floatv('V_Y',vy,is_available,lsubmodel,unitab)
200 CALL hm_get_floatv('V_Z',vz,is_available,lsubmodel,unitab)
201C----------------------
202
203 IF (pthk == zero) pthk = one-em06
204 pthk = min(pthk, one)
205 pthk = max(pthk,-one)
206 geo(42) = pthk
207C
208 IF(ihbe==0)ihbe=ihbe_d
209 ihbeoutp=ihbe
210 IF (ihbe == 4 .AND. ish3n==0 .AND. ish3n_d == 1) THEN
211 CALL ancmsg(msgid=680,
212 . msgtype=msgwarning,
213 . anmode=aninfo_blind_1,
214 . i1=ig,
215 . c1=idtitl)
216 ENDIF
217 IF (ihbe==22.OR.ihbe==23) THEN
218 CALL ancmsg(msgid=539,
219 . msgtype=msgwarning,
220 . anmode=aninfo_blind_1,
221 . i1=ig,
222 . c1=idtitl)
223 ihbe=24
224 ENDIF
225 IF(ish3n==0) ish3n = ish3n_d
226 igeo(18) = ish3n
227 IF (geo(16) == zero) igeo(31) = 1
228
229 IF (ihbe==24) THEN
230 IF (cvis==zero) cvis=one
231 IF (geo(17)==zero) geo(17)=zep015
232 ENDIF
233C---
234 IF(ismstr==0)ismstr=isst_d
235 IF (isst_d == -2) ismstr = -1
236 IF(ihbe==3)THEN
237 IF(geo(13)==zero)geo(13)=em01
238 IF(geo(14)==zero)geo(14)=em01
239 IF(geo(15)==zero)geo(15)=em02
240 ELSE
241 IF(geo(13)==zero)geo(13)=em02
242 IF(geo(14)==zero)geo(14)=em02
243 IF(geo(15)==zero)geo(15)=em02
244 ENDIF
245 IF(isrot==0)isrot=idril_d
246 IF(isrot==2) isrot = 0
247 igeo(20)=isrot
248C-------to have DR----
249 IF (ismstr==10.AND.isrot>0.AND.idrot==0) idrot = 1
250c
251 IF(ismstr==0) ismstr=2
252 IF(ismstr==3.AND.ihbe/=0.AND.ihbe/=2) THEN
253 ismstr = 2
254 CALL ancmsg(msgid=319,
255 . msgtype=msgwarning,
256 . anmode=aninfo_blind_2,
257 . i1=ig,
258 . c1=idtitl)
259 ENDIF
260 geo(3) = ismstr
261 igeo(5) = ismstr
262C
263C Temporary double storage
264 igeo(10)=ihbe
265 geo(171)=ihbe
266C
267 IF(ihbe==3)THEN
268 IF(geo(13)==zero)geo(13)=em01
269 IF(geo(14)==zero)geo(14)=em01
270 IF(geo(15)==zero)geo(15)=em02
271 ELSEIF(ihbe<10)THEN
272 IF(geo(13)==zero)geo(13)=em02
273 IF(geo(14)==zero)geo(14)=em02
274 IF(geo(15)==zero)geo(15)=em02
275 ENDIF
276 IF (ihbe>11.AND.ihbe<29) THEN
277 geo(13)=geo(17)
278 geo(17)=cvis
279 ENDIF
280
281C
282 IF(geo(38) == zero) geo(38)=five_over_6
283 IF(nly == -1)nly=npts_d
284 IF(nly == 0) nly = 1
285 IF(nly == 1) geo(38)= zero
286 an=sqrt(vx*vx+vy*vy+vz*vz)
287C---- error out w/ IRP=22,23
288 IF(an < em10)THEN
289 vx=one
290 vy=zero
291 vz=zero
292 IF (irp==23) THEN
293 CALL ancmsg(msgid=1922,
294 . msgtype=msgerror,
295 . anmode=aninfo,
296 . c1='PROPERTY',
297 . i1=ig,
298 . c2='PROPERTY',
299 . c3=titr,
300 . i2=irp)
301 END IF
302 ELSE
303 vx=vx/an
304 vy=vy/an
305 vz=vz/an
306 ENDIF
307
308 IF (sub_id /= 0)
309 . CALL subrotvect(vx,vy,vz,rtrans,sub_id,lsubmodel)
310
311
312 isk = 0
313 IF (idsk/=0) THEN
314 DO j=0,numskw+min(iun,nspcond)*numsph+nsubmod
315 IF(idsk == iskn(4,j+1)) THEN
316 isk=j+1
317 GO TO 10
318 ENDIF
319 END DO
320 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
321 CALL ancmsg(msgid=184,
322 . msgtype=msgerror,
323 . anmode=aninfo,
324 . c1='PROPERTY',
325 . i1=ig,
326 . c2='PROPERTY',
327 . c3=titr,
328 . i2=idsk)
329 10 CONTINUE
330 ENDIF
331 IF ((irp==22.OR.irp==25).AND.isk==0) THEN
332 CALL ancmsg(msgid=1923,
333 . msgtype=msgerror,
334 . anmode=aninfo,
335 . c1='PROPERTY',
336 . i1=ig,
337 . c2='property',
338 . C3=TITR,
339 . I2=IRP)
340 END IF
341 IGEO(2)=ISK
342 GEO(7)=VX
343 GEO(8)=VY
344 GEO(9)=VZ
345 IF(ITHK == 0)ITHK=ITHK_D
346 IF(ITHK_D==-2)ITHK=-1
347 IF(ISHEAR == 0)ISHEAR=ISHEA_D
348 IF(IPLAST == 0)IPLAST=IPLA_D
349 IF(IPLA_D==-2) IPLAST=-1
350C IF(ISTRAIN == 0)ISTRAIN=ISTR_D
351 GEO(11)=ISTRAIN
352 IHBE=IGEO(10)
353 IGEO(6)=IREP
354 GEO(35)=ITHK
355 GEO(37)=ISHEAR
356 GEO(39)=IPLAST
357 ISS=IGEO(5)
358 IG=IGEO(1)
359C-----using IGEO(14)=ICSTR
360 IGEO(14) = IRP
361C-----------------------------------------------------------------
362 IF(IS_ENCRYPTED)THEN
363 WRITE(IOUT,1000)IG
364 1000 FORMAT(
365 & 5X,'composite layered shell property set'/,
366 & 5X,'------------------------------------'/,
367 & 5X,'property set number . . . . . . . . . .=',I10/,
368 & 5X,'confidential data'//)
369 ELSE
370 IF(ISK == 0)THEN
371.AND. IF (IHBE>11IHBE<29) THEN
372 WRITE(IOUT,2112)IG,NLY,ISTRAIN,GEO(1),ISS,IHBE,
373 . ISH3N,IGEO(20),
374 . GEO(16),GEO(13),GEO(38),GEO(42),ISHEAR,ITHK,
375 . IPLAST,IREP,GEO(7),GEO(8),GEO(9),IGEO(14)
376 ELSE
377 WRITE(IOUT,2110)IG,NLY,ISTRAIN,GEO(1),ISS,IHBE,
378 . ISH3N,
379 . GEO(13),GEO(14),GEO(15),GEO(16),
380 . GEO(38),GEO(42),ISHEAR,ITHK,IPLAST,IREP,
381 . GEO(7),GEO(8),GEO(9),IGEO(14)
382 ENDIF
383 ELSE
384.AND. IF (IHBE>11IHBE<29) THEN
385 WRITE(IOUT,2113)IG,NLY,ISTRAIN,GEO(1),ISS,IHBE,
386 . ISH3N,IGEO(20),
387 . GEO(16),GEO(13),GEO(38),GEO(42),ISHEAR,ITHK,
388 . IPLAST,IREP,IDSK,IGEO(14)
389 ELSE
390 WRITE(IOUT,2111)IG,NLY,ISTRAIN,GEO(1),ISS,IHBE,
391 . ISH3N,
392 . GEO(13),GEO(14),GEO(15),GEO(16),GEO(38),
393 . GEO(42),ISHEAR,ITHK,IPLAST,IREP,IDSK,IGEO(14)
394 ENDIF
395 ENDIF
396 ENDIF
397C---
398 IF (NLY == 0) THEN
399 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
400 CALL ANCMSG(MSGID=27,
401 . MSGTYPE=MSGERROR,
402 . ANMODE=ANINFO_BLIND_1,
403 . I1=IG,
404 . C1=TITR)
405 ENDIF
406 IF (NLY>NLYMAX) THEN
407 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
408 CALL ANCMSG(MSGID=28,
409 . MSGTYPE=MSGERROR,
410 . ANMODE=ANINFO_BLIND_1,
411 . I2=NLYMAX,
412 . I1=IG,
413 . C1=TITR)
414 ENDIF
415 IF (NLY_TMP>NLYMAX) THEN
416 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
417 CALL ANCMSG(MSGID=28,
418 . MSGTYPE=MSGERROR,
419 . ANMODE=ANINFO_BLIND_1,
420 . I2=NLYMAX,
421 . I1=IG,
422 . C1=TITR)
423 ENDIF
424
425 N1 = MIN0(NLY,NLYMAX)
426 GEO(6)= MAX(N1,NLY_TMP)+EM01
427 IGEO(4) = MAX(N1,NLY_TMP)
428C--------------------------------------------------------------------
429C READING OF ANGLES, THICKNESSES, LAYER POSITIONS AND MATERIALS
430C--------------------------------------------------------------------
431C----------------------
432C READ LINE 5 -> 5+N1
433C----------------------
434 M = 0
435 DO K=1,N1
436 CALL HM_GET_INT_ARRAY_INDEX('ipply',IPPLY,K,IS_AVAILABLE,LSUBMODEL)
437
438 CALL HM_GET_FLOAT_ARRAY_INDEX('prop_phi',PHI_I,K,IS_AVAILABLE,LSUBMODEL,UNITAB)
439 CALL HM_GET_FLOAT_ARRAY_INDEX('prop_thick',THK_I,K,IS_AVAILABLE,LSUBMODEL,UNITAB)
440 CALL HM_GET_FLOAT_ARRAY_INDEX('prop_zi',Z_I,K,IS_AVAILABLE,LSUBMODEL,UNITAB)
441 CALL HM_GET_FLOAT_ARRAY_INDEX('prop_wfi',WEIGHT,K,IS_AVAILABLE,LSUBMODEL,UNITAB)
442 IF (IPPLY == 0) IPPLY = 1
443C----------------------
444 DO L=1,IPPLY
445 M = M + 1
446 CALL HM_GET_INT_ARRAY_INDEX('prop_mi',NUML(M),K,IS_AVAILABLE,LSUBMODEL)
447 GEO(IPANG+M) = PHI_I
448 GEO(IPTHK+M) = THK_I/IPPLY
449 GEO(IPPOS+M) = Z_I
450 IF (WEIGHT == ZERO) WEIGHT = ONE
451 GEO(IPWEIGHT+M)= WEIGHT
452 ENDDO
453 ENDDO
454C--- Thickness & position of the layers
455 IGEO(99) = IPOS
456 ZSHIFT = ZERO
457 IF (IPOS > 0)THEN
458 TMIN = EP20
459 TMAX = -EP20
460
461 DO N=1,NLY_TMP
462 DT = HALF*GEO(IPTHK+N)
463 TMIN = MIN(TMIN,GEO(IPPOS+N)-DT)
464 TMAX = MAX(TMAX,GEO(IPPOS+N)+DT)
465 ENDDO
466 THICKT = TMAX - TMIN
467 ZSHIFT = HALF*(TMAX + TMIN)
468 DT = ZERO
469 IF (DEFAULTS_SHELL%IOFFSET==3) DT = ZSHIFT
470 GEO(200)=THICKT
471 DO N=1,NLY_TMP
472 GEO(IPTHK+N)=GEO(IPTHK+N) / MAX(THICKT,EM20)
473 GEO(IPPOS+N)=(GEO(IPPOS+N)-DT) / MAX(THICKT,EM20)
474 ENDDO
475 ELSE
476 THICKT = ZERO
477 DO N=1,NLY_TMP
478 THICKT=THICKT+GEO(IPTHK+N)
479 ENDDO
480 DO N=1,NLY_TMP
481 GEO(IPTHK+N)=GEO(IPTHK+N) / MAX(THICKT,EM20)
482 ENDDO
483C--- automatic calculation of layer positions
484 GEO(IPPOS+1) = -HALF + HALF*GEO(IPTHK+1)
485 DO N=2,NLY_TMP
486 GEO(IPPOS+N) = GEO(IPPOS+N-1)
487 . + HALF*(GEO(IPTHK+N)+GEO(IPTHK+N-1))
488 ENDDO
489 GEO(200)=THICKT
490 ENDIF
491 GEO(199) = ZSHIFT
492C--- Test validite epaisseur
493 IERREL=NINT(ABS((THICKT-GEO(1))/GEO(1))*EP02)
494 IF(IERREL>10) THEN
495 PID1=IGEO(1)
496 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
497 CALL ANCMSG(MSGID=29,
498 . MSGTYPE=MSGWARNING,
499 . ANMODE=ANINFO_BLIND_1,
500 . I2=IERREL,
501 . I1=PID1,
502 . C1=TITR)
503 ENDIF
504C--------------------------------------------------------------
505C MATERIAUX: TRANSFORMATION EN NOS INTERNES + TESTS DE VALIDITE
506C-------LAYER 1
507 DO J=1,NUMMAT
508 IF (IPM(1,J) == NUML(1)) THEN
509 IGEO(IPMAT+1) = J
510 MLAWLY1= NINT(PM(19,J))
511 IF(MLAWLY1 == 25) GO TO 250
512 IF(MLAWLY1 == 27) GO TO 250
513 IF(MLAWLY1 == 15) GO TO 250
514 IF(MLAWLY1>=29) GO TO 250
515 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
516 CALL FRETITL2(TITR1,IPM(NPROPMI-LTITR+1,J),LTITR)
517 CALL ANCMSG(MSGID=30,
518 . ANMODE=ANINFO,
519 . MSGTYPE=MSGERROR,
520 . I1=IG,
521 . C1=TITR,
522 . I2=NUML(1),
523 . C2=TITR1,
524 . I3=MLAWLY1)
525 GO TO 250
526 ENDIF
527 ENDDO
528 CALL FRETITL2(TITR1,IGEO(NPROPGI-LTITR+1),LTITR)
529 CALL ANCMSG(MSGID=31,
530 . ANMODE=ANINFO,
531 . MSGTYPE=MSGERROR,
532 . I1=IG,
533 . C1=TITR1,
534 . I2=NUML(1))
535 IGEO(IPMAT+1) = 1
536 250 CONTINUE
537C-----OTHER LAYERS
538 DO 350 N=2,NLY_TMP
539 DO J=1,NUMMAT
540 IF(IPM(1,J) == NUML(N)) THEN
541 IGEO(IPMAT+N) = J
542 IF(NINT(PM(19,J)) == MLAWLY1) GO TO 350
543 WRITE(LAW_ID,'(i2)')MLAWLY1
544 IF (MLAWLY1==99) LAW_ID='user'
545 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
546 CALL FRETITL2(TITR1,IPM(NPROPMI-LTITR+1,J),LTITR)
547 CALL ANCMSG(MSGID=334,
548 . MSGTYPE=MSGERROR,
549 . ANMODE=ANINFO_BLIND_1,
550 . I1=IG,
551 . C1=TITR,
552 . I2=NUML(N),
553 . C2=TITR1,
554 . C3=LAW_ID)
555 GO TO 350
556 ENDIF
557 ENDDO
558 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
559 CALL ANCMSG(MSGID=31,
560 . ANMODE=ANINFO,
561 . MSGTYPE=MSGERROR,
562 . I1=IG,
563 . C1=TITR,
564 . I2=NUML(N))
565 IGEO(IPMAT+N) = 1
566 350 CONTINUE
567C
568 DO N=1,NLY_TMP
569 M1=IPANG+N
570 M2=IPTHK+N
571 M3=IPPOS+N
572 M4=IPWEIGHT+N
573.NOT. IF( IS_ENCRYPTED)THEN
574 WRITE(IOUT,2121)N,GEO(M1),GEO(M2)*GEO(1),GEO(M3)*GEO(1),
575 . GEO(M4),NUML(N)
576 ENDIF
577 GEO(M1)=GEO(M1)*PI/HUNDRED80
578 ENDDO
579C-----------------------------
580C IHBE IPLA ISTRAIN - shells
581C-----------------------------
582 IHBE=NINT(GEO(171))
583 IF(IHBE==0)THEN
584 GEO(171)=0
585 ELSEIF(IHBE==1)THEN
586 GEO(171)=1
587 ELSEIF(IHBE==2)THEN
588 GEO(171)=0
589.AND..AND. ELSEIF(IHBE>=3IHBE<100IHBE/=4)THEN
590 GEO(171)=IHBE-1
591 ENDIF
592
593
594 ISHEAR = GEO(37)
595 IF(ISHEAR==0)THEN
596 GEO(37)=0
597 ELSEIF(ISHEAR==1)THEN
598 GEO(37)=1
599 ELSEIF(ISHEAR==2)THEN
600 GEO(37)=0
601 ENDIF
602
603c---- Shells
604 PROP_TAG(IGTYP)%G_SIG = 0
605 PROP_TAG(IGTYP)%G_FOR = 5
606 PROP_TAG(IGTYP)%G_MOM = 3
607 PROP_TAG(IGTYP)%G_THK = 1
608 PROP_TAG(IGTYP)%G_EINT= 2
609 PROP_TAG(IGTYP)%G_EINS= 0
610 PROP_TAG(IGTYP)%L_SIG = 5
611 IF (IGTYP == 17) PROP_TAG(IGTYP)%L_SIGPLY = 3
612 PROP_TAG(IGTYP)%L_THK = 0
613 PROP_TAG(IGTYP)%L_EINT= 2
614 PROP_TAG(IGTYP)%L_EINS= 0
615 PROP_TAG(IGTYP)%G_VOL = 0
616 PROP_TAG(IGTYP)%L_VOL = 0
617 PROP_TAG(IGTYP)%LY_DMG = 2
618
619 PROP_TAG(IGTYP)%LY_GAMA = 6
620 PROP_TAG(IGTYP)%LY_DIRA = 2
621
622 PROP_TAG(IGTYP)%LY_PLAPT = 1
623 PROP_TAG(IGTYP)%LY_SIGPT = 5
624 PROP_TAG(IGTYP)%G_FORPG = 5
625 PROP_TAG(IGTYP)%G_MOMPG = 3
626 PROP_TAG(IGTYP)%G_STRPG = 8
627 IF(IGMAT > 1)
628 . PROP_TAG(IGTYP)%LY_DMG = 2
629
630
631 IGEO(1) =IG
632 IGEO(11)=IGTYP
633.AND. IF(GEO( 3)/=ZEROIGEO( 5)== 0)IGEO( 5)=NINT(GEO( 3))
634.AND. IF(GEO(39)/=ZEROIGEO( 9)== 0)IGEO( 9)=NINT(GEO(39))
635.AND. IF(GEO(171)/=ZEROIGEO(10)== 0)
636 . IGEO(10)=NINT(GEO(171))
637
638C----
639 RETURN
640 2110 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,'x component of dir 1 of orthotropy. . .=',1PG20.13/,
663 & 5X,'y component of dir 1 of orthotropy. . .=',1PG20.13/,
664 & 5X,'z component of dir 1 of orthotropy. . .=',1PG20.13/,
665 & 5X,'reference direction flag in shell plane=',I10/)
666 2111 FORMAT(
667 & 5X,'composite layered shell property set ',
668 & 'with variable thicknesses and materials'/,
669 & 5X,'property set number . . . . . . . . . .=',I10/,
670 & 5X,'number of layers. . . . . . . . . . . .=',I10/,
671 & 5X,'post processing strain flag . . . . . .=',I10/,
672 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
673 & 5X,'small strain flag . . . . . . . . . . .=',I10/,
674 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
675 & 5X,'3node shell formulation flag. . . . . .=',I10/,
676 & 5X,'shell hourglass membrane damping. . . .=',1PG20.13/,
677 & 5X,'shell hourglass flexural damping. . . .=',1PG20.13/,
678 & 5X,'shell hourglass rotational damping. . .=',1PG20.13/,
679 & 5X,'shell membrane damping. . . . . . . . .=',1PG20.13/,
680 & 5X,'shear area reduction factor . . . . . .=',1PG20.13/,
681 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
682 & 5X,' > 0.0 : fraction of failed thickness ',/,
683 & 5X,' < 0.0 : fraction of failed layers ',/,
684 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
685 & 5X,'thickness variation flag. . . . . . . .=',I10/,
686 & 5X,'plasticity formulation flag . . . . . .=',I10/,
687 & 5X,'local ortothropy system flag. . . . . .=',I10/,
688 & 5X,'skew of the first orthotropy direction.=',I10/,
689 & 5X,'reference direction flag in shell plane=',I10/)
690 2112 FORMAT(
691 & 5X,'composite layered shell property set ',
692 & 'with variable thicknesses and materials'/,
693 & 5X,'property set number . . . . . . . . . .=',I10/,
694 & 5X,'number of layers. . . . . . . . . . . .=',I10/,
695 & 5X,'post processing strain flag . . . . . .=',I10/,
696 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
697 & 5X,'small strain flag . . . . . . . . . . .=',I10/,
698 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
699 & 5X,'3node shell formulation flag. . . . . .=',I10/,
700 & 5X,'drilling d.o.f. flag . . . . . . . . .=',I10/,
701 & 5X,'shell membrane damping. . . . . . . . .=',1PG20.13/,
702 & 5X,'shell numerical damping . . . . . . . .=',1PG20.13/,
703 & 5X,'shear area reduction factor . . . . . .=',1PG20.13/,
704 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
705 & 5X,' > 0.0 : fraction of failed thickness ',/,
706 & 5X,' < 0.0 : fraction of failed layers ',/,
707 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
708 & 5X,'thickness variation flag. . . . . . . .=',I10/,
709 & 5X,'plasticity formulation flag . . . . . .=',I10/,
710 & 5X,'local ortothropy system flag. . . . . .=',I10/,
711 & 5X,'x component of dir 1 of orthotropy. . .=',1PG20.13/,
712 & 5X,'y component of dir 1 of orthotropy. . .=',1PG20.13/,
713 & 5X,'z component of dir 1 of orthotropy. . .=',1PG20.13/,
714 & 5X,'reference direction flag in shell plane=',I10/)
715 2113 FORMAT(
716 & 5X,'composite layered shell property set ',
717 & 'with variable thicknesses and materials'/,
718 & 5X,'property set number . . . . . . . . . .=',I10/,
719 & 5X,'number of layers. . . . . . . . . . . .=',I10/,
720 & 5X,'post processing strain flag . . . . . .=',I10/,
721 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
722 & 5X,'small strain flag . . . . . . . . . . .=',I10/,
723 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
724 & 5X,'3node shell formulation flag. . . . . .=',I10/,
725 & 5X,'drilling d.o.f. flag . . . . . . . . .=',I10/,
726 & 5X,'shell membrane damping. . . . . . . . .=',1PG20.13/,
727 & 5X,'shell numerical damping . . . . . . . .=',1PG20.13/,
728 & 5X,'shear area reduction factor . . . . . .=',1PG20.13/,
729 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
730 & 5X,' > 0.0 : fraction of failed thickness ',/,
731 & 5X,' < 0.0 : fraction of failed layers ',/,
732 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
733 & 5X,'thickness variation flag. . . . . . . .=',I10/,
734 & 5X,'plasticity formulation flag . . . . . .=',I10/,
735 & 5X,'local ortothropy system flag. . . . . .=',I10/,
736 & 5X,'skew of the first orthotropy direction.=',I10/,
737 & 5X,'reference direction flag in shell plane=',I10/)
738 2121 FORMAT(
739 & 5X,'layer ',I3/,
740 & 5X,' angle(dir 1,proj(dir 1 / shell).=',1PG20.13/,
741 & 5X,' thickness . . . . . . . . . . . .=',1PG20.13/,
742 & 5X,' position. . . . . . . . . . . . .=',1PG20.13/,
743 & 5X,' layer failure weight factor . . .=',1PG20.13/,
744 & 5X,' material number . . . . . . . . .=',I10/)
745 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_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:895
subroutine fretitl2(titr, iasc, l)
Definition freform.F:799
subroutine subrotvect(x, y, z, rtrans, sub_id, lsubmodel)
Definition subrot.F:54