26 integer j,nelemm,jfacem,indexe,ipkon(*),kon(*),nopem,node,
27 & ifaceq(8,6),ifacet(6,4),ifacew1(4,5),ifacew2(8,5),
28 & konl(26),ipoface(*),nodface(5,*),mi(*),nodedesiinv(*),
29 & nactdof(0:mi(2),*),nopesurf(9),nnodes,noregion,nope,
30 & nopedesi,l,m,iflag,k,nk
32 real*8 extnor(3,*),xsj2(3),shp2(7,9),xs2(3,2),xi,et,dd,
33 & xquad(2,9),xtri(2,7),xl2m(3,9),co(3,*)
37 data ifaceq /4,3,2,1,11,10,9,12,
38 & 5,6,7,8,13,14,15,16,
40 & 2,3,7,6,10,19,14,18,
41 & 3,4,8,7,11,20,15,19,
42 & 4,1,5,8,12,17,16,20/
46 data ifacet /1,3,2,7,6,5,
53 data ifacew1 /1,3,2,0,
61 data ifacew2 /1,3,2,9,8,7,0,0,
69 data xquad /-1.d0,-1.d0,
85 & 0.333333333333333d0,0.333333333333333d0/
99 if(ipoface(j).eq.0) cycle
104 nelemm=nodface(3,indexe)
105 jfacem=nodface(4,indexe)
110 if(lakon(nelemm)(4:4).eq.
'8')
then 114 elseif(lakon(nelemm)(4:5).eq.
'20')
then 118 elseif(lakon(nelemm)(4:5).eq.
'10')
then 122 elseif(lakon(nelemm)(4:4).eq.
'4')
then 129 elseif(lakon(nelemm)(4:4).eq.
'6')
then 137 elseif(lakon(nelemm)(4:5).eq.
'15')
then 146 if(noregion.eq.1) nopedesi=0
152 konl(k)=kon(ipkon(nelemm)+k)
155 if((nope.eq.20).or.(nope.eq.8))
then 157 nopesurf(m)=konl(ifaceq(m,jfacem))
159 xl2m(k,m)=co(k,nopesurf(m))
162 elseif((nope.eq.10).or.(nope.eq.4))
165 nopesurf(m)=konl(ifacet(m,jfacem))
167 xl2m(k,m)=co(k,nopesurf(m))
170 elseif(nope.eq.15)
then 172 nopesurf(m)=konl(ifacew2(m,jfacem))
174 xl2m(k,m)=co(k,nopesurf(m))
179 nopesurf(m)=konl(ifacew1(m,jfacem))
181 xl2m(k,m)=co(k,nopesurf(m))
190 if(nodedesiinv(nopesurf(m)).eq.1)
then 201 call shape8q(xi,et,xl2m,xsj2,xs2,shp2,iflag)
202 dd=dsqrt(xsj2(1)*xsj2(1) + xsj2(2)*xsj2(2)
209 node=konl(ifaceq(m,jfacem))
210 elseif(nope.eq.15)
then 211 node=konl(ifacew2(m,jfacem))
213 if((nodedesiinv(node).eq.0).or.
214 & ((nodedesiinv(node).eq.1).and.
215 & (nnodes.ge.nopedesi)))
then 216 extnor(1,node)=extnor(1,node)
218 extnor(2,node)=extnor(2,node)
220 extnor(3,node)=extnor(3,node)
224 elseif(nopem.eq.4)
then 228 call shape4q(xi,et,xl2m,xsj2,xs2,shp2,iflag)
229 dd=dsqrt(xsj2(1)*xsj2(1) + xsj2(2)*xsj2(2)
236 node=konl(ifaceq(m,jfacem))
237 elseif(nope.eq.6)
then 238 node=konl(ifacew1(m,jfacem))
240 if((nodedesiinv(node).eq.0).or.
241 & ((nodedesiinv(node).eq.1).and.
242 & (nnodes.ge.nopedesi)))
then 243 extnor(1,node)=extnor(1,node)
245 extnor(2,node)=extnor(2,node)
247 extnor(3,node)=extnor(3,node)
251 elseif(nopem.eq.6)
then 255 call shape6tri(xi,et,xl2m,xsj2,xs2,shp2,iflag)
256 dd=dsqrt(xsj2(1)*xsj2(1) + xsj2(2)*xsj2(2)
263 node=konl(ifacet(m,jfacem))
264 elseif(nope.eq.15)
then 265 node=konl(ifacew2(m,jfacem))
267 if((nodedesiinv(node).eq.0).or.
268 & ((nodedesiinv(node).eq.1).and.
269 & (nnodes.ge.nopedesi)))
then 270 extnor(1,node)=extnor(1,node)
272 extnor(2,node)=extnor(2,node)
274 extnor(3,node)=extnor(3,node)
282 call shape3tri(xi,et,xl2m,xsj2,xs2,shp2,iflag)
283 dd=dsqrt(xsj2(1)*xsj2(1) + xsj2(2)*xsj2(2)
290 node=konl(ifacew1(m,jfacem))
291 elseif(nope.eq.4)
then 292 node=konl(ifacet(m,jfacem))
294 if((nodedesiinv(node).eq.0).or.
295 & ((nodedesiinv(node).eq.1).and.
296 & (nnodes.ge.nopedesi)))
then 297 extnor(1,node)=extnor(1,node)
299 extnor(2,node)=extnor(2,node)
301 extnor(3,node)=extnor(3,node)
307 indexe=nodface(5,indexe)
317 if(nactdof(m,l).le.0)
then 326 dd=dsqrt(extnor(1,l)**2+extnor(2,l)**2+
330 extnor(m,l)=extnor(m,l)/dd
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 shape4q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape4q.f:20
subroutine shape6tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape6tri.f:20