33 integer i,j,k,imat,ncmat_,ntmat_,nope,iflag,mi(*),
34 & kode,niso,id,nplicon(0:ntmat_,*),npmat_,nelcon(2,*),nener,
35 & nmethod,ne0,nstate_,ielas,jfaces,kscale,konl(26),
36 & iloc,igauss,nopes,nopem,nopep,iout,nelem
38 real*8 xl(3,10),elas(21),t1l,al(3),vl(0:mi(2),19),stickslope,
39 & pl(3,19),xn(3),alpha,beta,fnl(3,19),tp(3),te(3),ftrial(3),
40 & t(3),dftrial,elcon(0:ncmat_,ntmat_,*),pproj(3),clear,
41 & xi,et,elconloc(21),plconloc(82),xk,val,xiso(20),yiso(20),
42 & plicon(0:2*npmat_,ntmat_,*),um,senergy,cstr(6),dg,venergy,
43 & dfshear,dfnl,springarea(2),overlap,pres,clearini(3,9,*),
44 & xstate(nstate_,mi(1),*),xstateini(nstate_,mi(1),*),t1(3),t2(3),
45 & dt1,dte,alnew(3),reltime,weight,xsj2m(3),xs2m(3,7),shp2m(7,9),
46 & xsj2s(3),xs2s(3,7),shp2s(7,9),pslavsurf(3,*),pmastsurf(6,*)
52 if(nener.eq.1) venergy=0.d0
56 nopem=ichar(lakonl(8:8))-48
67 pl(j,i)=xl(j,i)+vl(j,i)
87 pl(j,i)=xl(j,i)+clearini(j,i-nopem,jfaces)*reltime
98 pl(j,i)=xl(j,i)+clearini(j,i-nopem,jfaces)*reltime
105 xi=pslavsurf(1,igauss)
106 et=pslavsurf(2,igauss)
107 weight=pslavsurf(3,igauss)
111 call shape9q(xi,et,pl(1,nopem+1),xsj2s,xs2s,shp2s,iflag)
112 elseif(nopes.eq.8)
then 113 call shape8q(xi,et,pl(1,nopem+1),xsj2s,xs2s,shp2s,iflag)
114 elseif(nopes.eq.4)
then 115 call shape4q(xi,et,pl(1,nopem+1),xsj2s,xs2s,shp2s,iflag)
116 elseif(nopes.eq.6)
then 117 call shape6tri(xi,et,pl(1,nopem+1),xsj2s,xs2s,shp2s,iflag)
118 elseif(nopes.eq.7)
then 119 call shape7tri(xi,et,pl(1,nopem+1),xsj2s,xs2s,shp2s,iflag)
121 call shape3tri(xi,et,pl(1,nopem+1),xsj2s,xs2s,shp2s,iflag)
130 pl(k,nopep)=pl(k,nopep)+shp2s(4,j)*pl(k,nopem+j)
131 vl(k,nopep)=vl(k,nopep)+shp2s(4,j)*vl(k,nopem+j)
137 xi=pmastsurf(1,igauss)
138 et=pmastsurf(2,igauss)
144 call shape9q(xi,et,pl,xsj2m,xs2m,shp2m,iflag)
145 elseif(nopem.eq.8)
then 146 call shape8q(xi,et,pl,xsj2m,xs2m,shp2m,iflag)
147 elseif(nopem.eq.4)
then 148 call shape4q(xi,et,pl,xsj2m,xs2m,shp2m,iflag)
149 elseif(nopem.eq.6)
then 150 call shape6tri(xi,et,pl,xsj2m,xs2m,shp2m,iflag)
151 elseif(nopem.eq.7)
then 152 call shape7tri(xi,et,pl,xsj2m,xs2m,shp2m,iflag)
154 call shape3tri(xi,et,pl,xsj2m,xs2m,shp2m,iflag)
160 pproj(i)=pproj(i)+shp2m(4,j)*pl(i,j)
167 al(i)=pl(i,nopep)-pproj(i)
172 xn(1)=pmastsurf(4,igauss)
173 xn(2)=pmastsurf(5,igauss)
174 xn(3)=pmastsurf(6,igauss)
178 clear=al(1)*xn(1)+al(2)*xn(2)+al(3)*xn(3)
182 if(nmethod.eq.1)
then 183 clear=clear-springarea(2)*(1.d0-reltime)
185 if(clear.le.0.d0) cstr(1)=clear
188 if(int(elcon(3,1,imat)).eq.1)
then 192 if(dabs(elcon(2,1,imat)).lt.1.d-30)
then 197 alpha=elcon(2,1,imat)*springarea(1)
199 if(-beta*clear.gt.23.d0-dlog(alpha))
then 200 beta=(dlog(alpha)-23.d0)/clear
202 elas(1)=dexp(-beta*clear+dlog(alpha))
205 senergy=elas(1)/beta;
207 elseif((int(elcon(3,1,imat)).eq.2).or.
208 & (int(elcon(3,1,imat)).eq.4))
then 212 elas(1)=-springarea(1)*elcon(2,1,imat)*clear/kscale
214 senergy=-elas(1)*clear/2.d0;
216 elseif(int(elcon(3,1,imat)).eq.3)
then 223 & elconloc,kode,plicon,nplicon,npmat_,plconloc,ncmat_)
225 niso=int(plconloc(81))
227 xiso(i)=plconloc(2*i-1)
228 yiso(i)=plconloc(2*i)
230 call ident(xiso,overlap,niso,id)
234 senergy=yiso(1)*overlap;
236 elseif(id.eq.niso)
then 239 senergy=yiso(1)*xiso(1)
241 senergy=senergy+(xiso(i)-xiso(i-1))*
242 & (yiso(i)+yiso(i-1))/2.d0
244 senergy=senergy+(pres-xiso(niso))*yiso(niso)
247 xk=(yiso(id+1)-yiso(id))/(xiso(id+1)-xiso(id))
248 pres=yiso(id)+xk*(overlap-xiso(id))
250 senergy=yiso(1)*xiso(1)
252 senergy=senergy+(xiso(i)-xiso(i-1))*
253 & (yiso(i)+yiso(i-1))/2.d0
255 senergy=senergy+(overlap-xiso(id))*(pres+yiso(id))/2.d0
258 elas(1)=springarea(1)*pres
259 if(nener.eq.1) senergy=springarea(1)*senergy
265 fnl(i,nopep)=-elas(1)*xn(i)
267 cstr(4)=elas(1)/springarea(1)
271 if((int(elcon(3,1,imat)).eq.4).and.(ncmat_.lt.7))
then 272 write(*,*)
'*ERROR in springforc_f2f: for contact' 273 write(*,*)
' with pressure-overclosure=tied' 274 write(*,*)
' a stick slope using the *FRICTION' 275 write(*,*)
' card is mandatory' 283 if(int(elcon(3,1,imat)).eq.4)
then 288 stickslope=elcon(7,1,imat)/kscale
291 if(1.d0 - dabs(xn(1)).lt.1.5231d-6)
then 297 t1(3)=1.d0-xn(3)*xn(3)
299 t1(1)=1.d0-xn(1)*xn(1)
303 dt1=dsqrt(t1(1)*t1(1)+t1(2)*t1(2)+t1(3)*t1(3))
307 t2(1)=xn(2)*t1(3)-xn(3)*t1(2)
308 t2(2)=xn(3)*t1(1)-xn(1)*t1(3)
309 t2(3)=xn(1)*t1(2)-xn(2)*t1(1)
314 xk=stickslope*springarea(1)
322 alnew(i)=alnew(i)-shp2m(4,j)*vl(i,j)
330 al(i)=alnew(i)-xstateini(3+i,1,ne0+iloc)
335 val=al(1)*xn(1)+al(2)*xn(2)+al(3)*xn(3)
340 t(i)=xstateini(6+i,1,ne0+iloc)+al(i)-val*xn(i)
347 xstate(3+i,1,ne0+iloc)=alnew(i)
348 xstate(6+i,1,ne0+iloc)=t(i)
353 dfnl=dsqrt(fnl(1,nopep)**2+fnl(2,nopep)**2+
358 if(int(elcon(3,1,imat)).eq.4)
then 367 tp(i)=xstateini(i,1,ne0+iloc)
370 dte=dsqrt(te(1)*te(1)+te(2)*te(2)+te(3)*te(3))
382 if((dftrial.lt.dfshear).or.(dftrial.le.0.d0).or.
388 fnl(i,nopep)=fnl(i,nopep)+ftrial(i)
389 xstate(i,1,ne0+iloc)=tp(i)
391 cstr(5)=(ftrial(1)*t1(1)+ftrial(2)*t1(2)+
392 & ftrial(3)*t1(3))/springarea(1)
393 cstr(6)=(ftrial(1)*t2(1)+ftrial(2)*t2(2)+
394 & ftrial(3)*t2(3))/springarea(1)
398 if(nener.eq.1) senergy=senergy+dftrial*dte
403 dg=(dftrial-dfshear)/xk
406 fnl(i,nopep)=fnl(i,nopep)+dfshear*ftrial(i)
407 xstate(i,1,ne0+iloc)=tp(i)+dg*ftrial(i)
409 cstr(5)=(dfshear*ftrial(1)*t1(1)+
410 & dfshear*ftrial(2)*t1(2)+
411 & dfshear*ftrial(3)*t1(3))/springarea(1)
412 cstr(6)=(dfshear*ftrial(1)*t2(1)+
413 & dfshear*ftrial(2)*t2(2)+
414 & dfshear*ftrial(3)*t2(3))/springarea(1)
419 senergy=senergy+dfshear*dfshear/xk
428 cstr(2)=t(1)*t1(1)+t(2)*t1(2)+t(3)*t1(3)
429 cstr(3)=t(1)*t2(1)+t(2)*t2(2)+t(3)*t2(3)
436 fnl(i,j)=-shp2m(4,j)*fnl(i,nopep)
444 fnl(i,nopem+j)=shp2s(4,j)*fnl(i,nopep)
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
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
subroutine shape6tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape6tri.f:20