OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat94.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_mat94 ../starter/source/materials/mat/mat094/hm_read_mat94.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_mat94(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE , IMATVIS ,
37 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
38 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
39 . PM ,IPM ,MATPARAM )
40C-----------------------------------------------
41C D e s c r i p t i o n
42C-----------------------------------------------
43C READ MAT LAW92 WITH HM READER ( TO BE COMPLETED )
44C
45C DUMMY ARGUMENTS DESCRIPTION:
46C ===================
47C
48C NAME DESCRIPTION
49C
50C PM MATERIAL ARRAY(REAL)
51C UNITAB UNITS ARRAY
52C ID MATERIAL ID(INTEGER)
53C TITR MATERIAL TITLE
54C LSUBMODEL SUBMODEL STRUCTURE
55C
56C-----------------------------------------------
57C M o d u l e s
58C-----------------------------------------------
59 USE unitab_mod
60 USE elbuftag_mod
61 USE message_mod
62 USE submodel_mod
63 USE matparam_def_mod
65C-----------------------------------------------
66C I m p l i c i t T y p e s
67C-----------------------------------------------
68#include "implicit_f.inc"
69C-----------------------------------------------
70C C o m m o n B l o c k s
71C-----------------------------------------------
72#include "units_c.inc"
73#include "param_c.inc"
74C-----------------------------------------------
75C D u m m y A r g u m e n t s
76C-----------------------------------------------
77 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
78 my_real, INTENT(INOUT) :: PM(NPROPM),PARMAT(100),UPARAM(MAXUPARAM)
79 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
80 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
81 INTEGER,INTENT(IN) :: MAT_ID
82 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
83 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(*)
84 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
85C-----------------------------------------------
86C L o c a l V a r i a b l e s
87C-----------------------------------------------
88 INTEGER ID,IDAM,ILAW
89 my_real E,NU,G,MU,RBULK,C10,C20,C30,D1,D2,D3
90 CHARACTER(LEN=NCHARFIELD) :: STRING
91 my_real :: rho0, rhor
92 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
93C-----------------------------------------------
94C S o u r c e L i n e s
95C-----------------------------------------------
96 is_encrypted = .false.
97 is_available = .false.
98 idam = 0
99 israte = 0
100 imatvis = 1
101 nuvar = 0
102 ilaw = 94
103
104 CALL hm_option_is_encrypted(is_encrypted)
105 !line+1
106 CALL hm_get_floatv('mat_rho' ,RHO0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
107 !! CALL HM_GET_FLOATV('mat_rho' ,RHOR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
108 !line-1 Is not active (Blank)
109 !CALL HM_GET_INTV ('itype' ,ITEST ,IS_AVAILABLE, LSUBMODEL)
110 !CALL HM_GET_INTV ('mat_fct_idi' ,IFUNC(1) ,IS_AVAILABLE, LSUBMODEL)
111 !CALL HM_GET_FLOATV('mat_nu' ,NU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
112 !line-2
113 CALL HM_GET_FLOATV('law94_c01' ,C10 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_FLOATV('law94_c02' ,C20 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
115 CALL HM_GET_FLOATV('law94_c03' ,C30 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
116 !line-3
117 CALL HM_GET_FLOATV('law94_d1' ,D1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118 CALL HM_GET_FLOATV('law94_d2' ,D2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119 CALL HM_GET_FLOATV('law94_d3' ,D3 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 !========== DEFAULT VALUES=============!
121 RHOR=ZERO
122 !!IF(RHOR==ZERO)RHOR=RHO0
123 PM(1) =RHOR
124 PM(89)=RHO0
125
126C
127C Uniaxial - itest = 1
128C equibiaxial - Itest = 2
129c Planar - Itest = 3
130C
131!the proposed one READ(LINE,FMT=FMT_A_I_F)STRING,IFUNC(1),NU
132CSTRING = UNIAXIAL
133CSTRING = EQUIBIAXIAL
134CSTRING = PLANAR
135
136C
137 G = ZERO
138 RBULK = ZERO
139 E = ZERO
140C I
141 IF(D2 /= ZERO ) D2 = ONE/D2
142 IF(D3 /= ZERO ) D3 = ONE/D3
143C
144 G = TWO*C10
145 IF(D1 == ZERO) THEN
146 D2 = ZERO
147 D3 = ZERO
148 NU = 0.495
149 RBULK = TWO_THIRD*G*(ONE + NU)/(ONE-TWO*NU)
150 D1 = RBULK / TWO ! 1/D1
151 E = TWO*G*(ONE + NU)
152 ELSE
153 D1 = ONE/D1
154 RBULK= TWO*D1
155 NU = (THREE*RBULK -TWO*G)/(THREE*RBULK + G)/TWO
156 E = NINE*RBULK*G/(THREE*RBULK + G)
157 ENDIF
158C
159 UPARAM(1) = G
160 UPARAM(2) = RBULK
161 UPARAM(3) = NU
162 UPARAM(4) = C10
163 UPARAM(5) = C20
164 UPARAM(6) = C30
165 UPARAM(7) = D1
166 UPARAM(8) = D2
167 UPARAM(9) = D3
168!! not used UPARAM(10) = ITEST
169C
170 NUPARAM = 9
171 IF(NUPARAM>MAXUPARAM)THEN
172 WRITE(IOUT,*)' ** error : nuparam gt maxuparam'
173 WRITE(IOUT,*)' nuparam =',NUPARAM,
174 . ' maxuparam =',maxuparam
175 ENDIF
176C
177 parmat(1) = rbulk
178 parmat(2) = e
179 parmat(3) = nu
180C
181C Formulation for solid elements time step computation.
182 parmat(16) = 2
183 parmat(17) = two*g/(rbulk + four_over_3*g)
184C
185 imatvis = 1
186 pm(100) = rbulk
187c-----------------
188 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
189 CALL init_mat_keyword(matparam,"TOTAL")
190 CALL init_mat_keyword(matparam,"HOOK")
191 ! Properties compatibility
192 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
193c-----------------
194 !========== OUTPUT =============!
195
196 WRITE(iout,1010) trim(titr),mat_id,94
197 WRITE(iout,1000)
198 IF(is_encrypted)THEN
199 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
200 ELSE
201 WRITE(iout,1020)rho0
202! not used
203!! IF (IFUNC(1) > 0) THEN
204!! IF(ITEST == 1) THEN
205!! WRITE(IOUT,1300)IFUNC(1), NU
206!! ELSEIF(ITEST == 2) THEN
207!! WRITE(IOUT,1310)IFUNC(1), NU
208!! ELSEIF(ITEST == 3) THEN
209!! WRITE(IOUT,1320)IFUNC(1), NU
210!! ENDIF
211!! ELSE
212 WRITE(iout,1100)c10,c20,c30,d1,d2,d3
213 WRITE(iout,1200)g,rbulk, nu
214!! ENDIF
215 ENDIF
216C
217 1000 FORMAT(
218 & 5x,' YEOH LAW ',/,
219 & 5x,' ---------- ',//)
220 1010 FORMAT(/
221 & 5x,a,/,
222 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . =',i10/,
223 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . =',i10/)
224 1020 FORMAT(
225 & 5x,'INITIAL DENSITY . . . . . . . . . . . . .=',1pg20.13/)
226 1100 FORMAT(
227 & 5x,'C10 . . . . . . . . . . . . . . . . . . .=',1pg20.13/
228 & 5x,'C20 . . . . . . . . . . . . . . . . . . .=',1pg20.13/
229 & 5x,'C30 . . . . . . . . . . . . . . . . . . .=',1pg20.13/
230 & 5x,'1/D1 . . . . . . . . . . . . . . . . . .=',1pg20.13/
231 & 5x,'1/D2 . . . . . . . . . . . . . . . . . .=',1pg20.13/
232 & 5x,'1/D3 . . . . . . . . . . . . . . . . . .=',1pg20.13)
233 1200 FORMAT(
234 & 5x,'INITIAL SHEAR MODULUS . . . . . . . . . .=',1pg20.13/
235 & 5x,'BULK MODULUS. . . . . . . . . . . . . . .=',1pg20.13/
236 & 5x,'POISSON RATIO . . . . . . . . . . . . . .=',1pg20.13/)
237 1300 FORMAT(
238 & 5x,'UNIAXIAL DATA TEST CURVE. . . . . . . . .=',i10/
239 & 5x,'POISSON RATIO . . . . . . . . . . . . . .=',1pg20.13///)
240 1310 FORMAT(
241 & 5x,'EQUIBIAXIAL DATA TEST CURVE . . . . . . .=',i10/
242 & 5x,'POISSON RATIO . . . . . . . . . . . . . .=',1pg20.13///)
243 1320 FORMAT(
244 & 5x,'PLANAR DATA TEST CURVE. . . . . . . . . .=',i10/
245 & 5x,'POISSON RATIO . . . . . . . . . . . . . .=',1pg20.13///)
246C
247 RETURN
248 END
249C-----------------------------------------------
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat94(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)
integer, parameter nchartitle
integer, parameter ncharfield
program starter
Definition starter.F:39