35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
56 USE elbufdef_mod
57
58
59
60#include "implicit_f.inc"
61
62
63
64#include "comlock.inc"
65
66
67
68 INTEGER :: NIN,IB,K
69 INTEGER :: GET_UNIQUE_MAIN_CELL
70
71
72
73 INTEGER :: IsMain, N, IPOS, LEVEL, ICELL
74 my_real :: centroid(3,k), score(k),
min, nextmin
75
76
77
78
79
80
81
82
83 centroid(:,:) = zero
84 n = 0
85 ipos = 1
86 level = 3
87 score(1:k) = zero
88
89 DO icell = 1, 9
91 IF(ismain==0)cycle
92 n = n + 1
93 centroid(1:3,n) =
brick_list(nin,ib)%POLY(icell)%CellCenter(1:3)
94 ENDDO
95
96 DO WHILE(level >= 1)
97 ipos = minloc(centroid(4-level,1:k),1)
98 min = centroid(4-level,ipos)
99 DO WHILE (ipos < k)
100 ipos = minloc(centroid(4-level,ipos+1:k),1)
101 nextmin = centroid(4-level,ipos)
102 IF(nextmin ==
min)
THEN
103 score(ipos) = score(ipos) + 10**level
104 ipos = ipos + 1
105 ENDIF
106 enddo
107 ipos = 1
108 level = level -1
109 enddo
110
111 ipos = maxloc(score(1:k),1)
113
114 RETURN
integer function get_unique_main_cell(nin, ib, k)
type(brick_entity), dimension(:,:), allocatable, target brick_list