30 integer ifatet(4,*),id,node(100),near,nx(*),ny(*),nz(*),
31 & ifs,iface,i,konl(20),nfield,nktet,ielement,ielmax,netet,k,
32 & j,iselect(nselect),nselect,kontyp(*),ipkon(*),kon(*),iparent(*),
33 & nterms,indexe,nelem,konl_opt(20),idummy1(100),idummy2(100),
34 & iparentel(100),nparentel,kflag,ii,inside,nterms_opt,
35 & istartset(*),iendset(*),ialset(*),imastset,ielemnr(*),
36 & ielementnr,nlength,nearset
38 real*8 cotet(3,*),planfa(4,*),dface,dfacemax,tolerance,
39 &
dist,field(nfield,nktet),ratio(20),pneigh(3,20),pnode(3),xi,et,
40 & ze,dist_opt,ratio_opt(20),xp,yp,zp,x(*),y(*),z(*),xo(*),yo(*),
43 intent(in) x,y,z,xo,yo,zo,nx,ny,nz,
44 & planfa,ifatet,nktet,netet,field,nfield,
45 & cotet,kontyp,ipkon,kon,iparent,
46 & xp,yp,zp,iselect,nselect,
47 & istartset,iendset,ialset,imastset,ielemnr
49 intent(inout) konl,
value,nterms,ratio
71 call near3d(xo,yo,zo,x,y,z,nx,ny,nz,xp,yp,zp,netet,
91 if(imastset.ne.0)
then 92 ielementnr=ielemnr(iparent(ielement))
93 nlength=iendset(imastset)-istartset(imastset)+1
94 call nident(ialset(istartset(imastset)),ielementnr,
97 if(ialset(istartset(imastset)+id-1).ne.ielementnr) cycle
111 ifs=ifatet(j,ielement)
113 dist=planfa(1,iface)*xp+planfa(2,iface)*yp
114 & +planfa(3,iface)*zp+planfa(4,iface)
115 if(
dist*ifs.lt.-1.d-10*iface)
then 116 dface=dface+
dist*ifs/iface
120 if(dface.gt.-1.d-10)
then 129 if(dface.gt.dfacemax)
then 139 if(imastset.ne.0)
then 140 if(nearset.eq.0)
then 144 write(*,*)
'*ERROR: no suitable global element found' 145 write(*,*)
' for location (',xp,yp,zp,
')' 158 nelem=iparent(ielement)
160 if(kontyp(nelem).eq.1)
then 162 elseif(kontyp(nelem).eq.2)
then 164 elseif(kontyp(nelem).eq.3)
then 166 elseif(kontyp(nelem).eq.4)
then 168 elseif(kontyp(nelem).eq.5)
then 170 elseif(kontyp(nelem).eq.6)
then 179 if(kontyp(nelem).eq.4)
then 181 konl(i)=kon(indexe+i)
184 konl(i+4)=kon(indexe+i)
187 konl(i-4)=kon(indexe+i)
189 elseif(kontyp(nelem).eq.5)
then 191 konl(i)=kon(indexe+i)
194 konl(i+3)=kon(indexe+i)
197 konl(i-3)=kon(indexe+i)
201 konl(i)=kon(indexe+i)
209 pneigh(j,i)=cotet(j,konl(i))
229 if(
dist.gt.tolerance)
then 232 ratio_opt(i)=ratio(i)
240 idummy1(i)=iparent(node(i))
243 call isortii(idummy1,idummy2,nearset,kflag)
246 if(idummy1(i).eq.nelem) cycle
248 iparentel(1)=idummy1(1)
251 if(idummy1(i).ne.idummy1(i-1))
then 252 nparentel=nparentel+1
253 iparentel(nparentel)=idummy1(i)
266 if(kontyp(nelem).eq.1)
then 268 elseif(kontyp(nelem).eq.2)
then 270 elseif(kontyp(nelem).eq.3)
then 272 elseif(kontyp(nelem).eq.4)
then 274 elseif(kontyp(nelem).eq.5)
then 276 elseif(kontyp(nelem).eq.6)
then 285 if(kontyp(nelem).eq.4)
then 287 konl(i)=kon(indexe+i)
290 konl(i+4)=kon(indexe+i)
293 konl(i-4)=kon(indexe+i)
295 elseif(kontyp(nelem).eq.5)
then 297 konl(i)=kon(indexe+i)
300 konl(i+3)=kon(indexe+i)
303 konl(i-3)=kon(indexe+i)
307 konl(i)=kon(indexe+i)
315 pneigh(j,i)=cotet(j,konl(i))
328 if(
dist.lt.dist_opt)
then 331 ratio_opt(i)=ratio(i)
336 if(
dist.lt.tolerance)
exit 344 ratio(i)=ratio_opt(i)
348 if((ii.eq.3).or.(
dist.lt.tolerance))
exit 358 value(k)=value(k)+ratio(j)*field(i,konl(j))
subroutine near3d(xo, yo, zo, x, y, z, nx, ny, nz, xp, yp, zp, n, neighbor, k)
Definition: near3d.f:20
subroutine attach_3d(pneigh, pnode, nterms, ratio, dist, xil, etl, zel)
Definition: attach_3d.f:20
subroutine isortii(ix, iy, n, kflag)
Definition: isortii.f:6
static double * dist
Definition: radflowload.c:42
subroutine nident(x, px, n, id)
Definition: nident.f:26