OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat33.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_mat33 ../starter/source/materials/mat/mat033/hm_read_mat33.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_mat33(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE , IMATVIS ,
40 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
41 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
42 . PM ,MATPARAM )
43C-----------------------------------------------
44C D e s c r i p t i o n
45C-----------------------------------------------
46C READ MAT LAW33 WITH HM READER ( TO BE COMPLETED )
47C
48C DUMMY ARGUMENTS DESCRIPTION:
49C ===================
50C
51C NAME DESCRIPTION
52C
53C IPM MATERIAL ARRAY(INTEGER)
54C PM MATERIAL ARRAY(REAL)
55C UNITAB UNITS ARRAY
56C MAT_ID MATERIAL ID(INTEGER)
57C TITR MATERIAL TITLE
58C LSUBMODEL SUBMODEL STRUCTURE
59C
60C-----------------------------------------------
61C M o d u l e s
62C-----------------------------------------------
63 USE unitab_mod
64 USE elbuftag_mod
65 USE message_mod
66 USE submodel_mod
67 USE matparam_def_mod
69C-----------------------------------------------
70C I m p l i c i t T y p e s
71C-----------------------------------------------
72#include "implicit_f.inc"
73C-----------------------------------------------
74C C o m m o n B l o c k s
75C-----------------------------------------------
76#include "units_c.inc"
77#include "param_c.inc"
78C-----------------------------------------------
79C D u m m y A r g u m e n t s
80C-----------------------------------------------
81 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
82 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: PM
83 my_real, DIMENSION(100) ,INTENT(INOUT) :: PARMAT
84 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
85 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
86 INTEGER, INTENT(INOUT) :: ISRATE,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
87 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
88 INTEGER,INTENT(IN) :: MAT_ID
89 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
90 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(*)
91 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
92C-----------------------------------------------
93C L o c a l V a r i a b l e s
94C-----------------------------------------------
95 INTEGER KEN,IFN1,IFN2,IFN3,IFN4,IFN5,IFN6,ICASE
96
97 my_real
98 . e,a,b,c,p0,phi,gama0,fac,sigt_coff
99
100 my_real c1,c2,et,vmu,vmu0
101
102 my_real axx,bxx,cxx,ayy,byy,cyy,azz,bzz,czz
103 my_real axy,bxy,cxy,ayz,byz,cyz,azx,bzx,czx
104 my_real c1xx,c2xx,etxx,vmuxx
105 my_real c1yy,c2yy,etyy,vmuyy
106 my_real c1zz,c2zz,etzz,vmuzz
107 my_real c1xy,c2xy,gtxy,vmuxy
108 my_real c1yz,c2yz,gtyz,vmuyz
109 my_real c1zx,c2zx,gtzx,vmuzx
110 my_real fac_unit,rho0,rhor,fac1
111
112 LOGICAL :: IS_ENCRYPTED,IS_AVAILABLE
113C-----------------------------------------------
114C S o u r c e L i n e s
115C-----------------------------------------------
116 nfunc=0
117 is_encrypted = .false.
118 is_available = .false.
119 israte=0
120 imatvis=1
121
122 CALL hm_option_is_encrypted(is_encrypted)
123
124 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
126
127 CALL hm_get_floatv('MAT_E' ,e ,is_available, lsubmodel, unitab)
128 CALL hm_get_intv ('Itype' ,ken ,is_available, lsubmodel)
129 CALL hm_get_intv ('FUN_A1' ,ifn1 ,is_available, lsubmodel)
130 CALL hm_get_floatv('IFscale' ,fac ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv_dim('IFscale' ,fac_unit ,is_available, lsubmodel, unitab)
132 !hidden param/flag
133 !CALL HM_GET_INTV ('IFORM' ,IFN2 ,IS_AVAILABLE, LSUBMODEL)
134 !CALL HM_GET_FLOATV('MAT_RHO' ,FAC1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
135 ifn2=0
136 fac1=zero
137
138 CALL hm_get_floatv('MAT_P0' ,p0 ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv('MAT_PHI' ,phi ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv('MAT_GAMA0' ,gama0 ,is_available, lsubmodel, unitab)
141
142 IF (fac == zero) fac = one * fac_unit
143 !hiddent no longer supported
144 !FAC1 = ONE / FAC_UNIT
145 parmat(1)=e
146
147 IF(rhor==zero)rhor=rho0
148 pm(01)=rhor
149 pm(89)=rho0
150 icase = abs(ken)+1
151 SELECT CASE (icase)
152C-------------
153 CASE(1,3)
154C-------------
155c KEN = 0 or KEN = 2
156C-------------
157C-------------
158 nuparam=11
159 CALL hm_get_floatv('MAT_A0' ,a ,is_available, lsubmodel, unitab)
160 CALL hm_get_floatv('MAT_A1' ,b ,is_available, lsubmodel, unitab)
161 CALL hm_get_floatv('MAT_A2' ,c ,is_available, lsubmodel, unitab)
162 CALL hm_get_floatv('MAT_SIGT_CUTOFF' ,sigt_coff ,is_available, lsubmodel, unitab)
163!!
164 IF(sigt_coff == zero) sigt_coff = ep20
165 uparam(1)=ken
166 uparam(2)=e
167 uparam(3)=a
168 uparam(4)=b
169 uparam(5)=c
170 uparam(6)=p0
171 uparam(7)=phi
172 uparam(8)=gama0
173 uparam(9)=fac
174 uparam(10)=fac1
175 uparam(11)=sigt_coff
176
177 ifunc(1)=ifn1
178 ifunc(2)=ifn2
179 nfunc=2
180!
181 WRITE(iout,1001) trim(titr),mat_id,33
182 WRITE(iout,1000)
183
184 IF(is_encrypted)THEN
185 WRITE(iout,'(5x,a,//)')'confidential data'
186 ELSE
187 WRITE(IOUT,1002) RHO0
188 WRITE(IOUT,1200) E,KEN,IFN1,FAC,IFN2,FAC1,
189 & A,B,C,SIGT_COFF,P0,PHI,GAMA0
190 ENDIF
191C-------------
192 CASE(2)
193C-------------
194c KEN=1
195C-------------
196 NUPARAM=15
197 CALL HM_GET_FLOATV('mat_a0' ,A ,IS_AVAILABLE, LSUBMODEL, UNITAB)
198 CALL HM_GET_FLOATV('mat_a1' ,B ,IS_AVAILABLE, LSUBMODEL, UNITAB)
199 CALL HM_GET_FLOATV('mat_a2' ,C ,IS_AVAILABLE, LSUBMODEL, UNITAB)
200
201 CALL HM_GET_FLOATV('mat_e1' ,C1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
202 CALL HM_GET_FLOATV('mat_e2' ,C2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
203 CALL HM_GET_FLOATV('mat_etan' ,ET ,IS_AVAILABLE, LSUBMODEL, UNITAB)
204 CALL HM_GET_FLOATV('mat_eta1' ,VMU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
205 CALL HM_GET_FLOATV('mat_eta2' ,VMU0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
206
207.OR. IF (VMU<=0.VMU0<=0.) THEN
208 CALL ANCMSG(MSGID=310,
209 . MSGTYPE=MSGERROR,
210 . ANMODE=ANINFO,
211 . I1=MAT_ID,
212 . C1=TITR)
213 ENDIF
214 UPARAM(1)=KEN
215 UPARAM(2)=E
216 UPARAM(3)=A
217 UPARAM(4)=B
218 UPARAM(5)=C
219 UPARAM(6)=P0
220 UPARAM(7)=PHI
221 UPARAM(8)=GAMA0
222 UPARAM(9)=C1
223 UPARAM(10)=C2
224 UPARAM(11)=ET
225 UPARAM(12)=VMU
226 UPARAM(13)=VMU0
227 UPARAM(14)=FAC
228 UPARAM(15)=FAC1
229
230 IFUNC(1)=IFN1
231 IFUNC(2)=IFN2
232 NFUNC=2
233C-------------
234C
235C Formulation for solid elements time step computation.
236 PARMAT(16) = 2
237 PARMAT(17) = ONE
238c-----------------
239 CALL INIT_MAT_KEYWORD(MATPARAM,"COMPRESSIBLE")
240c-----------------
241 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,33
242 WRITE(IOUT,1000)
243 IF(IS_ENCRYPTED)THEN
244 WRITE(IOUT,'(5x,a,//)')'confidential data'
245 ELSE
246 WRITE(IOUT,1100) E,KEN,IFN1,FAC,IFN2,FAC1,
247 & C1,C2,ET,VMU,VMU0,
248 & A,B,C,P0,PHI,GAMA0
249 ENDIF
250 END SELECT
251c
252 ! Properties compatibility
253 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
254 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
255c
256 RETURN
257C 12345678901234567890123456789012345678901
258 1000 FORMAT
259 & (5X,43H LOW DENSITY CLOSED CELL POLYURETHANE FOAM,/,
260 & 5X,43H -----------------------------------------,//)
261 1001 FORMAT(/
262 & 5X,A,/,
263 & 5X, 'material number . . . . . . . . . . . .=',I10/,
264 & 5X, 'material law. . . . . . . . . . . . . .=',I10/)
265 1002 FORMAT(
266 & 5X, 'initial density . . . . . . . . . . . .=',1PG20.13/)
267 1100 FORMAT
268 & (5X, 'young''s modulus . . . . . . . . . . . .=',1PG20.13/
269 & ,5X, 'flag. . . . . . . . . . . . . . . . . .=',I10/
270 & ,5X, 'FUNCTION number for the yield curve . .=',I10//
271 & ,5X, 'yield curve scale factor. . . . . . . .=',1pg20.13/
272 & ,5x, 'STRAIN RATE EFFECT CURVE. . . . . . . =',i10/
273 & ,5x, 'STRAIN RATE EFFECT SCALE FACTOR . . . .=',1pg20.13/
274 & ,5x, 'USER CONSTANT FOR YOUNG MODULUS C1. . .=',1pg20.13/
275 & ,5x, 'USER CONSTANT FOR YOUNG MODULUS C2. . .=',1pg20.13/
276 & ,5x, 'TANGENT MODULUS . . . . . . . . . . . .=',1pg20.13/
277 & ,5x, 'VISCOUS COEFFICIENT (PURE COMPRESSION).=',1pg20.13/
278 & ,5x, 'VISCOUS COEFFICIENT (PURE SHEAR). . . .=',1pg20.13//
279 & ,5x, 'USER CONSTANT FOR YIELD STRESS A. . . .=',1pg20.13/
280 & ,5x, 'USER CONSTANT FOR YIELD STRESS B. . . .=',1pg20.13/
281 & ,5x, 'USER CONSTANT FOR YIELD STRESS C. . . .=',1pg20.13//
282 & ,5x, 'INITIAL FOAM PRESSURE . . . . . . . . .=',1pg20.13/
283 & ,5x, 'RATIO OF FOAM TO POLYMER DENSITY. . . .=',1pg20.13/
284 & ,5x, 'INITIAL VOLUMETRIC STRAIN. . . .. . . .=',1pg20.13/)
285 1200 FORMAT
286 & (5x, 'YOUNG''S MODULUS . . . . . . . . . . . .=',1pg20.13/
287 & ,5x, 'FLAG. . . . . . . . . . . . . . . . . .=',i10/
288 & ,5x, 'FUNCTION NUMBER FOR THE YIELD CURVE . .=',i10//
289 & ,5x, 'YIELD CURVE SCALE FACTOR. . . . . . . .=',1pg20.13/
290 & ,5x, 'STRAIN RATE EFFECT CURVE. . . . . . . =',i10/
291 & ,5x, 'STRAIN RATE EFFECT SCALE FACTOR . . . .=',1pg20.13/
292 & ,5x, 'USER CONSTANT FOR YIELD STRESS A. . . .=',1pg20.13/
293 & ,5x, 'USER CONSTANT FOR YIELD STRESS B. . . .=',1pg20.13/
294 & ,5x, 'USER CONSTANT FOR YIELD STRESS C. . . .=',1pg20.13/
295 & ,5x, 'TENSION CUT OFF STRESS . . . . .. . . .=',1pg20.13//
296 & ,5x, 'INITIAL FOAM PRESSURE . . . . . . . . .=',1pg20.13/
297 & ,5x, 'RATIO OF FOAM TO POLYMER DENSITY. . . .=',1pg20.13/
298 & ,5x, 'INITIAL VOLUMETRIC STRAIN. . . .. . . .=',1pg20.13/)
299 END
end diagonal values have been computed in the(sparse) matrix id.SOL
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_mat33(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, matparam)
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle