OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat32.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_mat32 ../starter/source/materials/mat/mat032/hm_read_mat32.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.F90
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!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
33!||--- uses -----------------------------------------------------
34!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
35!|| message_mod ../starter/share/message_module/message_mod.F
36!|| submodel_mod ../starter/share/modules1/submodel_mod.F
37!||====================================================================
38 SUBROUTINE hm_read_mat32(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE , IMATVIS ,
39 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
40 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
41 . PM ,IPM ,MATPARAM )
42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C READ MAT LAW32 WITH HM READER ( TO BE COMPLETED )
46C
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C
50C NAME DESCRIPTION
51C
52C IPM MATERIAL ARRAY(INTEGER)
53C PM MATERIAL ARRAY(REAL)
54C UNITAB UNITS ARRAY
55C MAT_ID MATERIAL ID(INTEGER)
56C TITR MATERIAL TITLE
57C LSUBMODEL SUBMODEL STRUCTURE
58C
59C-----------------------------------------------
60C M o d u l e s
61C-----------------------------------------------
62 USE unitab_mod
63 USE elbuftag_mod
64 USE message_mod
65 USE submodel_mod
66 USE matparam_def_mod
68C-----------------------------------------------
69C I m p l i c i t T y p e s
70C-----------------------------------------------
71#include "implicit_f.inc"
72C-----------------------------------------------
73C C o m m o n B l o c k s
74C-----------------------------------------------
75#include "units_c.inc"
76#include "param_c.inc"
77C-----------------------------------------------
78C D u m m y A r g u m e n t s
79C-----------------------------------------------
80 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
81 INTEGER,INTENT(INOUT) :: IPM(NPROPMI)
82 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: PM
83 my_real, DIMENSION(100) ,INTENT(INOUT) :: parmat
84 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
85 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
86 INTEGER, INTENT(INOUT) :: ISRATE,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
87 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
88 INTEGER,INTENT(IN) :: MAT_ID
89 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
90 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(*)
91 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
92C-----------------------------------------------
93C L o c a l V a r i a b l e s
94C-----------------------------------------------
95 INTEGER ICC,IR0
96
97 my_real
98 . young, anu, ca, ce, cn, epsm, sigm, cm, eps0, g, e0, c0, c1,
99 . e1mn2, en1n2, sdsp, epst1, epsm1, epst2, epsm2, dmax1, dmax2,
100 . amu, r00, r45, r90, r, h, a11, a22, a1122, a12, rho0, rhor
101
102 LOGICAL :: IS_ENCRYPTED,IS_AVAILABLE
103C-----------------------------------------------
104C S o u r c e L i n e s
105C-----------------------------------------------
106 nfunc=0
107 nuvar=0
108 is_encrypted = .false.
109 is_available = .false.
110 israte=0
111 imatvis=1
112
113 CALL hm_option_is_encrypted(is_encrypted)
114 !line-1
115 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
117 !line-2
118 CALL hm_get_floatv('MAT_E' ,young ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv('MAT_NU' ,anu ,is_available, lsubmodel, unitab)
120 !line-3
121 CALL hm_get_floatv('MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('MAT_BETA' ,ce ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
126 !line-4
127 CALL hm_get_floatv('MAT_SRP' ,eps0 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('MAT_SRC' ,cm ,is_available, lsubmodel, unitab)
129 !line-5
130 CALL hm_get_floatv('MAT_R00' ,r00 ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv('MAT_R45' ,r45 ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv('MAT_R90' ,r90 ,is_available, lsubmodel, unitab)
133 CALL hm_get_intv ('MAT_Iyield' ,ir0 ,is_available, lsubmodel)
134
135 IF(rhor==zero)rhor=rho0
136 pm(01)=rhor
137 pm(89)=rho0
138
139 IF(anu==half)anu=zep499
140 IF(r00==zero) r00 = one
141 IF(r45==zero) r45 = one
142 IF(r90==zero) r90 = one
143 IF(ca==zero) ca = infinity
144 IF(cn==zero) cn = one
145 IF(epsm==zero) epsm = infinity
146 IF(sigm==zero) sigm = infinity
147 IF(cm==zero) eps0 = one
148C
149 g=young/(two*(one + anu))
150 e0=zero
151 c0=zero
152 c1=young/(three*(one - two*anu))
153 e1mn2=young/(one-anu**2)
154 en1n2=anu*e1mn2
155 sdsp =sqrt(young/max(pm(1),em20))
156 amu=pm(17)
157 r = fourth * (r00 + two*r45 + r90)
158 h = r / (one + r)
159 a11 = h * (one + one/r00)
160 a22 = h * (one + one/r90)
161 a1122 = h * two
162 a12 = h * two * (r45 + half) * (one/r00 + one/r90)
163 IF (ir0 > 0) THEN
164 a22=a22/a11
165 a1122=a1122/a11
166 a12=a12/a11
167 a11=one
168 END IF
169 icc = 0
170C
171 pm(20)=young
172 pm(21)=anu
173 pm(22)=g
174 pm(23)=e0
175 pm(24)=e1mn2
176 pm(25)=en1n2
177 pm(26)=five_over_6
178 pm(27)=sdsp
179 pm(28)=one/young
180 pm(29)=-anu*pm(28)
181 pm(30)=one/g
182 pm(31)=c0
183 pm(32)=c1
184 pm(38)=ca
185 pm(39)=ce
186 pm(40)=cn
187 pm(41)=epsm
188 pm(42)=sigm
189 pm(43)=cm
190 pm(44)=eps0
191 pm(45)=a11
192 pm(46)=a22
193 pm(47)=a1122
194 pm(48)=a12
195 pm(49)=icc
196 pm(52)=onep414*amu*pm(1)*sdsp
197CCC-----------
198C Formulation for solid elements time step computation.
199 ipm(252)= 2
200 pm(105) = (one -two*anu)/(one - anu)
201
202 mtag%G_SEQ = 1
203C
204 WRITE(iout,1001) trim(titr),mat_id,32
205 WRITE(iout,1000)
206
207 IF(is_encrypted)THEN
208 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
209 ELSE
210 WRITE(iout,1002)rho0
211 WRITE(iout,1300)young,anu,g
212 WRITE(iout,1400)ca,ce,cn,epsm,sigm
213 WRITE(iout,1600)eps0,cm
214 WRITE(iout,1700)r00,r45,r90
215 IF (ir0 >0) WRITE(iout,1110)
216 ENDIF
217C.....ERRORS
218C---+----1----+----2----+----3----+----4----+----5----+----6----+----7--
219 IF(cn>1.) THEN
220 CALL ancmsg(msgid=213,
221 . msgtype=msgerror,
222 . anmode=aninfo)
223 ENDIF
224 IF(eps0<=zero) THEN
225 CALL ancmsg(msgid=207,
226 . msgtype=msgerror,
227 . anmode=aninfo,
228 . i1=32,
229 . i2=mat_id,
230 . c1=titr)
231 ENDIF
232C
233C---- Definition des variables internes (stockage elementaire)
234c
235 mtag%G_PLA = 1
236 mtag%G_EPSD = 1
237c
238 mtag%LY_DIRA = 2
239c
240 mtag%L_PLA = 1
241 mtag%L_EPSD = 1
242c
243 mtag%G_SEQ = 1
244 mtag%L_SEQ = 1
245c
246 ! MATPARAM keywords
247 CALL init_mat_keyword(matparam,"ELASTO_PLASTIC")
248 CALL init_mat_keyword(matparam,"ORTHOTROPIC")
249c
250 ! Properties compatibility
251 CALL init_mat_keyword(matparam,"SHELL_ORTHOTROPIC")
252c
253c-------------------
254 RETURN
255c-------------------
256 1000 FORMAT(
257 & 5x,' HILL ANISOTROPIC PLASTICITY '/,
258 & 5x,' --------------------------- '//)
259 1001 FORMAT(
260 & 5x,a,/,
261 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
262 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
263 1002 FORMAT(
264 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
265 1300 FORMAT(
266 & 5x,'YOUNG MODULUS . . . . . . . . . . . .=',1pg20.13/,
267 & 5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/,
268 & 5x,'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13//)
269 1400 FORMAT(
270 & 5x,'YIELD COEFFICIENT A . . . . . . . . . .=',1pg20.13/,
271 & 5x,'YIELD COEFFICIENT CE. . . . . . . . . .=',1pg20.13/,
272 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
273 & 5x,'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
274 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
275 1600 FORMAT(
276 & 5x,'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
277 & 5x,'STRAIN RATE COEFFICIENT CM. . . . . . .=',1pg20.13//)
278 1700 FORMAT(
279 & 5x,'LANKFORD COEFFICIENT R00. . . . . . . .=',1pg20.13/,
280 & 5x,'LANKFORD COEFFICIENT R45. . . . . . . .=',1pg20.13/,
281 & 5x,'LANKFORD COEFFICIENT R90. . . . . . . .=',1pg20.13/)
282 1110 FORMAT(
283 & 5x,'YIELD STRESS IN ORTHOTROPIC DIR. 1 IS SUPPOSSD '/)
284c-----------
285 RETURN
286 END
287
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_mat32(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, ipm, matparam)
subroutine init_mat_keyword(matparam, keyword)
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle
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