OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat34.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_mat34 ../starter/source/materials/mat/mat034/hm_read_mat34.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_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
30!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
31!||--- uses -----------------------------------------------------
32!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
33!|| message_mod ../starter/share/message_module/message_mod.F
34!|| submodel_mod ../starter/share/modules1/submodel_mod.F
35!||====================================================================
36 SUBROUTINE hm_read_mat34(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE , IMATVIS ,
37 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
38 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
39 . PM ,MATPARAM )
40C-----------------------------------------------
41C D e s c r i p t i o n
42C-----------------------------------------------
43C READ MAT LAW33 WITH HM READER ( TO BE COMPLETED )
44C
45C DUMMY ARGUMENTS DESCRIPTION:
46C ===================
47C
48C NAME DESCRIPTION
49C
50C IPM MATERIAL ARRAY(INTEGER)
51C PM MATERIAL ARRAY(REAL)
52C UNITAB UNITS ARRAY
53C MAT_ID MATERIAL ID(INTEGER)
54C TITR MATERIAL TITLE
55C LSUBMODEL SUBMODEL STRUCTURE
56C
57C-----------------------------------------------
58C M o d u l e s
59C-----------------------------------------------
60 USE unitab_mod
61 USE elbuftag_mod
62 USE message_mod
63 USE submodel_mod
64 USE matparam_def_mod
66C-----------------------------------------------
67C I m p l i c i t T y p e s
68C-----------------------------------------------
69#include "implicit_f.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "units_c.inc"
74#include "param_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
79 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: PM
80 my_real, DIMENSION(100) ,INTENT(INOUT) :: PARMAT
81 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
82 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
83 INTEGER, INTENT(INOUT) :: ISRATE,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
84 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
85 INTEGER,INTENT(IN) :: MAT_ID
86 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
87 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(*)
88 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
89C-----------------------------------------------
90C L o c a l V a r i a b l e s
91C-----------------------------------------------
92 my_real :: bulk,young
93 my_real :: g0,gi,beta
94 my_real :: p0,phi,gama0
95 my_real :: rhor,rho0,nu
96 LOGICAL :: IS_ENCRYPTED,IS_AVAILABLE
97C-----------------------------------------------
98C S o u r c e L i n e s
99C-----------------------------------------------
100 israte=0
101 imatvis=1
102 is_encrypted = .false.
103 is_available = .false.
104
105
106 CALL hm_option_is_encrypted(is_encrypted)
107
108 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
110
111 CALL hm_get_floatv('MAT_BULK' ,bulk ,is_available, lsubmodel, unitab)
112
113
114 CALL hm_get_floatv('MAT_G0' ,g0 ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv('MAT_GI' ,gi ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('MAT_DECAY' ,beta ,is_available, lsubmodel, unitab)
117
118 CALL hm_get_floatv('MAT_P0' ,p0 ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv('MAT_PHI' ,phi ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_GAMA0' ,gama0 ,is_available, lsubmodel, unitab)
121
122 !GAMA0 = GAMA0 * FAC_L * FAC_L * FAC_L
123
124
125 IF (rhor==zero) rhor=rho0
126
127 nuparam=7
128 nfunc=0
129 nuvar=8
130
131 uparam(1)=bulk
132 uparam(2)=g0
133 uparam(3)=gi
134 uparam(4)=beta
135 uparam(5)=p0
136 uparam(6)=phi
137 uparam(7)=gama0
138
139 young = (nine*bulk*g0)/(three*bulk + g0)
140
141 parmat(1) = bulk
142! PARMAT(1) = TWO*GI
143 parmat(2) = young
144C Formulation for solid elements time step computation.
145 parmat(16) = 2
146 parmat(17) = two*g0/(bulk + four_over_3*g0)
147
148 pm(1) = rhor
149 pm(89) = rho0
150 pm(12) = sqrt(max(zero, g0)) !done by default in lecmuser.F for law34
151 pm(22) = g0
152 pm(27) = sqrt(young/rho0) ! Sound speed
153c
154 ! MATPARAM keywords
155 CALL init_mat_keyword(matparam,"HOOK")
156c
157 ! Properties compatibility
158 CALL init_mat_keyword(matparam,"SHELL_ISOTROPIC")
159 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
160 CALL init_mat_keyword(matparam,"SPH")
161 CALL init_mat_keyword(matparam,"TRUSS")
162 CALL init_mat_keyword(matparam,"BEAM_INTEGRATED")
163c
164 WRITE(iout,1001) trim(titr),mat_id,34
165 WRITE(iout,1000)
166
167 IF(is_encrypted)THEN
168 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
169 ELSE
170 WRITE(iout,1002) rho0
171 WRITE(iout,1100) bulk,g0,gi,beta,p0,phi,gama0
172 ENDIF
173
174 RETURN
175
176 1000 FORMAT
177 & (5x,14h viscoelastic,/,
178 & 5x,14h ------------,//)
179 1001 FORMAT(/
180 & 5x,a,/,
181 & 5x, 'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
182 & 5x, 'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
183 1002 FORMAT(
184 & 5x, 'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
185 1100 FORMAT
186 & (5x, 'BULK MODULUS. . . . . . . . . . . . . .=',1pg20.13/
187 & ,5x, 'SHEAR MODULUS (SHORT TIME). . . . . . .=',1pg20.13/
188 & ,5x, 'SHEAR MODULUS (LONG TIME) . . . . . . .=',1pg20.13/
189 & ,5x, 'DECAY CONSTANT. . . . . . . . . . . . .=',1pg20.13//
190 & ,5x, 'INITIAL FOAM PRESSURE . . . . . . . . .=',1pg20.13/
191 & ,5x, 'RATIO OF FOAM TO POLYMER DENSITY. . . .=',1pg20.13/
192 & ,5x, 'INITIAL VOLUMETRIC STRAIN. . . .. . . .=',1pg20.13//)
193
194 END
195
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat34(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, matparam)
subroutine init_mat_keyword(matparam, keyword)
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle