31 integer konl(20),i,j,imat,ncmat_,ntmat_,k,l,nope,nterms,iflag,
32 & i1,kode,niso,id,nplicon(0:ntmat_,*),npmat_,nelcon(2,*),
33 & iperturb(*),nmethod,mi(*),ne0,nstate_,nasym,ielorien(mi(3),*),
34 & norien,nelem,idof,idof1,idof2,iorien
36 real*8 xl(3,10),elas(21),ratio(9),pproj(3),val,shp2(7,9),
37 & al(3),s(60,60),voldl(0:mi(2),10),pl(3,10),xn(3),dm,
38 &
c1,c2,c3,c4,alpha,beta,elcon(0:ncmat_,ntmat_,*),xm(3),
39 & xmu(3,3,10),dxmu(3,10),dval(3,10),fpu(3,3,10),xi,et,
40 & xs2(3,7),t1l,elconloc(21),plconloc(802),xk,fk,
41 & xiso(200),yiso(200),dd0,plicon(0:2*npmat_,ntmat_,*),
42 &
a11,a12,a22,
b1(3,10),b2(3,10),dal(3,3,10),qxxy(3),fnl(3),
43 & qxyy(3),dxi(3,10),det(3,10),determinant,c11,c12,c22,
44 & qxyx(3),qyxy(3),springarea(2),dd,
dist,t(3),tu(3,3,10),
45 & xstate(nstate_,mi(1),*),xstateini(nstate_,mi(1),*),
46 & um,eps,pi,dftdt(3,3),tp(3),te(3),ftrial(3),clear,
47 & dftrial,dfnl,dfshear,dg,dte,alnew(3),dfn(3,10),reltime,
48 & overlap,pres,dpresdoverlap,overclosure,orab(7,*),
49 & xn1(3),xn2(3),a(3,3)
51 intent(in) xl,konl,voldl,imat,elcon,nelcon,ielorien,orab,
52 & ncmat_,ntmat_,nope,lakonl,t1l,kode,plicon,norien,nelem,
53 & nplicon,npmat_,iperturb,nmethod,mi,ne0,
54 & nstate_,xstateini,reltime,nasym
56 intent(inout) s,xstate,elas,springarea,elconloc
65 pl(j,i)=xl(j,i)+voldl(j,i)
69 if(lakonl(7:7).eq.
'A')
then 70 if(lakonl(4:6).eq.
'RNG')
then 74 dd0=dsqrt((xl(1,2)-xl(1,1))**2
75 & +(xl(2,2)-xl(2,1))**2
76 & +(xl(3,2)-xl(3,1))**2)
77 dd=dsqrt((pl(1,2)-pl(1,1))**2
78 & +(pl(2,2)-pl(2,1))**2
79 & +(pl(3,2)-pl(3,1))**2)
81 write(*,*)
'*ERROR in springstiff_n2f: spring connects' 82 write(*,*)
' two nodes at the same location:' 83 write(*,*)
' spring length is zero' 87 xn(i)=(pl(i,2)-pl(i,1))/dd
94 & elconloc,kode,plicon,nplicon,npmat_,plconloc,ncmat_)
102 niso=int(plconloc(801))
104 xiso(i)=plconloc(2*i-1)
105 yiso(i)=plconloc(2*i)
107 call ident(xiso,val,niso,id)
111 elseif(id.eq.niso)
then 115 xk=(yiso(id+1)-yiso(id))/(xiso(id+1)-xiso(id))
116 fk=yiso(id)+xk*(val-xiso(id))
124 s(i,j)=c2*xn(i)*xn(j)
134 & elconloc,kode,plicon,nplicon,npmat_,plconloc,ncmat_)
142 eps=pi*elconloc(6)/xk
143 overclosure=-dd-xn(1)*(voldl(1,2)-voldl(1,1))
144 & -xn(2)*(voldl(2,2)-voldl(2,1))
145 & -xn(3)*(voldl(3,2)-voldl(3,1))
146 fk=-xk*overclosure*(0.5d0+datan(overclosure/eps)/pi)
147 c2=xk*((0.5d0+datan(overclosure/eps)/pi)
148 & +overclosure/(pi*eps*(1.d0+(overclosure/eps)**2)))
151 s(i,j)=c2*xn(i)*xn(j)
164 elseif(lakonl(7:7).eq.
'1')
then 169 idof=nint(elcon(3,1,imat))
172 iorien=ielorien(1,nelem)
192 & elconloc,kode,plicon,nplicon,npmat_,plconloc,ncmat_)
199 niso=int(plconloc(801))
201 xiso(i)=plconloc(2*i-1)
202 yiso(i)=plconloc(2*i)
204 call ident(xiso,val,niso,id)
207 elseif(id.eq.niso)
then 210 xk=(yiso(id+1)-yiso(id))/(xiso(id+1)-xiso(id))
218 s(i,j)=xk*xn(i)*xn(j)
222 elseif(lakonl(7:7).eq.
'2')
then 227 idof1=nint(elcon(3,1,imat))
228 idof2=nint(elcon(4,1,imat))
231 iorien=ielorien(1,nelem)
257 & elconloc,kode,plicon,nplicon,npmat_,plconloc,ncmat_)
264 niso=int(plconloc(801))
266 xiso(i)=plconloc(2*i-1)
267 yiso(i)=plconloc(2*i)
269 call ident(xiso,val,niso,id)
272 elseif(id.eq.niso)
then 275 xk=(yiso(id+1)-yiso(id))/(xiso(id+1)-xiso(id))
283 s(i,j)=xk*xn1(i)*xn1(j)
284 s(i,j+3)=-xk*xn1(i)*xn2(j)
285 s(i+3,j)=-xk*xn2(i)*xn1(j)
286 s(i+3,j+3)=xk*xn2(i)*xn2(j)
305 al(i)=pl(i,nope)-pproj(i)
311 call shape9q(xi,et,pl,xm,xs2,shp2,iflag)
312 elseif(nterms.eq.8)
then 313 call shape8q(xi,et,pl,xm,xs2,shp2,iflag)
314 elseif(nterms.eq.4)
then 315 call shape4q(xi,et,pl,xm,xs2,shp2,iflag)
316 elseif(nterms.eq.6)
then 317 call shape6tri(xi,et,pl,xm,xs2,shp2,iflag)
318 elseif(nterms.eq.7)
then 319 call shape7tri(xi,et,pl,xm,xs2,shp2,iflag)
321 call shape3tri(xi,et,pl,xm,xs2,shp2,iflag)
330 a11=-(xs2(1,1)*xs2(1,1)+xs2(2,1)*xs2(2,1)+xs2(3,1)*xs2(3,1))
331 & +al(1)*xs2(1,5)+al(2)*xs2(2,5)+al(3)*xs2(3,5)
332 a12=-(xs2(1,1)*xs2(1,2)+xs2(2,1)*xs2(2,2)+xs2(3,1)*xs2(3,2))
333 & +al(1)*xs2(1,6)+al(2)*xs2(2,6)+al(3)*xs2(3,6)
334 a22=-(xs2(1,2)*xs2(1,2)+xs2(2,2)*xs2(2,2)+xs2(3,2)*xs2(3,2))
335 & +al(1)*xs2(1,7)+al(2)*xs2(2,7)+al(3)*xs2(3,7)
339 b1(i,j)=shp2(4,j)*xs2(i,1)-shp2(1,j)*al(i)
340 b2(i,j)=shp2(4,j)*xs2(i,2)-shp2(2,j)*al(i)
346 determinant=
a11*a22-a12*a12
353 dxi(i,j)=c11*
b1(i,j)+c12*b2(i,j)
354 det(i,j)=c12*
b1(i,j)+c22*b2(i,j)
364 dal(j,k,i)=-xs2(j,1)*dxi(k,i)-xs2(j,2)*det(k,i)
370 dal(j,j,i)=dal(j,j,i)-shp2(4,i)
374 dal(j,j,nope)=dal(j,j,nope)+1.d0
379 qxxy(1)=xs2(2,5)*xs2(3,2)-xs2(3,5)*xs2(2,2)
380 qxxy(2)=xs2(3,5)*xs2(1,2)-xs2(1,5)*xs2(3,2)
381 qxxy(3)=xs2(1,5)*xs2(2,2)-xs2(2,5)*xs2(1,2)
385 qxyy(1)=xs2(2,1)*xs2(3,7)-xs2(3,1)*xs2(2,7)
386 qxyy(2)=xs2(3,1)*xs2(1,7)-xs2(1,1)*xs2(3,7)
387 qxyy(3)=xs2(1,1)*xs2(2,7)-xs2(2,1)*xs2(1,7)
393 qxyx(1)=xs2(2,1)*xs2(3,6)-xs2(3,1)*xs2(2,6)
394 qxyx(2)=xs2(3,1)*xs2(1,6)-xs2(1,1)*xs2(3,6)
395 qxyx(3)=xs2(1,1)*xs2(2,6)-xs2(2,1)*xs2(1,6)
399 qyxy(1)=xs2(2,6)*xs2(3,2)-xs2(3,6)*xs2(2,2)
400 qyxy(2)=xs2(3,6)*xs2(1,2)-xs2(1,6)*xs2(3,2)
401 qyxy(3)=xs2(1,6)*xs2(2,2)-xs2(2,6)*xs2(1,2)
408 dm=dsqrt(xm(1)*xm(1)+xm(2)*xm(2)+xm(3)*xm(3))
415 clear=al(1)*xn(1)+al(2)*xn(2)+al(3)*xn(3)
416 if(nmethod.eq.1)
then 417 clear=clear-springarea(2)*(1.d0-reltime)
425 if(springarea(1).le.0.d0)
then 427 springarea(1)=dm/2.d0
429 springarea(1)=dm*4.d0
436 if(int(elcon(3,1,imat)).eq.1)
then 440 if(dabs(elcon(2,1,imat)).lt.1.d-30)
then 444 alpha=elcon(2,1,imat)*springarea(1)
446 if(-beta*clear.gt.23.d0-dlog(alpha))
then 447 beta=(dlog(alpha)-23.d0)/clear
449 elas(1)=dexp(-beta*clear+dlog(alpha))
450 elas(2)=-beta*elas(1)
452 elseif(int(elcon(3,1,imat)).eq.2)
then 457 eps=elcon(1,1,imat)*pi/elcon(2,1,imat)
458 elas(1)=(-springarea(1)*elcon(2,1,imat)*clear*
459 & (0.5d0+datan(-clear/eps)/pi))
460 elas(2)=-springarea(1)*elcon(2,1,imat)*
461 & ((0.5d0+datan(-clear/eps)/pi)-
462 & clear/(pi*eps*(1.d0+(clear/eps)**2)))
463 elseif(int(elcon(3,1,imat)).eq.3)
then 470 & elconloc,kode,plicon,nplicon,npmat_,plconloc,ncmat_)
472 niso=int(plconloc(801))
474 xiso(i)=plconloc(2*i-1)
475 yiso(i)=plconloc(2*i)
477 call ident(xiso,overlap,niso,id)
481 elseif(id.eq.niso)
then 485 dpresdoverlap=(yiso(id+1)-yiso(id))/(xiso(id+1)-xiso(id))
486 pres=yiso(id)+dpresdoverlap*(overlap-xiso(id))
488 elas(1)=springarea(1)*pres
489 elas(2)=-springarea(1)*dpresdoverlap
495 fnl(i)=-elas(1)*xn(i)
505 xmu(1,2,k)=shp2(1,k)*xs2(3,2)-shp2(2,k)*xs2(3,1)
506 xmu(2,3,k)=shp2(1,k)*xs2(1,2)-shp2(2,k)*xs2(1,1)
507 xmu(3,1,k)=shp2(1,k)*xs2(2,2)-shp2(2,k)*xs2(2,1)
508 xmu(1,3,k)=-xmu(3,1,k)
509 xmu(2,1,k)=-xmu(1,2,k)
510 xmu(3,2,k)=-xmu(2,3,k)
526 xmu(i,j,k)=xmu(i,j,k)+(qxxy(i)+qxyx(i))*dxi(j,k)
527 & +(qxyy(i)+qyxy(i))*det(j,k)
537 dxmu(i,k)=xn(1)*xmu(1,i,k)+xn(2)*xmu(2,i,k)+
544 dval(i,k)=al(1)*xmu(1,i,k)+al(2)*xmu(2,i,k)+
545 & al(3)*xmu(3,i,k)-clear*dxmu(i,k)+
546 & xm(1)*dal(1,i,k)+xm(2)*dal(2,i,k)+xm(3)*dal(3,i,k)
561 fpu(i,j,k)=-c3*xm(i)*dval(j,k)
562 & +c4*(xn(i)*dxmu(j,k)-xmu(i,j,k))
575 xk=elcon(7,1,imat)*springarea(1)
581 alnew(i)=voldl(i,nope)
583 alnew(i)=alnew(i)-ratio(j)*voldl(i,j)
591 al(i)=alnew(i)-xstateini(3+i,1,ne0+konl(nope+1))
596 val=al(1)*xn(1)+al(2)*xn(2)+al(3)*xn(3)
601 t(i)=xstateini(6+i,1,ne0+konl(nope+1))+al(i)-val*xn(i)
608 xstate(3+i,1,ne0+konl(nope+1))=alnew(i)
609 xstate(6+i,1,ne0+konl(nope+1))=t(i)
625 dal(j,j,i)=-shp2(4,i)
637 dval(i,k)=al(1)*xmu(1,i,k)+al(2)*xmu(2,i,k)
638 & +al(3)*xmu(3,i,k)-val*dxmu(i,k)
639 & +xm(1)*dal(1,i,k)+xm(2)*dal(2,i,k)
650 & -
c1*(xn(i)*(dval(j,k)-val*dxmu(j,k))
658 dfnl=dsqrt(fnl(1)**2+fnl(2)**2+fnl(3)**2)
667 tp(i)=xstateini(i,1,ne0+konl(nope+1))
676 dfn(i,k)=-xn(1)*fpu(1,i,k)-xn(2)*fpu(2,i,k)-
681 dte=dsqrt(te(1)*te(1)+te(2)*te(2)+te(3)*te(3))
688 dftrial=dsqrt(ftrial(1)**2+ftrial(2)**2+ftrial(3)**2)
692 if((dftrial.lt.dfshear) .or. (dftrial.le.0.d0))
then 697 fnl(i)=fnl(i)+ftrial(i)
698 xstate(i,1,ne0+konl(nope+1))=tp(i)
706 fpu(i,j,k)=fpu(i,j,k)+xk*tu(i,j,k)
714 dg=(dftrial-dfshear)/xk
717 fnl(i)=fnl(i)+dfshear*ftrial(i)
718 xstate(i,1,ne0+konl(nope+1))=tp(i)+dg*ftrial(i)
723 c1=xk*dfshear/dftrial
726 dftdt(i,j)=-
c1*ftrial(i)*ftrial(j)
728 dftdt(i,i)=dftdt(i,i)+
c1 735 fpu(i,j,k)=fpu(i,j,k)+dftdt(i,l)*tu(l,j,k)
737 if((nmethod.ne.4).or.(iperturb(1).gt.1))
then 738 fpu(i,j,k)=fpu(i,j,k)+um*ftrial(i)*dfn(j,k)
760 s(i1,j+(l-1)*3)=-shp2(4,k)*fpu(i,j,l)
761 & -shp2(1,k)*fnl(i)*dxi(j,l)
762 & -shp2(2,k)*fnl(i)*det(j,l)
772 if((nasym.eq.0).or.((nmethod.eq.4).and.(iperturb(1).le.1)))
then 775 s(i,j)=(s(i,j)+s(j,i))/2.d0
subroutine ident(x, px, n, id)
Definition: ident.f:26
subroutine shape9q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape9q.f:20
subroutine shape8q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape8q.f:20
subroutine shape3tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape3tri.f:20
subroutine shape7tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape7tri.f:20
static double * c1
Definition: mafillvcompmain.c:30
static double * dist
Definition: radflowload.c:42
subroutine shape4q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape4q.f:20
subroutine materialdata_sp(elcon, nelcon, imat, ntmat_, i, t1l, elconloc, kode, plicon, nplicon, npmat_, plconloc, ncmat_)
Definition: materialdata_sp.f:20
static double * a11
Definition: mafillkmain.c:30
static double * b1
Definition: mafillkmain.c:30
subroutine shape6tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape6tri.f:20
subroutine attach(pneigh, pnode, nterms, ratio, dist, xil, etl)
Definition: attach.f:20