40
41
42
43
44
45
46 USE fail_param_mod
53
54
55
56#include "implicit_f.inc"
57
58
59
60#include "units_c.inc"
61
62
63
64 INTEGER ,INTENT(IN) :: FAIL_ID
65 INTEGER ,INTENT(IN) :: MAT_ID
66 INTEGER ,INTENT(IN) :: IRUPT
67 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
68 TYPE(UNIT_TYPE_) ,INTENT(IN) :: UNITAB
69 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
70 INTEGER ,INTENT(INOUT) :: NLOC_MOD
71 TYPE(FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
72
73
74
75 INTEGER :: ILOC
76 my_real :: q1,q2,q3,epn,as,kw,fc,fr,f0,rlen,hkhi,le_max
77 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
78
79
80
81 is_encrypted = .false.
82 is_available = .false.
83
85
86
87
88
89 CALL hm_get_floatv (
'FAIL_q1' ,q1 ,is_available,lsubmodel,unitab)
90 CALL hm_get_floatv (
'FAIL_q2' ,q2 ,is_available,lsubmodel,unitab)
91 CALL hm_get_intv (
'FAIL_Iloc' ,iloc ,is_available,lsubmodel)
92
93 CALL hm_get_floatv (
'FAIL_eps_strain',epn ,is_available,lsubmodel,unitab)
94 CALL hm_get_floatv (
'FAIL_As' ,as ,is_available,lsubmodel,unitab)
95 CALL hm_get_floatv (
'FAIL_Kw' ,kw ,is_available,lsubmodel,unitab)
96
97 CALL hm_get_floatv (
'FAIL_Fc' ,fc ,is_available,lsubmodel,unitab)
98 CALL hm_get_floatv (
'FAIL_Fr' ,fr ,is_available,lsubmodel,unitab)
99 CALL hm_get_floatv (
'FAIL_F0' ,f0 ,is_available,lsubmodel,unitab)
100
101 CALL hm_get_floatv (
'FAIL_RLen' ,rlen ,is_available,lsubmodel,unitab)
102 CALL hm_get_floatv (
'FAIL_Hchi' ,hkhi ,is_available,lsubmodel,unitab)
103 CALL hm_get_floatv (
'FAIL_Le_max' ,le_max ,is_available,lsubmodel,unitab)
104
105
106 IF (q1 == zero) q1 = three_half
107 IF (q2 == zero) q2 = one
108 q3 = q1**2
109
110 IF (as == zero) THEN
111
112 epn = infinity
113 ENDIF
114
115 IF (fc == zero) fc = infinity
116 IF (fr == zero) fr = two*infinity
117 IF (fc >= fr) THEN
118
119 CALL ancmsg(msgid=1747,msgtype=msgerror,
120 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
121 ENDIF
122 IF (f0 >= fc) THEN
123
124 CALL ancmsg(msgid=1748,msgtype=msgwarning,
125 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
126 ENDIF
127
128
129
130
131
132 IF (iloc == 0) iloc = 1
133 nloc_mod = iloc-1
134
135
136 IF (le_max > zero) THEN
138
139 ELSE
141 ENDIF
142
143
144 IF (iloc /= 2) THEN
145 hkhi = zero
146 ENDIF
147
148 fail%KEYWORD = 'GURSON'
149 fail%IRUPT = irupt
150 fail%FAIL_ID = fail_id
151 fail%NUPARAM = 12
152 fail%NIPARAM = 0
153 fail%NUVAR = 0
154 fail%NFUNC = 0
155 fail%NTABLE = 0
156 fail%NMOD = 0
157
158 ALLOCATE (fail%UPARAM(fail%NUPARAM))
159 ALLOCATE (fail%IPARAM(fail%NIPARAM))
160 ALLOCATE (fail%IFUNC (fail%NFUNC))
161 ALLOCATE (fail%TABLE (fail%NTABLE))
162
163 fail%UPARAM(1) = nloc_mod
164 fail%UPARAM(2) = q1
165 fail%UPARAM(3) = q2
166 fail%UPARAM(4) = q3
167 fail%UPARAM(5) = epn
168 fail%UPARAM(6) = as
169 fail%UPARAM(7) = kw
170 fail%UPARAM(8) = fr
171 fail%UPARAM(9) = fc
172 fail%UPARAM(10)= f0
173 fail%UPARAM(11)= rlen
174 fail%UPARAM(12)= hkhi
175
176 IF (is_encrypted) THEN
177 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
178 ELSE
179 WRITE(iout, 1100) q1,q2,epn,as,kw,f0,fc,fr,iloc
180 IF (iloc > 1) WRITE(iout, 1200) rlen,le_max
181 IF (iloc == 2) WRITE(iout, 1300) hkhi
182 ENDIF
183
184 RETURN
185
186 1100 FORMAT(
187 & 5x,40h gurson ductile damage model /,
188 & 5x,40h ------------------------------------ /,
189 & 5x,'Q1 GURSON COEFFICIENT. . . . . . . . . . . . . . . =',1pg20.13/
190 & 5x,'Q2 GURSON COEFFICIENT. . . . . . . . . . . . . . . =',1pg20.13/
191 & 5x,'NUCLEATION PLASTIC STRAIN. . . . . . . . . . . . . =',1pg20.13/
192 & 5x,'AS NUCLEATION SLOPE. . . . . . . . . . . . . . . . =',1pg20.13/
193 & 5x,'SHEAR DAMAGE COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/
194
195 & 5x,'INITIAL VOID VOLUME FRACTION . . . . . . . . . . . =',1pg20.13/
196 & 5x,'CRITICAL VOID VOLUME FRACTION. . . . . . . . . . . =',1pg20.13/
197 & 5x,'RUPTURE VOID VOLUME FRACTION . . . . . . . . . . . =',1pg20.13/
198 & 5x,'NON LOCAL PLASTIC STRAIN REGULARIZATION FLAG . . . =',i3/
199 & 5x,' ILOC=1 LOCAL DAMAGE MODEL '/
200 & 5x,' ILOC=2 NON LOCAL MICROMORPHIC MODEL '/
201 & 5x,' ILOC=3 NON LOCAL PEERLING MODEL ')
202 1200 FORMAT(
203 & 5x,'NON-LOCAL REGULARIZATION LENGTH. . . . . . . . . . =',1pg20.13/
204 & 5x,'CONVERGENCE ELEMENT LENGTH TARGET. . . . . . . . . =',1pg20.13/)
205 1300 FORMAT(
206 & 5x,'PENALTY PARAMETER FOR NONLOCAL MICROMORPHIC METHOD =',1pg20.13/)
207
208 RETURN
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)
integer, parameter nchartitle
subroutine get_lemax(le_max, nloc_length)
subroutine get_length(nloc_length, le_max)
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)