OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat63.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_mat63 ../starter/source/materials/mat/mat063/hm_read_mat63.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_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
31!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
32!||--- uses -----------------------------------------------------
33!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.f
34!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_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_mat63(UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,
39 . PARMAT ,MAT_ID ,PM ,TITR ,
40 . UNITAB ,LSUBMODEL,MTAG ,MATPARAM )
41C-----------------------------------------------
42C ROUTINE DESCRIPTION :
43C ===================
44C READ MAT LAW63 WITH HM READER
45C-----------------------------------------------
46C DUMMY ARGUMENTS DESCRIPTION:
47C ===================
48C UNITAB UNITS ARRAY
49C MAT_ID MATERIAL ID(INTEGER)
50C TITR MATERIAL TITLE
51C LSUBMODEL SUBMODEL STRUCTURE
52C-----------------------------------------------
53C M o d u l e s
54C-----------------------------------------------
55 USE elbuftag_mod
56 USE message_mod
57 USE submodel_mod
58 USE matparam_def_mod
60 USE unitab_mod
62C-----------------------------------------------
63C I m p l i c i t T y p e s
64C-----------------------------------------------
65#include "implicit_f.inc"
66C-----------------------------------------------
67C C o m m o n B l o c k s
68C-----------------------------------------------
69#include "units_c.inc"
70#include "param_c.inc"
71C-----------------------------------------------
72C D u m m y A r g u m e n t s
73C-----------------------------------------------
74 INTEGER, INTENT(IN) :: MAT_ID,MAXUPARAM
75 TYPE(UNIT_TYPE_), INTENT(IN) :: UNITAB
76 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
77 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
78 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR
79 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
80 my_real, DIMENSION(100),INTENT(INOUT) :: parmat
81 TYPE(submodel_data), DIMENSION(*),INTENT(IN) :: LSUBMODEL
82 TYPE(mlaw_tag_), INTENT(INOUT) :: MTAG
83 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
84C-----------------------------------------------
85C L o c a l V a r i a b l e s
86C-----------------------------------------------
87 my_real
88 . e,nu,cp,a, b, q,c,d,p, ahs,bhs,m,n,k1,k2,dh,vm0,eps0,
89 . c1,g,temp,hl,coef,rho0,rhor
90 INTEGER ILAW
91 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
92C=======================================================================
93 is_encrypted = .false.
94 is_available = .false.
95c
96 ilaw = 63
97c------------------------------------------
98 CALL hm_option_is_encrypted(is_encrypted)
99c------------------------------------------
100C
101 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
102 CALL hm_get_floatv('Refer_Rho',rhor ,is_available, lsubmodel, unitab)
103Card1
104 CALL hm_get_floatv('MAT_E' ,e ,is_available, lsubmodel, unitab)
105 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv('CP' ,cp ,is_available, lsubmodel, unitab)
107Card2
108 CALL hm_get_floatv('MAT_A' ,a ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv('MAT_B' ,b ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv('Q' ,q ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv('MAT_C' ,c ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('MAT_D' ,d ,is_available, lsubmodel, unitab)
113Card3
114 CALL hm_get_floatv('MAT_P0' ,p ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv('A_HS' ,ahs ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('b_hs' ,BHS ,IS_AVAILABLE, LSUBMODEL, UNITAB)
117 CALL HM_GET_FLOATV('mat_m' ,M ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118 CALL HM_GET_FLOATV('mat_n' ,N ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119Card4
120 CALL HM_GET_FLOATV('k1' ,K1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
121 CALL HM_GET_FLOATV('k2' ,K2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
122 CALL HM_GET_FLOATV('delta_h' ,DH ,IS_AVAILABLE, LSUBMODEL, UNITAB)
123 CALL HM_GET_FLOATV('kvm' ,VM0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
124 CALL HM_GET_FLOATV('epsilon_0',EPS0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
125Card5
126 CALL HM_GET_FLOATV('mat_t0' ,TEMP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_hl' ,HL ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 CALL HM_GET_FLOATV('mat_eta' ,COEF ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129C
130c-----------------------------------------------------------------------
131c Default values
132c-----------------------------------------------------------------------
133.OR. IF(COEF <= ZERO COEF > ONE) COEF = ONE
134.OR. IF(VM0 == ZERO VM0 >= ONE) VM0=EM20
135 IF (CP == ZERO) THEN
136 CP = ZERO
137 ELSE
138 CP = ONE/CP
139 ENDIF
140C
141 IF (B == 0) B = -ONE
142 IF ((B+1)/B>=P) THEN
143 CALL ANCMSG(MSGID=301,
144 . MSGTYPE=MSGERROR,
145 . ANMODE=ANINFO,
146 . I1=63,
147 . I2=MAT_ID,
148 . C1=TITR)
149 END IF
150c-----------------------------------------------------------------------
151 G = HALF*E/(ONE+NU)
152 C1 = E/THREE/(ONE - TWO*NU)
153c-----------------------------------------------------------------------
154 UPARAM(1) = E
155 UPARAM(2) = E/(ONE - NU*NU)
156 UPARAM(3) = NU*UPARAM(2)
157 UPARAM(4) = G
158 UPARAM(5) = NU
159 UPARAM(6) = A
160 UPARAM(7) = B
161 UPARAM(8) = Q
162 UPARAM(9) = C
163 UPARAM(10) = D
164 UPARAM(11) = P
165 UPARAM(12) = AHS
166 UPARAM(13) = BHS
167 UPARAM(14) = M
168 UPARAM(15) = N
169 UPARAM(16) = K1
170 UPARAM(17) = K2
171 UPARAM(18) = DH
172 UPARAM(19) = VM0
173 UPARAM(20) = EPS0
174 UPARAM(21) = CP
175 UPARAM(22) = TEMP
176 UPARAM(23) = HL
177 UPARAM(24) = COEF
178c-----------------------------------------------------------------------
179 NUPARAM = 24
180 NUVAR = 4
181c-----------------------------------------------------------------------
182 PARMAT(1) = C1
183 PARMAT(2) = E
184 PARMAT(3) = NU
185C Formulation for solid elements time step computation.
186 PARMAT(16) = 2
187 PARMAT(17) = (ONE - TWO*NU)/(ONE - NU) ! == TWO*G/(C1+FOUR_OVER_3*G)
188c-----------------------------------------------------------------------
189 PM(1) = RHOR
190 PM(89) = RHO0
191 MTAG%G_PLA = 1
192 MTAG%L_PLA = 1
193c-----------------------------------------------------------------------
194 ! Properties compatibility
195 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ISOTROPIC")
196c-----------------------------------------------------------------------
197c--------------------------------------------------
198c Starter output
199c--------------------------------------------------
200 WRITE(IOUT,1000) TRIM(TITR),MAT_ID,ILAW
201 WRITE(IOUT,1100)
202 IF (IS_ENCRYPTED) THEN
203 WRITE(IOUT,'(5x,a,//)')'confidential data'
204 ELSE
205 WRITE(IOUT,1200) RHO0
206 WRITE(IOUT,1300) E,NU,ONE/CP
207 WRITE(IOUT,1400) A,B,Q,C,D
208 WRITE(IOUT,1500) P,AHS,BHS,M,N
209 WRITE(IOUT,1600) K1,K2,DH,VM0,EPS0
210 WRITE(IOUT,1700) TEMP,HL,COEF
211 ENDIF
212c-----------------------------------------------------------------------
213 1000 FORMAT(/
214 & 5X,A,/,
215 & 5X,'material number. . . . . . . . . . . . . . .=',I10/,
216 & 5X,'material law . . . . . . . . . . . . . . . .=',I10/)
217 1100 FORMAT
218 &(5X,'material : trip-steels plastic law',/,
219 & 5X,'-----------------------------------',/)
220 1200 FORMAT(
221 & 5X,'initial density . . . . . . . . . . . . . .=',1PG20.13/)
222 1300 FORMAT(
223 & 5X,'young''s modulus . . . . . . . . . . . . . .=',1PG20.13/,
224 & 5X,'poisson''s ratio . . . . . . . . . . . . . .=',1PG20.13/,
225 & 5X,'thermal massic capacity . . . . . . . . . .=',1PG20.13/)
226 1400 FORMAT(
227 & 5X,'PARAMETER 1 (a) . . . . . . . . . . . . . .=',1pg20.13/,
228 & 5x,'PARAMETER 2 (B) . . . . . . . . . . . . . .=',1pg20.13/,
229 & 5x,'PARAMETER 3 (Q) . . . . . . . . . . . . . .=',1pg20.13/,
230 & 5x,'PARAMETER 4 (C) . . . . . . . . . . . . . .=',1pg20.13/,
231 & 5x,'PARAMETER 5 (D) . . . . . . . . . . . . . .=',1pg20.13/)
232 1500 FORMAT(
233 & 5x,'PARAMETER 6 (P) . . . . . . . . . . . . . .=',1pg20.13/,
234 & 5x,'PARAMETER 7 (AHS) . . . . . . . . . . . . .=',1pg20.13/,
235 & 5x,'PARAMETER 8 (BHS) . . . . . . . . . . . . .=',1pg20.13/,
236 & 5x,'PARAMETER 9 (M) . . . . . . . . . . . . . .=',1pg20.13/,
237 & 5x,'PARAMETER 10 (N) . . . . . . . . . . . . . .=',1pg20.13/)
238 1600 FORMAT(
239 & 5x,'PARAMETER 11 (K1) . . . . . . . . . . . . .=',1pg20.13/,
240 & 5x,'PARAMETER 12 (K2). . . . . . . . . . . . . .=',1pg20.13/,
241 & 5x,'PARAMETER 13 (DH). . . . . . . . . . . . . .=',1pg20.13/,
242 & 5x,'INITIAL MARTENSITE VOLUME FRACTION . . . . .=',1pg20.13/,
243 & 5x,'INITIAL PLASTIC STRAIN . . . . . . . . . . .=',1pg20.13/)
244 1700 FORMAT(
245 & 5x,'INITIAL TEMPERATURE . . . . . . . . . . . .=',1pg20.13/
246 & 5x,'LATENT HEAT OF MARTENSITE . . . . . . . . .=',1pg20.13/
247 & 5x,'TAYLOR-QUINNEY COEFFICIENT . . . . . . . . .=',1pg20.13/)
248 END
#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_mat63(uparam, maxuparam, nuparam, nuvar, parmat, mat_id, pm, titr, unitab, lsubmodel, mtag, matparam)
integer, parameter nchartitle
program starter
Definition starter.F:39