34 1 X ,IRECT ,INACTI ,NSN ,
35 2 NMN ,CANDM_E2E ,CANDS_E2E ,
36 3 GAP ,NOINT ,II_STOK ,MULNSNE ,BMINMA ,
37 4 MARGE ,VMAXDT ,DRAD ,ESHIFT ,NEDGE_T ,
38 5 SSHIFT ,NRTM_T ,STFM ,STFN ,
39 6 NCONT ,GAP_M ,ITASK ,BGAPEMX ,
40 7 I_MEM ,ITAB ,MBINFLG ,EBINFLG ,LL_STOK ,
41 8 MULNSNS ,ILEV ,CAND_A ,CAND_P ,IGAP0 ,
42 9 FLAGREMNODE,KREMNOD,REMNOD ,S_REMNODE_EDG,
43 A IGAP ,GAP_M_L ,IEDGE ,NEDGE ,MSEGTYP,
44 B LEDGE ,ADMSR,EDG_BISECTOR,VTX_BISECTOR,
45 C CANDM_E2S ,CANDS_E2S,CAND_B ,CAND_PS ,GAPE ,
46 D GAP_E_L ,DGAPLOAD,FLAG_REMOVED_NODE,
47 E S_KREMNODE_E2S,S_REMNODE_E2S,KREMNODE_E2S,REMNODE_E2S,
57#include "implicit_f.inc"
65 INTEGER NSN, NMN,NOINT,IDT,,IGAP0
66 LOGICAL,
INTENT(in) :: FLAG_REMOVED_NODE
67 INTEGER,
INTENT(in) :: S_KREMNODE_E2S
68 INTEGER,
INTENT(in) ::
69 INTEGER,
INTENT(in) :: S_KREMNODE_EDG
71 INTEGER IRECT(4,*),ITASK,ILEV, IGAP, IEDGE, NEDGE, ESHIFT,NEDGE_T,SSHIFT,NRTM_T
72 INTEGER CANDM_E2E(*),CANDS_E2E(*),CAND_A(*),CANDM_E2S(*),CANDS_E2S(*),CAND_B(*)
73 INTEGER,
INTENT(in) :: S_REMNODE_EDG
74 INTEGER MULNSNE,MULNSNS,NCONT,I_MEM(2),
75 . II_STOK, LL_STOK, ITAB(*),MBINFLG(*), EBINFLG(*), LEDGE(NLEDGE,*), ADMSR(*),
77 . FLAGREMNODE, KREMNOD(S_KREMNODE_EDG), REMNOD(*)
78 INTEGER,
DIMENSION(S_KREMNODE_E2S),
INTENT(in) :: KREMNODE_E2S
79 INTEGER,
DIMENSION(S_REMNODE_E2S),
INTENT(in) :: REMNODE_E2S
82 . bminma(6),bgapemx, marge
83 my_real ,
INTENT(IN) :: dgapload
85 . x(3,*), stfm(*), gap_m(*), gap_m_l(*), gape(*), gap_e_l(*), cand_p(*), cand_ps(*), stfn(*)
86 real*4 edg_bisector(3,4,*), vtx_bisector(3,2,*)
90 INTEGER I, J, SOL_EDGE, SH_EDGE,
91 . N, L, E, IE, I1, , N1, N2
93 . xyzm(6), aaa, tzinf,
94 . xmin, ymin, zmin, xmax,
ymax, zmax
96 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
97 INTEGER (KIND=8) :: IONE,IHUNDRED
120 DO i=eshift+1,eshift+nedge_t
123 IF(stfm(l) /= zero)
THEN
125 xmin=
min(xmin,x(1,j))
126 ymin=
min(ymin,x(2,j))
127 zmin=
min(zmin,x(3,j))
128 xmax=
max(xmax,x(1,j))
130 zmax=
max(zmax,x(3,j))
131 j=irect(mod(e,4)+1,l)
132 xmin=
min(xmin,x(1,j))
133 ymin=
min(ymin,x(2,j))
134 zmin=
min(zmin,x(3,j))
137 zmax=
max(zmax,x(3,j))
141 tzinf = marge+two*bgapemx+vmaxdt+dgapload
150 bminma(1) =
max(bminma(1),xmax)
151 bminma(2) =
max(bminma(2),
ymax)
152 bminma(3) =
max(bminma(3),zmax)
153 bminma(4) =
min(bminma(4),xmin)
154 bminma(5) =
min(bminma(5),ymin)
155 bminma(6) =
min(bminma(6),zmin)
174 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
175 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
176 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
180 nbx = nint(aaa*(bminma(1)-bminma(4)))
181 nby = nint(aaa*(bminma(2)-bminma(5)))
182 nbz = nint(aaa*(bminma(3)-bminma(6)))
190 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
193 IF(res8 > lvoxel8)
THEN
195 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
197 nbx = int((nbx+2)*aaa)-2
198 nby = int((nby+2)*aaa)-2
199 nbz = int((nbz+2)*aaa)-2
208 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
210 IF(res8 > lvoxel8)
THEN
211 nbx =
min(ihundred,
max(nbx8,ione))
212 nby =
min(ihundred,
max(nby8,ione))
213 nbz =
min(ihundred,
max(nbz8,ione))
217 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
223 1 i_mem ,vmaxdt ,inacti ,
224 2 irect ,x ,stfm ,xyzm ,
225 3 ii_stok ,cands_e2e ,eshift ,nedge_t ,candm_e2e ,
226 4 mulnsne ,noint ,bgapemx ,sshift ,nrtm_t ,
228 6 igap ,gap_m ,gap_m_l ,drad ,marge ,
229 7 itask ,itab ,ll_stok ,mulnsns ,
230 8 mbinflg ,ebinflg ,ilev ,cand_a ,cand_p ,
231 9 flagremnode,kremnod,remnod , s_remnode_edg,
232 a iedge ,nedge ,ledge ,msegtyp ,igap0 ,
233 b admsr,edg_bisector,vtx_bisector,
234 c candm_e2s,cands_e2s,cand_b,cand_ps ,gape ,
235 d gap_e_l ,dgapload,flag_removed_node,
236 e s_kremnode_e2s,s_remnode_e2s,kremnode_e2s,remnode_e2s,
subroutine i25buce_edg(x, irect, inacti, nsn, nmn, candm_e2e, cands_e2e, gap, noint, ii_stok, mulnsne, bminma, marge, vmaxdt, drad, eshift, nedge_t, sshift, nrtm_t, stfm, stfn, ncont, gap_m, itask, bgapemx, i_mem, itab, mbinflg, ebinflg, ll_stok, mulnsns, ilev, cand_a, cand_p, igap0, flagremnode, kremnod, remnod, s_remnode_edg, igap, gap_m_l, iedge, nedge, msegtyp, ledge, admsr, edg_bisector, vtx_bisector, candm_e2s, cands_e2s, cand_b, cand_ps, gape, gap_e_l, dgapload, flag_removed_node, s_kremnode_e2s, s_remnode_e2s, kremnode_e2s, remnode_e2s, s_kremnode_edg)
subroutine i25trivox_edg(i_mem, vmaxdt, inacti, irect, x, stf, xyzm, ii_stok, cands_e2e, eshift, nedge_t, candm_e2e, mulnsne, noint, bgapemx, sshift, nrtm_t, voxel, nbx, nby, nbz, igap, gap_m, gap_m_l, drad, marge, itask, itab, ll_stok, mulnsns, mbinflg, ebinflg, ilev, cand_a, cand_p, flagremnode, kremnode, remnode, s_remnode_edg, iedge, nedge, ledge, msegtyp, igap0, admsr, edg_bisector, vtx_bisector, candm_e2s, cands_e2s, cand_b, cand_ps, gape, gap_e_l, dgapload, flag_removed_node, s_kremnode_e2s, s_remnode_e2s, kremnode_e2s, remnode_e2s, s_kremnode_edg)