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 = 1
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 IF (tab_temp > 0 .or. 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)
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle