OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat111.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_mat111 ../starter/source/materials/mat/mat111/hm_read_mat111.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_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
30!|| hm_get_floatv_dim ../starter/source/devtools/hm_reader/hm_get_floatv_dim.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!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.f
36!|| message_mod ../starter/share/message_module/message_mod.F
37!|| submodel_mod ../starter/share/modules1/submodel_mod.F
38!||====================================================================
39 SUBROUTINE hm_read_mat111(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE , IMATVIS ,
40 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
41 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
42 . PM ,IPM ,MATPARAM )
43C-----------------------------------------------
44C D e s c r i p t i o n
45C-----------------------------------------------
46C READ MAT LAW92 WITH HM READER ( TO BE COMPLETED )
47C
48C DUMMY ARGUMENTS DESCRIPTION:
49C ===================
50C
51C NAME DESCRIPTION
52C
53C PM MATERIAL ARRAY(REAL)
54C UNITAB UNITS ARRAY
55C ID MATERIAL ID(INTEGER)
56C TITR MATERIAL TITLE
57C LSUBMODEL SUBMODEL STRUCTURE
58C
59C-----------------------------------------------
60C M o d u l e s
61C-----------------------------------------------
62 USE unitab_mod
63 USE elbuftag_mod
64 USE message_mod
65 USE submodel_mod
66 USE matparam_def_mod
68C-----------------------------------------------
69C I m p l i c i t T y p e s
70C-----------------------------------------------
71#include "implicit_f.inc"
72C-----------------------------------------------
73C C o m m o n B l o c k s
74C-----------------------------------------------
75#include "units_c.inc"
76#include "param_c.inc"
77C-----------------------------------------------
78C D u m m y A r g u m e n t s
79C-----------------------------------------------
80 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
81 my_real, INTENT(INOUT) :: PM(NPROPM),PARMAT(100),UPARAM(MAXUPARAM)
82 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
83 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
84 INTEGER,INTENT(IN) :: MAT_ID
85 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
86 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(*)
87 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
88C-----------------------------------------------
89C L o c a l V a r i a b l e s
90C-----------------------------------------------
91 INTEGER :: ID,ITEST,ILAW
92 my_real :: E,NU,G,RBULK,SCALEFAC,FAC_UNIT
93 CHARACTER(LEN=NCHARFIELD) :: STRING
94 my_real :: rho0, rhor
95 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
96C-----------------------------------------------
97C S o u r c e L i n e s
98C-----------------------------------------------
99 is_encrypted = .false.
100 is_available = .false.
101 israte = 0
102 imatvis = 0
103 ilaw = 111
104!
105 CALL hm_option_is_encrypted(is_encrypted)
106 !line+1
107 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
108 !line-1
109 CALL hm_get_intv ('Itype' ,itest ,is_available, lsubmodel)
110 CALL hm_get_intv ('MAT_FCT_ID ' ,ifunc(1) ,is_available, lsubmodel)
111 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('MAT_FScale' ,scalefac ,is_available, lsubmodel, unitab)
113 IF(scalefac == zero)THEN
114 CALL hm_get_floatv_dim('MAT_FScale' ,fac_unit ,is_available, lsubmodel, unitab)
115 scalefac = one * fac_unit
116 ENDIF
117
118 !========== DEFAULT VALUES=============!
119 rhor=zero
120 !IF(RHOR==ZERO)RHOR=RHO0
121 pm(1) =rhor
122 pm(89)=rho0
123
124 !C By default we consider the uniaxial test
125 IF(itest == 0) itest = 1
126 !C Uniaxial - itest = 1
127 !C equibiaxial - Itest = 2
128 !c Planar - Itest = 3
129C
130 IF(ifunc(1) /= 0) THEN
131 nfunc = 1
132!! IF (NU == ZERO) NU= ZEP495
133 IF(nu == zero) nu=0.495
134 ELSE
135 CALL ancmsg(msgid=1806,
136 . msgtype=msgerror,
137 . anmode=aninfo_blind,
138 . i1=mat_id,
139 . c1=titr)
140 ENDIF
141 uparam(1) = nu
142 uparam(2) = itest
143 uparam(3) = scalefac
144
145 nuparam = 7
146 nuvar = 2
147
148 IF(nuparam > maxuparam)THEN
149 WRITE(iout,*)' ** ERROR : NUPARAM GT MAXUPARAM'
150 WRITE(iout,*)' NUPARAM =',nuparam,
151 . ' MAXUPARAM =',maxuparam
152 ENDIF
153C
154 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
155 CALL init_mat_keyword(matparam,"TOTAL")
156 CALL init_mat_keyword(matparam,"HOOK")
157c
158 ! Properties compatibility
159 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
160
161 parmat(1) = zero ! updated in updmat111
162 parmat(2) = zero ! updated in updmat111
163 parmat(3) = nu
164
165 mtag%L_EPSA = 1 ! hyperelastic energy needed for mullins
166!! PM(100) = RBULK
167
168 !========== OUTPUT =============!
169 WRITE(iout,1001) trim(titr),mat_id,ilaw
170 WRITE(iout,1000)
171 IF(is_encrypted)THEN
172 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
173 ELSE
174 WRITE(iout,1002) rho0
175 IF(ifunc(1) > 0) THEN
176 IF(itest == 1) THEN
177 WRITE(iout,1200)ifunc(1),scalefac, nu
178 ELSEIF(itest == 2) THEN
179 WRITE(iout,1300)ifunc(1),scalefac, nu
180 ELSEIF(itest == 3) THEN
181 WRITE(iout,1400)ifunc(1),scalefac, nu
182 ENDIF
183 ENDIF
184 ENDIF
185
186C-----------------------------------------------
187 1000 FORMAT(
188 & 5x,' MARLOW LAW ',/,
189 & 5x,' ---------------- ',/)
190 1001 FORMAT(
191 & 5x,a,/,
192 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . =',i10/,
193 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . =',i10/)
194 1002 FORMAT(
195 & 5x,'INITIAL DENSITY . . . . . . . . . . . . =',1pg20.13/)
196 1200 FORMAT(
197 & 5x,'UNIAXIAL DATA TEST CURVE . . . . . . .=',i10/
198 & 5x,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1pg20.13/
199 & 5x,'POISSON RATIO. . . . . . . . . . . . . .=',e12.4///)
200 1300 FORMAT(
201 & 5x,'EQUIBIAXIAL DATA TEST CURVE. . . . . . .=',i10/
202 & 5x,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1pg20.13/
203 & 5x,'POISSON RATIO. . . . . . . . . . . . . .=',e12.4///)
204 1400 FORMAT(
205 & 5x,'PLANAR DATA TEST CURVE . . . . . . . .=',i10/
206 & 5x,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1pg20.13/
207 & 5x,'POISSON RATIO. . . . . . . . . . . . . .=',e12.4///)
208C-----------------------------------------------
209
210
211 RETURN
212 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_mat111(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
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
program starter
Definition starter.F:39