OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat109.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat109 (uparam, maxuparam, nuparam, nuvar, nvartmp, itable, maxtabl, ntabl, parmat, unitab, mat_id, titr, rho, mtag, matparam, lsubmodel)

Function/Subroutine Documentation

◆ hm_read_mat109()

subroutine hm_read_mat109 ( intent(inout) uparam,
integer, intent(in) maxuparam,
integer, intent(inout) nuparam,
integer, intent(inout) nuvar,
integer, intent(inout) nvartmp,
integer, dimension(maxtabl), intent(inout) itable,
integer, intent(in) maxtabl,
integer, intent(inout) ntabl,
intent(inout) parmat,
type (unit_type_), intent(in) unitab,
integer, intent(in) mat_id,
character(len=nchartitle), intent(in) titr,
intent(inout) rho,
type(mlaw_tag_), intent(inout) mtag,
type(matparam_struct_), intent(inout) matparam,
type(submodel_data), dimension(*), intent(in) lsubmodel )

Definition at line 38 of file hm_read_mat109.F.

42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE unitab_mod
46 USE elbuftag_mod
47 USE submodel_mod
48 USE matparam_def_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "units_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER ,INTENT(IN) :: MAT_ID,MAXTABL,MAXUPARAM
63 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
64 my_real ,INTENT(INOUT) :: rho
65 my_real ,DIMENSION(100) ,INTENT(INOUT) :: parmat
66 my_real ,DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
67 INTEGER ,DIMENSION(MAXTABL) ,INTENT(INOUT) :: ITABLE
68 INTEGER ,INTENT(INOUT) :: NTABL,NUPARAM,NUVAR,NVARTMP
69 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
70 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
71 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
72 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
73C-----------------------------------------------
74C L o c a l V a r i a b l e s
75C-----------------------------------------------
76 INTEGER :: ISMOOTH,ILAW,TAB_YLD,TAB_TEMP,TAB_ETA
77 my_real :: young,nu,g,lame,bulk,a1,a2,cp,tref,tini,eta,xrate,
78 . xscale,yscale,yscale_unit,xscale_unit,fcut
79 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
80C=======================================================================
81 is_encrypted = .false.
82 is_available = .false.
83 ilaw = 109
84C--------------------------------------------------
85 CALL hm_option_is_encrypted(is_encrypted)
86C-----------------------------------------------
87
88Card1
89 CALL hm_get_floatv('MAT_RHO' ,rho ,is_available, lsubmodel, unitab)
90Card2
91 CALL hm_get_floatv('MAT_E' ,young ,is_available, lsubmodel, unitab)
92 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
93c CALL HM_GET_INTV ('TAB_E' ,TAB_E ,IS_AVAILABLE,LSUBMODEL)
94Card3
95 CALL hm_get_floatv('MAT_SPHEAT' ,cp ,is_available, lsubmodel, unitab)
96 CALL hm_get_floatv('MAT_ETA' ,eta ,is_available, lsubmodel, unitab)
97 CALL hm_get_floatv('WPREF' ,tref ,is_available, lsubmodel, unitab)
98 CALL hm_get_floatv('T_Initial' ,tini ,is_available, lsubmodel, unitab)
99Card4
100 CALL hm_get_intv ('MAT_TAB_YLD' ,tab_yld ,is_available,lsubmodel)
101 CALL hm_get_intv ('MAT_TAB_TEMP' ,tab_temp ,is_available,lsubmodel)
102 CALL hm_get_floatv('MAT_Xscale' ,xscale ,is_available, lsubmodel, unitab)
103 CALL hm_get_floatv('MAT_Yscale' ,yscale ,is_available, lsubmodel, unitab)
104 CALL hm_get_intv ('MAT_Ismooth' ,ismooth ,is_available,lsubmodel)
105Card6
106 CALL hm_get_intv ('TAB_ETA' ,tab_eta ,is_available,lsubmodel)
107 CALL hm_get_floatv('MAT_Xrate' ,xrate ,is_available, lsubmodel, unitab)
108c------------------------
109c Elastic parameters
110c------------------------
111 g = half *young / (one + nu)
112 lame = two * g * nu /(one - two*nu)
113 bulk = third * young / (one - nu*two)
114c SOUNDSP = SQRT((BULK + FOUR_OVER_3*G)/RHO)
115c------------------------
116c Default input values
117c------------------------
118 IF (ismooth == 0) ismooth = 1
119 IF (tref == zero) tref = 293.0
120 IF (tini == zero) tini = tref
121 IF (yscale == zero) THEN
122 CALL hm_get_floatv_dim('MAT_Yscale' ,yscale_unit ,is_available, lsubmodel, unitab)
123 yscale = one * yscale_unit
124 ENDIF
125 IF (xscale == zero) THEN
126 CALL hm_get_floatv_dim('MAT_Xscale' ,xscale_unit ,is_available, lsubmodel, unitab)
127 xscale = one * xscale_unit
128 ENDIF
129 IF (xrate == zero) THEN
130 CALL hm_get_floatv_dim('MAT_XRATE' ,xscale_unit ,is_available, lsubmodel, unitab)
131 xrate = one * xscale_unit
132 ENDIF
133c-----------------------------------------------
134 a1 = young / (one - nu*nu)
135 a2 = a1 * nu
136 fcut = 10000.0d0*unitab%FAC_T_WORK
137c-----------------------------------------------
138 uparam(1) = young ! Young modulus
139 uparam(2) = nu ! Poisson ratio
140 uparam(3) = eta ! Thermal work coefficient
141 uparam(4) = tref ! Reference temperature
142 uparam(5) = tini ! Initial temperature
143 uparam(6) = ismooth ! table interpolation flag:
144 ! ISMOOTH = 1 => linear interpolation
145 ! ISMOOTH = 2 => logarythmic interpolation base 10
146 ! ISMOOTH = 3 => logarythmic interpolation base n
147 uparam(7) = one/xrate ! strain rate abscissa factor for eta function
148 uparam(8) = one/xscale ! strain rate abscissa factor for yld function
149 uparam(9) = yscale ! Yld function scale factor
150 uparam(10) = 0
151 uparam(11) = g ! Shear modulus
152 uparam(12) = g * two
153 uparam(13) = g * three
154 uparam(14) = bulk ! Bulk modulus
155 uparam(15) = lame ! Lame parameter
156 uparam(16) = a1
157 uparam(17) = a2
158 uparam(18) = nu / (one - nu) ! NNU
159 uparam(19) = (one - two*nu) / (one - nu) ! NNU1
160 uparam(20) = cp
161 uparam(21) = fcut*two*pi
162c----------------
163 parmat(1) = bulk
164 parmat(2) = young
165 parmat(3) = nu
166C Formulation for solid elements time step computation.
167 parmat(16) = 2
168 parmat(17) = two*g / (bulk + four_over_3*g)
169c----------------
170 mtag%G_EPSD = 1
171 mtag%L_EPSD = 1
172 mtag%G_PLA = 1
173 mtag%L_PLA = 1
174 mtag%G_TEMP = 1
175 mtag%L_TEMP = 1
176 mtag%G_SEQ = 1
177 mtag%L_SEQ = 1
178c----------------
179 ! activate heat source calculation in material
180 matparam%HEAT_FLAG = 1
181!
182 CALL init_mat_keyword(matparam ,"elasto_plastic")
183 CALL INIT_MAT_KEYWORD(MATPARAM ,"incremental" )
184 CALL INIT_MAT_KEYWORD(MATPARAM ,"large_strain" )
185 CALL INIT_MAT_KEYWORD(MATPARAM ,"hook")
186 ! Material compatibility with /EOS option
187 CALL INIT_MAT_KEYWORD(MATPARAM,"eos")
188 ! Properties compatibility
189 CALL INIT_MAT_KEYWORD(MATPARAM,"shell_isotropic")
190 CALL INIT_MAT_KEYWORD(MATPARAM,"solid_isotropic")
191 CALL INIT_MAT_KEYWORD(MATPARAM,"sph")
192c----------------
193 NUPARAM = 21
194 NUVAR = 0
195 NTABL = 3
196c
197 ITABLE(1) = TAB_YLD ! Yield function table = f(epsp,epsdot)
198 ITABLE(2) = TAB_TEMP ! Temperature scale factor table = f(epsp,T)
199 ITABLE(3) = TAB_ETA ! Taylor-Quinney scale factor table = f(epsp,epsdot,T)
200.or. IF (TAB_TEMP > 0 TAB_ETA > 0) THEN
201 NVARTMP = 5
202 ELSE
203 NVARTMP = 1
204 ENDIF
205c-----------------------
206 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,ILAW
207 WRITE(IOUT,1000)
208 IF (IS_ENCRYPTED)THEN
209 WRITE(IOUT,'(5X,A,//)')'CONFIDENTIAL DATA'
210 ELSE
211 WRITE(IOUT,1100) RHO
212 WRITE(IOUT,1200) YOUNG,NU
213 WRITE(IOUT,1300) TAB_YLD,ISMOOTH,XSCALE,YSCALE
214 WRITE(IOUT,1400) TAB_TEMP,TREF,TAB_ETA,CP,TINI,ETA,XRATE
215 ENDIF
216c-----------
217 RETURN
218c-----------
219 1000 FORMAT(/
220 & 5X,'-------------------------------------------------------',/
221 & 5X,' MATERIAL MODEL: TABULATED ELASTO-PLASTIC ',/,
222 & 5X,'-------------------------------------------------------',/)
223 1001 FORMAT(/
224 & 5X,A,/,
225 & 5X,'MATERIAL NUMBER. . . . . . . . . . . . . . . . . . . .=',I10/,
226 & 5X,'MATERIAL LAW . . . . . . . . . . . . . . . . . . . . .=',I10/)
227 1100 FORMAT(/
228 & 5X,'INITIAL DENSITY. . . . . . . . . . . . . . . . . . . .=',1PG20.13/)
229 1200 FORMAT(/
230 & 5X,'ELASTIC PARAMETERS: ',/,
231 & 5X,'------------------- ',/,
232 & 5X,'YOUNG MODULUS. . . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
233 & 5X,"poisson'S RATIO. . . . . . . . . . . . . . . . . . . .=",1PG20.13/)
234 1300 FORMAT(/
235 & 5X,'plastic parameters: ',/,
236 & 5X,'------------------- ',/,
237 & 5X,'yield stress vs pl. strain(vs strain rate) table id .=',I10/,
238 & 5X,'interpolation flag:. . . . . . . . . . . . . . . . . .=',I10/,
239 & 5X,' = 1: linear interpolation(default) ',/,
240 & 5X,' = 2: logarithmic interpolation base 10 ',/,
241 & 5X,' = 3: logarithmic interpolation base n ',/,
242 & 5X,'strain rate scale factor . . . . . . . . . . . . . . .=',1PG20.13/
243 & 5X,'yield stress scale factor. . . . . . . . . . . . . . .=',1PG20.13/)
244 1400 FORMAT(/
245 & 5X,'thermal parameters: ',/,
246 & 5X,'------------------- ',/,
247 & 5X,'yield stress temperature dependency table id . . . . .=',I10/
248 & 5X,'reference temperature. . . . . . . . . . . . . . . . .=',1PG20.13/
249 & 5X,'heat fraction table id . . . . . . . . . . . . . . . .=',I10/
250 & 5X,'specific heat coefficient. . . . . . . . . . . . . . .=',1PG20.13/
251 & 5X,'initial temperature. . . . . . . . . . . . . . . . . .=',1PG20.13/
252 & 5X,'taylor-quinney coefficient . . . . . . . . . . . . . .=',1PG20.13/
253 & 5X,'strain rate scale factor for heat fraction . . . . . .=',1PG20.13/)
#define my_real
Definition cppsort.cpp:32
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 init_mat_keyword(matparam, keyword)
initmumps id
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle