OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat22.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_mat22 ../starter/source/materials/mat/mat022/hm_read_mat22.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_mat22(
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 = 22
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 density
136 IF(RHOR == ZERO) RHOR = RHO0
137 PM(1) = RHOR
138 PM(89) = RHO0
139C
140 IF(ICC == 0 )ICC=1
141C
142 IF(ANU == HALF) ANU=ZEP499
143 IF(EPSL == ZERO) EPSL=ZEP15
144 IF(CN == ZERO) CN = ONE
145 IF(EPSM == ZERO) EPSM = INFINITY
146 IF(SIGM == ZERO) SIGM = INFINITY
147 IF(CC == 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 HL =YOUNG * EL / MAX(EM20,YOUNG-EL)
157 YLDL = CA+CB*EXP(CN*LOG(EPSL))
158 YLDL = MIN(YLDL,SIGM)
159C
160 PM(20)=YOUNG
161 PM(21)=ANU
162 PM(22)=G
163 PM(23)=E0
164 PM(24)=E1MN2
165 PM(25)=EN1N2
166 PM(26)=FIVE_OVER_6
167 PM(27)=SDSP
168 PM(28)=ONE/YOUNG
169 PM(29)=-ANU*PM(28)
170 PM(30)=ONE/G
171 PM(31)=C0
172 PM(32)=C1
173 PM(38)=CA
174 PM(39)=CB
175 PM(40)=CN
176 PM(41)=EPSM
177 PM(42)=SIGM
178 PM(43)=CC
179 PM(44)=EPS0
180 PM(45)=EPSL
181 PM(46)=HL
182 PM(47)=YLDL
183 PM(48)=EL
184 PM(49)=ICC
185CC-----------
186C Formulation for solid elements time step computation.
187 IPM(252)= 2
188 PM(105) = ( ONE -TWO*ANU)/(ONE - ANU)
189C-----------
190C Formulation for solid elements time step computation.
191 IPM(252)= 2
192 PM(105) = TWO*G/(C1+FOUR_OVER_3*G) ! =(1-2*Nu)/(1-Nu)
193C
194 WRITE(IOUT,1010) TRIM(TITR),ID,ILAW
195 WRITE(IOUT,1000)
196 IF(IS_ENCRYPTED)THEN
197 WRITE(IOUT,'(5x,a,//)')'confidential data'
198 ELSE
199 WRITE(IOUT,1020)RHO0
200 WRITE(IOUT,1300)YOUNG,ANU,G
201 WRITE(IOUT,1400)CA,CB,CN,EPSM,SIGM
202 WRITE(IOUT,1600)CC,EPS0,ICC
203 WRITE(IOUT,1800)EPSL,EL
204 ENDIF
205C
206 IF(CA<=ZERO) THEN
207 CALL ANCMSG(MSGID=301,
208 . MSGTYPE=MSGERROR,
209 . ANMODE=ANINFO,
210 . I1=22,
211 . I2=ID,
212 . C1=TITR)
213 ENDIF
214 IF(CN>ONE) THEN
215 CALL ANCMSG(MSGID=213,
216 . MSGTYPE=MSGERROR,
217 . ANMODE=ANINFO,
218 . I1=22,
219 . I2=ID,
220 . C1=TITR)
221 ENDIF
222 IF(EPS0==ZERO) THEN
223 CALL ANCMSG(MSGID=298,
224 . MSGTYPE=MSGERROR,
225 . ANMODE=ANINFO,
226 . I1=22,
227 . I2=ID,
228 . C1=TITR)
229 ENDIF
230.OR..OR. IF(EL>ZEROEL<=-YOUNGEL<=-THREE*G) THEN
231 CALL ANCMSG(MSGID=308,
232 . MSGTYPE=MSGERROR,
233 . ANMODE=ANINFO,
234 . I1=ID,
235 . C1=TITR)
236 ENDIF
237c
238C---- Definition des variables internes (stockage elementaire)
239c
240 MTAG%G_EPSD = 1
241 MTAG%G_PLA = 1
242c
243 MTAG%L_EPSD = 1
244 MTAG%L_PLA = 1
245c
246 ! MATPARAM keywords
247 CALL INIT_MAT_KEYWORD(MATPARAM,"ELASTO_PLASTIC")
248c
249 ! Properties compatibility
250 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ISOTROPIC")
251 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
252 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
253c
254C--------------------------------
255 RETURN
256C-----------
257 1000 FORMAT(
258 & 5X,' elastic plastic + damage law ',/,
259 & 5X,' ---------------------------- ',//)
260 1010 FORMAT(/
261 & 5x,a,/,
262 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . .=',i10/,
263 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . .=',i10/)
264 1020 FORMAT(
265 & 5x,'INITIAL DENSITY. . . . . . . . . . . . . .=',1pg20.13/)
266 1300 FORMAT(
267 & 5x,'YOUNG''S MODULUS . . . . . . . . . . . .=',1pg20.13/,
268 & 5x,'POISSON''S RATIO . . . . . . . . . . . .=',1pg20.13/,
269 & 5x,'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13//)
270 1400 FORMAT(
271 & 5x,'YIELD COEFFICIENT CA. . . . . . . . . .=',1pg20.13/,
272 & 5x,'YIELD COEFFICIENT CB. . . . . . . . . .=',1pg20.13/,
273 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
274 & 5x,'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
275 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
276 1600 FORMAT(
277 & 5x,'STRAIN RATE COEFFICIENT CC. . . . . . .=',1pg20.13/,
278 & 5x,'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
279 & 5x,'FLAG FOR STRAIN RATE ON SIG-MAX . . . .=',i10//)
280 1800 FORMAT(
281 & 5x,'DAMAGE STRAIN LIMIT . . . . . . . . . .=',1pg20.13/,
282 & 5x,'DAMAGE TANGENT MODULUS EL . . . . . . .=',1pg20.13//)
283c-------------------
284 RETURN
285 END
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat22(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)
integer, parameter nchartitle
program starter
Definition starter.F:39