OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat64.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_mat64 ../starter/source/materials/mat/mat064/hm_read_mat64.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!||====================================================================
38 SUBROUTINE hm_read_mat64(UPARAM ,MAXUPARAM,NUPARAM ,ISRATE , IMATVIS ,
39 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
40 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
41 . PM ,IPM ,MATPARAM )
42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C READ MAT LAW64 WITH HM READER
46C
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C
50C NAME DESCRIPTION
51C
52C PM MATERIAL ARRAY(REAL)
53C UNITAB UNITS ARRAY
54C ID MATERIAL ID(INTEGER)
55C TITR MATERIAL TITLE
56C LSUBMODEL SUBMODEL STRUCTURE
57C
58C-----------------------------------------------
59C M o d u l e s
60C-----------------------------------------------
61 USE unitab_mod
62 USE elbuftag_mod
63 USE message_mod
64 USE submodel_mod
65 USE matparam_def_mod
67C-----------------------------------------------
68C I m p l i c i t T y p e s
69C-----------------------------------------------
70#include "implicit_f.inc"
71C-----------------------------------------------
72C C o m m o n B l o c k s
73C-----------------------------------------------
74#include "units_c.inc"
75#include "param_c.inc"
76C-----------------------------------------------
77C D u m m y A r g u m e n t s
78C-----------------------------------------------
79 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
80 my_real, INTENT(INOUT) :: PM(NPROPM),PARMAT(100),UPARAM(MAXUPARAM)
81 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
82 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
83 INTEGER,INTENT(IN) :: MAT_ID
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(NSUBMOD)
86 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 my_real
91 . e,nu,cp,vmc,d,n,md,
92 . c1, g,temp,v0,c2,yfac(2),fac_l,fac_t,fac_m,fac_c
93 INTEGER I,J
94 my_real :: RHO0, RHOR, YFAC_UNIT
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 nuparam = 15
104 nuvar = 7
105 nfunc=2
106 mtag%G_PLA = 1
107 mtag%L_PLA = 1
108
109 CALL hm_option_is_encrypted(is_encrypted)
110 !line+1
111 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
113 !line-2
114 CALL hm_get_floatv('MAT_E' ,e ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('CP' ,cp ,is_available, lsubmodel, unitab)
117 !line-3
118 CALL hm_get_floatv('MAT_D' ,d ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv('MAT_N' ,n ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('M64_Md' ,md ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('M64_Vo' ,v0 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('M64_Vm' ,vmc ,is_available, lsubmodel, unitab)
123 !line-4
124 CALL hm_get_intv ('M64_FUNCT_ID_0' ,ifunc(1) ,is_available, lsubmodel)
125 CALL hm_get_intv ('M64_FUNCT_ID_1' ,ifunc(2) ,is_available, lsubmodel)
126 CALL hm_get_floatv('M64_SCALE_0' ,yfac(1) ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv('M64_SCALE_1' ,yfac(2) ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('M64_INI_TEMP' ,temp ,is_available, lsubmodel, unitab)
129 !CALL HM_GET_FLOATV('' ,HL ,IS_AVAILABLE, LSUBMODEL, UNITAB) no longer read
130 !units
131 CALL hm_get_floatv_dim('M64_SCALE_0' ,yfac_unit ,is_available, lsubmodel, unitab)
132
133 !---DEFAULT VALUES---!
134 IF(rhor == zero)rhor=rho0
135 pm(1) =rhor
136 pm(89)=rho0
137 IF(v0 == zero.OR.v0 >= one)v0=em20
138 IF(cp == zero)THEN
139 cp = zero
140 ELSE
141 cp = one/cp
142 ENDIF
143 IF(yfac(1) == zero) yfac(1)= one*yfac_unit
144 IF(yfac(2) == zero) yfac(2)= one*yfac_unit
145 IF(vmc == zero.OR.vmc > one) vmc = one
146
147 !---STORAGE---!
148 g = half*e/(one + nu)
149 c1=e/three/(one - two*nu)
150 uparam(1) = e
151 uparam(2) = e/(one - nu*nu)
152 uparam(3) = nu*uparam(2)
153 uparam(4) = g
154 uparam(5) = nu
155 uparam(6) = d
156 uparam(7) = n
157 uparam(8) = md
158 uparam(9) = v0
159 uparam(10) = vmc
160 uparam(11) = cp
161 uparam(12) = temp
162 uparam(13) = yfac(1)
163 uparam(14) = yfac(2)
164 uparam(15) = zero !HL
165
166 parmat(1) = c1
167 parmat(2) = e
168 parmat(3) = nu
169 !Formulation for solid elements time step computation.
170 parmat(16) = 2
171 parmat(17) = (one - two*nu)/(one - nu) ! == TWO*G/(C1+FOUR_OVER_3*G)
172
173 ! Properties compatibility
174 CALL init_mat_keyword(matparam,"SHELL_ISOTROPIC")
175
176 !---LISTING OUTPUT---!
177 WRITE(iout,1001) trim(titr),mat_id,64
178 WRITE(iout,1000)
179 IF(is_encrypted)THEN
180 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
181 ELSE
182 WRITE(iout,1002) rho0
183 WRITE(iout,1100)e,nu,cp,n,d,v0,md,vmc,temp
184 WRITE(iout,1200)(ifunc(j),yfac(j),j=1,2)
185 ENDIF
186
187 RETURN
188 1000 FORMAT(/
189 . 5x,40h trip-steels plastic law ,/,
190 & 5x,40h ------------------------ ,/)
191 1001 FORMAT(
192 & 5x,a,/,
193 & 5x,'material number . . . . . . . . . . . . =',I10/,
194 & 5X,'material law. . . . . . . . . . . . . . =',I10/)
195 1002 FORMAT(
196 & 5X,'initial density . . . . . . . . . . . . =',1PG20.13/)
197 1100 FORMAT(
198 & 5X,'young''s modulus. . . . . . . . . . . . . . . =',E12.4/
199 & 5X,'poisson''s ratio. . . . . . . . . . . . . . . =',E12.4/
200 & 5X,'heat capacitivity . . .. . . . . . . . . . . =',E12.4/
201C & 5X,'HEAT LATENT OF PHASE CHANGE . . . . . . . . . =',E12.4/
202 & 5X,'material parameter(n) . . . . . . . . .=',E12.4/
203 & 5X,'material parameter(d) . . . . .. . . . .=',E12.4/
204 & 5X,'material parameter(v0) . . . . .. . . . =',E12.4/
205 & 5X,'limit marteniste temperature(md) . . . . . . =',E12.4/
206 & 5X,'content martensite volume fraction(vmc) . . . =',E12.4/
207 & 5X,'initial temperature . . . . . . . . . . . . =',E12.4)
208 1200 FORMAT(
209 & 5X,'yield stress FUNCTION number. . . . . . . . . =',I8/
210 & 5X,'yield scale factor. . . . . . . . . . . . . . =',E12.4)
211
212
213 END SUBROUTINE
214
215
216
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_mat64(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
program starter
Definition starter.F:39