37 integer ntie,nintpoint,imastop(3,*),ncont,itietri(2,ntie),
38 & ipkon(*),kon(*),koncont(4,*),node,neigh(10),iflag,kneigh,i,
39 & j,k,l,ii,itri,nx(*),ny(*),nz(*),ifreeintersec,nelemm,jfacem,
40 & indexe,nnodelem,nope,islavsurf(2,*),islavnode(*),
41 & nslavnode(ntie+1),ifaces,nelems,jfaces,mi(*),
42 & m,nopes,konl(20),id,imface(8),ntria,
43 & imfacecorner(8,8),line,iactiveline(3,3*ncont),
44 & icoveredmelem(3*ncont),nactiveline,ipe(*),ime(4,*),k1,j1,
45 & ncoveredmelem,ntri,nintpfirst,nodem(8),nodem2(8),
46 & il,nodel,
getnodel,ifacem,idummy,nopemm,nmp,k2,j2
48 real*8 straight(16,*),co(3,*),vold(0:mi(2),*),
49 & xo(*),yo(*),zo(*),x(*),y(*),z(*),
50 & xl2m(3,8),xl2s(3,8),xl2m2(3,8),
51 & pmiddle(3),xl2sr(3,8),xl2sp(3,8),xl2s2(3,8),
52 & dd,xns(3,8),areaslav,al,xn(3),slavstraight(36),
53 & err2,
dist,distmin,pslavsurf(3,*),err,xquad(2,8),
54 & xtri(2,6),xi,et,xsj2(3),xs2(3,2),shp2(7,8),anglesm
78 islavsurf(2,l)=nintpoint
84 jfaces=ifaces-nelems*10
88 call faceinfo(nelems,jfaces,lakon,nope,nopes,idummy)
94 konl(j)=kon(ipkon(nelems)+j)
100 xl2s(j,m)=co(j,konl(nodel))+
101 & vold(j,konl(nodel))
111 pmiddle(j)=pmiddle(j)+xl2s(j,m)
113 pmiddle(j)=pmiddle(j)/nopes
117 xl2sr(j,m)=xl2s(j,m)-0.5*err*(xl2s(j,m)-pmiddle(j))
123 if((nopes.eq.3).or.(nopes.eq.4))
then 130 do j=1,int(nopes/2.0)
132 xl2s2(k,2*j-1)=xl2s(k,j)
133 xl2s2(k,2*j)=xl2s(k,(int(nopes/2.0))+j)
147 xn(k)=slavstraight(4*nopes+k)
155 if((nopes.eq.4).or.(nopes.eq.8))
then 163 call shape8q(xi,et,xl2s,xsj2,xs2,shp2,iflag)
164 elseif(nopes.eq.4)
then 165 call shape4q(xi,et,xl2s,xsj2,xs2,shp2,iflag)
166 elseif(nopes.eq.6)
then 167 call shape6tri(xi,et,xl2s,xsj2,xs2,shp2,iflag)
169 call shape3tri(xi,et,xl2s,xsj2,xs2,shp2,iflag)
171 dd=dsqrt(xsj2(1)*xsj2(1)+xsj2(2)*xsj2(2)
185 dd=dsqrt(xn(1)**2+xn(2)**2+xn(3)**2)
195 al=-xn(1)*xl2s2(1,j)-xn(2)*
196 & xl2s2(2,j)-xn(3)*xl2s2(3,j)-
197 & slavstraight(nopes*4+4)
200 xl2sp(k,j)=xl2s2(k,j)+al*xn(k)
204 xl2sp(k,j)=xl2s2(k,j)
222 xl2sr(j,m)=xl2s(j,m)-2*err*(xl2s(j,m)-pmiddle(j))
227 call neartriangle(xl2sr(1,j),xn,xo,yo,zo,x,y,z,nx,ny,nz,
228 & ntri,neigh,kneigh,itietri,ntie,straight,imastop,itri,i)
234 dist=-(straight(13,itri)*xl2sr(1,j)+
235 & straight(14,itri)*xl2sr(2,j)+
236 & straight(15,itri)*xl2sr(3,j)+
237 & straight(16,itri))/
238 & (straight(13,itri)*xn(1)+
239 & straight(14,itri)*xn(2)+
240 & straight(15,itri)*xn(3))
242 ifacem=koncont(4,itri)
244 call nident(imface,ifacem,ntria,id)
246 if(imface(id).eq.ifacem)
then 256 anglesm=xn(1)*straight(13,itri)
257 & +xn(2)*straight(14,itri)
258 & +xn(3)*straight(15,itri)
260 if(anglesm.lt.-0.7)
then 265 imface(k)=imface(k-1)
267 imfacecorner(m,k)=imfacecorner(m,k-1)
271 imfacecorner(j,id+1)=1
273 imfacecorner(m,id+1)=0
286 nelemm=int(ifacem/10.d0)
287 jfacem=ifacem-10*nelemm
291 call nident(icoveredmelem,nelemm,ncoveredmelem,id)
292 if(id.ne.0 .and. icoveredmelem(id).eq.nelemm)
then 297 ncoveredmelem=ncoveredmelem+1
298 do ii=ncoveredmelem,id+2,-1
299 icoveredmelem(ii)=icoveredmelem(ii-1)
301 icoveredmelem(id+1)=nelemm
303 call faceinfo(nelemm,jfacem,lakon,nopemm,
309 konl(j1)=kon(ipkon(nelemm)+j1)
313 nodem(k1)=konl(nodel)
315 xl2m(j1,k1)=co(j1,konl(nodel))+
316 & vold(j1,konl(nodel))
319 dd=dsqrt(xn(1)**2+xn(2)**2+xn(3)**2)
323 if((nnodelem.eq.3).or.(nnodelem.eq.4))
then 331 xl2m2(j2,k2)=xl2m(j2,k2)
335 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
336 & ipe,ime,iactiveline,nactiveline,
337 & ifreeintersec,ifacem,
338 & nintpoint,pslavsurf,
339 & xl2m,nnodelem,xl2m2,nmp,nodem2,
342 elseif(nnodelem.eq.6)
then 353 xl2m2(j2,1)=xl2m(j2,1)
356 xl2m2(j2,2)=xl2m(j2,4)
359 xl2m2(j2,3)=xl2m(j2,6)
362 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
363 & ipe,ime,iactiveline,nactiveline,
364 & ifreeintersec,ifacem,
365 & nintpoint,pslavsurf,
366 & xl2m,nnodelem,xl2m2,nmp,nodem2,
376 xl2m2(j2,1)=xl2m(j2,4)
379 xl2m2(j2,2)=xl2m(j2,2)
382 xl2m2(j2,3)=xl2m(j2,5)
385 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
386 & ipe,ime,iactiveline,nactiveline,
387 & ifreeintersec,ifacem,
388 & nintpoint,pslavsurf,
389 & xl2m,nnodelem,xl2m2,nmp,nodem2,
399 xl2m2(j2,1)=xl2m(j2,5)
402 xl2m2(j2,2)=xl2m(j2,3)
405 xl2m2(j2,3)=xl2m(j2,6)
408 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
409 & ipe,ime,iactiveline,nactiveline,
410 & ifreeintersec,ifacem,
411 & nintpoint,pslavsurf,
412 & xl2m,nnodelem,xl2m2,nmp,nodem2,
422 xl2m2(j2,1)=xl2m(j2,4)
425 xl2m2(j2,2)=xl2m(j2,5)
428 xl2m2(j2,3)=xl2m(j2,6)
431 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
432 & ipe,ime,iactiveline,nactiveline,
433 & ifreeintersec,ifacem,
434 & nintpoint,pslavsurf,
435 & xl2m,nnodelem,xl2m2,nmp,nodem2,
438 elseif(nnodelem.eq.8)
then 449 xl2m2(j2,1)=xl2m(j2,1)
452 xl2m2(j2,2)=xl2m(j2,5)
455 xl2m2(j2,3)=xl2m(j2,8)
458 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
459 & ipe,ime,iactiveline,nactiveline,
460 & ifreeintersec,ifacem,
461 & nintpoint,pslavsurf,
462 & xl2m,nnodelem,xl2m2,nmp,nodem2,
472 xl2m2(j2,1)=xl2m(j2,5)
475 xl2m2(j2,2)=xl2m(j2,2)
478 xl2m2(j2,3)=xl2m(j2,6)
481 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
482 & ipe,ime,iactiveline,nactiveline,
483 & ifreeintersec,ifacem,
484 & nintpoint,pslavsurf,
485 & xl2m,nnodelem,xl2m2,nmp,nodem2,
495 xl2m2(j2,1)=xl2m(j2,6)
498 xl2m2(j2,2)=xl2m(j2,3)
501 xl2m2(j2,3)=xl2m(j2,7)
504 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
505 & ipe,ime,iactiveline,nactiveline,
506 & ifreeintersec,ifacem,
507 & nintpoint,pslavsurf,
508 & xl2m,nnodelem,xl2m2,nmp,nodem2,
518 xl2m2(j2,1)=xl2m(j2,7)
521 xl2m2(j2,2)=xl2m(j2,4)
524 xl2m2(j2,3)=xl2m(j2,8)
527 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
528 & ipe,ime,iactiveline,nactiveline,
529 & ifreeintersec,ifacem,
530 & nintpoint,pslavsurf,
531 & xl2m,nnodelem,xl2m2,nmp,nodem2,
542 xl2m2(j2,1)=xl2m(j2,5)
545 xl2m2(j2,2)=xl2m(j2,6)
548 xl2m2(j2,3)=xl2m(j2,7)
551 xl2m2(j2,4)=xl2m(j2,8)
554 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
555 & ipe,ime,iactiveline,nactiveline,
556 & ifreeintersec,ifacem,
557 & nintpoint,pslavsurf,
558 & xl2m,nnodelem,xl2m2,nmp,nodem2,
572 line=iactiveline(1,1)
573 if(nactiveline.eq.0)
exit 574 if(koncont(4,ime(2,line)).eq.iactiveline(2,1))
then 575 itri=imastop(ime(3,line),ime(2,line))
582 if((itri.gt.itietri(2,i)).or.(itri.lt.itietri(1,i)))
then 589 nactiveline=nactiveline-1
592 iactiveline(k,il)=iactiveline(k,il+1)
599 ifacem=koncont(4,itri)
600 nelemm=int(koncont(4,itri)/10.d0)
601 jfacem=koncont(4,itri)-10*nelemm
605 call nident(icoveredmelem,nelemm,ncoveredmelem,id)
606 if(id .gt. 0 .and. icoveredmelem(id).eq.nelemm)
then 610 nactiveline=nactiveline-1
613 iactiveline(k,il)=iactiveline(k,il+1)
621 ncoveredmelem=ncoveredmelem+1
622 do ii=ncoveredmelem,id+2,-1
623 icoveredmelem(ii)=icoveredmelem(ii-1)
625 icoveredmelem(id+1)=nelemm
628 call faceinfo(nelemm,jfacem,lakon,nopemm,
634 konl(j1)=kon(ipkon(nelemm)+j1)
638 nodem(k1)=konl(nodel)
640 xl2m(j1,k1)=co(j1,konl(nodel))+
641 & vold(j1,konl(nodel))
647 if((nnodelem.eq.3).or.(nnodelem.eq.4))
then 655 xl2m2(j2,k2)=xl2m(j2,k2)
659 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
660 & ipe,ime,iactiveline,nactiveline,
661 & ifreeintersec,ifacem,
662 & nintpoint,pslavsurf,
663 & xl2m,nnodelem,xl2m2,nmp,nodem2,
666 elseif(nnodelem.eq.6)
then 677 xl2m2(j2,1)=xl2m(j2,1)
680 xl2m2(j2,2)=xl2m(j2,4)
683 xl2m2(j2,3)=xl2m(j2,6)
686 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
687 & ipe,ime,iactiveline,nactiveline,
688 & ifreeintersec,ifacem,
689 & nintpoint,pslavsurf,
690 & xl2m,nnodelem,xl2m2,nmp,nodem2,
700 xl2m2(j2,1)=xl2m(j2,4)
703 xl2m2(j2,2)=xl2m(j2,2)
706 xl2m2(j2,3)=xl2m(j2,5)
709 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
710 & ipe,ime,iactiveline,nactiveline,
711 & ifreeintersec,ifacem,
712 & nintpoint,pslavsurf,
713 & xl2m,nnodelem,xl2m2,nmp,nodem2,
723 xl2m2(j2,1)=xl2m(j2,5)
726 xl2m2(j2,2)=xl2m(j2,3)
729 xl2m2(j2,3)=xl2m(j2,6)
732 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
733 & ipe,ime,iactiveline,nactiveline,
734 & ifreeintersec,ifacem,
735 & nintpoint,pslavsurf,
736 & xl2m,nnodelem,xl2m2,nmp,nodem2,
746 xl2m2(j2,1)=xl2m(j2,4)
749 xl2m2(j2,2)=xl2m(j2,5)
752 xl2m2(j2,3)=xl2m(j2,6)
755 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
756 & ipe,ime,iactiveline,nactiveline,
757 & ifreeintersec,ifacem,
758 & nintpoint,pslavsurf,
759 & xl2m,nnodelem,xl2m2,nmp,nodem2,
762 elseif(nnodelem.eq.8)
then 773 xl2m2(j2,1)=xl2m(j2,1)
776 xl2m2(j2,2)=xl2m(j2,5)
779 xl2m2(j2,3)=xl2m(j2,8)
782 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
783 & ipe,ime,iactiveline,nactiveline,
784 & ifreeintersec,ifacem,
785 & nintpoint,pslavsurf,
786 & xl2m,nnodelem,xl2m2,nmp,nodem2,
796 xl2m2(j2,1)=xl2m(j2,5)
799 xl2m2(j2,2)=xl2m(j2,2)
802 xl2m2(j2,3)=xl2m(j2,6)
805 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
806 & ipe,ime,iactiveline,nactiveline,
807 & ifreeintersec,ifacem,
808 & nintpoint,pslavsurf,
809 & xl2m,nnodelem,xl2m2,nmp,nodem2,
819 xl2m2(j2,1)=xl2m(j2,6)
822 xl2m2(j2,2)=xl2m(j2,3)
825 xl2m2(j2,3)=xl2m(j2,7)
828 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
829 & ipe,ime,iactiveline,nactiveline,
830 & ifreeintersec,ifacem,
831 & nintpoint,pslavsurf,
832 & xl2m,nnodelem,xl2m2,nmp,nodem2,
842 xl2m2(j2,1)=xl2m(j2,7)
845 xl2m2(j2,2)=xl2m(j2,4)
848 xl2m2(j2,3)=xl2m(j2,8)
851 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
852 & ipe,ime,iactiveline,nactiveline,
853 & ifreeintersec,ifacem,
854 & nintpoint,pslavsurf,
855 & xl2m,nnodelem,xl2m2,nmp,nodem2,
866 xl2m2(j2,1)=xl2m(j2,5)
869 xl2m2(j2,2)=xl2m(j2,6)
872 xl2m2(j2,3)=xl2m(j2,7)
875 xl2m2(j2,4)=xl2m(j2,8)
878 & nopes,slavstraight,xn,xns,xl2s,xl2sp,
879 & ipe,ime,iactiveline,nactiveline,
880 & ifreeintersec,ifacem,
881 & nintpoint,pslavsurf,
882 & xl2m,nnodelem,xl2m2,nmp,nodem2,
886 islavsurf(2,l+1)=nintpoint
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 faceinfo(nelem, jface, lakon, nope, nopes, mint2d)
Definition: faceinfo.f:24
integer function getnodel(ii, jface, nope)
Definition: getnodel.f:24
static double * dist
Definition: radflowload.c:42
subroutine shape4q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape4q.f:20
subroutine neartriangle(p, xn, xo, yo, zo, x, y, z, nx, ny, nz, n, neigh, kneigh, itietri, ntie, straight, imastop, itri, itie)
Definition: neartriangle.f:22
subroutine treatmasterface(nopes, slavstraight, xn, xns, xl2s, xl2sp, ipe, ime, iactiveline, nactiveline, ifreeintersec, nelemm, nintpoint, pslavsurf, xl2m, nnodelem, xl2m2, nmp, nodem, areaslav)
Definition: treatmasterface.f:27
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine straighteq3d(col, straight)
Definition: straighteq3d.f:20
subroutine shape6tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape6tri.f:20
subroutine approxplane(col, straight, xn, nopes)
Definition: approxplane.f:20