40
41
42
43
44
45
46
47 USE fail_param_mod
52
53
54
55#include "implicit_f.inc"
56
57
58
59#include "units_c.inc"
60
61
62
63 INTEGER ,INTENT(IN) :: FAIL_ID
64 INTEGER ,INTENT(IN) :: MAT_ID
65 INTEGER ,INTENT(IN) :: IRUPT
66 INTEGER ,INTENT(IN) :: UNIT_ID
67 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
68 TYPE (SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
69 TYPE (FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
70
71
72
73 INTEGER :: IRFUN,NDIR
74 my_real :: epsf1,epsr1,epsf2,epsr2,fac_t
75 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
76
77 is_encrypted = .false.
78 is_available = .false.
79
80 IF (unit_id > 0) THEN
81 fac_t = unitab%FAC_T(unit_id)
82 ELSE
83 fac_t = one
84 ENDIF
85
86
87
88
90
91
92
93
94 CALL hm_get_floatv (
'Epsilon_f1' ,epsf1 ,is_available,lsubmodel,unitab)
95 CALL hm_get_floatv (
'Epsilon_r1' ,epsr1 ,is_available,lsubmodel,unitab)
96 CALL hm_get_floatv (
'Epsilon_f2' ,epsf2 ,is_available,lsubmodel,unitab
97 CALL hm_get_floatv (
'Epsilon_r2' ,epsr2 ,is_available,lsubmodel,unitab)
98 CALL hm_get_intv (
'NDIR' ,ndir ,is_available,lsubmodel)
99
100 CALL hm_get_intv (
'fct_ID' ,irfun ,is_available,lsubmodel)
101
102
103
104 IF (epsf1 <= zero) epsf1 = ep20
105 IF (epsr1 <= zero) epsr1 = ep20*two
106 IF (epsf2 <= zero) epsf2 = ep20
107 IF (epsr2 <= zero) epsr2 = ep20*two
108 IF (ndir == 0) ndir = 2
111
112 IF (epsf1 > epsr1 .or. epsf2 > epsr2) THEN
114 . msgtype=msgerror,
115 . anmode=aninfo_blind_1,
116 . i1=mat_id)
117 ENDIF
118
119 fail%KEYWORD = 'FABRIC'
120 fail%IRUPT = irupt
121 fail%FAIL_ID = fail_id
122 fail%NUPARAM = 6
123 fail%NIPARAM = 0
124 fail%NUVAR = 2
125 fail%NFUNC = 1
126 fail%NTABLE = 0
127 fail%NMOD = 0
128
129 ALLOCATE (fail%UPARAM(fail%NUPARAM))
130 ALLOCATE (fail%IPARAM(fail%NIPARAM))
131 ALLOCATE (fail%IFUNC (fail%NFUNC))
132 ALLOCATE (fail%TABLE (fail%NTABLE))
133
134 fail%IFUNC(1) = irfun
135
136 fail%UPARAM(1) = epsf1
137 fail%UPARAM(2) = epsr1
138 fail%UPARAM(3) = epsf2
139 fail%UPARAM(4) = epsr2
140 fail%UPARAM(5) = fac_t
141 fail%UPARAM(6) = ndir
142
143 IF (is_encrypted)THEN
144 WRITE(iout, 1000)
145 ELSE
146 WRITE(iout, 1100) epsf1,epsr1,epsf2,epsr2,ndir,irfun
147 ENDIF
148
149 RETURN
150
151 1000 FORMAT(
152 & 5x,' CRYPTED DATA IN FAILURE MODEL '/,
153 & 5x,' ----------------------------- '/)
154 1100 FORMAT(
155 & 5x,' ANISOTROPIC FABRIC FAILURE MODEL ',/
156 & 5x,' ------------------------ ',/
157 & 5x,'FAILURE TENSION STRAIN DIRECTION 1 . . =',e12.4/
158 & 5x,'RUPTURE TENSION STRAIN DIRECTION 1 . . =',e12.4/
159 & 5x,'FAILURE TENSION STRAIN DIRECTION 2 . . =',e12.4/
160 & 5x,'RUPTURE TENSION STRAIN DIRECTION 2 . . =',e12.4/
161 & 5x,'NUMBER OF BROKEN DIR. FOR EL. DELETION =',i10/
162 & 5x,'STRAIN RATE SCALING FUNCTION . . . . . =',i10)
163
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 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)