40
41
42
43
44
45
46 USE fail_param_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "units_c.inc"
59
60
61
62 INTEGER ,INTENT(IN) :: FAIL_ID
63 INTEGER ,INTENT(IN) :: MAT_ID
64 INTEGER ,INTENT(IN) :: IRUPT
65 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
66 TYPE (SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
67 TYPE (FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
68
69
70
71 INTEGER :: IRFUN,,FAILIP
72 my_real :: rf1,rf2,rief1,rief2,scale_epsp,pthk
73
74 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
75
76 is_encrypted = .false.
77 is_available = .false.
78
79
80
82
83
84
85
86 CALL hm_get_floatv (
'E1' ,rief1 ,is_available,lsubmodel,unitab)
87 CALL hm_get_floatv (
'E2' ,rief2 ,is_available,lsubmodel,unitab)
88 CALL hm_get_intv (
'fct_ID' ,irfun ,is_available,lsubmodel)
89 CALL hm_get_floatv (
'xscale' ,scale_epsp ,is_available,lsubmodel,unitab)
90 CALL hm_get_intv (
'I_Dam' ,dmg_flag ,is_available,lsubmodel)
91 CALL hm_get_intv (
'FAILIP' ,failip ,is_available,lsubmodel
92 IF (failip == 0) failip = 1
93
94 IF (rief1 <= zero) rief1 = ep30
95 IF (rief2 <= zero) rief2 = two*ep30
96 IF (dmg_flag == 0) dmg_flag = 1
97 IF (dmg_flag == 2) dmg_flag = 0
98
99 IF (rief1 > rief2) THEN
100 CALL ancmsg(msgid=618, msgtype=msgerror, anmode=aninfo_blind_1,
101 . i1=mat_id)
102 ENDIF
103
104 pthk = em06
105 IF(scale_epsp == zero) THEN
107 scale_epsp = one * scale_epsp
108 ENDIF
109
110 fail%KEYWORD = 'energy'
111 FAIL%IRUPT = IRUPT
112 FAIL%FAIL_ID = FAIL_ID
113 FAIL%NUPARAM = 6
114 FAIL%NIPARAM = 0
115 FAIL%NUVAR = 1
116 FAIL%NFUNC = 1
117 FAIL%NTABLE = 0
118 FAIL%NMOD = 0
119
120 FAIL%PTHK = PTHK
121
122 ALLOCATE (FAIL%UPARAM(FAIL%NUPARAM))
123 ALLOCATE (FAIL%IPARAM(FAIL%NIPARAM))
124 ALLOCATE (FAIL%IFUNC (FAIL%NFUNC))
125 ALLOCATE (FAIL%TABLE (FAIL%NTABLE))
126
127 FAIL%UPARAM(1) = RIEF1
128 FAIL%UPARAM(2) = RIEF2
129 FAIL%UPARAM(3) = PTHK
130 FAIL%UPARAM(4) = ONE/SCALE_EPSP
131 FAIL%UPARAM(5) = DMG_FLAG
132 FAIL%UPARAM(6)= FAILIP
133
134 FAIL%IFUNC(1) = IRFUN
135
136 IF(IS_ENCRYPTED)THEN
137 WRITE(IOUT, 1000)
138 ELSE
139 WRITE(IOUT, 2000) RIEF1,RIEF2,IRFUN,SCALE_EPSP,FAILIP
140 ENDIF
141 RETURN
142
143 1000 FORMAT(
144 & 5X,40H CRYPTED DATA IN FAILURE MODEL /,
145 & 5X,40H ----------------------------- /)
146 2000 FORMAT(
147 & 5X,40H ENERGY FAILURE MODEL /,
148 & 5X,40H ------------------------ /,
149 & 5X,'maximum specific energy 1. . . . . . . =',E12.4/
150 & 5X,'maximum specific energy 2. . . . . . . =',E12.4/
151 & 5X,'maximum energies scaling function. . . =',I8/
152 & 5X,'abscissa scale factor
for FUNCTION . . =
',E12.4/,
153 & 5X,'number of failed intg. points prior to elem deletion .=',I10/)
154
155 RETURN
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)
for(i8=*sizetab-1;i8 >=0;i8--)
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)