OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat190.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_mat190 ../starter/source/materials/mat/mat190/hm_read_mat190.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!|| table_mod ../starter/share/modules1/table_mod.F
38!||====================================================================
39 SUBROUTINE hm_read_mat190(
40 . NUVAR ,NUMTABL ,MAXTABL ,ITABLE ,PARMAT ,UNITAB ,
41 . PM ,LSUBMODEL,MAT_ID ,TITR ,MATPARAM ,NVARTMP ,
42 . IMATVIS )
43C-----------------------------------------------
44C ROUTINE DESCRIPTION :
45C ===================
46C FOAM_DUBOIS path dependent foam material
47C isotropic material law for foam
48C-------------------------------------------------------------------------
49C-------------------------------------------------------------------------
50C DUMMY ARGUMENTS DESCRIPTION:
51C ===================
52C
53C NAME DESCRIPTION
54C-----------------------------------------------
55C IPM MATERIAL ARRAY(INTEGER)
56C PM MATERIAL ARRAY(REAL)
57C UNITAB UNITS ARRAY
58C ID MATERIAL ID(INTEGER)
59C TITR MATERIAL TITLE
60C LSUBMODEL SUBMODEL STRUCTURE
61C-----------------------------------------------
62C M o d u l e s
63C-----------------------------------------------
64 USE unitab_mod
65 USE elbuftag_mod
66 USE message_mod
67 USE submodel_mod
68 USE matparam_def_mod
69 USE table_mod
71C-----------------------------------------------
72C I m p l i c i t T y p e s
73C-----------------------------------------------
74#include "implicit_f.inc"
75C-----------------------------------------------
76C C o m m o n B l o c k s
77C-----------------------------------------------
78#include "param_c.inc"
79#include "units_c.inc"
80#include "com04_c.inc"
81C-----------------------------------------------
82C D u m m y A r g u m e n t s
83C-----------------------------------------------
84 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
85 INTEGER, INTENT(IN) :: MAT_ID,MAXTABL
86 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: PM
87 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
88 INTEGER, INTENT(INOUT) :: NUVAR,NUMTABL,NVARTMP,IMATVIS
89 INTEGER, DIMENSION(MAXTABL) ,INTENT(INOUT) :: ITABLE
90 my_real, DIMENSION(100),INTENT(INOUT) :: parmat
91 TYPE(submodel_data), DIMENSION(*),INTENT(IN) :: LSUBMODEL
92 TYPE (MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
93C-----------------------------------------------
94C L o c a l V a r i a b l e s
95C-----------------------------------------------
96 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
97 INTEGER :: I,ILAW
98 my_real :: RHO0,NU,BULK,E,EMOD,G,A11,SCAL,HU, SHAPE,
99 . scale_1_unit,xscale_1_unit,xfac(2)
100C=======================================================================
101 ilaw = 190
102 is_encrypted = .false.
103 is_available = .false.
104 imatvis = 2
105c
106 CALL hm_option_is_encrypted(is_encrypted)
107card1
108 ! Initial density
109 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110card2
111 ! Initial young modulus
112 CALL hm_get_floatv('MAT_E' ,emod ,is_available, lsubmodel, unitab)
113 nu = zero
114card3
115 ! Unloading parameters
116 CALL hm_get_floatv('MAT_HU' ,hu ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv('MAT_SHAPE' ,shape ,is_available, lsubmodel, unitab)
118card4
119 ! Loading table
120 CALL hm_get_intv ('FUN_1' ,itable(1),is_available, lsubmodel)
121 CALL hm_get_floatv('XSCALE_1' ,xfac(1) ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('SCALE_1' ,xfac(2) ,is_available, lsubmodel, unitab)
123c
124 ! Check scale factor units
125 CALL hm_get_floatv_dim('XSCALE_1' ,xscale_1_unit ,is_available, lsubmodel, unitab)
126 IF (xfac(1) == zero) xfac(1) = one * xscale_1_unit
127 CALL hm_get_floatv_dim('SCALE_1' ,scale_1_unit ,is_available, lsubmodel, unitab)
128 IF (xfac(2) == zero) xfac(2) = one * scale_1_unit
129c
130 ! Check default value and compute elastic parameters
131 e = emod
132 g = emod / two / (one+nu)
133 bulk = emod / three / (one-two * nu)
134 a11 = emod * (one - nu) / (one + nu) / (one-two * nu)
135 IF (hu == zero) hu = one
136c
137!--------------------------
138! Filling buffer tables
139!--------------------------
140 nuvar = 13 ! Number of User Element Variables and Curves
141 numtabl = 2 ! Number of tables
142 nvartmp = 18 ! Number of temporary variables
143 matparam%NUPARAM = 7 ! Number of real parameters
144c
145 ! Allocate and fill real parameters table
146 ALLOCATE(matparam%UPARAM(matparam%NUPARAM))
147 matparam%UPARAM(1) = emod
148 matparam%UPARAM(2) = bulk
149 matparam%UPARAM(3) = g
150 matparam%UPARAM(4) = xfac(1)
151 matparam%UPARAM(5) = xfac(2)
152 matparam%UPARAM(6) = hu
153 matparam%UPARAM(7) = shape
154c
155 ! PM table
156 pm(1) = rho0
157 pm(89) = rho0
158c
159 ! PARMAT table
160 parmat(1) = bulk
161 parmat(2) = e
162 parmat(3) = nu
163 parmat(16) = 2
164 parmat(17) = (one - two*nu)/(one - nu)
165c
166 ! Material settings
167 CALL init_mat_keyword(matparam,"total")
168 CALL INIT_MAT_KEYWORD(MATPARAM,"compressible")
169c
170 ! Properties compatibility
171 CALL INIT_MAT_KEYWORD(MATPARAM,"solid_isotropic")
172c
173!--------------------------
174! Parameters printout
175!--------------------------
176 WRITE(IOUT,900) TRIM(TITR),MAT_ID,ILAW
177 WRITE(IOUT,1000)
178 IF(IS_ENCRYPTED)THEN
179 WRITE(IOUT,'(5X,A,//)')'CONFIDENTIAL DATA'
180 ELSE
181 WRITE(IOUT,1050) RHO0
182 WRITE(IOUT,1110) E,BULK,G
183 WRITE(IOUT,1150) HU,SHAPE
184 WRITE(IOUT,1200) ITABLE(1),XFAC(1),XFAC(2)
185 ENDIF
186 900 FORMAT(/
187 & 5X,A,/,
188 & 5X,'MATERIAL NUMBER . . . . . . . . . . . . . . . =',I10/,
189 & 5X,'MATERIAL LAW. . . . . . . . . . . . . . . . . =',I10/)
190 1000 FORMAT(/
191 & 5X,'-----------------------------------------------',/
192 & 5X,' MATERIAL MODEL: ISOTROPIC PATH DEPENDENT FOAM ',/,
193 & 5X,'-----------------------------------------------',/)
194 1050 FORMAT(/
195 & 5X,'INITIAL DENSITY. . . . . . . . . . . . . . . .=',1PG20.13/)
196 1110 FORMAT(/
197 & 5X,'INITIAL YOUNG MODULUS E. . . . . . . . . . . .=',1PG20.13/
198 & 5X,'INITIAL BULK MODULUS K . . . . . . . . . . . .=',1PG20.13/
199 & 5X,'INITIAL SHEAR MODULUS G. . . . . . . . . . . .=',1PG20.13/)
200 1150 FORMAT(/
201 & 5X,'HYSTERETIC UNLOADING FACTOR HU . . . . . . . .=',1PG20.13/
202 & 5X,'SHAPE FACTOR FOR UNLOADING . . . . . . . . . .=',1PG20.13/)
203 1200 FORMAT(/
204 & 5X,'LOADING TABLE IDENTIFIER . . . . . . . . . . .=',I10/
205 & 5X,'REFERENCE STRAIN RATE (SCALE FACTOR) . . . . .=',1PG20.13/
206 & 5X,'LOADING STRESS SCALE FACTOR. . . . . . . . . .=',1PG20.13/)
207c
208 END
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_mat190(nuvar, numtabl, maxtabl, itable, parmat, unitab, pm, lsubmodel, mat_id, titr, matparam, nvartmp, imatvis)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle