33 SUBROUTINE spinih(KXSP,IPART,IPARTSP,SPBUF,PM,
34 . IXSP ,NOD2SP ,X ,LPRTSPH,LONFSPH,
35 . SNOD2SP ,SLONFSPH,NUMNOD,NPART,ITAB)
43#include "implicit_f.inc"
53 INTEGER KXSP(NISP,*), IPART(LIPART1,*), IPARTSP(*),ITAB(*)
54 INTEGER ,
INTENT(IN) :: SNOD2SP,SLONFSPH,NUMNOD,NPART
55 INTEGER ,
INTENT(INOUT) :: IXSP(KVOISPH,NUMSPH),NOD2SP(SNOD2SP),LPRTSPH(2,0:NPART),
58 . spbuf(nspbuf,*),pm(npropm,*)
59 my_real ,
INTENT(IN) :: x(3,numnod)
63 INTEGER N,IPRT,I0,IMAT,PRE_SEARCH,FLG_H,J,NS,NBNOD(NPART),SZ_INTP_DIST
64 my_real,
DIMENSION(:),
ALLOCATABLE :: MAX_INTP_DIST_PART
66 . dist, mp, rho, vol, sq2
71 . xmin(npart),xmax(npart),ymin(npart),
ymax(npart),zmin(npart),
72 . zmax(npart),volp_prt(npart)
77 volp_prt(1:npart)=zero
91 IF (nint(spbuf(13,n))==1)
THEN
97 ELSEIF (nint(spbuf(13,n))==2)
THEN
100 dist=(sq2*vol)**third
107 dist=(sq2*vol)**third
112 flg_h=nint(get_u_geo(9,i0))
118 nbnod(iprt)=nbnod(iprt)+1
119 xmin(iprt)=
min(xmin(iprt),x(1,j))
120 ymin(iprt)=
min(ymin(iprt),x(2,j))
121 zmin(iprt)=
min(zmin(iprt),x(3,j))
122 xmax(iprt)=
max(xmax(iprt),x(1,j))
124 zmax(iprt)=
max(zmax(iprt),x(3,j))
129 IF (pre_search == 1)
THEN
132 IF (nbnod(iprt) > 0)
THEN
133 vol_tot = abs(xmin(iprt)-xmax(iprt))*abs(ymin(iprt)-
ymax(iprt))*abs(zmin(iprt)-zmax(iprt))
134 volp_prt(iprt) = vol_tot/nbnod(iprt)
140 flg_h=nint(get_u_geo(9,i0))
142 dist = volp_prt(iprt)**third
143 spbuf(1,n) =
min(dist,spbuf(1,n))
147 CALL my_alloc(max_intp_dist_part,npart)
148 max_intp_dist_part(1:npart) = zero
152 CALL sptri(kxsp ,ixsp ,nod2sp ,x ,spbuf ,
153 . lprtsph ,lonfsph ,ipartsp ,sz_intp_dist,max_intp_dist_part,
159 flg_h=nint(get_u_geo(9,i0))
162 h_scal=get_u_geo(12,i0)
163 spbuf(1,n)=h_scal*max_intp_dist_part(iprt)
164 spbuf(14,n)=h_scal*max_intp_dist_part(iprt)
168 DEALLOCATE(max_intp_dist_part)
subroutine spinih(kxsp, ipart, ipartsp, spbuf, pm, ixsp, nod2sp, x, lprtsph, lonfsph, snod2sp, slonfsph, numnod, npart, itab)
subroutine sptri(kxsp, ixsp, nod2sp, x, spbuf, lprtsph, lonfsph, ipartsp, sz_intp_dist, max_intp_dist_part, pre_search)