OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_prop01.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_prop01 ../starter/source/properties/shell/hm_read_prop01.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!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
30!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
31!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.f
32!||--- uses -----------------------------------------------------
33!|| defaults_mod ../starter/source/modules/defaults_mod.F90
34!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
35!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
36!|| message_mod ../starter/share/message_module/message_mod.F
37!|| submodel_mod ../starter/share/modules1/submodel_mod.F
38!||====================================================================
39 SUBROUTINE hm_read_prop01(GEO ,IGEO ,PROP_TAG ,MULTI_FVM,IGTYP ,
40 . IG ,IDTITL ,
41 . UNITAB ,LSUBMODEL,DEFAULTS_SHELL)
42C============================================================================
43C M o d u l e s
44C-----------------------------------------------
45 USE unitab_mod
46 USE elbuftag_mod
47 USE message_mod
48 USE multi_fvm_mod
49 USE submodel_mod
53 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 "scr16_c.inc"
64#include "tablen_c.inc"
65C-----------------------------------------------
66C D u m m y A r g u m e n t s
67C-----------------------------------------------
68 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
69 INTEGER IGEO(*)
70 INTEGER IGTYP,IG
72 . geo(*)
73 CHARACTER(LEN=NCHARTITLE)::IDTITL
74 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
75 TYPE(multi_fvm_struct) :: MULTI_FVM
76 TYPE(submodel_data),INTENT(IN)::LSUBMODEL(*)
77 TYPE(shell_defaults_), INTENT(IN) :: DEFAULTS_SHELL
78C-----------------------------------------------
79C L o c a l V a r i a b l e s
80C-----------------------------------------------
81 INTEGER ISMSTR, NIP,
82 . ISHEAR, ISTRAIN,
83 . ihbe,iplast,ithk,ihbeoutp,
84 . nshell, nshsup, nshinf,
85 . nsst_d, nsst_ds, npsh,isen,isorth,
86 . ihbe_old, ish3n,isrot,ipinch,ipos
87 INTEGER IHBE_D,IPLA_D,ITHK_D,ISHEA_D,ISST_D,
88 . ISH3N_D, ISTRA_D,NPTS_D,IDRIL_D
89
91 . pun,cvis,dn_p,pthk,zshift
92 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
93 DATA NSHELL /0/, NSHSUP /0/, NSHINF /0/
94C-----------------------------------------------
95 DATA pun/0.1/
96C=======================================================================
97 is_encrypted = .false.
98 is_available = .false.
99
100 ihbe=0
101 ismstr=0
102 isrot=0
103 ipinch=0
104 isorth=0
105 isen=0
106 npsh=0
107 nsst_d = 0
108 nsst_ds= 0
109 pthk = zero
110 ipos =0
111C
112 ihbe_d = defaults_shell%ishell
113 ish3n_d= defaults_shell%ish3n
114 isst_d = defaults_shell%ismstr
115 ipla_d = defaults_shell%iplas
116 ithk_d = defaults_shell%ithick
117 idril_d= defaults_shell%idrill
118 ishea_d = 0
119 npts_d = 0
120 istra_d = 1
121C Temporary double storage - Delete GEO (12) = Igtyp after tests
122 igeo( 1)=ig
123 igeo(11)=igtyp
124 geo(12) =igtyp+pun
125C----------------------
126C HIDDEN FLAGS
127C----------------------
128C ISHEAR NEVER USED
129 ishear = 0
130C Cvis used in shell routines
131 cvis = zero
132C ISEN USED IN ENGINE call csens3.F routine
133 isen = 0
134C--------------------------------------------------
135C EXTRACT DATA (IS OPTION CRYPTED)
136C--------------------------------------------------
137 CALL hm_option_is_encrypted(is_encrypted)
138C--------------------------------------------------
139C EXTRACT DATAS (INTEGER VALUES)
140C--------------------------------------------------
141 CALL hm_get_intv('Ishell',ihbe,is_available,lsubmodel)
142 CALL hm_get_intv('Ismstr',ismstr,is_available,lsubmodel)
143 CALL hm_get_intv('Ish3',ish3n,is_available,lsubmodel)
144 CALL hm_get_intv('Idrill',isrot,is_available,lsubmodel)
145 CALL hm_get_intv('Ipinch',ipinch,is_available,lsubmodel)
146 CALL hm_get_intv('NIP',nip,is_available,lsubmodel)
147C CALL HM_GET_INTV('ISTRAIN',ISTRAIN,IS_AVAILABLE,LSUBMODEL)
148 CALL hm_get_intv('ITHICK',ithk,is_available,lsubmodel)
149 CALL hm_get_intv('IPLAS',iplast,is_available,lsubmodel)
150 CALL hm_get_intv('Ipos',ipos,is_available,lsubmodel)
151C--------------------------------------------------
152C EXTRACT DATAS (REAL VALUES)
153C--------------------------------------------------
154 CALL hm_get_floatv('P_Thick_Fail',pthk,is_available,lsubmodel,unitab)
155 CALL hm_get_floatv('Hm',geo(13),is_available,lsubmodel,unitab)
156 CALL hm_get_floatv('Hf',geo(14),is_available,lsubmodel,unitab)
157 CALL hm_get_floatv('Hr',geo(15),is_available,lsubmodel,unitab)
158 CALL hm_get_floatv('Dm',geo(16),is_available,lsubmodel,unitab)
159 CALL hm_get_floatv('dn',GEO(17),IS_AVAILABLE,LSUBMODEL,UNITAB)
160 CALL HM_GET_FLOATV('thick',GEO(1),IS_AVAILABLE,LSUBMODEL,UNITAB)
161 CALL HM_GET_FLOATV('area_shear',GEO(38),IS_AVAILABLE,LSUBMODEL,UNITAB)
162C----------------------
163C For example : apply submodel offsets units submodel transform to V (VX,VY,VZ) if needed
164C
165c IF (SUB_INDEX /= 0)
166c . CALL SUBROTVECT(VX,VY,VZ,RTRANS,SUB_INDEX,LSUBMODEL)
167C----------------------
168C
169 IF (PTHK == ZERO) PTHK = ONE-EM06
170 PTHK = MIN(PTHK, ONE)
171 PTHK = MAX(PTHK,-ONE)
172 GEO(42) = PTHK
173C----------------------
174C fixing flag and removed from input
175 ISTRAIN=1
176 IF(IHBE==0)IHBE=IHBE_D
177 IHBEOUTP=IHBE
178.AND..AND. IF (IHBE == 4 ISH3N==0 ISH3N_D == 1) THEN
179 CALL ANCMSG(MSGID=680,
180 . MSGTYPE=MSGWARNING,
181 . ANMODE=ANINFO_BLIND_1,
182 . I1=IG,
183 . C1=IDTITL)
184 ENDIF
185.OR. IF (IHBE==22IHBE==23) THEN
186 CALL ANCMSG(MSGID=539,
187 . MSGTYPE=MSGWARNING,
188 . ANMODE=ANINFO_BLIND_1,
189 . I1=IG,
190 . C1=IDTITL)
191 IHBE=24
192 ENDIF
193 IF(ISH3N==0) ISH3N = ISH3N_D
194 IGEO(18) = ISH3N
195 IF (GEO(16) == ZERO) IGEO(31) = 1
196
197 IF (IHBE==24) THEN
198 IF (CVIS==ZERO) CVIS=ONE
199 IF (GEO(17)==ZERO) GEO(17)=ZEP015
200 ENDIF
201C---
202 IF(ISMSTR==0)ISMSTR=ISST_D
203 IF (ISST_D == -2) ISMSTR = -1
204 IF(IHBE==3)THEN
205 IF(GEO(13)==ZERO)GEO(13)=EM01
206 IF(GEO(14)==ZERO)GEO(14)=EM01
207 IF(GEO(15)==ZERO)GEO(15)=EM02
208 ELSE
209 IF(GEO(13)==ZERO)GEO(13)=EM02
210 IF(GEO(14)==ZERO)GEO(14)=EM02
211 IF(GEO(15)==ZERO)GEO(15)=EM02
212 ENDIF
213 IF(ISROT==0)ISROT=IDRIL_D
214 IF(ISROT==2) ISROT = 0
215 IGEO(20)=ISROT
216 IGEO(51)=IPINCH
217.AND. IF(IPINCH /= 1 IPINCH /=0) THEN
218 CALL ANCMSG(MSGID=1700,ANMODE=ANINFO,MSGTYPE=MSGERROR,
219 . I1=IG, C1=IDTITL, I2=IPINCH)
220 ENDIF
221 IF(IPINCH == 1) THEN
222 NPINCH = NUMNOD
223 ENDIF
224C-------to have DR---- to do it in cgrtais when Ismstr=10 is recommended one day
225.AND..AND. IF (ISMSTR==10ISROT>0IDROT==0) IDROT = 1
226C
227.AND. IF (IHBE>11IHBE<29) THEN
228 GEO(13)=GEO(17)
229 GEO(17)=CVIS
230 ENDIF
231C----------------------
232 IF(ISMSTR==0)ISMSTR=2
233.AND..AND. IF(ISMSTR==3IHBE/=0IHBE/=2) THEN
234 ISMSTR = 2
235 CALL ANCMSG(MSGID=319,
236 . MSGTYPE=MSGWARNING,
237 . ANMODE=ANINFO_BLIND_2,
238 . I1=IG,
239 . C1=IDTITL)
240 ENDIF
241 GEO(3)=ISMSTR
242C----------------------
243C
244 IF(GEO(38)==ZERO) GEO(38)=FIVE_OVER_6
245 IF(NIP==-1)NIP=NPTS_D
246 IF(NIP==1)THEN
247.OR. IF(IHBE==0IHBE==2) THEN
248 IHBE_OLD=IHBE
249 IHBE = 1
250 CALL ANCMSG(MSGID=322,
251 . MSGTYPE=MSGWARNING,
252 . ANMODE=ANINFO_BLIND_2,
253 . I1=IG,
254 . C1=IDTITL,
255 . I2=IHBE_OLD,
256 . I3=IHBE)
257 ENDIF
258 GEO(38)= ZERO
259 ENDIF
260 IF(NIP>10) THEN
261 CALL ANCMSG(MSGID=788,
262 . MSGTYPE=MSGERROR,
263 . ANMODE=ANINFO,
264 . I1=IG,
265 . C1=IDTITL)
266
267 ENDIF
268 IF(ITHK==0) ITHK=ITHK_D
269 IF(ITHK_D==-2) ITHK=-1
270 IF(ISHEAR==0) ISHEAR=ISHEA_D
271 IF(IPLAST==0) IPLAST=IPLA_D
272 IF(IPLA_D==-2) IPLAST=-1
273C IF(ISTRAIN==0)ISTRAIN=ISTR_D
274.NOT. IF( IS_ENCRYPTED)THEN
275.AND..OR. IF (IHBE>11IHBE<29
276.AND..OR. . (IHBE==0(ISH3N==1ISH3N==2))) THEN
277C-------not change default dn of DKT with old define (ishel=12)
278 DN_P = GEO(13)
279.AND. IF (IHBE==12DN_P==ZERO) DN_P=EM03
280 WRITE(IOUT,1112)IG,NIP,ISTRAIN,GEO(1),ISMSTR,IHBEOUTP,
281 . ISH3N,ISROT,IPINCH,GEO(16),DN_P,GEO(38),
282 . PTHK,ISHEAR,ITHK,IPLAST,IPOS
283 ELSE
284 WRITE(IOUT,1110)IG,NIP,ISTRAIN,GEO(1),ISMSTR,IHBEOUTP,
285 . ISH3N,
286 . GEO(13),GEO(14),GEO(15),GEO(16),GEO(38),
287 . PTHK,ISHEAR,ITHK,IPLAST,IPOS
288 ENDIF
289 ELSE
290 WRITE(IOUT,1199)IG
291 ENDIF
292 NSHELL = NSHELL + 1
293 IF (GEO(1)>=9) NSHSUP = NSHSUP +1
294 IF (GEO(1)<FOURTH) NSHINF = NSHINF +1
295 GEO(6) =NIP+PUN
296 IGEO(4) =NIP
297
298 GEO(35) =ITHK
299 GEO(39) =IPLAST
300 IGEO(3) =ISEN
301C-----------------------------
302C IHBE IPLA ISTRAIN
303C-----------------------------
304C Temporary double storage
305 GEO(171)=IHBE
306 IGEO(10)=IHBE
307 IF(IHBE==0)THEN
308 GEO(171)=0
309 ELSEIF(IHBE==1)THEN
310 GEO(171)=1
311 ELSEIF(IHBE==2)THEN
312 GEO(171)=0
313.AND..AND. ELSEIF(IHBE>=3IHBE<100IHBE/=4)THEN
314 GEO(171)=IHBE-1
315 ENDIF
316
317 GEO(11) =ISTRAIN
318
319 GEO(37) =ISHEAR
320 IF(ISHEAR==0)THEN
321 GEO(37)=0
322 ELSEIF(ISHEAR==1)THEN
323 GEO(37)=1
324 ELSEIF(ISHEAR==2)THEN
325 GEO(37)=0
326 ENDIF
327
328 IGEO(17)=ISORTH ! == 0 Isotropic property
329 IGEO(99) = IPOS
330 ZSHIFT = ZERO
331 IF (IPOS==3) THEN
332 ZSHIFT = -HALF
333 ELSEIF (IPOS==4) THEN
334 ZSHIFT = HALF
335 END IF
336 GEO(199) = ZSHIFT
337C-------------------------------
338C Temporary double storage
339 IGEO( 5)=NINT(GEO( 3))
340 IGEO( 9)=NINT(GEO(39))
341C-----------------------------
342C PROPERTY BUFFER
343C-----------------------------
344 PROP_TAG(IGTYP)%G_SIG = 0
345 PROP_TAG(IGTYP)%G_FOR = 5
346 PROP_TAG(IGTYP)%G_MOM = 3
347 PROP_TAG(IGTYP)%G_THK = 1
348 PROP_TAG(IGTYP)%G_EINT= 2
349 PROP_TAG(IGTYP)%G_EINS= 0
350 PROP_TAG(IGTYP)%G_AREA= 1
351 PROP_TAG(IGTYP)%L_SIG = 5
352 PROP_TAG(IGTYP)%L_THK = 0
353 PROP_TAG(IGTYP)%L_EINT= 2
354 PROP_TAG(IGTYP)%L_EINS= 0
355 PROP_TAG(IGTYP)%G_VOL = 0
356 PROP_TAG(IGTYP)%L_VOL = 0
357 PROP_TAG(IGTYP)%LY_DMG = 2
358 PROP_TAG(IGTYP)%LY_PLAPT = 1
359 PROP_TAG(IGTYP)%LY_SIGPT = 5
360 PROP_TAG(IGTYP)%G_FORPG = 5
361 PROP_TAG(IGTYP)%G_MOMPG = 3
362 PROP_TAG(IGTYP)%G_STRPG = 8
363C pinching for batoz shells
364.AND..AND. IF (IGTYP == 1 IHBE == 12 IPINCH == 1) THEN
365 PROP_TAG(IGTYP)%G_FORPGPINCH = 1
366 PROP_TAG(IGTYP)%G_MOMPGPINCH = 2
367 PROP_TAG(IGTYP)%G_EPGPINCHXZ = 1
368 PROP_TAG(IGTYP)%G_EPGPINCHYZ = 1
369 PROP_TAG(IGTYP)%G_EPGPINCHZZ = 1
370 ENDIF
371C-------------------------------
372 RETURN
373C-----------
374 1110 FORMAT(
375 & 5X,'isotropic shell property set'/,
376 & 5X,'property set number . . . . . . . . . .=',I10/,
377 & 5X,'number of integration points. . . . . .=',I10/,
378 & 5X,'post processing strain flag . . . . . .=',I10/,
379 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
380 & 5X,'small strain flag . . . . . . . . . . .=',I10/,
381 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
382 & 5X,'3node shell formulation flag. . . . . .=',I10/,
383 & 5X,'shell hourglass membrane damping. . . .=',1PG20.13/,
384 & 5X,'shell hourglass flexural damping. . . .=',1PG20.13/,
385 & 5X,'shell hourglass rotational damping. . .=',1PG20.13/,
386 & 5X,'shell membrane damping. . . . . . . . .=',1PG20.13/,
387 & 5X,'shear area reduction factor . . . . . .=',1PG20.13/,
388 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
389 & 5X,' > 0.0 : fraction of failed thickness ',/,
390 & 5X,' < 0.0 : fraction of failed intg. points',/,
391 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
392 & 5X,'thickness variation flag. . . . . . . .=',I10/,
393 & 5X,'plasticity formulation flag . . . . . .=',I10/,
394 & 5X,'shell offset position flag . . . . . . =',I10//)
395 1112 FORMAT(
396 & 5X,'isotropic shell property set'/,
397 & 5X,'property set number . . . . . . . . . .=',I10/,
398 & 5X,'number of integration points. . . . . .=',I10/,
399 & 5X,'post processing strain flag . . . . . .=',I10/,
400 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
401 & 5X,'small strain flag . . . . . . . . . . .=',I10/,
402 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
403 & 5X,'3node shell formulation flag. . . . . .=',I10/,
404 & 5X,'drilling d.o.f. flag . . . . . . . . .=',I10/,
405 & 5X,'pinching d.o.f. flag . . . . . . . . .=',I10/,
406 & 5X,'shell membrane damping. . . . . . . . .=',1PG20.13/,
407 & 5X,'shell numerical damping . . . . . . . .=',1PG20.13/,
408 & 5X,'shear area reduction factor . . . . . .=',1PG20.13/,
409 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
410 & 5X,' > 0.0 : fraction of failed thickness ',/,
411 & 5X,' < 0.0 : fraction of failed intg. points',/,
412 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
413 & 5X,'thickness variation flag. . . . . . . .=',I10/,
414 & 5X,'plasticity formulation flag . . . . . .=',I10/,
415 & 5X,'shell offset position flag . . . . . . =',I10//)
416 1199 FORMAT(
417 & 5X,'isotropic shell property set'/,
418 & 5X,'property set number . . . . . . . . . .=',I10/,
419 & 5X,'confidential data'//)
420 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
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 hm_read_prop01(geo, igeo, prop_tag, multi_fvm, igtyp, ig, idtitl, unitab, lsubmodel, defaults_shell)
subroutine area(d1, x, x2, y, y2, eint, stif0)
integer, parameter nchartitle
program starter
Definition starter.F:39