OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_prop21.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"
#include "com04_c.inc"
#include "param_c.inc"
#include "tablen_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_prop_read21 (geo, igeo, ig, iskn, unitab, rtrans, lsubmodel, sub_id, idtitl, igtyp, prop_tag, defaults_solid)

Function/Subroutine Documentation

◆ hm_prop_read21()

subroutine hm_prop_read21 ( geo,
integer, dimension(npropgi) igeo,
integer ig,
integer, dimension(liskn,*) iskn,
type (unit_type_), intent(in) unitab,
rtrans,
type(submodel_data), dimension(*) lsubmodel,
integer sub_id,
character(len=nchartitle) idtitl,
integer igtyp,
type(prop_tag_), dimension(0:maxprop) prop_tag,
type(solid_defaults_), intent(in) defaults_solid )

Definition at line 39 of file hm_read_prop21.F.

42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE unitab_mod
46 USE elbuftag_mod
47 USE submodel_mod
48 USE message_mod
49 USE defaults_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "units_c.inc"
59#include "com04_c.inc"
60#include "param_c.inc"
61#include "tablen_c.inc"
62C-----------------------------------------------
63C D u m m y A r g u m e n t s
64C-----------------------------------------------
65 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
66 INTEGER IGEO(NPROPGI),IG,ISKN(LISKN,*),SUB_ID,IGTYP
67 my_real geo(npropg)
68 my_real rtrans(ntransf,*)
69 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
70 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
71 TYPE(SOLID_DEFAULTS_), INTENT(IN) :: DEFAULTS_SOLID
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
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
82C-----------------------------------------------
83C E x t e r n a l F u n c t i o n s
84C-----------------------------------------------
85 DATA pun/0.1/
86C======================================================================|
87C----------------------
88C 21 ORTHOTROPIC THICK SHELL
89C----------------------
90C======================================================================|
91
92 is_encrypted = .false.
93 is_available = .false.
94
95C HIDDEN FLAGS
96C----------------------
97 istrain = 1
98 iplast = 2
99 jcvt = 2
100 iint = 1
101 icpre = 0
102
103!--- defaults values
104 ihbe_ds= defaults_solid%ISOLID
105 isst_ds= defaults_solid%ISMSTR
106 icontrol_d=defaults_solid%ICONTROL
107C Double stockage temporaire - supprimer GEO(12,I)=IGTYP apres tests
108 igeo( 1)=ig
109 igeo(11)=igtyp
110 geo(12) =igtyp+pun
111
112 npt = 0
113
114C--------------------------------------------------
115C EXTRACT DATA (IS OPTION CRYPTED)
116C--------------------------------------------------
117 CALL hm_option_is_encrypted(is_encrypted)
118C--------------------------------------------------
119C EXTRACT DATAS (INTEGER VALUES)
120C--------------------------------------------------
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)
124 CALL hm_get_intv('NBP',npt,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)
128C--------------------------------------------------
129C EXTRACT DATAS (REAL VALUES)
130C--------------------------------------------------
131 CALL hm_get_floatv('dn',cvis,is_available,lsubmodel,unitab)
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)
136 CALL hm_get_floatv('qa',qa,is_available,lsubmodel,unitab)
137 CALL hm_get_floatv('qb',qb,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)
143C----------------------
144Capply submodel transform to V (VX,VY,VZ)
145C
146 IF (SUB_ID /= 0)
147 . CALL SUBROTVECT(VX,VY,VZ,RTRANS,SUB_ID,LSUBMODEL)
148
149C-----------------------
150C--- Default values
151C
152C ihbe
153 IF (IHBE == 0) IHBE = IHBE_DS
154.AND. IF (IHBE /= 14 IHBE /= 15) THEN
155c CALL ANSTCKI(IG)
156c CALL ANSTCKI(IHBE)
157c CALL ANCERR(175,ANINFO_BLIND_1)
158 CALL ANCMSG(MSGID=549,
159 . MSGTYPE=MSGERROR,
160 . ANMODE=ANINFO_BLIND_1,
161 . I1=IG,
162 . C1=IDTITL,
163 . I2=IHBE,
164 . I3=21)
165 ENDIF
166C
167C smstr
168 IF(ISMSTR == 0) ISMSTR=ISST_DS
169 IF(ISMSTR == 0) ISMSTR=4
170.OR. IF (ISST_DS == -2ISMSTR<0) ISMSTR=4
171C
172C icpre/icstr
173C
174C ICPRE = 0
175 IP = 0
176.AND. IF (IHBE == 14 ICSTR == 0) ICSTR = 10
177.AND. IF (IHBE == 14
178.AND..AND. . (ICSTR /= 1ICSTR /= 10ICSTR /= 100)) THEN
179 CALL ANCMSG(MSGID=677,
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
195C
196C npt
197C
198 NLY = 0
199 SELECT CASE (IHBE)
200 CASE(15)
201 IF (NPT == 0) NPT = 3
202.OR. IF (NPT < 1 NPT > 9) THEN
203 CALL ANCMSG(MSGID=563,
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.AND. IF (IHBE == 14
226.OR..OR..OR. . (NPTR < 1 NPTS < 1 NPTT < 1
227.OR..OR. . NPTR > 9 NPTS > 9 NPTT > 9)) THEN
228 CALL ANCMSG(MSGID=563,
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
240C
241C viscosity
242C
243
244 IF (CVIS == ZERO) THEN
245 CVIS = EM01
246 ENDIF
247C igeo(31) flag for default qa qb for law 70 can be used for other law
248.AND. IF(QA == ZERO QB == ZERO) IGEO(31) = 1
249 IF (QA == ZERO) QA = ONEP1
250 IF (QB == ZERO) QB = FIVEEM2
251C
252C orthotropy (plane r,t)
253C
254 IF (IHBE /= 14) IP = 3
255C
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
264 CALL ANCMSG(MSGID=184,
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
303C
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
317C----
318.NOT. IF(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
339C
340.AND. IF(GEO( 3)/=ZEROIGEO( 5)== 0) IGEO( 5)=NINT(GEO( 3))
341.AND. IF(GEO(39)/=ZEROIGEO( 9)== 0) IGEO( 9)=NINT(GEO(39))
342.AND. IF(GEO(171)/=ZEROIGEO(10)== 0)IGEO(10)=NINT(GEO(171))
343
344.OR. IF (GEO(16) /= ZERO GEO(17) /= ZERO) THEN
345 IGEO(33) = 1 ! ISVIS flag
346 ENDIF
347
348 IGEO(17)=1
349
350
351C-------- Variables stored in element buffer
352c---- Thick Shells
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
365C
366C Probably useless for PID21 (but addressed in thsol.F ...)
367 PROP_TAG(IGTYP)%L_GAMA = 6
368
369
370C----
371 RETURN
372C---
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/)
420C---
#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)
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle