OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat82.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_mat82 ../starter/source/materials/mat/mat082/hm_read_mat82.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_float_array_index ../starter/source/devtools/hm_reader/hm_get_float_array_index.F
30!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.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!|| message_mod ../starter/share/message_module/message_mod.F
36!|| submodel_mod ../starter/share/modules1/submodel_mod.F
37!||====================================================================
38 SUBROUTINE hm_read_mat82(
39 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,IFUNC ,
40 . MAXFUNC ,NFUNC ,PARMAT ,IMATVIS ,UNITAB ,
41 . MAt_ID ,TITR ,LSUBMODEL,PM ,MATPARAM )
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE unitab_mod
46 USE message_mod
47 USE submodel_mod
48 USE matparam_def_mod
50C-----------------------------------------------
51C ROUTINE DESCRIPTION :
52C ===================
53C READ MAT LAW82 WITH HM READER
54C-----------------------------------------------
55C DUMMY ARGUMENTS DESCRIPTION:
56C ===================
57C UNITAB UNITS ARRAY
58C ID MATERIAL ID(INTEGER)
59C TITR MATERIAL TITLE
60C LSUBMODEL SUBMODEL STRUCTURE
61C-----------------------------------------------
62C I m p l i c i t T y p e s
63C-----------------------------------------------
64#include "implicit_f.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "units_c.inc"
69#include "param_c.inc"
70C-----------------------------------------------
71C D u m m y A r g u m e n t s
72C-----------------------------------------------
73 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
74 INTEGER, INTENT(IN) :: MAT_ID,MAXUPARAM,MAXFUNC
75 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: PM
76 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
77 INTEGER, INTENT(INOUT) :: IMATVIS,NUPARAM,NUVAR,NFUNC
78 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
79 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
80 my_real, DIMENSION(100),INTENT(INOUT) :: parmat
81 TYPE(submodel_data), DIMENSION(*),INTENT(IN) :: LSUBMODEL
82 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
83C-----------------------------------------------
84C L o c a l V a r i a b l e s
85C-----------------------------------------------
86 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
87 my_real
88 . MU(100),AL(100),NU,NU0,RHO0,
89 . gs,p,d(100),zep495,rhor
90 INTEGER I,NORDRE,ILAW
91C=======================================================================
92 IS_ENCRYPTED = .false.
93 is_available = .false.
94 imatvis = 1
95 ilaw = 82
96 zep495 = zep4 + nine*em02 + five*em03
97 nfunc = 0
98
99 CALL hm_option_is_encrypted(is_encrypted)
100
101 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
102 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
103
104 CALL hm_get_floatv('MAT_NU' ,nu0 ,is_available, lsubmodel, unitab)
105 CALL hm_get_intv('ORDER' ,nordre ,is_available,lsubmodel)
106
107 IF(nordre == 0)THEN
108 CALL ancmsg(msgid=559,
109 . msgtype=msgerror,
110 . anmode=aninfo_blind_1,
111 . i1=mat_id,
112 . c1=titr)
113 ENDIF
114 DO i=1,nordre
115 CALL hm_get_float_array_index('Mu_arr' ,mu(i) ,i,is_available, lsubmodel, unitab)
116 CALL hm_get_float_array_index('Alpha_arr' ,al(i) ,i,is_available, lsubmodel, unitab)
117 CALL hm_get_float_array_index('Gamma_arr' ,d(i) ,i,is_available, lsubmodel, unitab)
118 ENDDO
119C
120 gs = zero
121 DO i=1,nordre
122 gs = gs + mu(i)
123 ENDDO
124C
125 IF(gs < zero) THEN
126 CALL ancmsg(msgid=846,
127 . msgtype=msgerror,
128 . anmode=aninfo,
129 . i1=mat_id,
130 . c1=titr)
131 ENDIF
132C ...
133 IF(nu0 == half) nu0= zep495
134 IF(nu0 == zero ) THEN
135 IF( d(1) > zero) THEN
136 p=two/d(1)
137 nu = one/(six*p + two*gs)
138 nu = (three*p - two*gs)*nu
139 IF(nu == half) nu= zep499
140 d(1) = three*(one - two*nu)/gs/(one + nu)
141 p = two/d(1)
142 ELSE
143 nu = zep495
144 d(1) = three*(one - two*nu)/gs/(one + nu)
145 p = two/d(1)
146 ENDIF
147 ELSE
148 nu = nu0
149 d(1) = three*(one - two*nu)/gs/(one + nu)
150 p = two/d(1)
151 ENDIF
152C
153 uparam(1) = nordre
154 DO i=1,nordre
155 uparam(1 + i ) = mu(i)
156 uparam(1 + nordre + i) = al(i)
157 uparam(1 + 2*nordre + i) = d(i)
158 ENDDO
159 nuparam = 1 + 3*nordre
160 nuvar = 1
161 parmat(1) = p
162 parmat(2) = two*gs*(one + nu)
163 parmat(3) = nu
164 parmat(6) = p
165C
166 IF(rhor==zero)rhor=rho0
167 pm(1) =rhor
168 pm(89)=rho0
169c-----------------
170 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
171 CALL init_mat_keyword(matparam,"TOTAL")
172 CALL init_mat_keyword(matparam,"HOOK")
173 ! Properties compatibility
174 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
175 CALL init_mat_keyword(matparam,"SHELL_ISOTROPIC")
176c-----------------
177 WRITE(iout,1010) trim(titr),mat_id,ilaw
178 WRITE(iout,1000)
179 IF(is_encrypted)THEN
180 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
181 ELSE
182 WRITE(iout,1020)rho0
183 WRITE(iout,1100)nordre,nu,gs
184 IF (nordre >= 1) WRITE(iout,1201) mu(1) ,al(1) ,d(1)
185 IF (nordre >= 2) WRITE(iout,1202) mu(2) ,al(2) ,d(2)
186 IF (nordre >= 3) WRITE(iout,1203) mu(3) ,al(3) ,d(3)
187 IF (nordre >= 4) WRITE(iout,1204) mu(4) ,al(4) ,d(4)
188 IF (nordre >= 5) WRITE(iout,1205) mu(5) ,al(5) ,d(5)
189 IF (nordre >= 6) WRITE(iout,1206) mu(6) ,al(6) ,d(6)
190 IF (nordre >= 7) WRITE(iout,1207) mu(7) ,al(7) ,d(7)
191 IF (nordre >= 8) WRITE(iout,1208) mu(8) ,al(8) ,d(8)
192 IF (nordre >= 9) WRITE(iout,1209) mu(9) ,al(9) ,d(9)
193 IF (nordre ==10) WRITE(iout,1210) mu(10),al(10),d(10)
194 ENDIF
195c-----------------------------------------------------------------------
196 1000 FORMAT
197 & (5x, 'OGDEN HYPERELASIC LAW' ,/,
198 & 5x, ' ---------------',//)
199 1010 FORMAT(/
200 & 5x,a,/,
201 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . .=',i10/,
202 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . .=',i10/)
203 1020 FORMAT(
204 & 5x,'INITIAL DENSITY. . . . . . . . . . . . . .=',1pg20.13/)
205 1100 FORMAT
206 & (5x,'ORDER OF STRAIN ENERGY . . . . . . . . . .=',i10/
207 & 5x,'POISSON RATIO. . . . . . . . . . . . . . .=',1pg20.13/
208 & 5x,'INITIAL SHEAR MODULUS. . . . . . . . . . .=',e12.4/)
209 1201 FORMAT(
210 & 5x,'MATERIAL PARAMETER (MU1). . . . . . . . . .=',1pg20.13/
211 & 5x,'MATERIAL PARAMETER (ALPHA1) . . . . . . . .=',1pg20.13/
212 & 5x,'MATERIAL PARAMETER (D1) . . . . . . . . . .=',1pg20.13)
213 1202 FORMAT(
214 & 5x,'MATERIAL PARAMETER (MU2). . . . . . . . . .=',1pg20.13/
215 & 5x,'MATERIAL PARAMETER (ALPHA2) . . . . . . . .=',1pg20.13/
216 & 5x,'MATERIAL PARAMETER (D2) . . . . . . . . . .=',1pg20.13)
217 1203 FORMAT(
218 & 5x,'MATERIAL PARAMETER (MU3). . . . . . . . . .=',1pg20.13/
219 & 5x,'MATERIAL PARAMETER (ALPHA3) . . . . . . . .=',1pg20.13/
220 & 5x,'MATERIAL PARAMETER (D3) . . . . . . . . . .=',1pg20.13)
221 1204 FORMAT(
222 & 5x,'MATERIAL PARAMETER (MU4). . . . . . . . . .=',1pg20.13/
223 & 5x,'MATERIAL PARAMETER (ALPHA4) . . . . . . . .=',1pg20.13/
224 & 5x,'MATERIAL PARAMETER (D4) . . . . . . . . . .=',1pg20.13)
225 1205 FORMAT(
226 & 5x,'MATERIAL PARAMETER (MU5). . . . . . . . . .=',1pg20.13/
227 & 5x,'MATERIAL PARAMETER (ALPHA5) . . . . . . . .=',1pg20.13/
228 & 5x,'MATERIAL PARAMETER (D5) . . . . . . . . . .=',1pg20.13)
229 1206 FORMAT(
230 & 5x,'MATERIAL PARAMETER (MU6). . . . . . . . . .=',1pg20.13/
231 & 5x,'MATERIAL PARAMETER (ALPHA6) . . . . . . . .=',1pg20.13/
232 & 5x,'MATERIAL PARAMETER (D6) . . . . . . . . . .=',1pg20.13)
233 1207 FORMAT(
234 & 5x,'MATERIAL PARAMETER (MU7). . . . . . . . . .=',1pg20.13/
235 & 5x,'MATERIAL PARAMETER (ALPHA7) . . . . . . . .=',1pg20.13/
236 & 5x,'MATERIAL PARAMETER (D7) . . . . . . . . . .=',1pg20.13)
237 1208 FORMAT(
238 & 5x,'MATERIAL PARAMETER (MU8). . . . . . . . . .=',1pg20.13/
239 & 5x,'MATERIAL PARAMETER (ALPHA8) . . . . . . . .=',1pg20.13/
240 & 5x,'MATERIAL PARAMETER (D8) . . . . . . . . . .=',1pg20.13)
241 1209 FORMAT(
242 & 5x,'MATERIAL PARAMETER (MU9). . . . . . . . . .=',1pg20.13/
243 & 5x,'MATERIAL PARAMETER (ALPHA9) . . . . . . . .=',1pg20.13/
244 & 5x,'MATERIAL PARAMETER (D9) . . . . . . . . . .=',1pg20.13)
245 1210 FORMAT(
246 & 5x,'MATERIAL PARAMETER (MU10) . . . . . . . . .=',1pg20.13/
247 & 5x,'MATERIAL PARAMETER (ALPHA10). . . . . . . .=',1pg20.13/
248 & 5x,'MATERIAL PARAMETER (D10). . . . . . . . . .=',1pg20.13)
249c-----------------------------------------------------------------------
250 RETURN
251 END
252
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat82(uparam, maxuparam, nuparam, nuvar, ifunc, maxfunc, nfunc, parmat, imatvis, unitab, mat_id, titr, lsubmodel, pm, matparam)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889