32 SUBROUTINE spinih(KXSP,IPART,IPARTSP,SPBUF,PM,
33 . IXSP ,NOD2SP ,X ,LPRTSPH,LONFSPH,
34 . SNOD2SP ,SLONFSPH,NUMNOD,NPART,ITAB)
42#include "implicit_f.inc"
52 INTEGER KXSP(NISP,*), IPART(LIPART1,*), IPARTSP(*),ITAB(*)
53 INTEGER ,
INTENT(IN) :: ,SLONFSPH,NUMNOD,NPART
54 INTEGER ,
INTENT(INOUT) :: IXSP(KVOISPH,NUMSPH),NOD2SP(SNOD2SP),LPRTSPH(2,0:NPART),
57 . spbuf(nspbuf,*),pm(npropm,*)
58 my_real ,
INTENT(IN) :: x(3,numnod)
62 INTEGER N, IPRT, I0, IMAT, PRE_SEARCH, FLG_H, J, NBNOD(NPART), SZ_INTP_DIST
63 my_real,
DIMENSION(:),
ALLOCATABLE :: MAX_INTP_DIST_PART
65 . dist, mp, rho, vol, sq2
68 . get_u_geo,h_scal,vol_tot
70 . xmin(npart),xmax(npart),ymin(npart),
ymax(npart),zmin(npart),
71 . zmax(npart),volp_prt(npart)
76 volp_prt(1:npart)=zero
90 IF (nint(spbuf(13,n))==1)
THEN
96 ELSEIF (nint(spbuf(13,n))==2)
THEN
106 dist=(sq2*vol)**third
111 flg_h=nint(get_u_geo(9,i0))
117 nbnod(iprt)=nbnod(iprt)+1
118 xmin(iprt)=
min(xmin(iprt),x(1,j))
119 ymin(iprt)=
min(ymin(iprt),x(2,j))
120 zmin(iprt)=
min(zmin(iprt),x(3,j))
121 xmax(iprt)=
max(xmax(iprt),x(1,j))
123 zmax(iprt)=
max(zmax(iprt),x(3,j))
128 IF (pre_search == 1)
THEN
131 IF (nbnod(iprt) > 0)
THEN
132 vol_tot = abs(xmin(iprt)-xmax(iprt))*abs(ymin(iprt)-
ymax(iprt))*abs(zmin(iprt)-zmax(iprt))
133 volp_prt(iprt) = vol_tot/nbnod(iprt)
139 flg_h=nint(get_u_geo(9,i0))
141 dist = volp_prt(iprt)**third
142 spbuf(1,n) =
min(dist,spbuf(1,n))
146 CALL my_alloc(max_intp_dist_part,npart)
147 max_intp_dist_part(1:npart) = zero
151 CALL sptri(kxsp ,ixsp ,nod2sp ,x ,spbuf ,
152 . lprtsph ,lonfsph ,ipartsp ,sz_intp_dist,max_intp_dist_part,
158 flg_h=nint(get_u_geo(9,i0))
161 h_scal=get_u_geo(12,i0)
162 spbuf(1,n)=h_scal*max_intp_dist_part(iprt)
163 spbuf(14,n)=h_scal*max_intp_dist_part(iprt)
167 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)