42 character*80 matname(*),amat
44 integer konl(26),ifaceq(8,6),nelem,nmethod,iactive(3),
45 & ithermal,
idist,i,j,k,i1,m,one,ii,jj,id,ipointer,ig,kk,mi(*),
46 & ielmat(mi(3),*),ntmat_,nope,nopes,imat,mint2d,mint3d,
47 & ifacet(6,4),nopev,ifacew(8,5),ipointeri,ipointerj,iflag,
48 & nelcon(2,*),ncmat_,nalcon(2,*),iel,ii1,ilength,istart,iset,
49 & isurf,jj1,istartset(*),iendset(*),ialset(*),three,nfaces,
52 real*8 co(3,*),xl(3,26),shp(4,26),s(100,100),ff(100),xs2(3,7),
53 & t1(*),h0(3,*),xl2(3,9),xsj2(3),shp2(7,9),vold(0:mi(2),*),
54 & xi,et,ze,xsj,sm(100,100),t1l,weight,
55 & elcon(0:ncmat_,ntmat_,*),elconloc(21),sigma,
56 & h0l(3),h0l2(3,8),alcon(0:6,ntmat_,*),diag,um,uminv,alpha(6),
61 data ifaceq /4,3,2,1,11,10,9,12,
62 & 5,6,7,8,13,14,15,16,
64 & 2,3,7,6,10,19,14,18,
65 & 3,4,8,7,11,20,15,19,
66 & 4,1,5,8,12,17,16,20/
67 data ifacet /1,3,2,7,6,5,
71 data ifacew /1,3,2,9,8,7,0,0,
76 data d /1.d0,0.d0,0.d0,0.d0,1.d0,0.d0,0.d0,0.d0,1.d0/
86 if(lakonl(4:5).eq.
'20')
then 90 elseif(lakonl(4:4).eq.
'8')
then 94 elseif(lakonl(4:5).eq.
'10')
then 98 elseif(lakonl(4:4).eq.
'4')
then 102 elseif(lakonl(4:5).eq.
'15')
then 105 elseif(lakonl(4:4).eq.
'6')
then 110 if(lakonl(4:5).eq.
'8R')
then 113 elseif((lakonl(4:4).eq.
'8').or.(lakonl(4:6).eq.
'20R'))
then 116 elseif(lakonl(4:4).eq.
'2')
then 119 elseif(lakonl(4:5).eq.
'10')
then 122 elseif(lakonl(4:4).eq.
'4')
then 125 elseif(lakonl(4:5).eq.
'15')
then 127 elseif(lakonl(4:4).eq.
'6')
then 137 xl(j,i)=co(j,konl(i))
172 if(lakonl(4:5).eq.
'8R')
then 177 elseif((lakonl(4:4).eq.
'8').or.(lakonl(4:6).eq.
'20R'))
183 elseif(lakonl(4:4).eq.
'2')
then 188 elseif(lakonl(4:5).eq.
'10')
then 193 elseif(lakonl(4:4).eq.
'4')
then 198 elseif(lakonl(4:5).eq.
'15')
then 214 call shape20h(xi,et,ze,xl,xsj,shp,iflag)
215 elseif(nope.eq.8)
then 216 call shape8h(xi,et,ze,xl,xsj,shp,iflag)
217 elseif(nope.eq.10)
then 219 elseif(nope.eq.4)
then 220 call shape4tet(xi,et,ze,xl,xsj,shp,iflag)
221 elseif(nope.eq.15)
then 222 call shape15w(xi,et,ze,xl,xsj,shp,iflag)
224 call shape6w(xi,et,ze,xl,xsj,shp,iflag)
229 if(xsj.lt.1.d-20)
then 230 write(*,*)
'*ERROR in e_c3d_th: nonpositive jacobian' 231 write(*,*)
' determinant in element',nelem
248 if(lakonl(4:5).eq.
'8 ')
then 251 h0l(j)=h0l(j)+h0(j,konl(i1))/8.d0
254 elseif(lakonl(4:6).eq.
'20 ')
then 255 call linvec(h0,konl,nope,kk,h0l,one,three)
256 elseif(lakonl(4:6).eq.
'10T')
then 257 call linvec(h0,konl,h0l,one,three,shp)
261 h0l(j)=h0l(j)+shp(4,i1)*h0(j,konl(i1))
268 if(ithermal.eq.1)
then 269 if(lakonl(4:5).eq.
'8 ')
then 271 t1l=t1l+t1(konl(i1))/8.d0
273 elseif(lakonl(4:6).eq.
'20 ')
then 274 call linscal(t1,konl,nope,kk,t1l,one)
275 elseif(lakonl(4:6).eq.
'10T')
then 279 t1l=t1l+shp(4,i1)*t1(konl(i1))
282 elseif(ithermal.ge.2)
then 283 if(lakonl(4:5).eq.
'8 ')
then 285 t1l=t1l+vold(0,konl(i1))/8.d0
287 elseif(lakonl(4:6).eq.
'20 ')
then 288 call linscal(vold,konl,nope,kk,t1l,mi(2))
289 elseif(lakonl(4:6).eq.
'10T')
then 293 t1l=t1l+shp(4,i1)*vold(0,konl(i1))
302 & imat,ntmat_,t1l,elconloc,ncmat_,alpha)
306 uminv=weight/elconloc(1)
307 um=weight*elconloc(1)
308 sigma=weight*alpha(1)
315 if((int(elconloc(2)).eq.2).or.(int(elconloc(2)).eq.3))
320 diag=shp(1,ii)*shp(1,jj)+shp(2,ii)*shp(2,jj)+
321 & shp(3,ii)*shp(3,jj)
324 s(ii1+k,jj1+m)=s(ii1+k,jj1+m)+
325 & (diag*d(k,m)-shp(m,ii)*shp(k,jj)
326 & +shp(k,ii)*shp(m,jj))*uminv
334 sm(ii1+k,jj1+k)=sm(ii1+k,jj1+k)+
335 & sigma*shp(4,ii)*shp(4,jj)
338 if((int(elconloc(2)).eq.2).and.mass)
then 343 sm(ii1+k,jj1+4)=sm(ii1+k,jj1+4)+
344 & sigma*shp(4,ii)*shp(k,jj)
345 sm(ii1+4,jj1+k)=sm(ii1+4,jj1+k)+
346 & sigma*shp(k,ii)*shp(4,jj)
351 sm(ii1+4,jj1+4)=sm(ii1+4,jj1+4)+
352 & sigma*(shp(1,ii)*shp(1,jj)+
353 & shp(2,ii)*shp(2,jj)+
354 & shp(3,ii)*shp(3,jj))
356 else if(int(elconloc(2)).eq.1)
then 360 s(ii1+5,jj1+5)=s(ii1+5,jj1+5)-
361 & um*(shp(1,ii)*shp(1,jj)+
362 & shp(2,ii)*shp(2,jj)+
363 & shp(3,ii)*shp(3,jj))
371 if((rhsi).and.(int(elconloc(2)).eq.1))
then 372 ff(jj1+5)=ff(jj1+5)-um*(shp(1,jj)*h0l(1)+
385 if((lakonl(4:4).eq.
'8').or.(lakonl(4:4).eq.
'2'))
then 387 elseif((lakonl(4:4).eq.
'6').or.(lakonl(4:5).eq.
'15'))
then 389 elseif((lakonl(4:4).eq.
'4').or.(lakonl(4:5).eq.
'10'))
then 394 if(iactive(m).eq.0)
return 396 istart=istartset(iset)
397 ilength=iendset(iset)-istart+1
399 isurf=10*nelem+nfaces
400 call nident(ialset(istart),isurf,ilength,id)
404 isurf=ialset(istart+id-1)
406 if(iel.ne.nelem)
exit 411 if(lakonl(4:4).eq.
'6')
then 419 if(lakonl(4:5).eq.
'15')
then 429 if((nope.eq.20).or.(nope.eq.8))
then 432 h0l2(j,i)=h0(j,konl(ifaceq(i,ig)))
433 xl2(j,i)=co(j,konl(ifaceq(i,ig)))
436 elseif((nope.eq.10).or.(nope.eq.4))
then 439 h0l2(j,i)=h0(j,konl(ifacet(i,ig)))
440 xl2(j,i)=co(j,konl(ifacet(i,ig)))
446 h0l2(j,i)=h0(j,konl(ifacew(i,ig)))
447 xl2(j,i)=co(j,konl(ifacew(i,ig)))
454 if((lakonl(4:5).eq.
'8R').or.
455 & ((lakonl(4:4).eq.
'6').and.(nopes.eq.4)))
then 459 elseif((lakonl(4:4).eq.
'8').or.(lakonl(4:6).eq.
'20R').or.
460 & ((lakonl(4:5).eq.
'15').and.(nopes.eq.8)))
then 464 elseif(lakonl(4:4).eq.
'2')
then 468 elseif((lakonl(4:5).eq.
'10').or.
469 & ((lakonl(4:5).eq.
'15').and.(nopes.eq.6)))
then 473 elseif((lakonl(4:4).eq.
'4').or.
474 & ((lakonl(4:4).eq.
'6').and.(nopes.eq.3)))
then 481 call shape8q(xi,et,xl2,xsj2,xs2,shp2,iflag)
482 elseif(nopes.eq.4)
then 483 call shape4q(xi,et,xl2,xsj2,xs2,shp2,iflag)
484 elseif(nopes.eq.6)
then 485 call shape6tri(xi,et,xl2,xsj2,xs2,shp2,iflag)
487 call shape3tri(xi,et,xl2,xsj2,xs2,shp2,iflag)
493 h0l(k)=h0l(k)+h0l2(k,j)*shp2(4,j)
497 if((rhsi).and.(m.gt.1))
then 499 if((nope.eq.20).or.(nope.eq.8))
then 500 ipointer=5*(ifaceq(k,ig)-1)
501 elseif((nope.eq.10).or.(nope.eq.4))
then 502 ipointer=5*(ifacet(k,ig)-1)
504 ipointer=5*(ifacew(k,ig)-1)
509 ff(ipointer+1)=ff(ipointer+1)+
510 & shp2(4,k)*(h0l(2)*xsj2(3)-h0l(3)*xsj2(2))*weight
511 ff(ipointer+2)=ff(ipointer+2)+
512 & shp2(4,k)*(h0l(3)*xsj2(1)-h0l(1)*xsj2(3))*weight
513 ff(ipointer+3)=ff(ipointer+3)+
514 & shp2(4,k)*(h0l(1)*xsj2(2)-h0l(2)*xsj2(1))*weight
520 if((nope.eq.20).or.(nope.eq.8))
then 521 ipointeri=5*(ifaceq(ii,ig)-1)
522 elseif((nope.eq.10).or.(nope.eq.4))
then 523 ipointeri=5*(ifacet(ii,ig)-1)
525 ipointeri=5*(ifacew(ii,ig)-1)
528 if((nope.eq.20).or.(nope.eq.8))
then 529 ipointerj=5*(ifaceq(jj,ig)-1)
530 elseif((nope.eq.10).or.(nope.eq.4))
then 531 ipointerj=5*(ifacet(jj,ig)-1)
533 ipointerj=5*(ifacew(jj,ig)-1)
540 if((ipointeri+1).gt.ipointerj+5) cycle
541 s(ipointeri+1,ipointerj+5)=
542 & s(ipointeri+1,ipointerj+5)
543 & +shp2(4,jj)*(shp2(3,ii)*xsj2(2)
544 & -shp2(2,ii)*xsj2(3))
547 if((ipointeri+2).gt.ipointerj+5) cycle
548 s(ipointeri+2,ipointerj+5)=
549 & s(ipointeri+2,ipointerj+5)
550 & +shp2(4,jj)*(shp2(1,ii)*xsj2(3)
551 & -shp2(3,ii)*xsj2(1))
554 if((ipointeri+3).gt.ipointerj+5) cycle
555 s(ipointeri+3,ipointerj+5)=
556 & s(ipointeri+3,ipointerj+5)
557 & +shp2(4,jj)*(shp2(2,ii)*xsj2(1)
558 & -shp2(1,ii)*xsj2(2))
563 if(ipointeri+5.gt.(ipointerj+1)) cycle
564 s(ipointeri+5,ipointerj+1)=
565 & s(ipointeri+5,ipointerj+1)
566 & +shp2(4,ii)*(shp2(3,jj)*xsj2(2)
567 & -shp2(2,jj)*xsj2(3))
570 if(ipointeri+5.gt.(ipointerj+2)) cycle
571 s(ipointeri+5,ipointerj+2)=
572 & s(ipointeri+5,ipointerj+2)
573 & +shp2(4,ii)*(shp2(1,jj)*xsj2(3)
574 & -shp2(3,jj)*xsj2(1))
577 if(ipointeri+5.gt.(ipointerj+3)) cycle
578 s(ipointeri+5,ipointerj+3)=
579 & s(ipointeri+5,ipointerj+3)
580 & +shp2(4,ii)*(shp2(2,jj)*xsj2(1)
581 & -shp2(1,jj)*xsj2(2))
subroutine shape6w(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape6w.f:20
subroutine linscal10(scal, konl, scall, idim, shp)
Definition: linscal10.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 shape10tet(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape10tet.f:20
subroutine shape8h(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape8h.f:20
subroutine shape15w(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape15w.f:20
static ITG * idist
Definition: radflowload.c:39
subroutine linscal(scal, konl, nope, jj, scall, idim)
Definition: linscal.f:20
subroutine linvec(vec, konl, nope, jj, vecl, istart, iend)
Definition: linvec.f:20
subroutine shape4q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape4q.f:20
subroutine shape20h(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape20h.f:20
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine shape4tet(xi, et, ze, xl, xsj, shp, iflag)
Definition: shape4tet.f:20
subroutine shape6tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape6tri.f:20
subroutine materialdata_em(elcon, nelcon, alcon, nalcon, imat, ntmat_, t1l, elconloc, ncmat_, alpha)
Definition: materialdata_em.f:20