OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat106.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_mat106 (uparam, maxuparam, nuparam, fsmooth, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, ipm, matparam)

Function/Subroutine Documentation

◆ hm_read_mat106()

subroutine hm_read_mat106 ( intent(inout) uparam,
integer, intent(inout) maxuparam,
integer, intent(inout) nuparam,
integer, intent(inout) fsmooth,
integer, intent(inout) imatvis,
integer, intent(inout) nuvar,
integer, dimension(maxfunc), intent(inout) ifunc,
integer, intent(inout) maxfunc,
integer, intent(inout) nfunc,
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,
intent(inout) pm,
integer, dimension(npropmi), intent(inout) ipm,
type(matparam_struct_), intent(inout) matparam )

Definition at line 38 of file hm_read_mat106.F.

42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C READ MAT LAW106 WITH HM READER ( TO BE COMPLETED )
46C
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C
50C NAME DESCRIPTION
51C
52C IPM MATERIAL ARRAY(INTEGER)
53C PM MATERIAL ARRAY(REAL)
54C UNITAB UNITS ARRAY
55C MAT_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, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
82 my_real, DIMENSION(100) ,INTENT(INOUT) :: parmat
83 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
84 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
85 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),FSMOOTH,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
86 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
87 INTEGER,INTENT(IN) :: MAT_ID
88 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
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 my_real e, nu, ca, cb, cm, cn, epsm,
95 . sigm, tref, tmelt, tmax, tol, fcut,rho0,rhor,cm_unit
96 my_real
97 . pmin, cs, stifint, dummy
98 INTEGER NMAX,ILAW
99 LOGICAL IS_AVAILABLE,IS_ENCRYPTED
100C-----------------------------------------------
101C S o u r c e L i n e s
102C-----------------------------------------------
103 is_encrypted = .false.
104 is_available = .false.
105 ilaw= 106
106
107 CALL hm_option_is_encrypted(is_encrypted)
108 !line-1
109 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
111 !line-2
112 CALL hm_get_floatv('MAT_E' , e ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv('MAT_NU' , nu ,is_available, lsubmodel, unitab)
114 CALL hm_get_intv('MLAW106_FCT_ID1' , ifunc(1) ,is_available, lsubmodel)
115 CALL hm_get_intv('MLAW106_FCT_ID2' , ifunc(2) ,is_available, lsubmodel)
116 CALL hm_get_intv('MLAW106_FCT_ID3' , ifunc(3) ,is_available, lsubmodel)
117
118 !line-3
119 CALL hm_get_floatv('MAT_SIGY' , ca ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_BETA' , cb ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('MAT_HARD' , cn ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('MLAW106_EP_MAX ' , epsm ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MLAW106_SIGMA_MAX' , sigm ,is_available, lsubmodel, unitab)
124 !line-4
125 CALL hm_get_floatv('MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
126 CALL hm_get_intv('MLAW106_NMAX' ,nmax ,is_available, lsubmodel)
127 CALL hm_get_floatv('MLAW106_TOL' ,tol ,is_available, lsubmodel, unitab)
128 !line-5
129 CALL hm_get_floatv('MAT_M' , cm ,is_available, lsubmodel,unitab)
130 CALL hm_get_floatv('MAT_TMELT' , tmelt ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv('MAT_TMAX' , tmax ,is_available, lsubmodel, unitab)
132 !line-6
133 CALL hm_get_floatv('MAT_SPHEAT' , cs ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv('MLAW106_TR' , tref ,is_available, lsubmodel, unitab)
135C-----------------------------------------------
136C DEFAULTS
137C-----------------------------------------------
138 IF(cs == zero.AND.tmelt == zero)THEN
139 CALL ancmsg(msgid=593,
140 . msgtype=msgwarning,
141 . anmode=aninfo_blind_1,
142 . i1=mat_id,c1=titr)
143 cs=infinity
144 ELSEIF(cs == zero)THEN
145 CALL ancmsg(msgid=594,
146 . msgtype=msgerror,
147 . anmode=aninfo_blind_1,
148 . i1=mat_id,c1=titr)
149 END IF
150 IF(pmin == zero) pmin =-infinity
151C IF(CN == ZERO.OR.CN == ONE) CN = ONEP0001
152 IF(epsm == zero) epsm = infinity
153 IF(sigm == zero) sigm = infinity
154!! IF(CC == ZERO) EPS0 = ONE
155 IF(cm == zero) cm = one
156 IF(tmelt <= zero)tmelt = infinity
157 IF(tmax <= zero) tmax = infinity
158 IF(tref <= zero) tref = three100
159 IF(nmax == 0) nmax = 1
160 IF(tol <= zero) tol = em7
161 IF(rhor == zero)rhor=rho0
162 pm(1) =rhor
163 pm(89)=rho0
164C-----------------------------------------------
165C CHECKS
166C-----------------------------------------------
167 IF(e <= zero)THEN
168 CALL ancmsg(msgid=276,msgtype=msgerror,anmode=aninfo,i1=106,i2=mat_id,c1=titr)
169 ENDIF
170 IF(nu <= -one) THEN
171 CALL ancmsg(msgid=300,msgtype=msgerror,anmode=aninfo,i1=106,i2=mat_id,c1=titr)
172 ENDIF
173
174C-----------------------------------------------
175C USER MATERIAL PARAMETERS DEFINITION
176C-----------------------------------------------
177 nuparam = 15
178 uparam(1) = e
179 uparam(2) = nu
180 uparam(3) = ca
181 uparam(4) = cb
182 uparam(5) = cm
183 uparam(6) = cn
184 uparam(7) = tmelt
185 uparam(8) = tref
186 uparam(9) = zero
187 uparam(10) = zero
188 uparam(11) = epsm
189 uparam(12) = sigm
190 uparam(13) = nmax
191 uparam(14) = tol
192 uparam(15) = cs
193
194 nuvar = 14
195 nfunc = 3
196C STIFINT = E/THREE/(ONE-TWO*NU)
197 stifint = e*(one-nu)/(one+nu)/(one-two*nu)
198 parmat(1) = stifint
199 parmat(2) = e
200 parmat(3) = nu
201 parmat(4) = 0
202!! PARMAT(5) = FCUT
203C ----
204 mtag%G_TEMP = 1
205 mtag%L_TEMP = 1
206 mtag%G_EPSD = 1
207 mtag%L_EPSD = 1
208 mtag%G_PLA = 1
209 mtag%L_PLA = 1
210 pm(100) = parmat(1)
211C ----
212C------------------------------
213 ! activate heat source calculation in material
214 matparam%HEAT_FLAG = 1
215!
216 ! MATPARAM keywords
217 CALL init_mat_keyword(matparam,"HOOK")
218 ! Properties compatibility
219 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
220C-------------------------------------------------
221C LISTING OUTPUT
222C-------------------------------------------------
223 WRITE(iout,1010) trim(titr),mat_id,106
224 WRITE(iout,1000)
225 IF(is_encrypted)THEN
226 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
227 ELSE
228 WRITE(iout,1020)rho0
229 WRITE(iout,1100) e,nu,ifunc(1),ifunc(2),ifunc(3),ca,cb,cm,cn,epsm,sigm,tmelt,tref, cs
230 WRITE(iout,1300) nmax,tol
231 ENDIF
232C
233 1000 FORMAT(
234 & 5x,' JOHNSON COOK LAW - TEMPERATURE DEPENDENT YOUNG MODULUS ',/,
235 & 5x,' ------------------------------------------------------ '//)
236 1010 FORMAT(/
237 & 5x,a,/,
238 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
239 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
240 1020 FORMAT(
241 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . . =',1pg20.13/)
242 1100 FORMAT(
243 & 5x,'YOUNG MODULUS E. . . . . . . . . . . . . . .=',1pg20.13/
244 & 5x,'POISSON RATIO NU . . . . . . . . . . . . . .=',1pg20.13/
245 & 5x,'FUNCTION E(T) (HEATING). . . . . . . . . . .=',i10/
246 & 5x,'FUNCTION E(T) (COOLING). . . . . . . . . . .=',i10/
247 & 5x,'FUNCTION NU(T) . . . . . . . . . . . . . . .=',i10/
248 & 5x,'YIELD COEFFICIENT A. . . . . . . . . . . . .=',1pg20.13/
249 & 5x,'YIELD COEFFICIENT B. . . . . . . . . . . . .=',1pg20.13/
250 & 5x,'YIELD COEFFICIENT M (TEMPERATURE). . . . . .=',1pg20.13/
251 & 5x,'YIELD COEFFICIENT N (HARDENING). . . . . . .=',1pg20.13/
252 & 5x,'EPS-MAX. . . . . . . . . . . . . . . . . . .=',1pg20.13/
253 & 5x,'SIG-MAX. . . . . . . . . . . . . . . . . . .=',1pg20.13/
254 & 5x,'MELTING TEMPERATURE. . . . . . . . . . . . .=',1pg20.13/
255 & 5x,'REFERENCE TEMPERATURE. . . . . . . . . . . .=',1pg20.13/
256 & 5x,'SPECIFIC HEAT RHO*CP . . . . . . . . . . . .=',1pg20.13/)
257 1300 FORMAT(
258 & 5x,'MAXIMUM NUMBER OF ITERATIONS . . . . . . . .=',i10/
259 & 5x,'PLASTICITY TOLERANCE . . . . . . . . . . . .=',1pg20.13/)
260 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, 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)
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