41 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,NTABL ,
42 . MTAG ,PARMAT ,UNITAB ,PM ,LSUBMODEL,
43 . ISRATE ,MAT_ID ,TITR ,ITABLE ,MAXTABL ,
57#include "implicit_f.inc"
67 INTEGER,
INTENT(IN) :: MAT_ID,MAXUPARAM,MAXTABL
68 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
69 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
70 INTEGER,
INTENT(INOUT) :: ISRATE,ITABLE(MAXTABL)
71 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR,NTABL,NVARTMP
72 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
73 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
76 TYPE(matparam_struct_),
INTENT(INOUT) :: MATPARAM
81 INTEGER I, J, K, , Ivflag, NANGLE, INFO, Icrit, TAB_YLD, Ismooth,
85 . rho0,young,nu,yld0,dsigm,beta,omega,nexp,eps0,sigstar,dg0,
86 . deps0,mexp,fbi,rhobi,rhor,bulk,a11,g,n1,n2,m1,m2,a1,a2,c1,c2,
87 . asrate,kboltz,xscale,yscale
88 . xscale_unit,yscale_unit
90 . f1,f2,df1_dmu,df2_dmu,d2f1_d2mu,d2f2_d2mu,
91 . dphi_dsig1,dphi_dsig2,dmu_dsig1,dmu_dsig2,mineig,thet,da_dcos2(2),
92 . db_dcos2(2),dc_dcos2(2),d2a_d2cos2(2),d2b_d2cos2(2),d2c_d2cos2(2),
93 . df1_dcos2,df2_dcos2,dphi_dcos2,
94 . d2f1_d2cos2,d2f2_d2cos2,d2f1_d2mucos2,d2f2_d2mucos2,mineigmu,
96 . dmu_dcos2,t(3,3),d(3,3),weight,dweight_dcos2,d2weight_d2cos2,u,uprim,upprim,
97 . du_dmu,duprim_dmu,v,vprim,vpprim,dv_dmu,dvprim_dmu,w0,fun_av,rlank_av,
98 . fbi_min,fbi_max,fbi_trans,adirac,fdirac,fps_min,fps_max,fps_trans,
99 . fsh_min,fsh_max,fsh_trans,fh(2),fps1,rhoone_theta,phi,dfps1_dweight
100 real*8 :: cos2(10,10),d2phi_d2(3,3),work(102),wr(3),wi(3),vl(3,3),vr(3,3)
101 real*8 ,
DIMENSION(:,:),
ALLOCATABLE :: amat,bvec
102 my_real,
DIMENSION(:,:),
ALLOCATABLE :: fun,fsh,fps,hips,hiun,hish,
103 . q_fsh,q_fun,q_fps,q_hiun,q_hips,q_hish
104 my_real,
DIMENSION(:) ,
ALLOCATABLE :: rlank,theta,theta_rad,
105 . wps,wsh,q_wsh,q_wps,alps,rm,ag,
106 . epsag,sigag,cag,epseq
107 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IPIV
108 my_real,
PARAMETER :: tol = 1.0d-6
110 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
113 1 1. ,0. ,0. ,0. ,0. ,0. ,0. ,0. ,0. ,0. ,
114 2 0. ,1. ,0. ,0. ,0. ,0. ,0. ,0. ,0. ,0. ,
115 3 -1. ,0. ,2. ,0. ,0. ,0. ,0. ,0. ,0. ,0. ,
116 4 0. ,-3. ,0. ,4. ,0. ,0. ,0. ,0. ,0. ,0. ,
117 5 1. ,0. ,-8. ,0. ,8. ,0. ,0. ,0. ,0. ,0. ,
118 6 0. ,5. ,0. ,-20. ,0. ,16. ,0. ,0. ,0. ,0. ,
119 7 -1. ,0. ,18. ,0. ,-48. ,0. ,32. ,0. ,0. ,0. ,
120 8 0. ,-7. ,0. ,56. ,0. ,-112.,0. ,64. ,0. ,0. ,
121 9 1. ,0. ,-32. ,0. ,160. ,0. ,-256.,0. ,128. ,0. ,
122 a 0. ,9. ,0. ,-120.,0. ,432. ,0. ,-576 ,0. ,256. /
124 is_encrypted = .false.
125 is_available = .false.
132 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
135 CALL hm_get_floatv(
'MAT_E' ,young ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
137 CALL hm_get_intv (
'MAT_Ires' ,ires ,is_available, lsubmodel)
139 CALL hm_get_intv (
'MAT_Icrit' ,icrit ,is_available, lsubmodel)
141 IF (icrit == 0) icrit = 1
143 CALL ancmsg(msgid=1776,msgtype=msgerror,
144 . anmode=aninfo_blind_1,i1=mat_id,c1=titr,
147 CALL hm_get_intv (
'MAT_TAB_YLD',tab_yld ,is_available, lsubmodel)
148 CALL hm_get_floatv(
'MAT_Xscale',xscale ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv(
'MAT_Yscale',yscale ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv(
'MAT_fBI' ,fbi ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'MAT_rhoBI' ,rhobi ,is_available, lsubmodel, unitab)
154 CALL hm_get_floatv(
'SIGMA_r' ,yld0 ,is_available, lsubmodel, unitab)
155 IF ((tab_yld == 0).AND.(yld0==zero))
THEN
156 CALL ancmsg(msgid=1777,msgtype=msgerror,
157 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
159 CALL hm_get_floatv(
'MAT_DSIGM' ,dsigm ,is_available, lsubmodel, unitab)
160 CALL hm_get_floatv(
'MAT_BETA' ,beta ,is_available, lsubmodel, unitab)
161 CALL hm_get_floatv(
'Omega' ,omega ,is_available, lsubmodel, unitab)
162 CALL hm_get_floatv(
'MAT_HARD' ,nexp ,is_available, lsubmodel, unitab)
165 CALL hm_get_floatv(
'Epsilon_0' ,eps0 ,is_available, lsubmodel, unitab)
166 CALL hm_get_floatv(
'MAT_SIGS' ,sigstar ,is_available, lsubmodel, unitab)
167 CALL hm_get_floatv(
'MAT_DG0' ,dg0 ,is_available, lsubmodel, unitab)
168 CALL hm_get_floatv(
'MAT_Deps0' ,deps0 ,is_available, lsubmodel, unitab)
169 CALL hm_get_floatv(
'MAT_StrainRate_m',mexp ,is_available, lsubmodel, unitab)
172 CALL hm_get_floatv(
'T_Initial' ,tini ,is_available, lsubmodel, unitab)
174 CALL ancmsg(msgid=1778,msgtype=msgwarning,
175 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
177 CALL hm_get_floatv(
'MAT_CHARD' ,fisokin ,is_available, lsubmodel, unitab)
178 CALL hm_get_floatv(
'Fcut' ,asrate ,is_available, lsubmodel, unitab)
179 CALL hm_get_intv (
'Vflag' ,ivflag ,is_available, lsubmodel)
180 CALL hm_get_intv (
'MAT_Ismooth',ismooth ,is_available, lsubmodel)
181 CALL hm_get_intv (
'MAT_TAB_TEMP' ,tab_temp ,is_available, lsubmodel)
183 ! classical vegter yield locus
186 CALL hm_get_intv(
'MAT_refanglemax',nangle,is_available,lsubmodel)
187 IF (nangle > 10)
THEN
188 CALL ancmsg(msgid=1779,msgtype=msgerror,
189 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
191 IF (.NOT.
ALLOCATED(fun))
ALLOCATE(fun(nangle,2))
192 IF (.NOT.
ALLOCATED(fsh))
ALLOCATE(fsh(nangle,2))
193 IF (.NOT.
ALLOCATED(fps))
ALLOCATE(fps(nangle,2))
194 fps(1:nangle,1:2) = zero
195 IF (.NOT.
ALLOCATED(rlank))
ALLOCATE(rlank(nangle))
200 IF (rlank(j) == 0) rlank(j) = one
206 ELSEIF (icrit == 2)
THEN
207 CALL hm_get_intv(
'MAT_refanglemax',nangle,is_available,lsubmodel)
208 IF (nangle > 10)
THEN
209 CALL ancmsg(msgid=1779,msgtype=msgerror,
210 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
212 IF (.NOT.
ALLOCATED(fun))
ALLOCATE(fun(nangle,2))
213 IF (.NOT.
ALLOCATED(fsh))
ALLOCATE(fsh(nangle,2))
214 IF (.NOT.
ALLOCATED(fps))
ALLOCATE(fps(nangle,2))
215 fps(1:nangle,1:2) = zero
216 IF (.NOT.
ALLOCATED(alps))
ALLOCATE(alps(nangle))
217 IF (.NOT.
ALLOCATED(rlank))
ALLOCATE(rlank(nangle))
222 IF (rlank(j) == 0) rlank(j) = one
225 IF (alps(j) == zero) alps(j) = half
229 ELSEIF (icrit == 3)
THEN
232 IF (.NOT.
ALLOCATED(rm))
ALLOCATE(rm(nangle))
233 IF (.NOT.
ALLOCATED(ag))
ALLOCATE(ag(nangle))
234 IF (.NOT.
ALLOCATED(epsag))
ALLOCATE(epsag(nangle))
235 IF (.NOT.
ALLOCATED(sigag))
ALLOCATE(sigag(nangle))
236 IF (.NOT.
ALLOCATED(cag))
ALLOCATE(cag(nangle))
237 IF (.NOT.
ALLOCATED(epseq))
ALLOCATE(epseq(nangle))
238 IF (.NOT.
ALLOCATED(fun))
ALLOCATE(fun(nangle,2))
239 IF (.NOT.
ALLOCATED(fsh))
ALLOCATE(fsh(nangle,2))
240 IF (.NOT.
ALLOCATED(fps))
ALLOCATE(fps(nangle,2))
241 IF (.NOT.
ALLOCATED(rlank))
ALLOCATE(rlank(nangle))
242 IF (.NOT.
ALLOCATED(theta))
ALLOCATE(theta(nangle))
243 IF (.NOT.
ALLOCATED(theta_rad))
ALLOCATE(theta_rad(nangle))
244 CALL hm_get_floatv(
'MAT_RM_0' ,rm(1) ,is_available, lsubmodel, unitab)
245 CALL hm_get_floatv(
'MAT_RM_45' ,rm(2) ,is_available, lsubmodel, unitab)
246 CALL hm_get_floatv(
'MAT_RM_90' ,rm(3) ,is_available, lsubmodel, unitab)
247 CALL hm_get_floatv(
'MAT_AG_0' ,ag(1) ,is_available, lsubmodel, unitab)
248 CALL hm_get_floatv(
'MAT_AG_45' ,ag(2) ,is_available, lsubmodel, unitab)
249 CALL hm_get_floatv(
'MAT_AG_90' ,ag(3) ,is_available, lsubmodel, unitab)
250 CALL hm_get_floatv(
'MAT_R_0' ,rlank(1) ,is_available, lsubmodel, unitab)
251 IF (rlank(1) == zero) rlank(1) = one
252 CALL hm_get_floatv(
'MAT_R_45' ,rlank(2) ,is_available, lsubmodel, unitab)
253 IF (rlank(2) == zero) rlank(2) = one
254 CALL hm_get_floatv(
'MAT_R_90' ,rlank(3) ,is_available, lsubmodel, unitab)
255 IF (rlank(3) == zero) rlank(3) = one
259 epsag(1) = log(one + ag(1)/hundred)
260 epsag(2) = log(one + ag(2)/hundred)
261 epsag(3) = log(one + ag(3)/hundred)
263 sigag(1) = rm(1)*(one + ag(1)/hundred)
264 sigag(2) = rm(2)*(one + ag(2)/hundred)
265 sigag(3) = rm(3)*(one + ag(3)/hundred)
267 cag(1) = sigag(1)/(epsag(1)**epsag(1))
268 cag(2) = sigag(2)/(epsag(2)**epsag(2))
269 cag(3) = sigag(3)/(epsag(3)**epsag(3))
270 w0 = (cag(1)/(epsag(1) + one))*((epsag(1))**(epsag(1)+one))
272 epseq(1) = ((epsag(1)+one)*(w0/cag(1)))**(one/(epsag(1)+one))
273 epseq(2) = ((epsag(2)+one)*(w0/cag(2)))**(one/(epsag(2)+one))
274 epseq(3) = ((epsag(3)+one)*(w0/cag(3)))**(one/(epsag(3)+one))
276 fun(1,1) = epsag(1)/epseq(1)
277 fun(2,1) = epsag(1)/epseq(2)
278 fun(3,1) = epsag(1)/epseq(3)
281 fun_av = (fun(1,1) + two*fun(2,1) + fun(3,1))/four
282 rlank_av = (rlank(1) + two*rlank(2) + rlank(3))/four
287 fdirac = exp(adirac*(rlank_av-fbi_trans))
288 fbi = fun_av*((fbi_min/(one+fdirac)) + (fbi_max/(one+(one/fdirac))))
289 IF (rhobi == zero)
THEN
290 rhobi = rlank(1)/rlank(3)
299 fdirac = exp(adirac*(rlank(j)-fps_trans))
300 fps(j,1) = fun(j,1)*((fps_min/(one+fdirac)) + (fps_max/(one+(one/fdirac))))
308 fun_av = (fun(1,1)+fun(3,1))/two
309 rlank_av = (rlank(1)+rlank(3))/two
310 fdirac = exp(adirac*(rlank_av - fsh_trans))
311 fsh(1,1) = fun_av*((fsh_min/(one+fdirac)) + (fsh_max/(one+(one/fdirac))))
312 fsh(3,1) = fun_av*((fsh_min/(one+fdirac)) + (fsh_max/(one+(one/fdirac))))
313 fdirac = exp(adirac*(rlank(2)-fsh_trans))
314 fsh(2,1) = fun(2,1)*((fsh_min/(one+fdirac)) + (fsh_max/(one+(one/fdirac))))
319 theta(j) = (j-1)*(90.0d0/(nangle-1))
320 theta_rad(j) = theta(j)*(pi/180.0d0)
322 rhobi_theta = (rhobi + one) + (rhobi - one)*cos(two*theta_rad(j))
323 rhobi_theta = rhobi_theta / ((rhobi + one) - (rhobi - one)*cos(two*theta_rad(j)))
324 rhoone_theta = -rlank(j)/(rlank(j)+one)
326 fh(2) = (fbi + rhobi_theta*fbi - fun(j,1))/(rhobi_theta - rhoone_theta)
327 fh(1) = fbi - rhobi_theta*(fh(2)-fbi)
331 fps1 = (fun(j,1)*((one - mu)**2) + two*fh(1)*mu*weight*(one-mu) + fbi*(mu**2))/
332 . ((one-mu)**2 + two*weight*mu*(one-mu) + mu**2)
337 u = fun(j,1)*((one - mu)**2) + two*fh(1)*mu*weight*(one-mu) + fbi*(mu**2)
338 uprim = two*mu*(one-mu)*fh(1)
339 v = (one-mu)**2 + two*weight*mu*(one-mu) + mu**2
340 vprim = two*mu*(one-mu)
341 dfps1_dweight = (uprim*v - u*vprim)/(
max(v**2,em20))
343 weight = weight - (phi / dfps1_dweight)
345 fps1 = (fun(j,1)*((one - mu)**2) + two*fh(1)*mu*weight*(one-mu) + fbi*(mu**2))/
346 . ((one-mu)**2 + two*weight*mu*(one-mu) + mu**2)
351 fps(j,2) = (two*fh(2)*mu*weight*(one-mu) + fbi*(mu**2))/
352 . ((one-mu)**2 + two*weight*mu*(one-mu) + mu**2)
357 CALL hm_get_intv(
'MAT_refanglemax',nangle,is_available,lsubmodel)
358 IF (nangle > 10)
THEN
359 CALL ancmsg(msgid=1779,msgtype=msgerror,
360 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
362 IF (.NOT.
ALLOCATED(fun))
ALLOCATE(fun(nangle,2))
363 IF (.NOT.
ALLOCATED(rlank))
ALLOCATE(rlank(nangle))
364 IF (.NOT.
ALLOCATED(wps))
ALLOCATE(wps(nangle))
365 IF (.NOT.
ALLOCATED(wsh))
ALLOCATE(wsh(nangle))
370 IF (rlank(j) == 0) rlank(j) = one
375 IF (wsh(j) /= wsh(nangle-(j-1)))
THEN
376 CALL ancmsg(msgid=1800,msgtype=msgwarning,
377 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
378 wsh(nangle-(j-1)) = wsh(j)
387 IF (rhor == zero) rhor = rho0
388 IF (ires == 0) ires = 2
390 IF (nu < zero .OR. nu >= half)
THEN
393 . anmode=aninfo_blind_2,
399 bulk = young / three / (one - two*nu)
400 a11 = young / (one-nu*nu)
401 g = young / two / (one + nu)
403 IF (ivflag == 0) ivflag = 2
405 CALL ancmsg(msgid=1802,msgtype=msgerror,
406 . anmode=aninfo_blind_1,i1=mat_id,c1=titr,
410 IF ((tab_yld == 0).AND.((deps0 == zero).OR.(dg0 == zero).OR.(sigstar == zero)))
THEN
417 CALL ancmsg(msgid=1801,msgtype=msginfo,
418 . anmode=aninfo_blind_1,i1=mat_id,c1=titr)
423 IF ((asrate == zero).OR.(ivflag == 1)) asrate = 10000.0d0*unitab%FAC_T_WORK
426 kboltz = 8.6173303*em5
427 kboltz = kboltz/(unitab%FAC_M_WORK*unitab%FAC_L_WORK*unitab%FAC_L_WORK/(unitab%FAC_T_WORK*unitab%FAC_T_WORK))
429 IF (fisokin > one) fisokin = one
430 IF (fisokin < zero) fisokin = zero
432 IF (ismooth == 0) ismooth = 1
434 IF (tab_yld == 0)
THEN
439 IF ((tab_temp > 0).AND.(tini == zero)) tini = 293.0d0
440 IF ((yscale == zero).AND.(tab_yld>0))
THEN
441 CALL hm_get_floatv_dim(
'MAT_Yscale' ,yscale_unit ,is_available, lsubmodel, unitab)
442 yscale = one * yscale_unit
444 IF ((xscale == zero).AND.(tab_yld>0))
THEN
445 CALL hm_get_floatv_dim(
'MAT_Xscale' ,xscale_unit ,is_available, lsubmodel, unitab)
446 xscale = one * xscale_unit
451 IF (.NOT.
ALLOCATED(hips))
ALLOCATE(hips(nangle,2))
452 IF (.NOT.
ALLOCATED(hiun))
ALLOCATE(hiun(nangle,2))
453 IF (.NOT.
ALLOCATED(hish))
ALLOCATE(hish(nangle,2))
454 IF (.NOT.
ALLOCATED(theta))
ALLOCATE(theta(nangle))
455 IF (.NOT.
ALLOCATED(theta_rad))
ALLOCATE(theta_rad(nangle))
460 theta(j) = (j-1)*(90.0d0/(nangle-1))
461 theta_rad(j) = theta(j)*(pi/180.0d0)
472 IF ((icrit == 1).OR.(icrit == 2).OR.(icrit == 3))
THEN
480 rhobi_theta = (rhobi + one) + (rhobi - one)*cos(two*theta_rad(j))
481 rhobi_theta = rhobi_theta / ((rhobi + one) - (rhobi - one)*cos(two*theta_rad(j)))
487 hips(j,1) = (m2*(n1*a1+n2*a2) - n2*(m1*c1+m2*c2))/(n1*m2 - m1*n2)
488 hips(j,2) = (n1*(m1*c1+m2*c2) - m1*(n1*a1+n2*a2))/(n1*m2 - m1*n2)
496 n2 = -rlank(j)/(rlank(j)+one)
503 hiun(j,1) = (m2*(n1*a1+n2*a2) - n2*(m1*c1+m2*c2))/(n1*m2 - m1*n2)
504 hiun(j,2) = (n1*(m1*c1+m2*c2) - m1*(n1*a1+n2*a2))/(n1*m2 - m1*n2)
507 IF ((icrit == 1).AND.(fps(j,2) == zero))
THEN
508 fps(j,2) = hiun(j,2) + half*(hips(j,2) - hiun(j,2))
509 ELSEIF (icrit == 2)
THEN
510 fps(j,2) = hiun(j,2) + alps(j)*(hips(j,2) - hiun(j,2))
516 fsh(j,2) = -fsh(nangle-(j-1),1)
524 m2 = -rlank(j)/(rlank(j)+one)
526 hish(j,1) = (m2*(n1*a1+n2*a2) - n2*(m1*c1+m2*c2))/(n1*m2 - m1*n2)
527 hish(j,2) = (n1*(m1*c1+m2*c2) - m1*(n1*a1+n2*a2))/(n1*m2 - m1*n2)
537 n2 = -rlank(j)/(rlank(j)+one)
539 rhobi_theta = (rhobi + one) + (rhobi - one)*cos(two*theta_rad(j))
540 rhobi_theta = rhobi_theta / ((rhobi + one) - (rhobi - one)*cos(two*theta_rad(j)))
546 hips(j,1) = (m2*(n1*a1+n2*a2) - n2*(m1*c1+m2*c2))/(n1*m2 - m1*n2)
547 hips(j,2) = (n1*(m1*c1+m2*c2) - m1*(n1*a1+n2*a2))/(n1*m2 - m1*n2)
553 n1 = rlank(j)/(rlank(j)+one)
559 m2 = -rlank(j)/(rlank(j)+one)
561 hish(j,1) = (m2*(n1*a1+n2*a2) - n2*(m1*c1+m2*c2))/(n1*m2 - m1*n2)
562 hish(j,2) = (n1*(m1*c1+m2*c2) - m1*(n1*a1+n2*a2))/(n1*m2 - m1*n2)
571 ALLOCATE (amat(nangle,nangle),ipiv(nangle))
578 amat(j,i) = amat(j,i) + cos2(k,i)*(cos(two*theta_rad(j)))**(k-1)
584 IF ((icrit == 1).OR.(icrit == 2).OR.(icrit == 3))
THEN
587 ALLOCATE(q_fsh(nangle,2),q_fun(nangle,2),q_fps(nangle,2),
588 . q_hish(nangle,2),q_hiun(nangle,2),q_hips(nangle,2))
591 q_fsh(1:nangle,1:2) = zero
592 q_fun(1:nangle,1:2) = zero
593 q_fps(1:nangle,1:2) = zero
594 q_hish(1:nangle,1:2) = zero
595 q_hiun(1:nangle,1:2) = zero
596 q_hips(1:nangle,1:2) = zero
599 ALLOCATE (bvec(nangle,12))
600 bvec(1:nangle,1:2) = fsh(1:nangle,1:2)
601 bvec(1:nangle,3:4) = fun(1:nangle,1:2)
602 bvec(1:nangle,5:6) = fps(1:nangle,1:2)
603 bvec(1:nangle,7:8) = hish(1:nangle,1:2)
604 bvec(1:nangle,9:10) = hiun(1:nangle,1:2)
605 bvec(1:nangle,11:12) = hips(1:nangle,1:2)
611#ifndef WITHOUT_LINALG
612 CALL dgesv(nangle, 12, amat, nangle, ipiv, bvec, nangle, info)
614 WRITE(6,*)
"Error: Blas/Lapack required for MAT110"
618 q_fsh(1:nangle,1:2) = bvec(1:nangle,1:2)
619 q_fun(1:nangle,1:2) = bvec(1:nangle,3:4)
620 q_fps(1:nangle,1:2) = bvec(1:nangle,5:6)
621 q_hish(1:nangle,1:2) = bvec(1:nangle,7:8)
622 q_hiun(1:nangle,1:2) = bvec(1:nangle,9:10)
623 q_hips(1:nangle,1:2) = bvec(1:nangle,11:12)
629 ALLOCATE(q_fun(nangle,2),q_hish(nangle,2),q_hips(nangle,2),
630 . q_wsh(nangle),q_wps(nangle))
633 q_fun(1:nangle,1:2) = zero
634 q_hish(1:nangle,1:2) = zero
635 q_hips(1:nangle,1:2) = zero
636 q_wsh(1:nangle) = zero
637 q_wps(1:nangle) = zero
640 ALLOCATE (bvec(nangle,8))
641 bvec(1:nangle,1:2) = fun(1:nangle,1:2)
642 bvec(1:nangle,3:4) = hish(1:nangle,1:2)
643 bvec(1:nangle,5:6) = hips(1:nangle,1:2)
644 bvec(1:nangle,7) = wsh(1:nangle)
645 bvec(1:nangle,8) = wps(1:nangle)
651#ifndef WITHOUT_LINALG
652 CALL dgesv(nangle, 8, amat, nangle, ipiv, bvec, nangle, info
654 WRITE(6,*)
"Error: Blas/Lapack required for MAT110"
659 q_fun(1:nangle,1:2) = bvec(1:nangle,1:2)
660 q_hish(1:nangle,1:2) = bvec(1:nangle,3:4)
661 q_hips(1:nangle,1:2) = bvec(1:nangle,5:6)
662 q_wsh(1:nangle) = bvec(1:nangle,7)
663 q_wps(1:nangle) = bvec(1:nangle,8)
671 IF ((icrit == 1).OR.(icrit == 2).OR.(icrit == 3))
THEN
703 d2a_d2cos2(1:2) = zero
704 d2b_d2cos2(1:2) = zero
705 d2c_d2cos2(1:2) = zero
710 a1 = a1 + q_fsh(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
711 a2 = a2 + q_fsh(i,2)*cos2(k,i)*(cos(two*thet))**(k
712 b1 = b1 + q_hish(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
713 b2 = b2 + q_hish(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
714 c1 = c1 + q_fun(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
715 c2 = c2 + q_fun(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
723 da_dcos2(1:2) = da_dcos2(1:2) + q_fsh(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
724 db_dcos2(1:2) = db_dcos2(1:2) + q_hish(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
725 dc_dcos2(1:2) = dc_dcos2(1:2) + q_fun(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
732 d2a_d2cos2(1:2) = d2a_d2cos2(1:2) + q_fsh(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
733 d2b_d2cos2(1:2) = d2b_d2cos2(1:2) + q_hish(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
734 d2c_d2cos2(1:2) = d2c_d2cos2(1:2) + q_fun(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
746 f1 = ((one-mu)**2)*a1 + two*mu*(one-mu)*b1 + (mu**2)*c1
747 f2 = ((one-mu)**2)*a2 + two*mu*(one-mu)*b2 + (mu**2)*c2
749 df1_dmu = -two*(one-mu)*a1 + two*(one-two*mu)*b1 + two*mu*c1
750 df2_dmu = -two*(one-mu)*a2 + two*(one-two*mu)*b2 + two*mu*c2
752 d2f1_d2mu = two*(a1+c1-two*b1)
753 d2f2_d2mu = two*(a2+c2-two*b2)
755 denom = f1*df2_dmu - f2*df1_dmu
756 denom = sign(
max(abs(denom),em20),denom)
758 dphi_dsig1 = df2_dmu/denom
759 dphi_dsig2 = -df1_dmu/denom
761 dmu_dsig1 = -f2/denom
765 df1_dcos2 = ((one-mu)**2)*da_dcos2(1) + two*mu*(one-mu)*db_dcos2(1) + (mu**2)*dc_dcos2(1)
766 df2_dcos2 = ((one-mu)**2)*da_dcos2(2) + two*mu*(one-mu)*db_dcos2(2) + (mu**2)*dc_dcos2(2)
767 dphi_dcos2 = (df2_dcos2*df1_dmu - df1_dcos2*df2_dmu)/denom
768 dmu_dcos2 = (f2*df1_dcos2 - f1*df2_dcos2)/denom
771 d2f1_d2mucos2 = -two*(one-mu)*da_dcos2(1) + two*(one-two*mu)*db_dcos2(1) + two*mu*dc_dcos2(1)
772 d2f2_d2mucos2 = -two*(one-mu)*da_dcos2(2) + two*(one-two*mu)*db_dcos2(2) + two*mu*dc_dcos2(2)
773 d2f1_d2cos2 = ((one-mu)**2)*d2a_d2cos2(1) + two*mu*(one-mu)*d2b_d2cos2(1) + (mu**2)*d2c_d2cos2(1)
774 d2f2_d2cos2 = ((one-mu)**2)*d2a_d2cos2(2) + two*mu*(one-mu)*d2b_d2cos2(2) + (mu**2)*d2c_d2cos2(2)
780 d2phi_d2(1,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig1
782 d2phi_d2(1,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig2
784 d2phi_d2(1,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
785 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
786 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
790 d2phi_d2(2,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2*dmu_dsig1
792 d2phi_d2(2,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2*dmu_dsig2
794 d2phi_d2(2,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
795 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
796 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
800 d2phi_d2(3,1) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
801 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
802 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
804 d2phi_d2(3,2) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
805 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
806 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
808 d2phi_d2(3,3) = (-one/denom)*(df2_dmu*(d2f1_d2cos2 + two*d2f1_d2mucos2*dmu_dcos2
809 . - df1_dmu*(d2f2_d2cos2 + two*d2f2_d2mucos2*dmu_dcos2 + d2f2_d2mu*(dmu_dcos2**2))
810 . + two*(df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dcos2)
813 t(1,1) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2
814 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
815 t(1,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig2 - dphi_dsig1) +
816 . dphi_dcos2*(three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
817 t(1,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig2 - dphi_dsig1) +
818 . dphi_dcos2*(one/(f1-f2)**2)*(four*sin(two*thet)*(cos(two*thet))**2 -
819 . two*(sin(two*thet)**3))
821 t(2,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
822 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
823 t(2,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig1-dphi_dsig2) +
824 . dphi_dcos2*(one/(f1-f2)**2)*(-four*sin(two*thet)*(cos(two*thet))**2 +
825 . two*(sin(two*thet)**3))
828 t(3,3) = (two/(f1-f2))*((cos(two*thet))**2)*(dphi_dsig1-dphi_dsig2)+
829 . dphi_dcos2*(one/(f1-f2)**2)*(eight*(sin(two*thet)**2)*cos(two*thet) -
830 . four*(cos(two*thet)**3))
833 d(1,1) = half*(one+cos(two*thet))
834 d(1,2) = half*(one-cos(two*thet))
835 d(1,3) = sin(two*thet)
836 d(2,1) = half*(one-cos(two*thet))
837 d(2,2) = half*(one+cos(two*thet))
838 d(2,3) = -sin(two*thet)
839 d(3,1) = (sin(two*thet)**2)/(f1-f2)
840 d(3,2) = -(sin(two*thet)**2)/(f1-f2)
841 d(3,3) = -(two*sin(two*thet)*cos(two*thet))/(f1-f2)
844 d2phi_d2 = matmul(d2phi_d2,d)
845 d2phi_d2 = matmul(transpose(d),d2phi_d2)
846 d2phi_d2(1:3,1:3) = d2phi_d2(1:3,1:3) + t(1:3,1:3)
854#ifndef WITHOUT_LINALG
855 CALL dgeev(
'N',
'N',3,d2phi_d2,3,wr,wi,vl,3,vr,3,work,102,info)
857 WRITE(6,*)
"Error: Blas/Lapack required for MAT110"
861 IF (minval(wr)<mineig)
THEN
864 mineigthet = thet*(180.0d0/pi)
870 thet = thet + (pi/two)/60.0d0
874 IF (mineig<-tol)
THEN
875 CALL ancmsg(msgid=1803,msgtype=msgerror,
876 . anmode=aninfo_blind_1,i1=mat_id,c1=titr,
877 . r1=mineig,r2=mineigmu,r3=mineigthet)
910 d2a_d2cos2(1:2) = zero
911 d2b_d2cos2(1:2) = zero
912 d2c_d2cos2(1:2) = zero
917 a1 = a1 + q_fun(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
918 a2 = a2 + q_fun(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
919 b1 = b1 + q_hiun(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
920 b2 = b2 + q_hiun(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
921 c1 = c1 + q_fps(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
922 c2 = c2 + q_fps(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
930 da_dcos2(1:2) = da_dcos2(1:2) + q_fun(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
931 db_dcos2(1:2) = db_dcos2(1:2) + q_hiun(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
932 dc_dcos2(1:2) = dc_dcos2(1:2) + q_fps(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
939 d2a_d2cos2(1:2) = d2a_d2cos2(1:2) + q_fun(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
940 d2b_d2cos2(1:2) = d2b_d2cos2(1:2) + q_hiun(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
941 d2c_d2cos2(1:2) = d2c_d2cos2(1:2) + q_fps(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
953 f1 = ((one-mu)**2)*a1 + two*mu*(one-mu)*b1 + (mu**2)*c1
954 f2 = ((one-mu)**2)*a2 + two*mu*(one-mu)*b2 + (mu**2)*c2
956 df1_dmu = -two*(one-mu)*a1 + two*(one-two*mu)*b1 + two*mu*c1
957 df2_dmu = -two*(one-mu)*a2 + two*(one-two*mu)*b2 + two*mu*c2
959 d2f1_d2mu = two*(a1+c1-two*b1)
960 d2f2_d2mu = two*(a2+c2-two*b2)
962 denom = f1*df2_dmu - f2*df1_dmu
965 dphi_dsig1 = df2_dmu/denom
966 dphi_dsig2 = -df1_dmu/denom
968 dmu_dsig1 = -f2/denom
972 df1_dcos2 = ((one-mu)**2)*da_dcos2(1) + two*mu*(one-mu)*db_dcos2(1) + (mu**2)*dc_dcos2(1)
973 df2_dcos2 = ((one-mu)**2)*da_dcos2(2) + two*mu*(one-mu)*db_dcos2(2) + (mu**2)*dc_dcos2(2)
974 dphi_dcos2 = (df2_dcos2*df1_dmu - df1_dcos2*df2_dmu)/denom
975 dmu_dcos2 = (f2*df1_dcos2 - f1*df2_dcos2)/denom
978 d2f1_d2mucos2 = -two*(one-mu)*da_dcos2(1) + two*(one-two*mu)*db_dcos2(1) + two*mu*dc_dcos2(1)
979 d2f2_d2mucos2 = -two*(one-mu)*da_dcos2(2) + two*(one-two*mu)*db_dcos2(2) + two
980 d2f1_d2cos2 = ((one-mu)**2)*d2a_d2cos2(1) + two*mu*(one-mu)*d2b_d2cos2(1) + (mu**2)*d2c_d2cos2(1)
981 d2f2_d2cos2 = ((one-mu)**2)*d2a_d2cos2(2) + two*mu*(one-mu)*d2b_d2cos2(2) + (mu**2)*d2c_d2cos2(2)
987 d2phi_d2(1,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig1
989 d2phi_d2(1,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig2
991 d2phi_d2(1,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
992 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2
993 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2
997 d2phi_d2(2,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2*dmu_dsig1
999 d2phi_d2(2,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2
1001 d2phi_d2(2,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1002 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
1003 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
1007 d2phi_d2(3,1) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu
1008 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
1009 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
1011 d2phi_d2(3,2) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1012 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
1013 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
1015 d2phi_d2(3,3) = (-one/denom)*(df2_dmu*(d2f1_d2cos2 + two*d2f1_d2mucos2*dmu_dcos2 + d2f1_d2mu*(dmu_dcos2**2))
1016 . - df1_dmu*(d2f2_d2cos2 + two*d2f2_d2mucos2*dmu_dcos2 + d2f2_d2mu
1017 . + two*(df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dcos2)
1020 t(1,1) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
1021 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1022 t(1,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig2 - dphi_dsig1) +
1023 . dphi_dcos2*(three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1024 t(1,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig2 - dphi_dsig1) +
1025 . dphi_dcos2*(one/(f1-f2)**2)*(four*sin(two*thet)*(cos(two*thet))**2 -
1026 . two*(sin(two*thet)**3))
1028 t(2,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
1029 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1030 t(2,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig1-dphi_dsig2) +
1031 . dphi_dcos2*(one/(f1-f2)**2)*(-four*sin(two*thet)*(cos(two*thet))**2 +
1032 . two*(sin(two*thet)**3))
1035 t(3,3) = (two/(f1-f2))*((cos(two*thet))**2)*(dphi_dsig1-dphi_dsig2)+
1036 . dphi_dcos2*(one/(f1-f2)**2)*(eight*(sin(two*thet)**2)*cos(two*thet) -
1037 . four*(cos(two*thet)**3))
1040 d(1,1) = half*(one+cos(two*thet))
1041 d(1,2) = half*(one-cos(two*thet))
1042 d(1,3) = sin(two*thet)
1043 d(2,1) = half*(one-cos(two*thet))
1044 d(2,2) = half*(one+cos(two*thet))
1045 d(2,3) = -sin(two*thet)
1046 d(3,1) = (sin(two*thet)**2)/(f1-f2)
1047 d(3,2) = -(sin(two*thet)**2)/(f1-f2)
1048 d(3,3) = -(two*sin(two*thet)*cos(two*thet))/(f1-f2)
1051 d2phi_d2 = matmul(d2phi_d2,d)
1052 d2phi_d2 = matmul(transpose(d),d2phi_d2)
1053 d2phi_d2(1:3,1:3) = d2phi_d2(1:3,1:3) + t(1:3,1:3)
1064#ifndef WITHOUT_LINALG
1065 CALL dgeev(
'N',
'N',3,d2phi_d2,3,wr,wi,vl,3,vr,3,work,102,info)
1067 WRITE(6,*)
"Error: Blas/Lapack required for MAT110"
1071 IF (minval(wr)<mineig)
THEN
1074 mineigthet = thet*(180.0d0/pi)
1077 mu = mu + one/twenty
1080 thet = thet + (pi/two)/60.0d0
1084 IF (mineig<-tol)
THEN
1085 CALL ancmsg(msgid=1804,msgtype=msgerror,
1086 . anmode=aninfo_blind_1,i1=mat_id,c1=titr,
1087 . r1=mineig,r2=mineigmu,r3=mineigthet)
1116 da_dcos2(1:2) = zero
1117 db_dcos2(1:2) = zero
1118 dc_dcos2(1:2) = zero
1120 d2a_d2cos2(1:2) = zero
1121 d2b_d2cos2(1:2) = zero
1122 d2c_d2cos2(1:2) = zero
1127 a1 = a1 + q_fps(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
1128 a2 = a2 + q_fps(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
1129 b1 = b1 + q_hips(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
1130 b2 = b2 + q_hips(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
1134 IF (nangle > 1)
THEN
1138 da_dcos2(1:2) = da_dcos2(1:2) + q_fps(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
1139 db_dcos2(1:2) = db_dcos2(1:2) + q_hips(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
1143 IF (nangle > 2)
THEN
1146 d2a_d2cos2(1:2) = d2a_d2cos2(1:2) + q_fps(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
1147 d2b_d2cos2(1:2) = d2b_d2cos2(1:2) + q_hips(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
1153 !----------------------------------------------
1159 f1 = ((one-mu)**2)*a1 + two*mu*(one-mu)*b1 + (mu**2)*c1
1160 f2 = ((one-mu)**2)*a2 + two*mu*(one-mu)*b2 + (mu**2)*c2
1162 df1_dmu = -two*(one-mu)*a1 + two*(one-two*mu)*b1 + two*mu*c1
1163 df2_dmu = -two*(one-mu)*a2 + two*(one-two*mu)*b2 + two*mu*c2
1165 d2f1_d2mu = two*(a1+c1-two*b1)
1166 d2f2_d2mu = two*(a2+c2-two*b2)
1168 denom = f1*df2_dmu - f2*df1_dmu
1169 denom = sign(
max(abs(denom),em20),denom)
1171 dphi_dsig1 = df2_dmu/denom
1172 dphi_dsig2 = -df1_dmu/denom
1174 dmu_dsig1 = -f2/denom
1175 dmu_dsig2 = f1/denom
1178 df1_dcos2 = ((one-mu)**2)*da_dcos2(1) + two*mu*(one-mu)*db_dcos2(1) + (mu**2)*dc_dcos2(1)
1179 df2_dcos2 = ((one-mu)**2)*da_dcos2(2) + two*mu*(one-mu)*db_dcos2(2) + (mu**2)*dc_dcos2(2)
1180 dphi_dcos2 = (df2_dcos2*df1_dmu - df1_dcos2*df2_dmu)/denom
1181 dmu_dcos2 = (f2*df1_dcos2 - f1*df2_dcos2)/denom
1184 d2f1_d2mucos2 = -two*(one-mu)*da_dcos2(1) + two*(one-two*mu)*db_dcos2(1) + two*mu*dc_dcos2(1)
1185 d2f2_d2mucos2 = -two*(one-mu)*da_dcos2(2) + two*(one-two*mu)*db_dcos2(2) + two*mu*dc_dcos2(2)
1186 d2f1_d2cos2 = ((one-mu)**2)*d2a_d2cos2(1) + two*mu*(one-mu)*d2b_d2cos2(1) + (mu**2)*d2c_d2cos2(1)
1187 d2f2_d2cos2 = ((one-mu)**2)*d2a_d2cos2(2) + two*mu*(one-mu)*d2b_d2cos2(
1193 d2phi_d2(1,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig1
1195 d2phi_d2(1,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig2
1197 d2phi_d2(1,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1198 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
1199 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
1203 d2phi_d2(2,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2*dmu_dsig1
1205 d2phi_d2(2,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2*dmu_dsig2
1207 d2phi_d2(2,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1208 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
1209 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
1213 d2phi_d2(3,1) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1214 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
1215 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
1217 d2phi_d2(3,2) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1218 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
1219 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
1221 d2phi_d2(3,3) = (-one/denom)*(df2_dmu*(d2f1_d2cos2 + two*d2f1_d2mucos2*dmu_dcos2 + d2f1_d2mu*(dmu_dcos2**2))
1222 . - df1_dmu*(d2f2_d2cos2 + two*d2f2_d2mucos2*dmu_dcos2 + d2f2_d2mu*(dmu_dcos2**2))
1223 . + two*(df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dcos2)
1226 t(1,1) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
1227 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1228 t(1,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig2 - dphi_dsig1) +
1229 . dphi_dcos2*(three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1230 t(1,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig2 - dphi_dsig1) +
1231 . dphi_dcos2*(one/(f1-f2)**2)*(four*sin(two*thet)*(cos(two*thet))**2 -
1232 . two*(sin(two*thet)**3))
1234 t(2,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
1235 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1236 t(2,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig1-dphi_dsig2) +
1237 . dphi_dcos2*(one/(f1-f2)**2)*(-four*sin(two*thet)*(cos(two*thet))**2 +
1238 . two*(sin(two*thet)**3))
1241 t(3,3) = (two/(f1-f2))*((cos(two*thet))**2)*(dphi_dsig1-dphi_dsig2)+
1242 . dphi_dcos2*(one/(f1-f2)**2)*(eight*(sin(two*thet)**2)*cos(two*thet) -
1243 . four*(cos(two*thet)**3))
1246 d(1,1) = half*(one+cos(two*thet))
1247 d(1,2) = half*(one-cos(two*thet))
1248 d(1,3) = sin(two*thet)
1249 d(2,1) = half*(one-cos(two*thet))
1250 d(2,2) = half*(one+cos(two*thet))
1251 d(2,3) = -sin(two*thet)
1252 d(3,1) = (sin(two*thet)**2)/(f1-f2)
1253 d(3,2) = -(sin(two*thet)**2)/(f1-f2)
1254 d(3,3) = -(two*sin(two*thet)*cos(two*thet))/(f1-f2)
1257 d2phi_d2 = matmul(d2phi_d2,d)
1258 d2phi_d2 = matmul(transpose(d),d2phi_d2)
1259 d2phi_d2(1:3,1:3) = d2phi_d2
1267#ifndef WITHOUT_LINALG
1268 CALL dgeev(
'N',
'N',3,d2phi_d2,3,wr,wi,vl,3,vr,3,work,102,info)
1270 WRITE(6,*)
"Error: Blas/Lapack required for MAT110"
1274 IF (minval(wr)<mineig)
THEN
1277 mineigthet = thet*(180.0d0/pi)
1281 mu = mu + one/twenty
1284 thet = thet + (pi/two)/60.0d0
1288 IF (mineig<-tol)
THEN
1289 CALL ancmsg(msgid=1805,msgtype=msgerror,
1290 . anmode=aninfo_blind_1,i1=mat_id,c1=titr,
1291 . r1=mineig,r2=mineigmu,r3=mineigthet)
1324 da_dcos2(1:2) = zero
1325 db_dcos2(1:2) = zero
1326 dc_dcos2(1:2) = zero
1327 dweight_dcos2 = zero
1329 d2a_d2cos2(1:2) = zero
1330 d2b_d2cos2(1:2) = zero
1331 d2c_d2cos2(1:2) = zero
1332 d2weight_d2cos2 = zero
1337 b1 = b1 + q_hish(i,1)*cos2(k,i)*(cos
1338 b2 = b2 + q_hish(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
1339 c1 = c1 + q_fun(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
1340 c2 = c2 + q_fun(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
1341 weight = weight + q_wsh(i)*cos2(k,i)*(cos(two*thet))**(k-1)
1347 IF (nangle > 1)
THEN
1351 db_dcos2(1:2) = db_dcos2(1:2) + q_hish(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
1352 dc_dcos2(1:2) = dc_dcos2(1:2) + q_fun
1353 dweight_dcos2 = dweight_dcos2 + q_wsh(i)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
1356 da_dcos2(1) = dc_dcos2(2)
1357 da_dcos2(2) = -dc_dcos2(1)
1359 IF (nangle > 2)
THEN
1362 d2b_d2cos2(1:2) = d2b_d2cos2(1:2) + q_hish(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
1363 d2c_d2cos2(1:2) = d2c_d2cos2(1:2) + q_fun(i,1:2
1364 d2weight_d2cos2 = d2weight_d2cos2 + q_wsh(i)*(k-1)*(k-2)*cos2(k,i)*(cos
1367 d2a_d2cos2(1) = d2c_d2cos2(2)
1368 d2a_d2cos2(2) = -d2c_d2cos2(1)
1378 f1 = ((one-mu)**2)*a1 + two*mu*weight*(one-mu)*b1 + (mu**2)*c1
1379 f1 = f1/(((one-mu)**2) + two*mu*weight*(one-mu) + (mu**2))
1380 f2 = ((one-mu)**2)*a2 + two*mu*weight*(one-mu)*b2 + (mu**2)*c2
1381 f2 = f2/(((one-mu)**2) + two*mu*weight*(one-mu) + (mu**2))
1383 u = a1*((one - mu)**2) + two*b1*mu*weight*(one-mu) + c1*(mu**2)
1384 uprim = -two*(one-mu)*a1 + two*weight*b1*(one-two*mu) + two*mu*c1
1385 upprim = two*a1 - four*weight*b1 + two*c1
1386 v = (one-mu)**2 + two*weight*mu*(one-mu) + mu**2
1387 vprim = -two*(one-mu) + two*weight*(one-two*mu) + two*mu
1388 vpprim = two - four*weight + two
1389 df1_dmu = (uprim*v - u*vprim)/
max((v**2),em20)
1390 d2f1_d2mu = ((upprim*v - u*vpprim)*(v**2) -
1391 . (uprim*v - u*vprim)*(two*v*vprim))/
max((v**4),em20)
1392 u = a2*((one - mu)**2) + two*b2*mu*weight*(one-mu) + c2*(mu**2)
1393 uprim = -two*(one-mu)*a2 + two*weight*b2*(one-two*mu) + two*mu*c2
1394 upprim = two*a2 - four*weight*b2 + two*c2
1395 df2_dmu = (uprim*v - u*vprim)/
max((v**2),em20)
1396 d2f2_d2mu = ((upprim*v - u*vpprim)*(v**2) -
1397 . (uprim*v - u*vprim)*(two*v*vprim))/
max((v**4),em20)
1399 denom = f1*df2_dmu - f2*df1_dmu
1400 denom = sign(
max(abs(denom),em20),denom)
1402 dphi_dsig1 = df2_dmu/denom
1403 dphi_dsig2 = -df1_dmu/denom
1405 dmu_dsig1 = -f2/denom
1406 dmu_dsig2 = f1/denom
1409 u = a1*((one - mu)**2) + two*b1*mu*weight*(one-mu) + c1*(mu**2)
1410 uprim = da_dcos2(1)*((one - mu)**2) + two*mu*(one-mu)*(dweight_dcos2*b1+
1411 . weight*db_dcos2(1)) + dc_dcos2(1)*(mu**2)
1412 upprim = d2a_d2cos2(1)*((one - mu)**2) + two*mu*(one-mu)*(d2weight_d2cos2*b1+
1413 . two*dweight_dcos2*db_dcos2(1) + weight*d2b_d2cos2(1)) +
1414 . d2c_d2cos2(1)*(mu**2)
1415 du_dmu = -two*(one-mu)*a1 + two*weight*b1*(one-two*mu) + two*mu*c1
1416 duprim_dmu = -two*(one-mu)*da_dcos2(1) + two*(one-two*mu)*(dweight_dcos2*b1+
1417 . weight*db_dcos2(1)) + two*mu*dc_dcos2(1)
1418 v = (one-mu)**2 + two*weight*mu*(one-mu) + mu**2
1419 dv_dmu = -two*(one-mu) + two*weight*(one-two*mu) + two*mu
1420 vprim = two*mu*(one-mu)*dweight_dcos2
1421 dvprim_dmu = two*(one-two*mu)*dweight_dcos2
1422 vpprim = two*mu*(one-mu)*d2weight_d2cos2
1423 df1_dcos2 = (uprim*v - u*vprim)/
max((v**2),em20)
1424 d2f1_d2cos2 = ((upprim*v - u*vpprim)*(v**2) -
1425 . (uprim*v - u*vprim)*(two*v*vprim))/
max((v**4),em20)
1426 d2f1_d2mucos2 = ((duprim_dmu*v + uprim*dv_dmu - du_dmu*vprim - u*dvprim_dmu)*(v**2) -
1427 . (uprim*v - u*vprim)*(two*v*dv_dmu))/
max((v**4),em20)
1429 u = a2*((one - mu)**2) + two*b2*mu*weight*(one-mu) + c2*(mu**2)
1430 uprim = da_dcos2(2)*((one - mu)**2) + two*mu*(one-mu)*(dweight_dcos2*b2+
1431 . weight*db_dcos2(2)) + dc_dcos2(2)*(mu**2)
1432 upprim = d2a_d2cos2(2)*((one - mu)**2) + two*mu*(one-mu)*(d2weight_d2cos2*b2+
1433 . two*dweight_dcos2*db_dcos2(2) + weight*d2b_d2cos2(2)) +
1434 . d2c_d2cos2(2)*(mu**2)
1435 du_dmu = -two*(one-mu)*a2 + two*weight*b2*(one-two*mu) + two*mu*c2
1436 duprim_dmu = -two*(one-mu)*da_dcos2(2) + two*(one-two*mu)*(dweight_dcos2*b2+
1437 . weight*db_dcos2(2)) + two*mu*dc_dcos2(2)
1438 df2_dcos2 = (uprim*v - u*vprim)/
max((v**2),em20)
1439 d2f2_d2cos2 = ((upprim*v - u*vpprim)*(v**2) -
1440 . (uprim*v - u*vprim)*(two*v*vprim))/
max((v**4),em20)
1441 d2f2_d2mucos2 = ((duprim_dmu*v + uprim*dv_dmu - du_dmu*vprim - u*dvprim_dmu)*(v**2) -
1442 . (uprim*v - u*vprim)*(two*v*dv_dmu))/
max((v**4),em20)
1444 dphi_dcos2 = (df2_dcos2*df1_dmu - df1_dcos2*df2_dmu)/denom
1445 dmu_dcos2 = (f2*df1_dcos2 - f1*df2_dcos2)/denom
1451 d2phi_d2(1,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig1
1453 d2phi_d2(1,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig2
1455 d2phi_d2(1,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1456 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
1457 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
1461 d2phi_d2(2,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2*dmu_dsig1
1463 d2phi_d2(2,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2*dmu_dsig2
1465 d2phi_d2(2,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2
1466 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2
1467 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
1471 d2phi_d2(3,1) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1472 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
1473 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
1475 d2phi_d2(3,2) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1476 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
1477 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
1479 d2phi_d2(3,3) = (-one/denom)*(df2_dmu*(d2f1_d2cos2 + two*d2f1_d2mucos2*dmu_dcos2 + d2f1_d2mu*(dmu_dcos2**2))
1480 . - df1_dmu*(d2f2_d2cos2 + two*d2f2_d2mucos2*dmu_dcos2 + d2f2_d2mu*(dmu_dcos2**2))
1481 . + two*(df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dcos2)
1484 t(1,1) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
1485 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1486 t(1,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig2 - dphi_dsig1) +
1487 . dphi_dcos2*(three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1488 t(1,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig2 - dphi_dsig1) +
1489 . dphi_dcos2*(one/(f1-f2)**2)*(four*sin(two*thet)*(cos(two*thet))**2 -
1490 . two*(sin(two*thet)**3))
1492 t(2,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
1493 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1494 t(2,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig1-dphi_dsig2) +
1495 . dphi_dcos2*(one/(f1-f2)**2)*(-four*sin(two*thet)*(cos(two*thet))**2 +
1496 . two*(sin(two*thet)**3))
1499 t(3,3) = (two/(f1-f2))*((cos(two*thet))**2)*(dphi_dsig1-dphi_dsig2)+
1500 . dphi_dcos2*(one/(f1-f2)**2)*(eight*(sin(two*thet)**2)*cos(two*thet) -
1501 . four*(cos(two*thet)**3))
1504 d(1,1) = half*(one+cos(two*thet))
1505 d(1,2) = half*(one-cos(two*thet))
1506 d(1,3) = sin(two*thet)
1507 d(2,1) = half*(one-cos(two*thet))
1508 d(2,2) = half*(one+cos(two*thet))
1509 d(2,3) = -sin(two*thet)
1510 d(3,1) = (sin(two*thet)**2)/(f1-f2)
1511 d(3,2) = -(sin(two*thet)**2)/(f1-f2)
1512 d(3,3) = -(two*sin(two*thet)*cos(two*thet))/(f1-f2)
1515 d2phi_d2 = matmul(d2phi_d2,d)
1516 d2phi_d2 = matmul(transpose(d),d2phi_d2)
1517 d2phi_d2(1:3,1:3) = d2phi_d2(1:3,1:3) + t(1:3,1:3)
1525#ifndef WITHOUT_LINALG
1526 CALL dgeev(
'N',
'N',3,d2phi_d2,3,wr,wi,vl,3,vr,3,work,102,info)
1529 WRITE(6,*)
"Error: Blas/Lapack required for MAT110"
1533 IF (minval(wr)<mineig)
THEN
1536 mineigthet = thet*(180.0d0/pi)
1539 mu = mu + one/twenty
1542 thet = thet + (pi/two)/60.0d0
1546 IF (mineig<-tol)
THEN
1547 CALL ancmsg(msgid=1806,msgtype=msgerror,
1548 . anmode=aninfo_blind_1,i1=mat_id,c1=titr,
1549 . r1=mineig,r2=mineigmu,r3=mineigthet)
1553 ! 2. checking convexity between uniaxial tension and equi-biaxial points
1579 da_dcos2(1:2) = zero
1580 db_dcos2(1:2) = zero
1581 dc_dcos2(1:2) = zero
1582 dweight_dcos2 = zero
1584 d2a_d2cos2(1:2) = zero
1585 d2b_d2cos2(1:2) = zero
1586 d2c_d2cos2(1:2) = zero
1587 d2weight_d2cos2 = zero
1592 a1 = a1 + q_fun(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
1593 a2 = a2 + q_fun(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
1594 b1 = b1 + q_hips(i,1)*cos2(k,i)*(cos(two*thet))**(k-1)
1595 b2 = b2 + q_hips(i,2)*cos2(k,i)*(cos(two*thet))**(k-1)
1596 weight = weight + q_wps(i)*cos2(k,i)*(cos(two*thet))**(k-1)
1602 IF (nangle > 1)
THEN
1606 da_dcos2(1:2) = da_dcos2(1:2) + q_fun(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
1607 db_dcos2(1:2) = db_dcos2(1:2) + q_hips(i,1:2)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
1608 dweight_dcos2 = dweight_dcos2 + q_wps(i)*(k-1)*cos2(k,i)*(cos(two*thet))**(k-2)
1612 IF (nangle > 2)
THEN
1615 d2a_d2cos2(1:2) = d2a_d2cos2(1:2) + q_fun(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
1616 d2b_d2cos2(1:2) = d2b_d2cos2(1:2) + q_hips(i,1:2)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
1617 d2weight_d2cos2 = d2weight_d2cos2 + q_wps(i)*(k-1)*(k-2)*cos2(k,i)*(cos(two*thet))**(k-3)
1629 f1 = ((one-mu)**2)*a1 + two*mu*weight*(one-mu)*b1 + (mu**2)*c1
1630 f1 = f1/(((one-mu)**2) + two*mu*weight*(one-mu) + (mu**2))
1631 f2 = ((one-mu)**2)*a2 + two*mu*weight*(one-mu)*b2 + (mu**2)*c2
1632 f2 = f2/(((one-mu)**2) + two*mu*weight*(one-mu) + (mu**2))
1634 u = a1*((one - mu)**2) + two*b1*mu*weight*(one-mu) + c1*(mu**2)
1635 uprim = -two*(one-mu)*a1 + two*weight*b1*(one-two*mu) + two*mu*c1
1636 upprim = two*a1 - four*weight*b1 + two
1637 v = (one-mu)**2 + two*weight*mu*(one-mu) + mu**2
1638 vprim = -two*(one-mu) + two*weight*(one-two*mu) + two*mu
1639 vpprim = two - four*weight + two
1640 df1_dmu = (uprim*v - u*vprim)/
max((v**2),em20)
1641 d2f1_d2mu = ((upprim*v - u*vpprim)*(v**2) -
1642 . (uprim*v - u*vprim)*(two*v*vprim))/
max((v**4),em20)
1643 u = a2*((one - mu)**2) + two*b2*mu*weight*(one-mu) + c2*(mu**2)
1644 uprim = -two*(one-mu)*a2 + two*weight*b2*(one-two*mu) + two*mu*c2
1645 upprim = two*a2 - four*weight*b2 + two*c2
1646 df2_dmu = (uprim*v - u*vprim)/
max((v**2),em20)
1647 d2f2_d2mu = ((upprim*v - u*vpprim)*(v**2) -
1648 . (uprim*v - u*vprim)*(two*v*vprim))/
max((v**4),em20)
1650 denom = f1*df2_dmu - f2*df1_dmu
1651 denom = sign(
max(abs(denom),em20),denom)
1653 dphi_dsig1 = df2_dmu/denom
1654 dphi_dsig2 = -df1_dmu/denom
1656 dmu_dsig1 = -f2/denom
1657 dmu_dsig2 = f1/denom
1660 u = a1*((one - mu)**2) + two*b1*mu*weight*(one-mu) + c1*(mu**2)
1661 uprim = da_dcos2(1)*((one - mu)**2) + two*mu*(one-mu)*(dweight_dcos2*b1+
1662 . weight*db_dcos2(1)) + dc_dcos2(1)*(mu**2)
1663 upprim = d2a_d2cos2(1)*((one - mu)**2) + two*mu*(one-mu)*(d2weight_d2cos2*b1+
1664 . two*dweight_dcos2*db_dcos2(1) + weight*d2b_d2cos2(1)) +
1665 . d2c_d2cos2(1)*(mu**2)
1666 du_dmu = -two*(one-mu)*a1 + two*weight*b1*(one-two*mu) + two*mu*c1
1667 duprim_dmu = -two*(one-mu)*da_dcos2(1) + two*(one-two*mu)*(dweight_dcos2*b1+
1668 . weight*db_dcos2(1)) + two*mu*dc_dcos2(1)
1669 v = (one-mu)**2 + two*weight*mu*(one-mu) + mu**2
1670 dv_dmu = -two*(one-mu) + two*weight*(one-two
1671 vprim = two*mu*(one-mu)*dweight_dcos2
1672 dvprim_dmu = two*(one-two*mu)*dweight_dcos2
1673 vpprim = two*mu*(one-mu)*d2weight_d2cos2
1674 df1_dcos2 = (uprim*v - u*vprim)/
max((v**2),em20)
1675 d2f1_d2cos2 = ((upprim*v - u*vpprim)*(v**2) -
1676 . (uprim*v - u*vprim)*(two*v*vprim))/
max((v**4),em20)
1677 d2f1_d2mucos2 = ((duprim_dmu*v + uprim*dv_dmu - du_dmu*vprim - u*dvprim_dmu)*(v**2) -
1678 . (uprim*v - u*vprim)*(two*v*dv_dmu))/
max((v**4),em20)
1680 u = a2*((one - mu)**2) + two*b2*mu*weight*(one-mu) + c2*(mu**2)
1681 uprim = da_dcos2(2)*((one - mu)**2) + two*mu*(one-mu)*(dweight_dcos2*b2+
1682 . weight*db_dcos2(2)) + dc_dcos2(2)*(mu**2)
1683 upprim = d2a_d2cos2(2)*((one - mu)**2) + two
1685 . d2c_d2cos2(2)*(mu**2)
1686 du_dmu = -two*(one-mu)*a2 + two*weight*b2*(one-two*mu) + two*mu*c2
1687 duprim_dmu = -two*(one-mu)*da_dcos2(2) + two*(one-two*mu)*(dweight_dcos2*b2+
1688 . weight*db_dcos2(2)) + two*mu*dc_dcos2(2)
1689 df2_dcos2 = (uprim*v - u*vprim)/
max((v**2),em20)
1690 d2f2_d2cos2 = ((upprim*v - u*vpprim)*(v**2) -
1691 . (uprim*v - u*vprim)*(two*v*vprim))/
max((v**4),em20)
1692 d2f2_d2mucos2 = ((duprim_dmu*v + uprim*dv_dmu - du_dmu*vprim - u*dvprim_dmu)*(v**2) -
1693 . (uprim*v - u*vprim)*(two*v*dv_dmu))/
max((v**4),em20)
1695 dphi_dcos2 = (df2_dcos2*df1_dmu - df1_dcos2*df2_dmu)/denom
1696 dmu_dcos2 = (f2*df1_dcos2 - f1*df2_dcos2)/denom
1702 d2phi_d2(1,1) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig1
1704 d2phi_d2(1,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig1*dmu_dsig2
1706 d2phi_d2(1,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1707 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
1708 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
1712 d2phi_d2(2,1) = (-one/denom)*(df2_dmu
1714 d2phi_d2(2,2) = (-one/denom)*(df2_dmu*d2f1_d2mu-df1_dmu*d2f2_d2mu)*dmu_dsig2*dmu_dsig2
1716 d2phi_d2(2,3) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1717 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
1718 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
1722 d2phi_d2(3,1) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1723 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig1
1724 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig1)
1726 d2phi_d2(3,2) = (-one/denom)*((df2_dmu*(d2f1_d2mucos2+d2f1_d2mu*dmu_dcos2) -
1727 . df1_dmu*(d2f2_d2mucos2+d2f2_d2mu*dmu_dcos2))*dmu_dsig2
1728 . + (df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dsig2)
1730 d2phi_d2(3,3) = (-one/denom)*(df2_dmu*(d2f1_d2cos2 + two*d2f1_d2mucos2*dmu_dcos2 + d2f1_d2mu*(dmu_dcos2**2))
1731 . - df1_dmu*(d2f2_d2cos2 + two*d2f2_d2mucos2*dmu_dcos2 + d2f2_d2mu*(dmu_dcos2**2))
1732 . + two*(df2_dmu*df1_dcos2 - df1_dmu*df2_dcos2)*dphi_dcos2)
1735 t(1,1) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
1736 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1737 t(1,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig2 - dphi_dsig1) +
1738 . dphi_dcos2*(three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1739 t(1,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig2 - dphi_dsig1) +
1740 . dphi_dcos2*(one/(f1-f2)**2)*(four*sin(two*thet)*(cos(two*thet))**2 -
1741 . two*(sin(two*thet)**3))
1743 t(2,2) = (half/(f1-f2))*((sin(two*thet))**2)*(dphi_dsig1-dphi_dsig2) +
1744 . dphi_dcos2*(-three/(f1-f2)**2)*cos(two*thet)*(sin(two*thet))**2
1745 t(2,3) = (one/(f1-f2))*(sin(two*thet)*cos(two*thet))*(dphi_dsig1-dphi_dsig2
1746 . dphi_dcos2*(one/(f1-f2)**2)*(-four*sin(two
1747 . two*(sin(two*thet)**3))
1750 t(3,3) = (two/(f1-f2))*((cos(two*thet))**2)*(dphi_dsig1-dphi_dsig2)+
1751 . dphi_dcos2*(one/(f1-f2)**2)*(eight*(sin(two*thet)**2)*cos(two*thet) -
1752 . four*(cos(two*thet)**3))
1755 d(1,1) = half*(one+cos(two*thet))
1756 d(1,2) = half*(one-cos(two*thet))
1757 d(1,3) = sin(two*thet)
1758 d(2,1) = half*(one-cos(two*thet))
1759 d(2,2) = half*(one+cos(two*thet))
1760 d(2,3) = -sin(two*thet)
1761 d(3,1) = (sin(two*thet)**2)/(f1-f2)
1762 d(3,2) = -(sin(two*thet)**2)/(f1-f2)
1763 d(3,3) = -(two*sin(two*thet)*cos(two*thet))/(f1-f2)
1766 d2phi_d2 = matmul(d2phi_d2,d)
1767 d2phi_d2 = matmul(transpose(d),d2phi_d2)
1768 d2phi_d2(1:3,1:3) = d2phi_d2(1:3,1:3) + t(1:3,1:3)
1776#ifndef WITHOUT_LINALG
1777 CALL dgeev(
'N',
'N',3,d2phi_d2,3,wr,wi,vl,3,vr,3,work,102,info)
1779 WRITE(6,*)
"Error: Blas/Lapack required for MAT110"
1784 IF (minval(wr)<mineig)
THEN
1787 mineigthet = thet*(180.0d0/pi)
1790 mu = mu + one/twenty
1793 thet = thet + (pi/two)/60.0d0
1797 IF (mineig<-tol)
THEN
1798 CALL ancmsg(msgid=1807,msgtype=msgerror,
1799 . anmode=aninfo_blind_1,i1=mat_id,c1=titr,
1800 . r1=mineig,r2=mineigmu,r3=mineigthet)
1810 IF ((icrit == 1).OR.(icrit == 2).OR.(icrit == 3))
THEN
1811 nuparam = nuparam + 17*nangle
1813 nuparam = nuparam + 11*nangle
1816 IF (tab_yld > 0)
THEN
1820 IF (tab_temp > 0)
THEN
1822 itable(2) = tab_temp
1840 uparam(5) = nu/(one-nu)
1849 uparam(14) = sigstar
1854 IF (xscale /= zero)
THEN
1855 uparam(19) = one/xscale
1860 uparam(21) = fisokin
1867 uparam(28) = ismooth
1869 IF ((icrit == 1).OR.(icrit == 2).OR.(icrit == 3))
THEN
1871 uparam(30+17*(j-1)) = hips(j,1)
1872 uparam(31+17*(j-1)) = hips(j,2)
1873 uparam(32+17*(j-1)) = hiun(j,1)
1874 uparam(33+17*(j-1)) = hiun(j,2)
1875 uparam(34+17*(j-1)) = hish(j,1)
1876 uparam(35+17*(j-1)) = hish(j,2)
1877 uparam(36+17*(j-1)) = q_fsh(j,1)
1878 uparam(37+17*(j-1)) = q_fsh(j,2)
1879 uparam(38+17*(j-1)) = q_fun(j,1)
1880 uparam(39+17*(j-1)) = q_fps(j,1)
1881 uparam(40+17*(j-1)) = q_fps(j,2)
1882 uparam(41+17*(j-1)) = q_hish(j,1)
1883 uparam(42+17*(j-1)) = q_hish(j,2)
1884 uparam(43+17*(j-1)) = q_hiun(j,1)
1885 uparam(44+17*(j-1)) = q_hiun(j,2)
1886 uparam(45+17*(j-1)) = q_hips(j,1)
1887 uparam(46+17*(j-1)) = q_hips(j,2)
1891 uparam(30+11*(j-1)) = hips(j
1892 uparam(31+11*(j-1)) = hips(j,2)
1893 uparam(32+11*(j-1)) = hish(j,1)
1894 uparam(33+11*(j-1)) = hish(j,2)
1895 uparam(34+11*(j-1)) = q_fun(j,1)
1896 uparam(35+11*(j-1)) = q_hish(j,1)
1897 uparam(36+11*(j-1)) = q_hish(j,2)
1898 uparam(37+11*(j-1)) = q_hips(j,1)
1899 uparam(38+11*(j-1)) = q_hips(j,2)
1900 uparam(39+11*(j-1)) = q_wsh(j)
1901 uparam(40+11*(j-1)) = q_wps(j)
1915 pm(27) = sqrt(a11/rho0)
1927 IF (fisokin > zero)
THEN
1942 WRITE(iout,1000) trim(titr),mat_id,ilaw
1943 IF (icrit == 1)
THEN
1945 ELSEIF (icrit == 2)
THEN
1947 ELSEIF (icrit == 3)
THEN
1952 IF (is_encrypted)
THEN
1953 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
1955 WRITE(iout,1200) rho0
1956 WRITE(iout,1300) young,nu
1957 WRITE(iout,1350) ires
1958 IF (itable(1)>0)
THEN
1959 WRITE(iout,1500) itable(1),xscale,yscale,ismooth,eps0,fisokin,
1960 . ivflag,itable(2),tini
1962 WRITE(iout,1400) yld0,dsigm,beta,omega,nexp,eps0,fisokin
1963 IF (sigstar>zero)
THEN
1964 WRITE(iout,1600) sigstar,dg0,deps0,mexp,tini,asrate,ivflag
1967 IF ((icrit == 1).OR.(icrit == 2).OR.(icrit == 3))
THEN
1969 WRITE(iout,1700) theta(j),fsh(j,1),fsh(j,2),hish(j,1),hish(j,2),
1970 . fun(j,1),fun(j,2),rlank(j),hiun(j,1),hiun(j,2),
1971 . fps(j,1),fps(j,2),hips(j,1),hips(j,2),fbi,fbi
1975 WRITE(iout,1750) theta(j),hish(j,1),hish(j,2),wsh(j),
1976 . fun(j,1),fun(j,2),rlank(j),hips(j,1),
1977 . hips(j,2),wps(j),fbi,fbi
1984 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
1985 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
1987 &(5x,
'MATERIAL MODEL : VEGTER ELASTO-PLASTIC',/,
1988 & 5x,
'--------------------------------------',/)
1990 &(5x,
'MATERIAL MODEL : VEGTER STANDARD ELASTO-PLASTIC',/,
1991 & 5x,
'-----------------------------------------------',/)
1993 &(5x,
'MATERIAL MODEL : VEGTER 2017 ELASTO-PLASTIC',/,
1994 & 5x,
'-------------------------------------------',/)
1996 &(5x,
'MATERIAL MODEL : SIMPLIFIED VEGTER LITE ELASTO-PLASTIC',/,
1997 & 5x,
'------------------------------------------------------',/)
1999 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
2001 & 5x,
'YOUNG MODULUS . . . . . . . . . . . . .=',1pg20.13/
2002 & 5x,
'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/)
2004 & 5x,
'RETURN MAPPING ALGORITHM FLAG . . . . .=',i3/
2005 & 5x,
' IRES=1 NICE EXPLICIT'/
2006 & 5x,
' IRES=2 NEWTON-ITERATION IMPLICIT (CUTTING PLANE)'/)
2008 & 5x,
'INITIAL YIELD STRESS . . . . . . . . .=',1pg20.13/
2009 & 5x,
'STRESS HARDENING INCREMENT. . . . . . .=',1pg20.13/
2010 & 5x,
'SMALL STRAIN HARDENING PARAMETER . . .=',1pg20.13/
2011 & 5x,
'LARGE STRAIN HARDENING PARAMETER . . .=',1pg20.13/
2012 & 5x,
'HARDENING EXPONENT . . . . . . . . . .=',1pg20.13/
2013 & 5x,
'INITIAL PLASTIC STRAIN . . . . . . . .=',1pg20.13/
2014 & 5x,
'KINEMATIC HARDENING FACTOR . . . . . .=',1pg20.13/)
2016 & 5x,
'TABULATED YIELD - STRAIN RATE TABLE ID.=',i10/
2017 & 5x,
'TABULATED YIELD X FACTOR . . . . . . .=',1pg20.13/
2018 & 5x,
'TABULATED YIELD Y FACTOR . . . . . . .=',1pg20.13/
2019 & 5x,
'TABLE INTERPOLATION FLAG . . . . . . .=',i10/
2020 & 5x,
' ISMOOTH=1 LINEAR INTERPOLATION'/
2021 & 5x,
' ISMOOTH=2 LOGARITHMIC INTERPOLATION BASE 10'/
2022 & 5x,
' ISMOOTH=3 LOGARITHMIC INTERPOLATION BASE N'/
2023 & 5x,
'INITIAL PLASTIC STRAIN . . . . . . . .=',1pg20.13/
2024 & 5x,
'KINEMATIC HARDENING FACTOR . . . . . .=',1pg20.13/
2025 & 5x,
'STRAIN-RATE CHOICE FLAG . . . . . . . .=',i10/
2026 & 5x,
' VP=1 EQUIVALENT PLASTIC STRAIN RATE'/
2027 & 5x,
' VP=2 TOTAL STRAIN RATE (DEFAULT)'/
2028 & 5x,
' VP=3 DEVIATORIC STRAIN RATE'/
2029 & 5x,
'TABULATED YIELD - TEMPERATURE TABLE ID .=',i10/
2030 & 5x,
'INITIAL (REFERENCE) TEMPERATURE. . . . .=',1pg20.13/)
2032 & 5x,
'LIMIT DYNAMIC FLOW STRESS . . . . . . .=',1pg20.13/
2033 & 5x,
'MAXIMUM ACTIVATION ENTHALPY . . . . . .=',1pg20.13/
2034 & 5x,
'THERMAL ACTIVATION LIMIT STRAIN-RATE .=',1pg20.13/
2035 & 5x,
'STRAIN-RATE EXPONENT . . . . . . . . .=',1pg20.13/
2036 & 5x,
'INITIAL TEMPERATURE . . . . . . . . . .=',1pg20.13/
2037 & 5x,
'STRAIN-RATE CUTTING FREQUENCY . . . . .=',1pg20.13/
2038 & 5x,
'STRAIN-RATE CHOICE FLAG . . . . . . . .=',i10/
2039 & 5x,
' VP=1 EQUIVALENT PLASTIC STRAIN RATE'/
2040 & 5x,
' VP=2 TOTAL STRAIN RATE (DEFAULT)'/
2041 & 5x,
' VP=3 DEVIATORIC STRAIN RATE'/)
2043 & 5x,
'|| DATA FOR ANGLE (DEG) . . . . . . . .=',1pg20.13/
2044 & 5x,
'SHEAR REFERENCE POINT . . . . . . . . . '/
2045 & 5x,
' FIRST COORDINATE fSH1. . . . . .=',1pg20.13/
2046 & 5x,
' SECOND COORDINATE fSH2. . . . . .=',1pg20.13/
2047 & 5x,
'SHEAR/UNIAXIAL HINGE POINT. . . . . . . '/
2048 & 5x,
' FIRST COORDINATE HISH1 . . . . .=',1pg20.13/
2049 & 5x,
' SECOND COORDINATE HISH2 . . . . .=',1pg20.13/
2050 & 5x,
'UNIAXIAL REFERENCE POINT. . . . . . . . '/
2051 & 5x,
' FIRST COORDINATE fUN1. . . . . .=',1pg20.13/
2052 & 5x,
' SECOND COORDINATE fUN2. . . . . .=',1pg20.13/
2053 & 5x,
' LANKFORD COEFFICIENT . . . . . .=',1pg20.13/
2054 & 5x,
'UNIAXIAL/PLANE-STRAIN HINGE POINT . . . '/
2055 & 5x,
' FIRST COORDINATE HIUN1 . . . . .=',1pg20.13/
2056 & 5x,
' SECOND COORDINATE HIUN2 . . . . .=',1pg20.13/
2057 & 5x,
'PLANE-STRAIN REFERENCE POINT . . . . . '/
2058 & 5x,
' FIRST COORDINATE fPS1. . . . . .=',1pg20.13/
2059 & 5x,
' SECOND COORDINATE fPS2. . . . . .=',1pg20.13/
2060 & 5x,
'PLANE-STRAIN/BIAXIAL HINGE POINT. . . . '/
2061 & 5x,
' FIRST COORDINATE HIPS1 . . . . .=',1pg20.13/
2062 & 5x,
' SECOND COORDINATE HIPS2 . . . . .=',1pg20.13/
2063 & 5x,
'BIAXIAL REFERENCE POINT . . . . . . . . '/
2064 & 5x,
' FIRST COORDINATE fBI1. . . . . .=',1pg20.13/
2065 & 5x,
' SECOND COORDINATE fBI2. . . . . .=',1pg20.13/)
2067 & 5x,
'|| DATA FOR ANGLE (DEG) . . . . . . . .=',1pg20.13/
2068 & 5x,
'SHEAR HINGE POINT . . . . . . . . . . . '/
2069 & 5x,
' FIRST COORDINATE HISH1 . . . . .=',1pg20.13/
2070 & 5x,
' SECOND COORDINATE HISH2 . . . . .=',1pg20.13/
2071 & 5x,
' SHEAR WEIGHT FACTOR . . . . . . .=',1pg20.13/
2072 & 5x,
'UNIAXIAL REFERENCE POINT. . . . . . . . '/
2073 & 5x,
' FIRST COORDINATE fUN1. . . . . .=',1pg20.13/
2074 & 5x,
' SECOND COORDINATE fUN2. . . . . .=',1pg20.13/
2075 & 5x,
' LANKFORD COEFFICIENT . . . . . .=',1pg20.13/
2076 & 5x,
'PLANE-STRAIN HINGE POINT . . . . . . . '/
2077 & 5x,
' FIRST COORDINATE HIPS1 . . . . .=',1pg20.13/
2078 & 5x,
' SECOND COORDINATE HIPS2 . . . . .=',1pg20.13/
2079 & 5x,
' PLANE-STRAIN WEIGHT FACTOR. . . .=',1pg20.13/
2080 & 5x,
'BIAXIAL REFERENCE POINT . . . . . . . . '/
2081 & 5x,
' FIRST COORDINATE fBI1. . . . . .=',1pg20.13/
2082 & 5x,
' SECOND COORDINATE fBI2. . . . . .=',1pg20.13/)