38
39
40
43 USE sensor_mod
44 USE matparam_def_mod
46
47
48
49#include "implicit_f.inc"
50
51
52
53#include "param_c.inc"
54#include "tabsiz_c.inc"
55
56
57
58 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
59 INTEGER ,INTENT(IN) :: MAT_ID,NFUNC,NFUNL
60 INTEGER ,DIMENSION(NFUNC) ,INTENT(IN) :: FUNC_ID
61 INTEGER ,DIMENSION(NFUNC+NFUNL) ,INTENT(INOUT) :: IFUNC
62 INTEGER ,DIMENSION(SNPC) ,INTENT(IN) :: NPC
63 my_real ,
DIMENSION(STF) ,
INTENT(IN) :: pld
64 my_real ,
DIMENSION(NPROPM) ,
INTENT(OUT) :: pm
65 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
66 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MAT_PARAM
67
68
69
70 INTEGER I,ISENS,SENS_ID,FUNC
71 my_real kcmax,ktmax,gmax,stiff,stiffmin,stiffini,stiffmax,stiffavg,
72 . yfac1,yfac2,yfac3,kflex1,kflex2
73
74
75
76
77 kcmax = zero
78 IF (nfunl > 0) THEN
80 ENDIF
81
82 kflex1 = mat_param%UPARAM(6)
83 kflex2 = mat_param%UPARAM(7)
84 yfac1 = mat_param%UPARAM(12)
85 yfac2 = mat_param%UPARAM(13)
86 yfac3 = mat_param%UPARAM(14)
87
88 sens_id = mat_param%IPARAM(1)
89
90
91
92 isens = 0
93 IF (sens_id > 0 ) THEN
94 DO i=1,sensors%NSENSOR
95 IF (sens_id == sensors%SENSOR_TAB(i)%SENS_ID) THEN
96 isens = i
97 EXIT
98 END IF
99 ENDDO
100 IF (isens == 0)
101 .
CALL ancmsg(msgid=1240,anmode=aninfo,msgtype=msgwarning,
102 . i1=mat_id,c1=titr,i2=isens)
103 ENDIF
104 mat_param%IPARAM(1) = isens
105
106
107
108
109 func = ifunc(1)
110 IF (func > 0 ) THEN
111
112 CALL func_slope(func,yfac1,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
113
114 IF (stiffmin <= zero) THEN
115 CALL ancmsg(msgid=1581,msgtype=msgerror,anmode=aninfo_blind_2,
116 . i1=mat_id,
117 . i2=func_id(ifunc(1)),
118 . c1=titr)
119 ENDIF
120 kcmax = stiffmax
121
122 ENDIF
123
124
125
126 func = ifunc(2)
127 ktmax = zero
128 IF (func > 0 ) THEN
129 CALL func_slope(func,yfac2,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
130
131 IF (stiffmin <= zero) THEN
132 CALL ancmsg(msgid=1582 ,msgtype=msgerror,anmode=aninfo_blind_2,
133 . i1=mat_id,
134 . i2=func_id(ifunc(2)),
135 . c1=titr)
136 ENDIF
137 ktmax = stiffmax
138 ENDIF
139
140
141
142 func = ifunc(3)
143 gmax = zero
144 IF (func > 0 ) THEN
145 CALL func_slope(func,yfac3,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
146
147 IF (stiffmin <= zero) THEN
148 CALL ancmsg(msgid=1583 ,msgtype=msgerror,anmode=aninfo_blind_2,
149 . i1=mat_id,
150 . i2=func_id(ifunc(3)),
151 . c1=titr)
152 ENDIF
153 gmax = stiffmax
154 ENDIF
155
156
157
158
159 func = ifunc(4)
160 IF (func > 0 )THEN
161
162 CALL func_slope(func,kflex1,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
163
164 IF (stiffmin <= zero) THEN
165 CALL ancmsg(msgid=1581 , msgtype=msgerror, anmode=aninfo_blind_2,
166 . i1=mat_id,
167 . i2=func_id(ifunc(4)),
168 . c1=titr)
169 ENDIF
170 ENDIF
171
172
173
174 func = ifunc(5)
175 IF (func > 0 )THEN
176 CALL func_slope(func,kflex2,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
177
178 IF (stiffmin <= zero) THEN
179 CALL ancmsg(msgid=1582 , msgtype=msgerror, anmode=aninfo_blind_2,
180 . i1=mat_id,
181 . i2=func_id(ifunc(5)),
182 . c1=titr)
183 ENDIF
184 ENDIF
185
186 stiff =
max(kcmax,ktmax)
187 mat_param%UPARAM(10) = stiff
188 mat_param%UPARAM(11) = gmax
189
190 pm(20) = stiff
191 pm(21) = zero
192 pm(22) = stiff*half
193 pm(23) = em01*stiffavg
194 pm(24) = stiff
195
196 RETURN
subroutine func_slope(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
subroutine matfun_usr2sys(titr, mat_id, nfunc, ifunc, func_id)
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)