31 integer ogden,hyperfoam,taylor
33 integer nelconst,kode,kk(84),i,j,k,l,m,nt,icmd,istart,iend,
34 & nc,n,ithermal,ii,jj,mm,neig
36 real*8 elconloc(*),elas(*),emec(*),didc(3,3,3),
37 & d2idc2(3,3,3,3,3),dibdc(3,3,3),d2ibdc2(3,3,3,3,3),dudc(3,3),
38 & d2udc2(3,3,3,3),dldc(3,3,3),d2ldc2(3,3,3,3,3),dlbdc(3,3,3),
39 & d2lbdc2(3,3,3,3,3),
v1,v2,v3,c(3,3),cinv(3,3),d(3,3),djth,
40 & coef,bb,cc,cm,cn,tt,pi,dd,al(3),v1b,v2b,v3b,
41 & alb(3),beta(*),v33,v36,all(3),term,stre(*),total,coefa,
42 & coefb,coefd,coefm,constant(21)
44 kk=(/1,1,1,1,1,1,2,2,2,2,2,2,1,1,3,3,2,2,3,3,3,3,3,3,
45 & 1,1,1,2,2,2,1,2,3,3,1,2,1,2,1,2,1,1,1,3,2,2,1,3,3,3,1,3,
46 & 1,2,1,3,1,3,1,3,1,1,2,3,2,2,2,3,3,3,2,3,1,2,2,3,1,3,2,3,
54 constant(i)=elconloc(i)
64 if((kode.lt.-3).and.(kode.gt.-7))
then 66 elseif((kode.lt.-14).and.(kode.gt.-18))
then 79 if(((kode.lt.-1).and.(kode.gt.-4)).or.
80 & ((kode.lt.-6).and.(kode.gt.-13)).or.
85 elseif((kode.eq.-3).or.(kode.eq.-10))
then 86 constant(3)=constant(2)
90 elseif(kode.eq.-11)
then 91 constant(7)=constant(4)
92 constant(6)=constant(3)
95 constant(3)=constant(2)
99 elseif((kode.eq.-12).or.(kode.eq.-14))
then 100 constant(12)=constant(6)
101 constant(11)=constant(5)
102 constant(10)=constant(4)
106 constant(6)=constant(3)
109 constant(3)=constant(2)
113 elseif(kode.eq.-7)
then 115 elseif(kode.eq.-8)
then 117 elseif(kode.eq.-9)
then 130 c(i,i)=emec(i)*2.d0+1.d0
138 v1=c(1,1)+c(2,2)+c(3,3)
139 v2=c(2,2)*c(3,3)+c(1,1)*c(3,3)+c(1,1)*c(2,2)-
140 & (c(2,3)*c(2,3)+c(1,3)*c(1,3)+c(1,2)*c(1,2))
141 v3=c(1,1)*(c(2,2)*c(3,3)-c(2,3)*c(2,3))
142 & -c(1,2)*(c(1,2)*c(3,3)-c(1,3)*c(2,3))
143 & +c(1,3)*(c(1,2)*c(2,3)-c(1,3)*c(2,2))
154 cinv(1,1)=(c(2,2)*c(3,3)-c(2,3)*c(2,3))/v3
155 cinv(2,2)=(c(1,1)*c(3,3)-c(1,3)*c(1,3))/v3
156 cinv(3,3)=(c(1,1)*c(2,2)-c(1,2)*c(1,2))/v3
157 cinv(1,2)=(c(1,3)*c(2,3)-c(1,2)*c(3,3))/v3
158 cinv(1,3)=(c(1,2)*c(2,3)-c(2,2)*c(1,3))/v3
159 cinv(2,3)=(c(1,2)*c(1,3)-c(1,1)*c(2,3))/v3
180 didc(k,l,2)=
v1*d(k,l)-c(k,l)
181 didc(k,l,3)=v3*cinv(k,l)
196 d2idc2(k,l,m,n,1)=0.d0
197 d2idc2(k,l,m,n,2)=d(k,l)*d(m,n)-
198 & (d(k,m)*d(l,n)+d(k,n)*d(l,m))/2.d0
199 d2idc2(k,l,m,n,3)=v3*(cinv(m,n)*cinv(k,l)-
200 & (cinv(k,m)*cinv(n,l)+cinv(k,n)*cinv(m,l))/2.d0)
215 dibdc(k,l,1)=-v33**4*
v1*didc(k,l,3)/3.d0
217 dibdc(k,l,2)=-2.d0*v33**5*v2*didc(k,l,3)/3.d0
218 & +v33**2*didc(k,l,2)
220 dibdc(k,l,3)=didc(k,l,3)/(2.d0*dsqrt(v3)*djth)
236 d2ibdc2(k,l,m,n,1)=4.d0/9.d0*v33**7*
v1*didc(k,l,3)
237 & *didc(m,n,3)-v33**4/3.d0*(didc(m,n,1)*didc(k,l,3)
238 & +didc(k,l,1)*didc(m,n,3))-v33**4/3.d0*
v1*
239 & d2idc2(k,l,m,n,3)+v33*d2idc2(k,l,m,n,1)
240 d2ibdc2(k,l,m,n,2)=10.d0*v33**8/9.d0*v2*didc(k,l,3)
241 & *didc(m,n,3)-2.d0*v33**5/3.d0*(didc(m,n,2)
243 & +didc(k,l,2)*didc(m,n,3))-2.d0*v33**5/3.d0*v2*
244 & d2idc2(k,l,m,n,3)+v33**2*d2idc2(k,l,m,n,2)
246 d2ibdc2(k,l,m,n,3)=-didc(k,l,3)*didc(m,n,3)/
247 & (4.d0*djth*v3**1.5d0)+d2idc2(k,l,m,n,3)/
248 & (2.d0*dsqrt(v3)*djth)
255 if((ogden.eq.1).or.(hyperfoam.eq.1))
then 259 if((kode.lt.-14).and.(kode.gt.-18))
then 275 cc=-2.d0*
v1**3/27.d0+
v1*v2/3.d0-v3
276 if(dabs(bb).le.1.d-10)
then 277 if(dabs(cc).gt.1.d-10)
then 278 al(1)=-cc**(1.d0/3.d0)
286 cm=2.d0*dsqrt(-bb/3.d0)
288 if(dabs(cn).gt.1.d0)
then 295 tt=datan2(dsqrt(1.d0-cn*cn),cn)/3.d0
297 al(2)=dcos(tt+2.d0*pi/3.d0)
298 al(3)=dcos(tt+4.d0*pi/3.d0)
302 if((dabs(al(1)-al(2)).lt.1.d-5).or.
303 & (dabs(al(1)-al(3)).lt.1.d-5).or.
304 & (dabs(al(2)-al(3)).lt.1.d-5)) neig=2
310 al(i)=dsqrt(al(i)+
v1/3.d0)
311 all(i)=(6.d0*al(i)**5-4.d0*
v1*al(i)**3+2.d0*al(i)*v2)*dd
323 dldc(k,l,i)=(al(i)**4*didc(k,l,1)
324 & -al(i)**2*didc(k,l,2)+didc(k,l,3))/all(i)
328 elseif(neig.eq.1)
then 335 dldc(k,l,i)=didc(k,l,1)/(6.d0*al(i))
346 dldc(k,l,i)=(dcos(tt+(i-1)*2.d0*pi/3.d0)*
347 & (2.d0*
v1*didc(k,l,1)-3.d0*didc(k,l,2))/
348 & (3.d0*dsqrt(
v1*
v1-3.d0*v2))+didc(k,l,1)/3.d0)/
371 d2ldc2(k,l,m,n,i)=(-30.d0*al(i)**4
372 & *dldc(k,l,i)*dldc(m,n,i)+al(i)**4
374 & +4.d0*al(i)**3*(didc(k,l,1)*dldc(m,n,i)
376 & *dldc(k,l,i))+12.d0*
v1*al(i)**2*dldc(k,l,i)*
377 & dldc(m,n,i)-d2idc2(k,l,m,n,2)*al(i)**2-2.d0
379 & didc(k,l,2)*dldc(m,n,i)-2.d0*v2*dldc(k,l,i)*
380 & dldc(m,n,i)-2.d0*al(i)*didc(m,n,2)*dldc(k,l,i)
381 & +d2idc2(k,l,m,n,3))/all(i)
384 elseif(neig.eq.1)
then 396 d2ldc2(k,l,m,n,i)=(d2idc2(k,l,m,n,1)/6.d0
397 & -dldc(k,l,i)*dldc(m,n,i))/al(i)
412 d2ldc2(k,l,m,n,i)=(dcos(tt+(i-1)*2.d0*pi/3.d0)*
413 & (-(2.d0*
v1*didc(k,l,1)-3.d0*didc(k,l,2))*
414 & (2.d0*
v1*didc(m,n,1)-3.d0*didc(m,n,2))/
415 & (6.d0*(
v1*
v1-3.d0*v2)**1.5)+
416 & (2.d0*didc(k,l,1)*didc(m,n,1)+2.d0*
v1*
417 & d2idc2(k,l,m,n,1)-3.d0*d2idc2(k,l,m,n,2))/
418 & (3.d0*dsqrt(
v1*
v1-3.d0*v2)))
419 & +d2idc2(k,l,m,n,1)/3.d0)/(2.d0*al(i))-
420 & dldc(k,l,i)*dldc(m,n,i)/al(i)
442 dlbdc(k,l,i)=-v36**7*al(i)*didc(k,l,3)/6.d0
460 d2lbdc2(k,l,m,n,i)=7.d0*v36**13*al(i)
461 & *didc(k,l,3)*didc(m,n,3)/36.d0-v36**7/6.d0
462 & *(dldc(m,n,i)*didc(k,l,3)+al(i)
463 & *d2idc2(k,l,m,n,3)+dldc(k,l,i)*didc(m,n,3))
464 & +v36*d2ldc2(k,l,m,n,i)
477 if((kode.lt.-6).and.(kode.gt.-10))
then 493 if(dabs(coef).lt.1.d-20) cycle
499 if(i.gt.1) term=i*term*(v1b-3.d0)**(i-1)
500 if(j.gt.0) term=term*(v2b-3.d0)**j
505 if(i.gt.0) term=term*(v1b-3.d0)**i
506 if(j.gt.1) term=j*term*(v2b-3.d0)**(j-1)
509 dudc(k,l)=dudc(k,l)+total*coef
519 dudc(k,l)=dudc(k,l)+2.d0*m*(v3b-1.d0)**
520 & (2*m-1)*dibdc(k,l,3)/coef
544 if(dabs(coef).lt.1.d-20) cycle
554 term=dibdc(k,l,1)*dibdc(m,n,1)*i*(i-1)
555 if(i.gt.2) term=term*(v1b-3.d0)**(i-2)
556 if(j.gt.0) term=term*(v2b-3.d0)**j
559 if((i.gt.0).and.(j.gt.0))
then 560 term=dibdc(k,l,1)*dibdc(m,n,2)+
561 & dibdc(m,n,1)*dibdc(k,l,2)
562 if(i.gt.1) term=i*term*(v1b-3.d0)**(i-1)
563 if(j.gt.1) term=j*term*(v2b-3.d0)**(j-1)
567 term=d2ibdc2(k,l,m,n,1)
568 if(i.gt.1) term=i*term*(v1b-3.d0)**(i-1)
569 if(j.gt.0) term=term*(v2b-3.d0)**j
573 term=dibdc(k,l,2)*dibdc(m,n,2)*j*(j-1)
574 if(i.gt.0) term=term*(v1b-3.d0)**i
575 if(j.gt.2) term=term*(v2b-3.d0)**(j-2)
579 term=d2ibdc2(k,l,m,n,2)
580 if(i.gt.0) term=term*(v1b-3.d0)**i
581 if(j.gt.1) term=j*term*(v2b-3.d0)**(j-1)
584 d2udc2(k,l,m,n)=d2udc2(k,l,m,n)+total*coef
600 term=(2.d0*dibdc(k,l,3)*dibdc(m,n,3)+
601 & 2.d0*(v3b-1.d0)*d2ibdc2(k,l,m,n,3))/coef
604 & 2.d0*mm*(v3b-1.d0)**(2*mm-2)/coef*
605 & ((2*mm-1)*dibdc(k,l,3)*dibdc(m,n,3)
606 & +(v3b-1.d0)*d2ibdc2(k,l,m,n,3))
608 d2udc2(k,l,m,n)=d2udc2(k,l,m,n)+term
616 if((kode.lt.-3).and.(kode.gt.-7))
then 619 elseif(kode.eq.-5)
then 621 elseif(kode.eq.-6)
then 635 coefd=constant(2*nelconst+m)
636 coefm=constant(2*m-1)
641 term=term+alb(i)**(coefa-1.d0)*dlbdc(k,l,i)
643 dudc(k,l)=dudc(k,l)+2.d0*coefm/coefa
644 & *term+2.d0*m/coefd*
645 & (v3b-1.d0)**(2*m-1)*dibdc(k,l,3)
665 coefd=constant(2*nelconst+mm)
666 coefm=constant(2*mm-1)
676 term=term+alb(i)**(coefa-2.d0)*dlbdc(k,l,i)*
679 term=term*(coefa-1.d0)
681 term=term+alb(i)**(coefa-1.d0)
682 & *d2lbdc2(k,l,m,n,i)
684 term=term*2.d0*coefm/coefa
685 d2udc2(k,l,m,n)=d2udc2(k,l,m,n)+term+(2*mm)*
686 & (2*mm-1)/coefd*(v3b-1.d0)**(2*mm-2)*
687 & dibdc(k,l,3)*dibdc(m,n,3)+2*mm/coefd
688 & *(v3b-1.d0)**(2*mm-1)*d2ibdc2(k,l,m,n,3)
703 dudc(k,l)=constant(1)*(0.5d0+v1b/(10.d0*
704 & coef**2)+33.d0*v1b*v1b/(1050.d0*
705 & coef**4)+76.d0*v1b**3/(7000.d0*
706 & coef**6)+2595.d0*v1b**4/(673750.d0*
707 & coef**8))*dibdc(k,l,1)+(v3b-1.d0/v3b)
708 & *dibdc(k,l,3)/constant(3)
723 d2udc2(k,l,m,n)=constant(1)*(1.d0/(10.d0*
724 & coef**2)+66.d0*v1b/(1050.d0*coef**4)+228.d0
725 & *v1b**2/(7000.d0*coef**6)+10380.d0*v1b**3/
726 & (673750.d0*coef**8))*dibdc(k,l,1)*dibdc(m,n,1)
727 & +constant(1)*(0.5d0+v1b/(10.d0*coef**2)
729 & (1050.d0*coef**4)+76.d0*v1b**3/(7000.d0*coef**6)+
730 & 2595.d0*v1b**4/(673750.d0*coef**8))
731 & *d2ibdc2(k,l,m,n,1)
732 & +(1.d0+1.d0/v3b**2)*dibdc(k,l,3)*dibdc(m,n,3)/
733 & constant(3)+(v3b-1.d0/v3b)*d2ibdc2(k,l,m,n,3)
741 if((kode.lt.-15).and.(kode.gt.-18))
then 744 elseif(kode.eq.-16)
then 746 elseif(kode.eq.-17)
then 760 coefb=constant(2*nelconst+m)/(1.d0-2.d0
761 & *constant(2*nelconst+m))
762 coefm=constant(2*m-1)
767 term=term+al(i)**(coefa-1.d0)*dldc(k,l,i)
769 dudc(k,l)=dudc(k,l)+2.d0*coefm/coefa
770 & *(term-v3b**(-coefa*coefb-1.d0)*
791 coefb=constant(2*nelconst+mm)/(1.d0-2.d0
792 & *constant(2*nelconst+mm))
793 coefm=constant(2*mm-1)
803 term=term+(coefa-1.d0)*al(i)**(coefa-2.d0)
804 & *dldc(k,l,i)*dldc(m,n,i)
805 & +al(i)**(coefa-1.d0)*d2ldc2(k,l,m,n,i)
807 d2udc2(k,l,m,n)=d2udc2(k,l,m,n)
809 & coefa*(term+(coefa*coefb+1.d0)*v3b
810 & **(-coefa*coefb-2.d0)*dibdc(k,l,3)
811 & *dibdc(m,n,3)-v3b**(-coefa*coefb-1.d0)
812 & *d2ibdc2(k,l,m,n,3))
831 elas(i)=4.d0*d2udc2(k,l,m,n)
837 stre(1)=2.d0*dudc(1,1)
838 stre(2)=2.d0*dudc(2,2)
839 stre(3)=2.d0*dudc(3,3)
840 stre(4)=2.d0*dudc(1,2)
841 stre(5)=2.d0*dudc(1,3)
842 stre(6)=2.d0*dudc(2,3)
static double * v1
Definition: mafillsmmain_se.c:40