36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
57
58
59
60#include "implicit_f.inc"
61
62
63
64#include "com04_c.inc"
65#include "param_c.inc"
66
67
68
69 INTEGER ND_ARRAY(*),IB,ND_SIZE
71 . x(3,*),skew(lskew,*)
72
73 TYPE (BOX_) , DIMENSION(NBBOX) :: IBOX
74
75
76
77 INTEGER I,J,INSIDE,ISK,BOX_TYPE,NBOXBOX,IBX
79 . xp1,yp1,zp1,xp2,yp2,zp2,diam,nodinb(3)
80
81 nd_size = 0
82
83
84
85
86
87! IF(key(1:5) == 'RECTA')ibox(igs)%TYPE = 1
88
89
90
91
92
93
94
95
96
97
98 ibx = abs(ib)
99 isk = ibox(ibx)%ISKBOX
100 box_type = ibox(ibx)%TYPE
101 xp1 = ibox(ibx)%X1
102 yp1 = ibox(ibx)%Y1
103 zp1 = ibox(ibx)%Z1
104 xp2 = ibox(ibx)%X2
105 yp2 = ibox(ibx)%Y2
106 zp2 = ibox(ibx)%Z2
107 diam = ibox(ibx)%DIAM
108
109
110 IF (box_type == 1) THEN
111 DO j=1,numnod
112 inside = 0
113 nodinb(1) = x(1,j)
114 nodinb(2) = x(2,j)
115 nodinb(3) = x(3,j)
117 . isk,nodinb,skew,inside)
118
119 IF (inside == 1) THEN
120 nd_size = nd_size + 1
121 nd_array(nd_size) = j
122 ENDIF
123
124 ENDDO
125
126 ! cylin
127 ELSEIF (box_type == 2) THEN
128 DO j=1,numnod
129 inside = 0
130 nodinb(1) = x(1,j)
131 nodinb(2) = x(2,j)
132 nodinb(3) = x(3,j)
133 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
134 . nodinb , diam, inside )
135
136 IF (inside == 1) THEN
137 nd_size = nd_size + 1
138 nd_array(nd_size) = j
139 ENDIF
140
141 ENDDO
142
143
144 ELSEIF (box_type == 3) THEN
145 DO j=1,numnod
146 inside = 0
147 nodinb(1) = x(1,j)
148 nodinb(2) = x(2,j)
149 nodinb(3) = x(3,j)
150 CALL checksphere(xp1, yp1, zp1, nodinb, diam, inside)
151
152 IF (inside == 1) THEN
153 nd_size = nd_size + 1
154 nd_array(nd_size) = j
155 ENDIF
156
157 ENDDO
158 ENDIF
159
160
161 RETURN
subroutine checkcyl(xp1, yp1, zp1, xp2, yp2, zp2, nodin, d, ok)
subroutine checkpara(xp1, yp1, zp1, xp2, yp2, zp2, isk, nodin, skew, ok)
subroutine checksphere(xp, yp, zp, nodin, d, ok)