OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat54.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_mat54 ../starter/source/materials/mat/mat054/hm_read_mat54.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_floatv_dim ../starter/source/devtools/hm_reader/hm_get_floatv_dim.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!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
36!|| message_mod ../starter/share/message_module/message_mod.F
37!|| submodel_mod ../starter/share/modules1/submodel_mod.F
38!||====================================================================
39 SUBROUTINE hm_read_mat54(UPARAM, MAXUPARAM, NUPARAM, NUVAR, IFUNC,
40 . MAXFUNC, NFUNC, PARMAT, UNITAB ,MAT_ID,
41 . MTAG, TITR, LSUBMODEL, PM, MATPARAM)
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE unitab_mod
46 USE elbuftag_mod
47 USE message_mod
48 USE submodel_mod
49 USE matparam_def_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "param_c.inc"
59#include "units_c.inc"
60C-----------------------------------------------
61C D u m m y A r g u m e n t s
62C-----------------------------------------------
63 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
64 my_real, DIMENSION(NPROPM), INTENT(INOUT) :: PM
65 my_real, DIMENSION(100), INTENT(INOUT) :: parmat
66 my_real, DIMENSION(MAXUPARAM), INTENT(INOUT) :: uparam
67 INTEGER, DIMENSION(MAXFUNC), INTENT(INOUT) :: IFUNC
68 INTEGER, INTENT(INOUT) :: NFUNC, NUPARAM, NUVAR
69 TYPE(mlaw_tag_), INTENT(INOUT) :: MTAG
70 INTEGER, INTENT(IN) :: MAT_ID, MAXFUNC, MAXUPARAM
71 CHARACTER(LEN=NCHARTITLE),INTENT(IN) :: TITR
72 TYPE(submodel_data), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
73 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77 INTEGER :: NF
78 my_real E, NU, AY, AZ, BY, BZ, CX, DC, PR, PS, SIG0, H, M, SFAC,
79 . rho0, rhor, fac_unit
80 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
81C-----------------------------------------------
82C S o u r c e l i n e s
83C-----------------------------------------------
84 is_encrypted = .false.
85 is_available = .false.
86
87! Check input encryption
88 CALL hm_option_is_encrypted(is_encrypted)
89! Initial and reference density
90 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
91 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
92 IF (rhor == zero) THEN
93 rhor = rho0
94 ENDIF
95 pm(1) = rhor
96 pm(89) = rho0
97
98! Line 1
99 CALL hm_get_floatv('MAT_E', e, is_available, lsubmodel, unitab)
100 CALL hm_get_floatv('MAT_NU', nu, is_available, lsubmodel, unitab)
101! Line 2
102 CALL hm_get_intv('FUNC', nf, is_available, lsubmodel)
103 CALL hm_get_floatv('MAT_A', sig0, is_available, lsubmodel, unitab)
104 CALL hm_get_floatv('MAT_B', h, is_available, lsubmodel, unitab)
105 CALL hm_get_floatv('MAT_N', m, is_available, lsubmodel, unitab)
106 CALL hm_get_floatv('MAT_Sfac_Yield', sfac, is_available, lsubmodel, unitab)
107! Line 3
108 CALL hm_get_floatv('MAT_Ay', ay, is_available, lsubmodel, unitab)
109 CALL hm_get_floatv('MAT_Az', az, is_available, lsubmodel, unitab)
110 CALL hm_get_floatv('MAT_By', by, is_available, lsubmodel, unitab)
111 CALL hm_get_floatv('MAT_Bz', bz, is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('MAT_Cx', cx, is_available, lsubmodel, unitab)
113! Line 4
114 CALL hm_get_floatv('MAT_Dc', dc, is_available, lsubmodel, unitab)
115 CALL hm_get_floatv('MAT_Rc', pr, is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('MAT_EPS', ps, is_available, lsubmodel, unitab)
117
118! Default values
119 IF (sfac == zero) THEN
120 CALL hm_get_floatv_dim('MAT_Sfac_Yield', fac_unit, is_available, lsubmodel, unitab)
121 sfac = one * fac_unit
122 ENDIF
123 IF (ay == zero) THEN
124 CALL hm_get_floatv_dim('MAT_Ay', fac_unit, is_available, lsubmodel, unitab)
125 ay = one * fac_unit
126 ENDIF
127 IF (az == zero) THEN
128 CALL hm_get_floatv_dim('MAT_Az', fac_unit, is_available, lsubmodel, unitab)
129 az = one * fac_unit
130 ENDIF
131 IF (by == zero) THEN
132 CALL hm_get_floatv_dim('MAT_By', fac_unit, is_available, lsubmodel, unitab)
133 by = one * fac_unit
134 ENDIF
135 IF (bz == zero) THEN
136 CALL hm_get_floatv_dim('MAT_Bz', fac_unit, is_available, lsubmodel, unitab)
137 bz = one * fac_unit
138 ENDIF
139 IF (cx == zero) THEN
140 CALL hm_get_floatv_dim('MAT_Cx', fac_unit, is_available, lsubmodel, unitab)
141 cx = one * fac_unit
142 ENDIF
143 IF (dc == zero .OR. dc >= one) THEN
144 dc = zep99999
145 ENDIF
146 IF (pr == zero) THEN
147 pr = two * infinity
148 ENDIF
149 IF (ps == zero) THEN
150 ps = infinity
151 ENDIF
152
153! Input checks
154 IF (nf == 0) THEN
155 IF (sig0 == zero .AND. h == zero .AND. m == zero) THEN
156 CALL ancmsg(msgid = 501, msgtype = msgerror, anmode = aninfo_blind_1,
157 . i1 = mat_id, c1 = titr)
158 ENDIF
159 ENDIF
160 IF (pr < ps) THEN
161 CALL ancmsg(msgid = 502, msgtype = msgerror, anmode = aninfo_blind_1,
162 . i1 = mat_id, c1 = titr)
163 ENDIF
164
165! Material law parameters
166 nuparam = 19
167 nuvar = 15
168 nfunc = 1
169
170! Storage
171 ifunc(1) = nf
172
173 uparam(6) = half * e / (one + nu)
174 uparam(7) = e
175 uparam(8) = ay
176 uparam(9) = az
177 uparam(10) = by
178 uparam(11) = bz
179 uparam(12) = cx
180 uparam(13) = dc
181 uparam(14) = pr
182 uparam(15) = ps
183 uparam(16) = sig0
184 uparam(17) = h
185 uparam(18) = m
186 uparam(19) = sfac
187
188 parmat(1) = e
189 parmat(2) = e
190 parmat(3) = nu
191
192 mtag%G_PLA = 1
193 mtag%L_PLA = 1
194c
195 ! Properties compatibility
196 CALL init_mat_keyword(matparam,"SPRING_PREDIT")
197c
198 WRITE(iout, 800) trim(titr), mat_id, 54
199 WRITE(iout, 1000)
200 IF (is_encrypted) THEN
201 WRITE(iout, '(5X,A,//)')'CONFIDENTIAL DATA'
202 ELSE
203 WRITE(iout, 850) rho0
204 WRITE(iout, 1100) e, nu, ay, az, by, bz, cx
205 WRITE(iout, 2000)
206 WRITE(iout, 2100) nf, sfac, sig0, h, m
207 WRITE(iout, 3000)
208 WRITE(iout, 3100) dc, pr, ps
209 ENDIF
210
211 800 FORMAT(/
212 & 5x,a,/,
213 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
214 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
215 850 FORMAT(
216 & 5x,'INITIAL DENSITY . . . . . . . . . . . . .=',1pg20.13/)
217 1000 FORMAT(
218 & 5x,' ELASTOPLASTIC USER LAW ',/,
219 & 5x,' ---------------------- ',//)
220 1100 FORMAT(
221 & 5x,'E . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
222 & 5x,'NU. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
223 & 5x,'AY. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
224 & 5x,'AZ. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
225 & 5x,'By. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
226 & 5x,'BZ. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
227 & 5x,'CX. . . . . . . . . . . . . . . . . . .=',1pg20.13//)
228C
229 2000 FORMAT(
230 & 5x,' HARDENING USER PARAMETERS ',/,
231 & 5x,' ---------------------- ',//)
232 2100 FORMAT(
233 & 5x,'YIELD FUNCTION NUMBER . . . . . . . . . . . . =',i10/,
234 & 5x,'SCALE FACTOR FOR YIELD FUNCTION . . . . =',1pg20.13/,
235 & 5x,'YIELD STRESS. . . . . . . . . . . . . . =',1pg20.13/,
236 & 5x,'PLASTIC MODULUS. . . . . . . . . . . . =',1pg20.13/,
237 & 5x,'EXPONENT. . . . . . . . . . . . . . . . =',1pg20.13///)
238c
239 3000 FORMAT(
240 & 5x,' DAMAGE PARAMETER USER LAW ',/,
241 & 5x,' ---------------------- ',//)
242 3100 FORMAT(
243 & 5x,'D CRITIQUE. . . . . . . . . . . . . . . =',1pg20.13/,
244 & 5x,'P RUPTURE . . . . . . . . . . . . . . =',1pg20.13/,
245 & 5x,'P SEUIL . . . . . . . . . . . . . . . . =',1pg20.13///)
246C
247 RETURN
248 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat54(uparam, maxuparam, nuparam, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, mtag, titr, lsubmodel, pm, matparam)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
program starter
Definition starter.F:39