OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat103.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_mat103 ../starter/source/materials/mat/mat103/hm_read_mat103.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_mat103(UPARAM ,MAXUPARAM,NUPARAM ,FSMOOTH , IMATVIS ,
39 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
40 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
41 . PM ,IPM ,MATPARAM )
42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C READ MAT LAW102 WITH HM READER ( TO BE COMPLETED )
46C
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C
50C NAME DESCRIPTION
51C
52C IPM MATERIAL ARRAY(INTEGER)
53C PM MATERIAL ARRAY(REAL)
54C UNITAB UNITS ARRAY
55C MAT_ID MATERIAL ID(INTEGER)
56C TITR MATERIAL TITLE
57C LSUBMODEL SUBMODEL STRUCTURE
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 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: PM
82 my_real, DIMENSION(100) ,INTENT(INOUT) :: PARMAT
83 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
84 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
85 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),FSMOOTH,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
86 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
87 INTEGER,INTENT(IN) :: MAT_ID
88 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
89 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(*)
90 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER ILAW
95 my_real
96 . E, NU, G, A0, FCUT, EPS0, PMIN, RCP, TINI, ETA, BULK,
97 . m1, m2, m3, m4, m5, m7,rho0,rhor
98 LOGICAL IS_AVAILABLE,IS_ENCRYPTED
99C-----------------------------------------------
100C S o u r c e L i n e s
101C-----------------------------------------------
102 is_encrypted = .false.
103 is_available = .false.
104 ipm(3) = 1 !
105 ilaw = 103
106
107 CALL hm_option_is_encrypted(is_encrypted)
108 !line-1
109 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
111
112 !line-2
113 CALL hm_get_floatv('MAT_E' , e ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv('MAT_NU' , nu ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv('MAT103_A0' , a0 ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('MAT103_M1' , m1 ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv('mat103_m2' , M2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118 CALL HM_GET_FLOATV('mat103_m3' , M3 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119 CALL HM_GET_FLOATV('mat103_m4' , M4 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 !line-3
121 CALL HM_GET_FLOATV('mat103_m5' , M5 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
122 CALL HM_GET_FLOATV('mat103_m7' , M7 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
123 !line-4
124 CALL HM_GET_INTV('mat_fsmooth' , FSMOOTH ,IS_AVAILABLE, LSUBMODEL)
125 CALL HM_GET_FLOATV('fcut' , FCUT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
126 CALL HM_GET_FLOATV('mat_srp' , EPS0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_pc' , PMIN ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 !line-5
129 CALL HM_GET_FLOATV('mat_spheat' ,RCP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
130 CALL HM_GET_FLOATV('mat_t0' ,TINI ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131 CALL HM_GET_FLOATV('mat103_eta',ETA ,IS_AVAILABLE, LSUBMODEL, UNITAB)
132
133C-----------------------------------------------
134C DEFAULTS
135C-----------------------------------------------
136 IF(PMIN == ZERO) PMIN=-INFINITY
137 IF(RCP == ZERO) RCP = INFINITY
138 IF(RHOR==ZERO)RHOR=RHO0
139 PM(1) =RHOR
140 PM(89)=RHO0
141C-----------------------------------------------
142C CHECKS
143C-----------------------------------------------
144 IF(E <= ZERO)THEN
145 CALL ANCMSG(MSGID=276,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=103,I2=MAT_ID,C1=TITR)
146 ENDIF
147
148 IF(NU <= -ONE) THEN
149 CALL ANCMSG(MSGID=300,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=103,I2=MAT_ID,C1=TITR)
150 ENDIF
151C
152 ETA=MIN(ONE,ETA)
153C-----------------------------------------------
154C USER MATERIAL PARAMETERS DEFINITION
155C-----------------------------------------------
156 G = E/TWO/(ONE+NU)
157 NUPARAM = 14
158 UPARAM(1) = A0
159 UPARAM(2) = ONE/UNITAB%FAC_T_WORK
160 UPARAM(3) = G
161 UPARAM(4) = M1
162 UPARAM(5) = M2
163 UPARAM(6) = M3
164 UPARAM(7) = M4
165 UPARAM(8) = M5
166 UPARAM(9) = M7
167 UPARAM(10) = RCP
168 UPARAM(11) = TINI
169 UPARAM(12) = ETA
170 UPARAM(13) = 273.15
171 UPARAM(14) = EPS0
172C
173 NUVAR = 1
174 NFUNC = 0
175 BULK = E/THREE/(ONE-TWO*NU)
176 PARMAT(1) = BULK
177 PARMAT(2) = E
178 PARMAT(3) = NU
179 PARMAT(4) = FSMOOTH
180 PARMAT(5) = FCUT
181 PM(32) = BULK
182 PM(37) = PMIN
183 PM(69) = RCP
184 PM(100)= BULK
185C flag activation
186 MTAG%L_TEMP = 1
187 MTAG%G_EPSD = 1
188 MTAG%L_EPSD = 1
189 MTAG%G_PLA = 1
190 MTAG%L_PLA = 1
191!---------------------------------------------------------
192 !MATPARAM keywords
193
194 MATPARAM%IEOS = 18 ! Linear EOS is used by default
195
196!---------------------------------------------------------
197!
198 ! Material compatibility with /EOS option
199 CALL INIT_MAT_KEYWORD(MATPARAM,"EOS")
200
201 ! EOS/Thermo keyword for pressure treatment in elements
202 CALL INIT_MAT_KEYWORD(MATPARAM,"HYDRO_EOS")
203
204 ! Properties compatibility
205 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
206 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
207C-------------------------------------------------
208C LISTING OUTPUT
209C-------------------------------------------------
210 WRITE(IOUT,1010) TRIM(TITR),MAT_ID,103
211 WRITE(IOUT,1000)
212 IF(IS_ENCRYPTED)THEN
213 WRITE(IOUT,'(5x,a,//)')'confidential data'
214 ELSE
215 WRITE(IOUT,1020)RHO0,RHOR
216 WRITE(IOUT,1100) E, NU, A0, M1, M2, M3, M4, M5, M7
217 WRITE(IOUT,1200) FSMOOTH, FCUT, EPS0, PMIN, RCP, TINI, ETA
218 ENDIF
219C
220 1000 FORMAT(
221 & 5X,' hensel spittel material ',/,
222 & 5X,' ----------------------- ',/,
223 & 5X,' ')
224 1010 FORMAT(/
225 & 5X,A,/,
226 & 5X,'material number. . . . . . . . . . . . . . .=',I10/,
227 & 5X,'material law . . . . . . . . . . . . . . . .=',I10/)
228 1020 FORMAT(
229 & 5X,'initial density . . . . . . . . . . . .=',1PG20.13/,
230 & 5X,'reference density . . . . . . . . . . .=',1PG20.13)
231 1100 FORMAT(
232 & 5X,'young modulus. . . . . . . . . . . . . . . .=',1PG20.13/
233 & 5X,'poisson ratio. . . . . . . . . . . . . . . .=',1PG20.13/
234 & 5X,'yield PARAMETER a0 . . . . . . . . . . . . .=',1PG20.13/
235 & 5X,'yield PARAMETER m1 . . . . . . . . . . . . .=',1PG20.13/
236 & 5X,'yield PARAMETER m2 . . . . . . . . . . . . .=',1PG20.13/
237 & 5X,'yield PARAMETER m3 . . . . . . . . . . . . .=',1PG20.13/
238 & 5X,'yield PARAMETER m4 . . . . . . . . . . . . .=',1PG20.13/
239 & 5X,'yield PARAMETER m5 . . . . . . . . . . . . .=',1PG20.13/
240 & 5X,'yield PARAMETER m7 . . . . . . . . . . . . .=',1PG20.13/)
241 1200 FORMAT(
242 & 5X,'strain rate smoothing flag . . . . . . . . .=',I10/
243 & 5X,'cut off frequency strain rate smoothing . . =',1PG20.13/
244 & 5X,'reference strain . . . . . . . . . . . . . .=',1PG20.13/
245 & 5X,'pressure cut-off . . . . . . . . . . . . . .=',1PG20.13/
246 & 5X,'specific heat rho*cp . . . . . . . . . . . .=',1PG20.13/
247 & 5X,'initial temperature k. . . . . . . . . . . .=',1PG20.13/
248 & 5X,'heat conversion PARAMETER eta. . . . . . . .=',1PG20.13/)
249C
250 RETURN
251
252
253 RETURN
254 END
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat103(uparam, maxuparam, nuparam, fsmooth, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, ipm, matparam)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle
program starter
Definition starter.F:39