OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat23.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_mat23 ../starter/source/materials/mat/mat023/hm_read_mat23.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_mat23(
39 . UPARAM ,MAXUPARAM ,NUPARAM ,NUVAR ,IFUNC ,
40 . MAXFUNC ,NFUNC ,PARMAT ,IMATVIS ,IFORM ,
41 . UNITAB ,ID ,TITR ,LSUBMODEL,MTAG ,
42 . PM ,IPM ,ISRATE ,MATPARAM )
43C-----------------------------------------------
44C D e s c r i p t i o n
45C-----------------------------------------------
46C ROUTINE DESCRIPTION :
47C ===================
48C READ MAT LAW02 WITH HM READER
49C-----------------------------------------------
50C DUMMY ARGUMENTS DESCRIPTION:
51C ===================
52C UNITAB UNITS ARRAY
53C ID MATERIAL ID(INTEGER)
54C TITR MATERIAL TITLE
55C LSUBMODEL SUBMODEL STRUCTURE
56C
57C IFORM 0 (PLAS_JOHNSON) 1 (PLAS_ZERILLI) 2 (PLAS_PREDEF)
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(IN) :: ID,MAXUPARAM,MAXFUNC,IFORM
82 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),IMATVIS,ISRATE
83 my_real, INTENT(INOUT) :: PM(NPROPM)
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(submodel_data), DIMENSION(*),INTENT(IN) :: LSUBMODEL
86 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC
87 INTEGER, DIMENSION(MAXFUNC), INTENT(INOUT) :: IFUNC
88 my_real, DIMENSION(MAXUPARAM), INTENT(INOUT) :: uparam
89 my_real, INTENT(INOUT) :: parmat(*)
90 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
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 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
96 INTEGER :: ICC,ISRAT1,IFLAG,MFLAG,ILAW
97 my_real :: RHOR,RHO0
98 my_real
99 . young, anu, ca, cb, cn, epsm, sigm, cc, eps0, epsl, el, g,
100 . e0, c0, c1, e1mn2, en1n2, sdsp, hl, yldl
101 CHARACTER PREDEF*16
102C-----------------------------------------------
103C S o u r c e L i n e s
104C-----------------------------------------------
105 is_encrypted = .false.
106 is_available = .false.
107 rhor = zero
108 nuvar = 0
109 nuparam = 0
110 nfunc = 0
111 ilaw = 23
112C
113 CALL hm_option_is_encrypted(is_encrypted)
114C
115 !line-1
116 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
117!! CALL HM_GET_FLOATV('Refer_Rho',RHOR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118 !line-2
119 CALL hm_get_floatv('MAT_E' ,young ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_NU' ,anu ,is_available, lsubmodel, unitab)
121 !line-3
122 CALL hm_get_floatv('MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_BETA' ,cb ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv('MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
127
128 !line-4
129 CALL hm_get_floatv('MAT_SRC' ,cc ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv('MAT_SRP' ,eps0 ,is_available, lsubmodel, unitab)
131 CALL hm_get_intv ('STRFLAG' ,icc ,is_available, lsubmodel)
132 !line-5
133 CALL hm_get_floatv('MAT_DAMAGE' ,epsl ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv('MAT_ETAN' ,el ,is_available, lsubmodel, unitab)
135C
136 IF(rhor == zero)rhor = rho0
137 pm(1) = rhor
138 pm(89)= rho0
139C
140 IF(anu == half) anu=zep499
141 IF(epsl == zero) epsl=zep15
142 IF(cn == zero) cn = one
143 IF(epsm == zero) epsm = ep30
144 IF(sigm == zero) sigm = ep30
145 IF(cc == zero) eps0 = one
146 g=young/(two*(one + anu))
147 e0=zero
148 c0=zero
149 c1=young/(three*(one - two*anu))
150 e1mn2=young/(one - anu**2)
151 en1n2=anu*e1mn2
152 sdsp =sqrt(young/max(pm(1),em20))
153 hl =young * el / max(em20,young-el)
154 yldl = ca+cb*exp(cn*log(epsl))
155 yldl = min(yldl,sigm)
156C
157 pm(20)=young
158 pm(21)=anu
159 pm(22)=g
160 pm(23)=e0
161 pm(24)=e1mn2
162 pm(25)=en1n2
163 pm(26)=five_over_6
164 pm(27)=sdsp
165 pm(28)=one/young
166 pm(29)=-anu*pm(28)
167 pm(30)=one/g
168 pm(31)=c0
169 pm(32)=c1
170 pm(38)=ca
171 pm(39)=cb
172 pm(40)=cn
173 pm(41)=epsm
174 pm(42)=sigm
175 pm(43)=cc
176 pm(44)=eps0
177 pm(45)=epsl
178 pm(46)=hl
179 pm(47)=yldl
180 pm(48)=el
181 pm(49)=icc
182C-----------
183C Formulation for solid elements time step computation.
184 ipm(252)= 2
185 pm(105) = two*g/(c1+four_over_3*g) ! =(1-2*Nu)/(1-Nu)
186C
187 WRITE(iout,1010) trim(titr),id,ilaw
188 WRITE(iout,1000)
189 IF(is_encrypted)THEN
190 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
191 ELSE
192 WRITE(iout,1020)rho0
193 WRITE(iout,1300)young,anu,g
194 WRITE(iout,1400)ca,cb,cn,epsm,sigm
195 WRITE(iout,1600)cc,eps0,icc
196 WRITE(iout,1800)epsl,el
197 ENDIF
198C
199 IF(cn>one) THEN
200 CALL ancmsg(msgid=213,
201 . msgtype=msgerror,
202 . anmode=aninfo,
203 . i1=23,
204 . i2=id,
205 . c1=titr)
206 ENDIF
207 IF(eps0==zero) THEN
208 CALL ancmsg(msgid=298,
209 . msgtype=msgerror,
210 . anmode=aninfo,
211 . i1=23,
212 . i2=id,
213 . c1=titr)
214 ENDIF
215 IF(el>zero.OR.el<=-young.OR.el<=-three*g) THEN
216 CALL ancmsg(msgid=308,
217 . msgtype=msgerror,
218 . anmode=aninfo,
219 . i1=id,
220 . c1=titr)
221 ENDIF
222C
223C---- Definition des variables internes (stockage elementaire)
224c
225 mtag%G_EPSD = 1
226 mtag%G_PLA = 1
227c
228 mtag%L_EPSD = 1
229 mtag%L_PLA = 1
230c
231 ! MATPARAM keywords
232 CALL init_mat_keyword(matparam,"ELASTO_PLASTIC")
233c
234 ! Properties compatibility
235 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
236 CALL init_mat_keyword(matparam,"SPH")
237c
238c-------------------
239 RETURN
240c-------------------
241 1000 FORMAT(
242 & 5x,' ELASTIC PLASTIC + DAMAGE LAW ',/,
243 & 5x,' ---------------------------- ',//)
244 1010 FORMAT(/
245 & 5x,a,/,
246 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . .=',i10/,
247 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . .=',i10/)
248 1020 FORMAT(
249 & 5x,'INITIAL DENSITY. . . . . . . . . . . . . .=',1pg20.13/)
250 1300 FORMAT(
251 & 5x,'YOUNG''S MODULUS . . . . . . . . . . . .=',1pg20.13/,
252 & 5x,'POISSON''S RATIO . . . . . . . . . . . .=',1pg20.13/,
253 & 5x,'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13//)
254 1400 FORMAT(
255 & 5x,'YIELD COEFFICIENT CA. . . . . . . . . .=',1pg20.13/,
256 & 5x,'YIELD COEFFICIENT CB. . . . . . . . . .=',1pg20.13/,
257 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
258 & 5x,'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
259 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
260 1600 FORMAT(
261 & 5x,'STRAIN RATE COEFFICIENT CC. . . . . . .=',1pg20.13/,
262 & 5x,'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
263 & 5x,'FLAG FOR STRAIN RATE ON SIG-MAX . . . .=',i10//)
264 1800 FORMAT(
265 & 5x,'DAMAGE STRAIN LIMIT . . . . . . . . . .=',1pg20.13/,
266 & 5x,'DAMAGE TANGENT MODULUS EL . . . . . . .=',1pg20.13//)
267c-------------------
268 RETURN
269 END
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_mat23(uparam, maxuparam, nuparam, nuvar, ifunc, maxfunc, nfunc, parmat, imatvis, iform, unitab, id, titr, lsubmodel, mtag, pm, ipm, israte, matparam)
subroutine init_mat_keyword(matparam, keyword)
#define min(a, b)
Definition macros.h:20
#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