OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat53.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_mat53 ../starter/source/materials/mat/mat053/hm_read_mat53.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_get_floatv_dim ../starter/source/devtools/hm_reader/hm_get_floatv_dim.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_mat53(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE , 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 LAW53 WITH HM READER
46C
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C
50C NAME DESCRIPTION
51C
52C PM MATERIAL ARRAY(REAL)
53C UNITAB UNITS ARRAY
54C ID MATERIAL ID(INTEGER)
55C TITR MATERIAL TITLE
56C LSUBMODEL SUBMODEL STRUCTURE
57C
58C-----------------------------------------------
59C M o d u l e s
60C-----------------------------------------------
61 USE unitab_mod
62 USE elbuftag_mod
63 USE message_mod
64 USE submodel_mod
65 USE matparam_def_mod
67C-----------------------------------------------
68C I m p l i c i t T y p e s
69C-----------------------------------------------
70#include "implicit_f.inc"
71C-----------------------------------------------
72C C o m m o n B l o c k s
73C-----------------------------------------------
74#include "units_c.inc"
75#include "param_c.inc"
76C-----------------------------------------------
77C D u m m y A r g u m e n t s
78C-----------------------------------------------
79 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
80 my_real, INTENT(INOUT) :: PM(NPROPM),PARMAT(100),UPARAM(MAXUPARAM)
81 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
82 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
83 INTEGER,INTENT(IN) :: MAT_ID
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(NSUBMOD)
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 my_real
91 . e11, e22, n12, g12, g23, g13,fac1,fac2,fac3,fac4,fac5,
92 . fac_l,fac_t,fac_m,fac_c,dmin,dmax,ssp
93 INTEGER NRATE,J,I,IFLAG
94 my_real :: RHO0, RHOR, FAC_UNIT
95 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
96C-----------------------------------------------
97C S o u r c e L i n e s
98C-----------------------------------------------
99
100 is_encrypted = .false.
101 is_available = .false.
102 israte = 0
103 imatvis = 0
104 mtag%G_PLA = 1
105 mtag%L_PLA = 1
106
107 nuparam=10
108 nfunc = 5
109 nuvar = 6
110
111 CALL hm_option_is_encrypted(is_encrypted)
112 !line+1
113 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
115 !line-2
116 CALL hm_get_floatv('MAT_E1' ,e11 ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv('MAT_E2' ,e22 ,is_available, lsubmodel, unitab)
118 !line-3
119 CALL hm_get_floatv('MAT_GAB' ,g12 ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_GBC' ,g23 ,is_available, lsubmodel, unitab)
121 !line-4
122 CALL hm_get_intv ('FUN_A1' ,ifunc(1) ,is_available, lsubmodel)
123 CALL hm_get_intv ('FUN_B1' ,ifunc(2) ,is_available, lsubmodel)
124 CALL hm_get_intv ('FUN_A3' ,ifunc(3) ,is_available, lsubmodel)
125 CALL hm_get_intv ('FUN_A5' ,ifunc(4) ,is_available, lsubmodel)
126 CALL hm_get_intv ('FUN_A6' ,ifunc(5) ,is_available, lsubmodel)
127 iflag=0 !no longer read
128 !line-5
129 CALL hm_get_floatv('MAT_SFAC11' ,fac1 ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv('MAT_SFAC22' ,fac2 ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv('MAT_SFAC12' ,fac3 ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv('MAT_SFAC23' ,fac4 ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv('MAT_SFAC45' ,fac5 ,is_available, lsubmodel, unitab)
134 !units
135 CALL hm_get_floatv_dim('MAT_SFAC11' ,fac_unit ,is_available, lsubmodel, unitab)
136
137
138 !---DEFAULT VALUES
139 IF(rhor == zero)rhor=rho0
140 pm(1) = rhor
141 pm(89) = rho0
142 ssp = sqrt(max(e11,e22,g12,g23)/rho0)
143 pm(27) = ssp
144 IF (fac1 == zero) fac1 = one*fac_unit
145 IF (fac2 == zero) fac2 = one*fac_unit
146 IF (fac3 == zero) fac3 = one*fac_unit
147 IF (fac4 == zero) fac4 = one*fac_unit
148 IF (fac5 == zero) fac5 = one*fac_unit
149
150 !---STORAGE
151 uparam(1)=e11
152 uparam(2)=e22
153 uparam(3)=g12
154 uparam(4)=g23
155 uparam(5)=iflag
156 uparam(6)=fac1
157 uparam(7)=fac2
158 uparam(8)=fac3
159 uparam(9)=fac4
160 uparam(10)=fac5
161 !Formulation for solid elements time step computation.
162 parmat(1) = max(e11,e22,g12,g23)
163 parmat(2) = max(e11,e22)
164 parmat(16) = 1
165 dmin = e11*e22
166 dmax = max(e11,e22)
167 parmat(17) = dmin/dmax/dmax
168c
169 CALL init_mat_keyword(matparam,"COMPRESSIBLE")
170 CALL init_mat_keyword(matparam,"HOOK")
171 CALL init_mat_keyword(matparam,"ORTHOTROPIC")
172c
173 ! Properties compatibility
174 CALL init_mat_keyword(matparam,"solid_orthotropic")
175c
176 !---LISTING OUTPUT
177 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,53
178 WRITE(IOUT,1000)
179 IF(IS_ENCRYPTED)THEN
180 WRITE(IOUT,'(5X,A,//)')'CONFIDENTIAL DATA'
181 ELSE
182 WRITE(IOUT,1002) RHO0
183 WRITE(IOUT,1100)E11,E22,G12,G23,(IFUNC(I),I=1,5)
184 WRITE(IOUT,1200)FAC1,FAC2,FAC3,FAC4,FAC5
185 ENDIF
186
187 !---OUTPUT FORMAT
188
189 1000 FORMAT(
190 & 5X,30H /MAT/LAW53 (TSAI_TAB) ,/,
191 & 5X,30H ------------- ,//)
192 1001 FORMAT(
193 & 5X,A,/,
194 & 5X,'MATERIAL NUMBER . . . . . . . . . . . . =',I10/,
195 & 5X,'MATERIAL LAW. . . . . . . . . . . . . . =',I10/)
196 1002 FORMAT(
197 & 5X,'INITIAL DENSITY . . . . . . . . . . . . =',1PG20.13/)
198 1100 FORMAT(
199 & 5X,'E11 . . . . . . . . . . . . . . . . . .=',1PG20.13/
200 & 5X,'E22 . . . . . . . . . . . . . . . . . .=',1PG20.13/
201 & 5X,'G12 . . . . . . . . . . . . . . . . . .=',1PG20.13/
202 & 5X,'G23 . . . . . . . . . . . . . . . . . .=',1PG20.13/
203 & 5X,'YIELD STRESS 11 FUNCTION NUMBER . . . .=',I10/
204 & 5X,'YIELD STRESS 22 FUNCTION NUMBER . . . .=',I10/
205 & 5X,'YIELD STRESS 12 FUNCTION NUMBER . . . .=',I10/
206 & 5X,'YIELD STRESS 23 FUNCTION NUMBER . . . .=',I10/
207 & 5X,'YIELD STRESS 45 FUNCTION NUMBER . . . .=',I10)
208 1200 FORMAT(
209 & 5X,'STRESS 11 FUNCTION SCALE FACTOR . . . .=',1PG20.13/
210 & 5X,'STRESS 22 FUNCTION SCALE FACTOR . . . .=',1PG20.13/
211 & 5X,'STRESS 33 FUNCTION SCALE FACTOR . . . .=',1PG20.13/
212 & 5X,'STRESS 12 FUNCTION SCALE FACTOR . . . .=',1PG20.13/
213 & 5X,'STRESS 23 FUNCTION SCALE FACTOR . . . .=',1PG20.13/
214 & 5X,'STRESS 45 FUNCTION SCALE FACTOR . . . .=',1PG20.13//)
215
216
217 RETURN
218 END SUBROUTINE
219
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_mat53(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, ipm, matparam)
subroutine init_mat_keyword(matparam, keyword)
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle