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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat74 (uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, itable, maxtabl, ntable, pm, ipm, matparam)

Function/Subroutine Documentation

◆ hm_read_mat74()

subroutine hm_read_mat74 ( dimension(maxuparam), intent(inout) uparam,
integer, intent(inout) maxuparam,
integer, intent(inout) nuparam,
integer, intent(inout) israte,
integer, intent(inout) imatvis,
integer, intent(inout) nuvar,
integer, dimension(maxfunc), intent(inout) ifunc,
integer, intent(inout) maxfunc,
integer, intent(inout) nfunc,
dimension(100), intent(inout) parmat,
type (unit_type_), intent(in) unitab,
integer, intent(in) mat_id,
character(len=nchartitle), intent(in) titr,
type(mlaw_tag_), intent(inout) mtag,
type(submodel_data), dimension(*), intent(in) lsubmodel,
integer, dimension(maxtabl), intent(inout) itable,
integer, intent(in) maxtabl,
integer, intent(inout) ntable,
dimension(npropm), intent(inout) pm,
integer, dimension(npropmi), intent(inout) ipm,
type(matparam_struct_), intent(inout) matparam )

Definition at line 39 of file hm_read_mat74.F.

44C-----------------------------------------------
45C D e s c r i p t i o n
46C-----------------------------------------------
47C READ MAT LAW74 WITH HM READER
48C
49C DUMMY ARGUMENTS DESCRIPTION:
50C ===================
51C
52C NAME DESCRIPTION
53C
54C PM MATERIAL ARRAY(REAL)
55C UNITAB UNITS ARRAY
56C MAT_ID MATERIAL ID(INTEGER)
57C TITR MATERIAL TITLE
58C LSUBMODEL SUBMODEL STRUCTURE
59C
60C-----------------------------------------------
61C M o d u l e s
62C-----------------------------------------------
63 USE unitab_mod
64 USE elbuftag_mod
65 USE message_mod
66 USE submodel_mod
67 USE matparam_def_mod
69C-----------------------------------------------
70C I m p l i c i t T y p e s
71C-----------------------------------------------
72#include "implicit_f.inc"
73C-----------------------------------------------
74C C o m m o n B l o c k s
75C-----------------------------------------------
76#include "units_c.inc"
77#include "param_c.inc"
78C-----------------------------------------------
79C D u m m y A r g u m e n t s
80C-----------------------------------------------
81 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
82 my_real, INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
83 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
84 . ,NTABLE,ITABLE(MAXTABL)
85 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
86 INTEGER,INTENT(IN) :: MAT_ID,MAXTABL
87 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
88
89 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
90 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER I,J,NRATE,NPS,IR0,ILAW
95 my_real
96 . e,nu,g,c1,epsmax,epsr1,epsr2,x2fac,yfac,
97 . s11y,s22y,s33y,s12y,s23y,s31y,
98 . fisokin,m,fac_l,fac_t,fac_m,fac_c,
99 . t0, rhocp, ff, gg, hh, ll, mm, nn, fcut,
100 . einf,ce,fac_pres,fac_strain_rate
101 INTEGER IFUNCE, OPTE, NUM_FUNC
102 my_real :: rho0, rhor
103 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
104C-----------------------------------------------
105C S o u r c e L i n e s
106C-----------------------------------------------
107 is_encrypted = .false.
108 is_available = .false.
109 mtag%G_EPSD = 1
110 mtag%G_PLA = 1
111 mtag%G_SEQ = 1
112 mtag%L_EPSD = 1
113 mtag%L_PLA = 1
114 mtag%L_TEMP = 1
115!
116 israte=0
117 imatvis=0
118 ilaw=74
119C
120 CALL hm_option_is_encrypted(is_encrypted)
121 !line+1
122 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
123 !line-2
124 CALL hm_get_floatv('MAT_E' ,e ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv('MAT_EPS' ,epsmax ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv('MAT_EPST1' ,epsr1 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('MAT_EPST2' ,epsr2 ,is_available, lsubmodel, unitab)
129 !line-3
130 CALL hm_get_intv ('Yr_fun' ,ifunce ,is_available, lsubmodel)
131 CALL hm_get_floatv('MAT_EFIB' ,einf ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv('MAT_C' ,ce ,is_available, lsubmodel, unitab)
133 !line-4
134 CALL hm_get_intv ('Fsmooth' ,israte ,is_available, lsubmodel)
135 CALL hm_get_floatv('MAT_HARD' ,fisokin ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv('Fcut' ,fcut ,is_available, lsubmodel, unitab)
137 !line-5
138 CALL hm_get_floatv('MAT_SIGT1' ,s11y ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv('MAT_SIGT2' ,s22y ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv('MAT_SIGT3' ,s33y ,is_available, lsubmodel, unitab)
141 !line-6
142 CALL hm_get_floatv('MAT_SIGYT1' ,s12y ,is_available, lsubmodel, unitab)
143 CALL hm_get_floatv('MAT_SIGYT2' ,s23y ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv('MAT_SIGYT3' ,s31y ,is_available, lsubmodel, unitab)
145 !line-7
146 CALL hm_get_intv ('FUN_A1' ,itable(1) ,is_available, lsubmodel)
147 CALL hm_get_floatv('MAT_FScale' ,yfac ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv('MAT_PScale' ,x2fac ,is_available, lsubmodel, unitab)
149 !line-8
150 CALL hm_get_floatv('T_Initial' ,t0 ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv('MAT_SPHEAT' ,rhocp ,is_available, lsubmodel, unitab)
152 !unit
153 CALL hm_get_floatv_dim('MAT_FScale' ,fac_pres ,is_available, lsubmodel, unitab)
154 CALL hm_get_floatv_dim('MAT_PScale' ,fac_strain_rate ,is_available, lsubmodel, unitab)
155 !========== DEFAULT VALUES=============!
156 rhor = rho0
157 pm(1) =rhor
158 pm(89)=rho0
159!!
160 IF(yfac == zero)yfac=fac_pres
161 IF(x2fac == zero)x2fac=fac_strain_rate
162C
163C tab(1st entry = plastic strain, 2nd entry = strain rate, 3rd entry = temperature)
164C
165 IF(epsmax == zero) epsmax=infinity
166 IF(epsr1 == zero) epsr1=infinity
167 IF(epsr2 == zero) epsr2=two*infinity
168 IF(t0 == zero) t0=twohundred93
169C
170 ntable=1
171 uparam(1)=fisokin
172 uparam(2)=e
173 uparam(3)=e/(one-nu*nu)
174 uparam(4)=nu*uparam(3)
175 g=half*e/(1.+nu)
176 uparam(5)=g
177 uparam(6)=nu
178
179C----------- FF...NN --------
180 IF (s11y <= zero) THEN
181 CALL ancmsg(msgid=822,
182 . msgtype=msgerror,
183 . anmode=aninfo,
184 . i1=mat_id,
185 . c1=titr,
186 . c2='S11Y')
187 ENDIF
188 IF (s22y <= zero) THEN
189 CALL ancmsg(msgid=822,
190 . msgtype=msgerror,
191 . anmode=aninfo,
192 . i1=mat_id,
193 . c1=titr,
194 . c2='S22Y')
195 ENDIF
196 IF (s33y <= zero) THEN
197 CALL ancmsg(msgid=822,
198 . msgtype=msgerror,
199 . anmode=aninfo,
200 . i1=mat_id,
201 . c1=titr,
202 . c2='S33Y')
203 ENDIF
204 IF (s12y <= zero) THEN
205 CALL ancmsg(msgid=822,
206 . msgtype=msgerror,
207 . anmode=aninfo,
208 . i1=mat_id,
209 . c1=titr,
210 . c2='S12Y')
211 ENDIF
212 IF (s23y <= zero) THEN
213 CALL ancmsg(msgid=822,
214 . msgtype=msgerror,
215 . anmode=aninfo,
216 . i1=mat_id,
217 . c1=titr,
218 . c2='S23Y')
219 ENDIF
220 IF (s31y <= zero) THEN
221 CALL ancmsg(msgid=822,
222 . msgtype=msgerror,
223 . anmode=aninfo,
224 . i1=mat_id,
225 . c1=titr,
226 . c2='S31Y')
227 ENDIF
228C
229 ff=half*(one/s22y**2+one/s33y**2-one/s11y**2)
230 gg=half*(one/s11y**2+one/s33y**2-one/s22y**2)
231 hh=half*(one/s11y**2+one/s22y**2-one/s33y**2)
232 ll=half/s23y**2
233 mm=half/s31y**2
234 nn=half/s12y**2
235 uparam(7)=ff
236 uparam(8)=gg
237 uparam(9)=hh
238 uparam(10)=ll
239 uparam(11)=mm
240 uparam(12)=nn
241 uparam(13)=one/x2fac
242 uparam(14)=yfac
243 uparam(15)=epsmax
244 uparam(16)=epsr1
245 uparam(17)=epsr2
246 uparam(18)=two*g
247 uparam(19)=three*g
248 c1=e/three/(one - two*nu)
249 uparam(20)=c1
250 uparam(21)=c1+ four_over_3*g
251 uparam(22)=t0
252 IF(rhocp==zero)THEN
253 uparam(23)=zero
254 ELSE
255 uparam(23)=one/rhocp
256 END IF
257c--------
258 opte = 0
259 IF (ifunce > 0 )opte = 1
260 nfunc = 1
261 ifunc(nfunc) = ifunce
262 uparam(24) = nfunc
263 uparam(25) = opte
264 uparam(26) = einf
265 uparam(27) = ce
266c-------
267 nuparam =27
268C
269 israte = 1
270 parmat(1)=c1
271 parmat(2)=e
272 parmat(3)=nu
273 parmat(4) = israte
274 parmat(5) = fcut
275C
276 nuvar = 10
277CC Formulation for solid elements time step computation.
278 parmat(16) = 2
279 parmat(17) = (one - two*nu)/(one - nu) ! == TWO*G/(C1+FOUR_OVER_3*G)
280C
281 ! activate heat source calculation in material
282 matparam%HEAT_FLAG = 1
283!
284 ! MATPARAM keywords
285 CALL init_mat_keyword(matparam,"ORTHOTROPIC")
286C
287 ! Properties compatibility
288 CALL init_mat_keyword(matparam,"SOLID_ORTHOTROPIC")
289C
290 WRITE(iout,1001) trim(titr),mat_id,ilaw
291 WRITE(iout,1000)
292 IF(is_encrypted)THEN
293 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
294 ELSE
295 WRITE(iout,1002)rho0
296 WRITE(iout,1100)e,nu,g,s11y,s22y,s33y,s12y,s23y,s31y,fisokin,
297 . israte,fcut
298 WRITE(iout,1300)epsmax,epsr1,epsr2
299 WRITE(iout,1200)itable(1),x2fac,yfac
300 WRITE(iout,1400)t0,rhocp,ifunce,einf,ce
301 WRITE(iout,*)' '
302 ENDIF
303C
304 RETURN
305 1000 FORMAT(
306 & 5x,50h tabulated hill orthotropic plasticity for solids,/,
307 & 5x,50h ------------------------------------------------,//)
308 1001 FORMAT(
309 & 5x,a,/,
310 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
311 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
312 1002 FORMAT(
313 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
314 1100 FORMAT(
315 & 5x,'YOUNG MODULUS . . . . . . . . . . . . .=',1pg20.13/
316 & 5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/
317 & 5x,'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13/
318 & 5x,'YIELD IN DIRECTION 1. . . . . . . . . .=',1pg20.13/
319 & 5x,'YIELD IN DIRECTION 2. . . . . . . . . .=',1pg20.13/
320 & 5x,'YIELD IN DIRECTION 3. . . . . . . . . .=',1pg20.13/
321 & 5x,'YIELD IN SHEAR DIRECTION 12 . . . . . .=',1pg20.13/
322 & 5x,'YIELD IN SHEAR DIRECTION 23 . . . . . .=',1pg20.13/
323 & 5x,'YIELD IN SHEAR DIRECTION 31 . . . . . .=',1pg20.13/
324 & 5x,'ISO-KINEMATIC HARDENNING FACTOR . . . .=',1pg20.13/
325 & 5x,'SMOOTH STRAIN RATE OPTION . . . . . . .=',i10/
326 & 5x,'STRAIN RATE CUTTING FREQUENCY . . . . .=',1pg20.13/)
327 1200 FORMAT(
328 & 5x,'YIELD STRESS TABLE NUMBER . . . . . . .=',i10/
329 & 5x,'2ND ENTRY (STRAIN RATE) SCALE FACTOR. .=',1pg20.13/
330 & 5x,'YIELD SCALE FACTOR. . . . . . . . . . .=',1pg20.13)
331 1300 FORMAT(
332 & 5x,'MAXIMUM PLASTIC STRAIN. . . . . . . . .=',1pg20.13/
333 & 5x,'TENSILE FAILURE STRAIN 1. . . . . . . .=',1pg20.13/
334 & 5x,'TENSILE FAILURE STRAIN 2. . . . . . . .=',1pg20.13)
335 1400 FORMAT(
336 & 5x,'INITIAL TEMPERATURE . . . . . . . . . .=',1pg20.13/
337 & 5x,'HEAT CAPACITY PER VOLUME UNIT . . . . .=',1pg20.13/
338 & 5x,'YOUNG MODULUS SCALE FACTOR FUNCTION . .=',i10/
339 & 5x,'YOUNG MODULUS EINF. . . . . . . . . . .=',1pg20.13/
340 & 5x,'PARAMETER CE. . . . . . . . . . . . . .=',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
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
subroutine tabulated(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, npf, tf)
Definition tabulated.F:32