41 . UPARAM ,MAXUPARAM ,NUPARAM ,NUVAR ,
43 . UNITAB ,ID ,TITR ,LSUBMODEL,MTAG ,
44 . PM ,IPM ,ISRATE ,MAT_PARAM)
73#include "implicit_f.inc"
82 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
83 INTEGER,
INTENT(IN) :: ID,MAXUPARAM,IFORM
84 INTEGER,
INTENT(INOUT) :: ISRATE
85 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR
86 INTEGER,
INTENT(INOUT) :: IPM(NPROPMI)
87 my_real,
INTENT(INOUT) :: pm(npropm)
88 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
90 my_real,
DIMENSION(MAXUPARAM),
INTENT(INOUT) :: uparam
91 my_real,
INTENT(INOUT) :: parmat(100)
93 TYPE(matparam_struct_),
INTENT(INOUT) :: MAT_PARAM
97 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
100 INTEGER ICC,ISRAT1,IFLAG,MFLAG
101 my_real :: young,anu,ca,cb,cn,epsm,sigm,cc,eps0,g,e0,c0,c1
102 my_real :: e1mn2, en1n2, sdsp,c3,c4
103 my_real :: fcut,fisokin,cb0,rm,ag,cn0
104 my_real :: rhocp,tref,tmelt,tmax,pmin,m_exp
105 my_real :: fac_dens,fac_pres,eps0_unit,fac_m,fac_l,fac_t,asrate
110 is_encrypted = .false.
111 is_available = .false.
146 CALL hm_get_string(
'Material_Name_Str' ,predef ,16, is_available)
147 IF (predef(1:5) ==
'STEEL')
THEN
149 ELSEIF (predef(1:3) ==
'HSS')
THEN
151 ELSEIF (predef(1:4) ==
'UHSS')
THEN
153 ELSEIF (predef(1:6) ==
'AA5182')
THEN
155 ELSEIF (predef(1:9) ==
'AA6082-T6')
THEN
157 ELSEIF (predef(1:7) ==
'PA6GF30')
THEN
159 ELSEIF (predef(1:5) ==
'PPT40')
THEN
171 ELSE IF (iform==1)
THEN
173 CALL hm_get_floatv(
'RHO_I' ,rho0 ,is_available, lsubmodel, unitab)
174 CALL hm_get_floatv(
'RHO_O' ,rhor ,is_available, lsubmodel, unitab)
176 CALL hm_get_floatv(
'E' ,young ,is_available, lsubmodel, unitab)
177 CALL hm_get_floatv(
'Nu' ,anu ,is_available, lsubmodel, unitab)
178 CALL hm_get_intv (
'MAT_VP' ,vp ,is_available, lsubmodel)
180 CALL hm_get_floatv(
'C0' ,ca ,is_available, lsubmodel, unitab)
181 CALL hm_get_floatv(
'C5' ,cb ,is_available, lsubmodel, unitab)
183 CALL hm_get_floatv(
'EPS_max' ,epsm ,is_available, lsubmodel, unitab)
184 CALL hm_get_floatv(
'sig_max' ,sigm ,is_available, lsubmodel, unitab)
186 CALL hm_get_floatv(
'C1' ,cc ,is_available, lsubmodel, unitab)
187 CALL hm_get_floatv(
'EPS_0' ,eps0 ,is_available, lsubmodel, unitab)
189 CALL hm_get_intv (
'Fsmooth' ,israte ,is_available, lsubmodel)
190 CALL hm_get_floatv(
'Fcut' ,asrate ,is_available, lsubmodel, unitab)
192 CALL hm_get_floatv(
'C3' ,c3 ,is_available, lsubmodel, unitab)
193 CALL hm_get_floatv(
'C4' ,c4 ,is_available, lsubmodel, unitab)
194 CALL hm_get_floatv(
'rhoC_p' ,rhocp ,is_available, lsubmodel, unitab)
195 CALL hm_get_floatv(
'T_r' ,tref ,is_available, lsubmodel, unitab)
200 ELSE IF (iform==0)
THEN
202 CALL hm_get_floatv(
'RHO_I' ,rho0 ,is_available, lsubmodel, unitab)
203 CALL hm_get_floatv(
'RHO_O' ,rhor ,is_available, lsubmodel, unitab)
205 CALL hm_get_floatv(
'E' ,young ,is_available, lsubmodel, unitab)
206 CALL hm_get_floatv(
'Nu' ,anu ,is_available, lsubmodel, unitab)
208 CALL hm_get_intv (
'Iflag' ,iflag ,is_available, lsubmodel)
209 CALL hm_get_floatv(
'Pmin' ,pmin ,is_available, lsubmodel, unitab)
212 CALL hm_get_floatv(
'SIG_Y' ,ca ,is_available, lsubmodel, unitab)
213 CALL hm_get_floatv(
'UTS' ,cb ,is_available, lsubmodel, unitab)
214 CALL hm_get_floatv(
'EUTS' ,cn ,is_available, lsubmodel, unitab)
215 CALL hm_get_floatv(
'EPS_p_max' ,epsm ,is_available, lsubmodel, unitab)
216 CALL hm_get_floatv(
'SIG_max0' ,sigm ,is_available, lsubmodel, unitab)
221 CALL hm_get_floatv(
'EPS_p_max' ,epsm ,is_available, lsubmodel, unitab)
222 CALL hm_get_floatv(
'SIG_max0' ,sigm ,is_available, lsubmodel, unitab)
226 CALL hm_get_floatv(
'EPS_DOT_0' ,eps0 ,is_available, lsubmodel, unitab)
227 CALL hm_get_intv (
'ICC' ,icc ,is_available, lsubmodel)
228 CALL hm_get_intv (
'Fsmooth' ,israte ,is_available, lsubmodel)
229 CALL hm_get_floatv(
'F_cut' ,asrate ,is_available, lsubmodel, unitab)
230 CALL hm_get_floatv(
'Chard' ,fisokin ,is_available, lsubmodel, unitab)
232 CALL hm_get_floatv(
'm' ,m_exp ,is_available, lsubmodel, unitab)
233 CALL hm_get_floatv(
'T_melt' ,tmelt ,is_available, lsubmodel, unitab)
234 CALL hm_get_floatv(
'rhoC_p' ,rhocp ,is_available, lsubmodel, unitab)
235 CALL hm_get_floatv(
'T_r' ,tref ,is_available, lsubmodel, unitab)
236 CALL hm_get_floatv(
'T_max' ,tmax ,is_available, lsubmodel, unitab)
247 IF (cn == zero) cn = one
255 cb = rm/(cn*ag**(cn-one))
258 cb = (cb0*(one+cn0)-ca)/(log(1+cn0)-cb0*(1+cn0)/young-ca/young)
260 . msgtype=msgwarning,
261 . anmode=aninfo_blind_1,
265 IF (cn < zero .AND. cb < zero)
THEN
269 . msgtype=msgwarning,
270 . anmode=aninfo_blind_1,
277 fac_m = unitab%FAC_M_WORK
278 fac_l = unitab%FAC_L_WORK
279 fac_t = unitab%FAC_T_WORK
280 fac_pres = fac_m/ (fac_l*fac_t*fac_t)
281 fac_dens = fac_m/ (fac_l*fac_l*fac_l)
285 rho0 = 7850d0 / fac_dens
289 young = 210000000000.0d0 / fac_pres
291 ca = 160000000.0d0 / fac_pres
292 cb = 513330169.33870d0/ fac_pres
293 cn = 0.3257084899598d0
295 rho0 = 7850d0 / fac_dens
298 young = 210000000000.0d0 / fac_pres
300 ca = 300000000.0d0 / fac_pres
301 cb = 611407465.14830d0/ fac_pres
302 cn = 0.3967613457219d0
304 rho0 = 7850d0 / fac_dens
307 young = 210000000000.0d0 / fac_pres
309 ca = 500000000.0d0 / fac_pres
310 cb = 1306278496.3090d0/ fac_pres
311 cn = 6.4633693574514d-02
313 rho0 = 2700d0 / fac_dens
316 young = 70000000000.0d0 / fac_pres
318 ca = 150000000.0d0 / fac_pres
319 cb = 393050051.47810d0/ fac_pres
320 cn = 0.3719059188570d0
322 rho0 = 2700d0 / fac_dens
325 young = 70000000000.0d0 / fac_pres
328 cb = 210717297.9723d0
329 cn = 0.3369645584879d0
331 rho0 = 1300d0 / fac_dens
334 young = 7000000000.0d0 / fac_pres
336 ca = 50000000.0d0 / fac_pres
337 cb = 60557060.655832d0/ fac_pres
338 cn = 3.8843615080968d-02
340 rho0 = 1200d0 / fac_dens
343 young = 4000000000d0 / fac_pres
345 ca = 20000000.0d0 / fac_pres
346 cb = 18439331.380790d0/ fac_pres
347 cn = 0.1570297693511d0
349 rho0 = 7850d0 / fac_dens
352 young = 210000000000d0 / fac_pres
354 ca = 160000000.0d0 / fac_pres
355 cb = 513330169.33870d0/ fac_pres
356 cn = 0.3257084899598d0
361 IF(cc > zero .AND. eps0 > zero .AND. asrate == zero .AND.vp
THEN
364 . anmode=aninfo_blind_1,
369 IF (rhor==zero) rhor=rho0
371 IF (anu == half) anu=zep499
374 IF (pmin == zero) pmin =-ep20
376 IF (epsm == zero) epsm = ep20
377 IF (sigm == zero) sigm = ep20
385 CALL ancmsg(msgid=300,msgtype=msgerror,anmode=aninfo,i1=2,i2=id,c1=titr)
388 g=young/(two*(one + anu))
391 c1=young/(three*(one - two*anu))
392 e1mn2=young/(one - anu**2)
394 sdsp =sqrt(young/
max(rhor,em20))
396 IF (young<=zero)
THEN
397 CALL ancmsg(msgid=276,msgtype=msgerror,anmode=aninfo,i1=2,i2=id,c1=titr)
404 asrate = 10000.0d0*unitab%FAC_T_WORK
413 IF (asrate /= zero )
THEN
417 asrate = asrate*two*pi
436 pm(26)=five*one_over_6
458 IF (tref <= zero) tref = three100
463 WRITE(iout,1010) trim(titr),id
465 WRITE(iout,1011) trim(titr),id
466 ELSEIF(iform == 2)
THEN
467 WRITE(iout,1012)trim(titr),id
470 IF(.NOT.is_encrypted)
WRITE(iout,1100)rho0
471 IF(mflag /= 0 .AND. .NOT.is_encrypted)
THEN
473 WRITE (iout,1407)
'GENERIC MILD STEEL',rho0,young,anu,g,
474 . 160000000.0d0/fac_pres,380000000.0d0/fac_pres,0.24d0
477 WRITE (iout,1407)
'GENERIC HSS STEEL',rho0,young,anu,g,
478 . 300000000.0d0/fac_pres,510000000.0d0/fac_pres,0.23d0
481 WRITE (iout,1407)
'GENERIC UHSS STEEL',rho0,young,anu,g,
482 . 500000000.0d0/fac_pres,1500000000.0d0/fac_pres,0.045d0
485 WRITE (iout,1407)
'GENERIC ALUMINIUM: AA5182',rho0,young,anu,g,
486 . 150000000.0d0/fac_pres,300000000.0d0/fac_pres,0.25d0
489 WRITE (iout,1407)
'GENERIC ALUMINIUM: AA6082-T6',rho0,young,anu,g,
490 . 300000000.0d0/fac_pres,360000000.0d0/fac_pres,0.08d0
493 WRITE (iout,1407)
'GENERIC PA6GF30',rho0,young,anu,g,
494 . 50000000.0d0/fac_pres,100000000.0d0/fac_pres,0.02d0
497 WRITE (iout,1407)
'GENERIC PP T40'
498 . 20000000.0d0/fac_pres,30000000.0d0/fac_pres,0.06d0
501 WRITE (iout,1407)
'GENERIC MILD STEEL',rho0,young,anu,g,
507 IF(.NOT.is_encrypted)
THEN
508 WRITE(iout,1300)young,anu
514 IF (iform == 0 .OR. iform == 2)
THEN
515 IF(iflag == 0 .AND. iform /= 2)
THEN
516 IF(.NOT.is_encrypted)
WRITE(iout,1400)ca,cb,cn,epsm,sigm,fisokin
518 IF(.NOT.is_encrypted .AND. mflag == 0 .AND. iform /= 2)
THEN
519 WRITE(iout,1405)ca,cb0,cn0,ca,cb,cn,epsm,sigm,fisokin
521 IF(.NOT.is_encrypted .AND.
THEN
522 WRITE(iout,1400)ca,cb,cn,epsm,sigm,fisokin
527 IF (m_exp == zero) m_exp=one
528 IF (tmelt == zero) tmelt=ep20
529 IF (tmax == zero) tmax =ep20
530 IF(.NOT.is_encrypted .AND. iform /= 2)
THEN
532 WRITE(iout,1600)vp,cc,eps0,icc,israt1,fcut,m_exp,tmelt,rhocp,tref,tmax,pmin
538 IF(.NOT.is_encrypted .AND. iform /= 2)
THEN
539 WRITE(iout,1410)ca,cb,cn,epsm,sigm,fisokin
541 WRITE(iout,1610)vp,icc,israt1,fcut,eps0,cc,c3,c4,rhocp,tref
548 IF (rhocp <= zero)
THEN
562 IF (fisokin>one.OR.fisokin<zero)
THEN
565 . anmode=aninfo_blind_1,
586 IF(eps0 == zero)
THEN
597 pm(105) = two*g/(c1+four_over_3*g)
614 mat_param%HEAT_FLAG = 1
636 & 5x,40hmaterial number . . . . . . . . . . . .=,i10/,
637 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . .= PLAS_JOHNS',/)
640 & 5x,40hmaterial number . . . . . . . . . . . .=,i10/,
641 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . .= PLAS_ZERIL',/)
644 & 5x,40hmaterial number . . . . . . . . . . . .=,i10/,
645 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . .= PLAS_PREDEF',/)
647 & 5x,
' ELASTIC PLASTIC LAW ',/,
648 & 5x,
' ------------------- ',//)
650 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
652 & 5x,
'YOUNG''S MODULUS . . . . . . . . . . . .=',1pg20.13/,
653 & 5x,
'POISSON''S RATIO . . . . . . . . . . . .=',1pg20.13/,
654 & 5x,
'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13//)
656 & 5x,
'JOHNSON COOK MODEL :',/,
657 & 5x,
'YIELD COEFFICIENT A . . . . . . . . . .=',1pg20.13/,
658 & 5x,
'YIELD COEFFICIENT B . . . . . . . . . .=',1pg20.13/,
659 & 5x,
'YIELD COEFFICIENT N . . . . . . . . . .=',1pg20.13/,
660 & 5x,
'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
661 & 5x,
'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
662 & 5x,
'ISO-KINEMATIC HARDENING FACTOR. . . . .=',1pg20.13//)
664 & 5x,
'JOHNSON COOK MODEL :',/,
665 & 5x,'yield stress . . . . . . . . . . . . .=
',1PG20.13/,
666 & 5X,'ultimate stress(uts) . . . . . . . . .=
',1PG20.13/,
667 & 5X,'strain at uts(ag). . . . . . . . . . .=',1pg20.13/,
668 & 5x,
'YIELD COEFFICIENT A . . . . . . . . . .=',1pg20.13/,
669 & 5x,
'YIELD COEFFICIENT B . . . . . . . . . .=',1pg20.13/,
670 & 5x,
'YIELD COEFFICIENT N . . . . . . . . . .=',1pg20.13/,
671 & 5x,
'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
672 & 5x,
'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
673 & 5x,
'ISO-KINEMATIC HARDENING FACTOR. . . . .=',1pg20.
675 & 5x,
'PREDEFINED VALUES USED FOR. . . . . . .: ',a/,
676 & 5x,
'DENSITY . . . . . . . . . . . . . . . .=',1pg20.13/,
677 & 5x,
'YOUNG''S MODULUS . . . . . . . . . . . .=',1pg20.13/,
678 & 5x,
'POISSON''S RATIO . . . . . . . . . . . .=',1pg20.13/,
679 & 5x,
'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13/,
680 & 5x,
'YIELD STRESS. . . . . . . . . . . . . .=',1pg20.13/,
681 & 5x,
'ULTIMATE STRESS (UTS) . . . . . . . . .=',1pg20.13/,
682 & 5x,
'STRAIN AT UTS (Ag). . . . . . . . . . .=',1pg20.13//)
684 & 5x,
'ZERILLI ARMSTRONG MODEL :',/,
685 & 5x,
'YIELD COEFFICIENT C0. . . . . . . . . .=',1pg20.13/,
686 & 5x,
'YIELD COEFFICIENT C5. . . . . . . . . .=',1pg20.13/,
687 & 5x,
'YIELD COEFFICIENT N . . . . . . . . . .=',1pg20.13/,
688 & 5x,
'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
689 & 5x,
'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
690 & 5x,
'ISO-KINEMATIC HARDENING FACTOR. . . . .=',1pg20.13//)
692 & 5x,
'FLAG FOR STRAIN RATE DEPENDENCY TYPE. .=',i10/,
693 & 5x,
' VP=1 EQUIVALENT PLASTIC STRAIN RATE'/
694 & 5x,
' VP=2 TOTAL STRAIN RATE (DEFAULT)'/
695 & 5x,
' VP=3 DEVIATORIC STRAIN RATE'/
696 & 5x,
'STRAIN RATE COEFFICIENT CC. . . . . . .=',1pg20.13/,
697 & 5x,
'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
698 & 5x,
'FLAG FOR STRAIN RATE ON SIG-MAX . . . .=',i10/,
699 & 5x,
'SMOOTH STRAIN RATE OPTION . . . . . . .=',i10/,
700 & 5x,
'STRAIN RATE CUTTING FREQUENCY . . . . .=',1pg20.13/,
701 & 5x,
'TEMPERATURE EXPONENT. . . . . . . . . .=',1pg20.13/,
702 & 5x,
'MELTING TEMPERATURE K . . . . . . . . .=',1pg20.13/,
703 & 5x,
'SPECIFIC HEAT Rho*Cp. . . . . . . . . .=',1pg20.13/,
704 & 5x,
'INITIAL TEMPERATURE K . . . . . . . . .=',1pg20.13/,
705 & 5x,
'MAXIMAL TEMPERATURE K . . . . . . . . .=',1pg20.13/,
706 & 5x,
'PRESSURE CUTOFF IN TENSION. . . . . . .=',1pg20.13//)
708 & 5x,
'FLAG FOR STRAIN RATE DEPENDENCY TYPE. .=',i10/,
709 & 5x,
' VP=1 EQUIVALENT PLASTIC STRAIN RATE'/
710 & 5x,
' VP=2 TOTAL STRAIN RATE (DEFAULT)'/
711 & 5x,
' VP=3 DEVIATORIC STRAIN RATE'/
712 & 5x,
'FLAG FOR STRAIN RATE ON SIG-MAX . . . .=',i10/,
713 & 5x,
'SMOOTH STRAIN RATE OPTION . . . . . . .=',i10/,
714 & 5x,
'STRAIN RATE CUTTING FREQUENCY . . . . .=',1pg20.13/,
715 & 5x,
'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
716 & 5x,
'STRAIN RATE COEFFICIENT C1. . . . . . .=',
717 & 5x,
'STRAIN RATE COEFFICIENT C3. . . . . . .=',1pg20
718 & 5x,
'STRAIN RATE COEFFICIENT C4. . . . . . .=',1pg20.13/,
719 & 5x,
'SPECIFIC HEAT Rho*Cp. . . . . . . . . .=',1pg20.13/,
720 & 5x,
'INITIAL TEMPERATURE K . . . . . . . . .=',1pg20.13//)
721 1700
FORMAT(5x,
'CONFIDENTIAL DATA'//)