OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat78.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_mat78 ../starter/source/materials/mat/mat078/hm_read_mat78.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!|| calculp2 ../starter/source/materials/mat/mat057/calculp2.F90
30!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.f
31!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
32!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
33!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
34!||--- uses -----------------------------------------------------
35!|| calculp2_mod ../starter/source/materials/mat/mat057/calculp2.F90
36!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
37!|| message_mod ../starter/share/message_module/message_mod.F
38!|| submodel_mod ../starter/share/modules1/submodel_mod.F
39!||====================================================================
40 SUBROUTINE hm_read_mat78(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE ,IMATVIS ,
41 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC ,PARMAT ,
42 . UNITAB ,MAT_ID ,TITR ,MTAG ,LSUBMODEL,
43 . PM ,NVARTMP ,MATPARAM )
44C-----------------------------------------------
45C D e s c r i p t i o n
46C-----------------------------------------------
47C READ YOSHIDA MATERIAL LAW (/MAT/LAW78)
48C-----------------------------------------------
49C M o d u l e s
50C-----------------------------------------------
51 USE unitab_mod
52 USE elbuftag_mod
53 USE message_mod
54 USE submodel_mod
55 USE matparam_def_mod
56 USE calculp2_mod
58C-----------------------------------------------
59C I m p l i c i t T y p e s
60C-----------------------------------------------
61#include "implicit_f.inc"
62C-----------------------------------------------
63C C o m m o n B l o c k s
64C-----------------------------------------------
65#include "param_c.inc"
66#include "units_c.inc"
67C-----------------------------------------------
68C D u m m y A r g u m e n t s
69C-----------------------------------------------
70 INTEGER,INTENT(IN) :: MAT_ID,MAXFUNC,MAXUPARAM
71 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
72 TYPE(SUBMODEL_DATA) ,DIMENSION(*) ,INTENT(IN) :: LSUBMODEL
73 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
74 INTEGER ,DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
75 my_real ,DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
76 my_real ,DIMENSION(100) ,INTENT(INOUT) :: parmat
77 my_real ,DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
78 INTEGER ,INTENT(INOUT) :: NFUNC,NUVAR,NVARTMP,NUPARAM,ISRATE,IMATVIS
79 TYPE(mlaw_tag_) ,INTENT(INOUT) :: MTAG
80 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
81C-----------------------------------------------
82C L o c a l V a r i a b l e s
83C-----------------------------------------------
84 INTEGER :: I,NORDRE,ISMSTR,NMAXW,OPTE,OPTR,FUNCID,ILAW,Iplas
85 my_real :: YOUNG,YIELD,BSAT,MYU,BYU,HYU,CYU,KYU,RSAT,
86 . NU,SUM,GS,P,VISCMAX,FAC_L,FAC_T,FAC_M,FAC_C,
87 . rbulk,shear,lamda,einf,coe,yfac,rho0,
88 . r00,r45,r90,cst,cstt,p1,p2,p3,p4,n3,mexp,c1_kh
89 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
90c-----------------------------------------------
91c S o u r c e L i n e s
92C=======================================================================
93 is_encrypted = .false.
94 is_available = .false.
95 israte = 0
96 imatvis = 0
97 ilaw = 78
98C
99 CALL hm_option_is_encrypted(is_encrypted)
100 !line+1
101 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
102 !line-2
103 CALL hm_get_floatv('MAT_E' ,young ,is_available, lsubmodel, unitab)
104 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
105 !line-3
106 CALL hm_get_floatv('MAT_SIGY' ,yield ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv('MAT_BSAT' ,byu ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv('mat_hard' ,CYU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
109 CALL HM_GET_FLOATV('mat_hyst' ,HYU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
110 CALL HM_GET_FLOATV('mat_b' ,BSAT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
111 !line-4
112 CALL HM_GET_FLOATV('mat_m' ,MYU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
113 CALL HM_GET_FLOATV('mat_rsat' ,RSAT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_INTV ('mat_optr' ,OPTR ,IS_AVAILABLE, LSUBMODEL)
115 CALL HM_GET_FLOATV('c1' ,CST ,IS_AVAILABLE, LSUBMODEL, UNITAB)
116 CALL HM_GET_FLOATV('c2' ,CSTT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
117 !line-5
118 CALL HM_GET_FLOATV('mat_r00' ,R00 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119 CALL HM_GET_FLOATV('mat_r45' ,R45 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 CALL HM_GET_FLOATV('mat_r90' ,R90 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
121 CALL HM_GET_FLOATV('mat_mexp' ,MEXP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
122 CALL HM_GET_INTV ('mat_iplas' ,Iplas ,IS_AVAILABLE, LSUBMODEL)
123 !line-6
124 CALL HM_GET_INTV ('mat_fct_ide',FUNCID ,IS_AVAILABLE, LSUBMODEL)
125 CALL HM_GET_FLOATV('mat_ea' ,EINF ,IS_AVAILABLE, LSUBMODEL, UNITAB)
126 CALL HM_GET_FLOATV('mat_ce' ,COE ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_c1kh' ,C1_KH ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 !========== DEFAULT VALUES=============!
129 PM(1) = RHO0
130 PM(89)= RHO0
131C
132 OPTE = 0
133 IF (FUNCID > 0 ) OPTE = 1
134 IF (R00 == ZERO) R00 = ONE
135 IF (R45 == ZERO) R45 = ONE
136 IF (R90 == ZERO) R90 = ONE
137 IF (Iplas == 0) Iplas = 1
138.OR. IF (NU < ZERO NU >= HALF) THEN
139 CALL ANCMSG(MSGID=49,
140 . MSGTYPE=MSGERROR,
141 . ANMODE=ANINFO_BLIND_2,
142 . R1=NU,
143 . I1=MAT_ID,
144 . C1=TITR)
145 ENDIF
146.OR. IF ((HYU < ZERO)(HYU > ONE)) THEN
147 CALL ANCMSG(MSGID=1886,
148 . MSGTYPE=MSGERROR,
149 . ANMODE=ANINFO_BLIND_2,
150 . R1=HYU,
151 . I1=MAT_ID,
152 . C1=TITR)
153 ENDIF
154 IF (C1_KH <= CYU) C1_KH = CYU
155 ! Hill 48
156 IF (Iplas == 1) THEN
157 MEXP = ZERO
158 P1 = R00*(ONE+R90)/R90/(ONE+R00)
159 P2 = R00/(R00+ONE)
160 P3 = (R00+R90)*(TWO*R45+ONE)/R90/(ONE+R00)
161 P4 = R00/R90/(ONE+R00)
162 N3 = P1/(ONE+R90)
163 ! Barlat 89
164 ELSEIF (Iplas == 2) THEN
165 ! Wrong value of M exponent
166.AND. IF ((MEXP > ZERO)(MEXP < TWO)) THEN
167 CALL ANCMSG(MSGID=1735,
168 . MSGTYPE=MSGERROR,
169 . ANMODE=ANINFO,
170 . I1=MAT_ID,
171 . C1=TITR)
172 ENDIF
173 ! Default value of M exponent
174 IF (MEXP == ZERO) MEXP = SIX
175 P1 = TWO - TWO*SQRT((R00/(ONE+R00))*(R90/(ONE+R90))) ! A
176 P2 = TWO - P1 ! C
177 P3 = SQRT((R00/(ONE+R00))*((ONE+R90)/R90)) ! H
178 P4 = ONE ! P
179 CALL CALCULP2(P1,P2,P3,P4,MEXP,R45) ! USE ROUTINE OF HM_READ_MAT57
180 N3 = MEXP ! M
181 ELSE
182 P1 = ZERO
183 P1 = ZERO
184 P2 = ZERO
185 P3 = ZERO
186 P4 = ZERO
187 N3 = ZERO
188 ENDIF
189c---------------------------------
190 NVARTMP = 0
191 NUVAR = 6
192 NFUNC = OPTE
193 NUPARAM = 22
194c
195 IF (NFUNC == 1) THEN
196 IFUNC(1) = FUNCID
197 NVARTMP = 1
198 ENDIF
199C
200 IF (BSAT < YIELD) THEN
201 BSAT=YIELD
202 CALL ANCMSG(MSGID=922,
203 . MSGTYPE=MSGWARNING,
204 . ANMODE=ANINFO,
205 . I1=MAT_ID,
206 . C1=TITR)
207 ENDIF
208c----------------------
209 UPARAM(1) = YOUNG
210 UPARAM(2) = NU
211 UPARAM(3) = YIELD
212 UPARAM(4) = BYU
213 UPARAM(5) = CYU
214 UPARAM(6) = HYU
215 UPARAM(7) = BSAT
216 UPARAM(8) = MYU
217 UPARAM(9) = RSAT
218 UPARAM(10) = EINF
219 UPARAM(11) = COE
220 UPARAM(12) = OPTE
221 UPARAM(13) = OPTR
222 UPARAM(14) = P1
223 UPARAM(15) = P2
224 UPARAM(16) = P3
225 UPARAM(17) = P4
226 UPARAM(18) = N3
227 UPARAM(19) = CST
228 UPARAM(20) = CSTT
229 UPARAM(21) = Iplas
230 UPARAM(22) = C1_KH
231c---------------------
232 PARMAT(1) = YOUNG/THREE/(ONE - TWO*NU)
233 PARMAT(2) = YOUNG
234 PARMAT(3) = NU
235c Formulation for solid elements time step computation.
236 PARMAT(16) = 2
237 PARMAT(17) = (ONE - TWO*NU)/(ONE - NU) ! == TWO*G/(C1+FOUR_OVER_3*G)
238c------------------------------
239 MTAG%G_PLA = 1
240 MTAG%L_PLA = 1
241 MTAG%L_SIGA = 6
242 MTAG%L_SIGB = 6
243 MTAG%L_SIGC = 6
244 MTAG%G_SEQ = 1
245 MTAG%L_SEQ = 1
246c------------------------------
247 ! MATPARAM keywords
248 CALL INIT_MAT_KEYWORD(MATPARAM,"ELASTO_PLASTIC")
249 CALL INIT_MAT_KEYWORD(MATPARAM,"INCREMENTAL")
250 CALL INIT_MAT_KEYWORD(MATPARAM,"LARGE_STRAIN")
251!
252 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
253 CALL INIT_MAT_KEYWORD(MATPARAM,"ORTHOTROPIC")
254C
255 ! Properties compatibility
256 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
257 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ORTHOTROPIC")
258c------------------------------
259 IF(IS_ENCRYPTED)THEN
260 WRITE(IOUT,'(5x,a,//)')'confidential data'
261 ELSE
262 WRITE(IOUT,1000)
263 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,ILAW
264 WRITE(IOUT,1002) RHO0
265 WRITE(IOUT,1100) YOUNG,NU,FUNCID,EINF,COE
266 WRITE(IOUT,1200) YIELD,BYU,CYU,HYU,BSAT,C1_KH
267 WRITE(IOUT,1300) MYU,RSAT,OPTR
268 WRITE(IOUT,1400) Iplas,R00,R45,R90,CST,CSTT
269 IF (Iplas == 2) WRITE(IOUT,1500) P1,P2,P3,P4,MEXP
270 ENDIF
271c----------------------------------------------------------------
272 1000 FORMAT
273 & (5X,' yoshida-uemori material law ',/
274 & 5X,' --------------------------- ',//)
275 1001 FORMAT(
276 & 5X,A,/,
277 & 5X,'material number. . . . . . . . . . . . =',I10/,
278 & 5X,'material law . . . . . . . . . . . . . =',I10/)
279 1002 FORMAT(
280 & 5X,'initial density . . . . . . . . . . . . . . . =',1PG20.13/)
281 1100 FORMAT(
282 & 5X,'young''s modulus . . . . . . . . . . . . . . =',1PG20.13/
283 & 5X,'poisson''s ratio . . . . . . . . . . . . . . =',1PG20.13/
284 & 5X,'young modulus evolution FUNCTION . . . . . . =',I10/
285 & 5X,'material parameter (EINF ). . . . . . . . . . =',1PG20.13/
286 & 5X,'material parameter (COE ). . . . . . . . . . =',1PG20.13)
287 1200 FORMAT(
288 & 5X,'yield stress (YIELD). . . . . . . . . . . . . =',1PG20.13/
289 & 5X,'material parameter (BYU ) . . . . . . . . . . =',1PG20.13/
290 & 5X,'material parameter (CYU ). . . . . . . . . . =',1PG20.13/
291 & 5X,'material parameter (HYU ). . . . . . . . . . =',1PG20.13/
292 & 5X,'material parameter (BSAT ) . . . . . . . . . =',1PG20.13/
293 & 5X,'material parameter (C1_KH ) . . . . . . . . =',1PG20.13)
294 1300 FORMAT(//
295 & 5X,'material parameter (MYU ). . . . . . . . . . =',1PG20.13/
296 & 5X,'material parameter (RSAT ). . . . . . . . . . =',1PG20.13/
297 & 5X,'flag isotropic hardening func (OPTR) . . . . =',I10)
298 1400 FORMAT(//
299 & 5X,'plastic criterion flag . . . . . . . . . . . =',I10/
300 & 5X,' icrit=1 hill 1948 criterion'/
301 & 5X,' icrit=2 barlat 1989 criterion'/
302 & 5X,'lankford coefficient r00. . . . . . . . . . . =',1PG20.13/
303 & 5X,'lankford coefficient r45. . . . . . . . . . . =',1PG20.13/
304 & 5X,'lankford coefficient r90. . . . . . . . . . . =',1PG20.13/
305 & 5X,'material parameter (CST). . . . . . . . . . . =',1PG20.13/
306 & 5X,'material parameter (CSTT) . . . . . . . . . . =',1PG20.13/)
307 1500 FORMAT(//
308 & 5X,'barlat parameter a. . . . . . . . . . . . . . =',1PG20.13/
309 & 5X,'barlat parameter c. . . . . . . . . . . . . . =',1PG20.13/
310 & 5X,'barlat parameter h. . . . . . . . . . . . . . =',1PG20.13/
311 & 5X,'barlat parameter p. . . . . . . . . . . . . . =',1PG20.13/
312 & 5X,'barlat exponent m. . . . . . . . . . . . . . =',1PG20.13/)
313c----------------------------------------------------------------
314 RETURN
315 END
316
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat78(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, nvartmp, matparam)
integer, parameter nchartitle
program starter
Definition starter.F:39