OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat84.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_mat84 ../starter/source/materials/mat/mat084/hm_read_mat84.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.f90
27!||--- calls -----------------------------------------------------
28!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
29!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
30!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
31!||--- uses -----------------------------------------------------
32!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
33!|| message_mod ../starter/share/message_module/message_mod.F
34!|| submodel_mod ../starter/share/modules1/submodel_mod.F
35!||====================================================================
36 SUBROUTINE hm_read_mat84(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE , IMATVIS ,
37 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
38 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
39 . ITABLE ,MAXTABL ,NTABLE ,PM ,IPM ,
40 . MATPARAM)
41C-----------------------------------------------
42C D e s c r i p t i o n
43C-----------------------------------------------
44C READ MAT LAW84
45C
46C DUMMY ARGUMENTS DESCRIPTION:
47C ===================
48C
49C NAME DESCRIPTION
50C
51C PM MATERIAL ARRAY(REAL)
52C UNITAB UNITS ARRAY
53C MAT_ID MATERIAL ID(INTEGER)
54C TITR MATERIAL TITLE
55C LSUBMODEL SUBMODEL STRUCTURE
56C
57C-----------------------------------------------
58C M o d u l e s
59C-----------------------------------------------
60 USE unitab_mod
61 USE elbuftag_mod
62 USE message_mod
63 USE submodel_mod
64 USE matparam_def_mod
66C-----------------------------------------------
67C I m p l i c i t T y p e s
68C-----------------------------------------------
69#include "implicit_f.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "units_c.inc"
74#include "param_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
79 my_real, INTENT(INOUT) :: PM(NPROPM),PARMAT(100),UPARAM(MAXUPARAM)
80 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
81 . ,NTABLE,ITABLE(MAXTABL)
82 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
83 INTEGER,INTENT(IN) :: MAT_ID,MAXTABL
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
86 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER I,ILAW
91 my_real
92 . YOUNG,YIELD,P12,P22,P33,QVOCE,BVOCE,NU,
93 . G12,G22,G33,K0,ALPHA,AN,EPS0,NN,CEPSP,DEPS0,
94 . eta,cp,tini,tref,tmelt,mtemp,depsad,
95 . afrac,bfrac,gama,cfrac,nfrac
96 my_real :: rho0, rhor
97 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
98C-----------------------------------------------
99C S o u r c e L i n e s
100C-----------------------------------------------
101 is_encrypted = .false.
102 is_available = .false.
103!
104 mtag%G_TEMP = 1
105 mtag%L_TEMP = 1
106 mtag%G_EPSD = 1
107 mtag%L_EPSD = 1
108 mtag%G_PLA = 1
109 mtag%L_PLA = 1
110!
111 israte=0
112 imatvis=0
113 ilaw=84
114C
115 CALL hm_option_is_encrypted(is_encrypted)
116 !line+1
117 CALL hm_get_floatv('MAT_RHO' ,rho0 ,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' ,nu ,is_available, lsubmodel, unitab)
121 !line-3
122 CALL hm_get_floatv('Fcut' ,p12 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_CAP_END' ,p22 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('MAT_PC' ,p33 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('MAT_PR' ,qvoce ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv('MAT_T0' ,bvoce ,is_available, lsubmodel, unitab)
127 !line-4
128 CALL hm_get_floatv('MAT_c2_t' ,g12 ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv('MAT_A2' ,g22 ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv('MAT_c1_c' ,g33 ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv('MAT_NUt' ,k0 ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv('MAT_VOL' ,alpha ,is_available, lsubmodel, unitab)
133 !line-5
134 CALL hm_get_floatv('FScale11' ,an ,is_available, lsubmodel, unitab)
135 CALL hm_get_floatv('FScale22' ,eps0 ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv('FScale33' ,nn ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv('FScale12' ,cepsp ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv('FScale23' ,deps0 ,is_available, lsubmodel, unitab)
139 !line-6
140 CALL hm_get_floatv('scale1' ,eta ,is_available, lsubmodel, unitab)
141 CALL hm_get_floatv('scale2' ,cp ,is_available, lsubmodel, unitab)
142 CALL hm_get_floatv('scale3' ,tini ,is_available, lsubmodel, unitab)
143 CALL hm_get_floatv('scale4' ,tref ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv('scale5' ,tmelt ,is_available, lsubmodel, unitab)
145 !line-7
146 CALL hm_get_floatv('FScale11_2' ,mtemp ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv('FScale22_2' ,depsad ,is_available, lsubmodel, unitab)
148 !unit
149 !========== DEFAULT VALUES=============!
150 rhor=rho0
151 IF(rhor==zero)rhor=rho0
152 pm(1) =rhor
153 pm(89)=rho0
154!
155 afrac=zero
156 nfrac=zero
157 bfrac=zero
158 cfrac=zero
159 gama=zero
160
161C
162 IF(p12 == zero )p12 = -half
163 IF(g12 == zero )g12 = p12
164C
165 IF(p22 == zero )p22 = one
166 IF(g22 == zero )g22 = p22
167C
168 IF(p33 == zero )p33 = three
169 IF(g33 == zero )g33 = p33
170C
171 IF (deps0 == zero) deps0 = infinity ! no strain rate effect
172c
173 uparam(1) = young
174 uparam(2) = nu
175
176 uparam(3) = p12
177 uparam(4) = p22
178 uparam(5) = p33
179 uparam(6) = g12
180 uparam(7) = g22
181 uparam(8) = g33
182
183 uparam(9) = qvoce
184 uparam(10)= bvoce
185 uparam(11)= k0
186 uparam(12)= alpha
187
188 uparam(13)= an
189 uparam(14)= eps0
190 uparam(15)= nn
191 uparam(16)= cepsp
192 uparam(17)= deps0
193
194 uparam(18)= eta
195 uparam(19)= cp
196 uparam(20)= tini
197 uparam(21)= tref
198 uparam(22)= tmelt
199 uparam(23)= mtemp
200 uparam(24)= depsad
201
202 uparam(25) =afrac
203 uparam(26) =bfrac
204 uparam(27) =gama
205 uparam(28) =cfrac
206 uparam(29) =nfrac
207C
208 nuvar = 4
209 nuparam = 29
210 parmat(1) = young/three/(one - two*nu)
211 parmat(2) = young
212 parmat(3) = nu
213C Formulation for solid elements time step computation.
214 parmat(16) = 2
215 parmat(17) = (one - two*nu)/(one - nu) ! == TWO*G/(C1+FOUR_OVER_3*G)
216C
217C------------------------------
218 ! activate heat source calculation in material
219 matparam%HEAT_FLAG = 1
220!
221 ! MATPARAM keywords
222 CALL init_mat_keyword(matparam,"HOOK")
223 CALL init_mat_keyword(matparam,"ORTHOTROPIC")
224 ! Properties compatibility
225 CALL init_mat_keyword(matparam,"SOLID_ORTHOTROPIC")
226C------------------------------
227 WRITE(iout,1001) trim(titr),mat_id,ilaw
228 WRITE(iout,1000)
229 IF(is_encrypted)THEN
230 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
231 ELSE
232 WRITE(iout,1002)rho0
233 WRITE(iout,1100) young,nu,p12,p22,p33,g12,g22,g33
234 WRITE(iout,1200) qvoce,bvoce,k0,alpha
235 WRITE(iout,1300) an,nn,eps0,cepsp,deps0
236 WRITE(iout,1400) eta,cp,tini,tref,tmelt,mtemp,depsad
237 ENDIF
238C
239c-----------
240 1000 FORMAT
241 & (5x,20h ------------------ ,/,
242 & 5x,20h ------------------ ,//)
243 1001 FORMAT(
244 & 5x,a,/,
245 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
246 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
247 1002 FORMAT(
248 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
249 1100 FORMAT(
250 & 5x,'YOUNG''S MODULUS. . . . . . . . . . . . . . =',e12.4/
251 & 5x,'POISSON''S RATIO . . . . . . . . . . . . . . =',e12.4/
252 & 5x,'YIELD PARAMETER P12 . . . . . . . . . . . . =',e12.4/
253 & 5x,'YIELD PARAMETER P22. . . . . . . . . . . . . =',e12.4/
254 & 5x,'YIELD PARAMETER P33. . . . . . . . . . . . . =',e12.4/
255 & 5x,'FLOW RULE PARAMETER G12 . . . . . . . . . . .=',e12.4/
256 & 5x,'FLOW RULE PARAMETER G22. . . . . . . . . . . =',e12.4/
257 & 5x,'FLOW RULE PARAMETER G33. . . . . . . . . . . =',e12.4)
258 1200 FORMAT(
259 & 5x,'YIELD VOCE PARAMETER Q. . . . . . . . . . . .=',e12.4/
260 & 5x,'YIELD VOCE PARAMETER B . . . . . . . . . . . =',e12.4/
261 & 5x,'YIELD VOCE PARAMETER K0. . . . . . . . . . . =',e12.4/
262 & 5x,'YIELD GLOBAL PARAMETER ALPHA . . . . . . . . =',e12.4)
263 1300 FORMAT(//
264 & 5x,'YIELD SWIFT PARAMETER A. . . . . . . . . . . =',e12.4/
265 & 5x,'YIELD SWIFT EXPONENT N . . . . . . . . . . . =',e12.4/
266 & 5x,'YIELD SWIFT REFERENCE STRAIN . . . . . . . . =',e12.4/
267 & 5x,'STRAIN RATE COEFFIICIENT C . . . . . . . . . =',e12.4/
268 & 5x,'REFERENCE STRAIN RATE . .. . . . . . . . . . =',e12.4)
269 1400 FORMAT(//
270 & 5x,'TAYLOR-QUNINNEY COEFFICIENT . . . . . . . . .=',e12.4/
271 & 5x,'SPECIFIC HEAT. . . . . . . . . . . . . . . . =',e12.4/
272 & 5x,'INITIAL TEMPERATURE. . . . . . . . . . . . . =',e12.4/
273 & 5x,'REFERENCE TEMPERATURE . . . . . . . . . . . .=',e12.4/
274 & 5x,'MELTING TEMPERATURE . . . . . . . . . . . . .=',e12.4/
275 & 5x,'TEMPERATURE EXPONENT. . . . . . . . . . . . .=',e12.4/
276 & 5x,'OPTIMIZATION STRAIN RATE COEFFICIENT . . . . =',e12.4)
277c-----------
278 RETURN
279 END
280C
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat84(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, itable, maxtabl, ntable, pm, ipm, matparam)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle
program starter
Definition starter.F:39