33
34
35
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "r2r_c.inc"
46#include "com04_c.inc"
47
48
49
50 INTEGER G1,G2,TAG,TYPE2,VAL,I,
51 . GRS,,ID_INTER,COMPT,PASSE,NBTOT,FLAG,IGRPP_R2R(2,*)
52
53 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
54 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
55 TYPE () , DIMENSION(NSLIN) :: IGRSLIN
56 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
57
58
59
60 INTEGER J,TAG2,NF1,NF2,NF1T,NF2T,W
61 INTEGER N_SURFP,N_SURFT,N_NP,N_NT,N_NS
62 INTEGER N_SURFP2,N_SURFT2,I1,I2,N_GRBP,N_GRBT
63 INTEGER N_LINP,N_LINT,N_LINP2,N_LINT2
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 g1 = 0
83 g2 = 0
84 tag = 1
85 tag2 = 1
86
87
88
89
90
91 IF (flag==0) THEN
92
93
94 DO j=1,ngrnod
95 IF (igrnod(j)%ID==grs) g1 = j
96 END DO
97 DO j=1,nsurf
98 IF (igrsurf(j)%ID==grm) g2 = j
99 END DO
100
101
102 IF ((g1==0).OR.(g2==0)) GOTO 149
103
104 IF (igrnod(g1)%R2R_ALL==0) tag2 = 0
106
107 IF (iddom/=0) THEN
108
109 val = 1
110 w = 1
111 n_np = igrnod(g1)%NENTITY-igrnod(g1)%R2R_SHARE+igrpp_r2r(1,g1)
112 n_nt = igrnod(g1)%R2R_ALL-igrpp_r2r(2,g1)
113 n_ns = igrnod(g1)%R2R_SHARE-igrpp_r2r(1,g1)
116 ELSE
117
118 val = 0
119 w=0
120 n_np = igrnod(g1)%NENTITY-igrnod(g1)%R2R_ALL+igrpp_r2r(2,g1)
121 n_nt = igrnod(g1)%R2R_SHARE-igrpp_r2r(1,g1)
122 n_ns = igrnod(g1)%R2R_ALL-igrpp_r2r(2,g1)
125 ENDIF
126
127
128 IF (type2==1) n_np = n_nt
129 IF ((n_np==0).AND.(n_surfp>0)) tag=2
130 IF ((n_np/=0).AND.(n_surfp==0)) tag=3
131 IF ((n_ns==igrnod(g1)%NENTITY).AND.(n_surfp==0)) tag=-w
132 IF (flg_swale==0) THEN
133 IF ((n_nt==igrnod(g1)%NENTITY).AND.(n_surft==igrsurf(g2)%NSEG)) tag=w-1
134 ENDIF
135
136
137 IF (type2==1) THEN
138 IF (((n_nt>0).AND.(n_ns>0)).OR.(tag>0)) THEN
139 tag = 4
140 val = -100
141 ENDIF
142 ENDIF
143
144
145 IF ((tag>0).AND.(tag2>0).AND.(tag<4)) THEN
147 IF (((igrnod(g1)%R2R_ALL-igrpp_r2r(2,g1))/=igrnod(g1)%NENTITY)
148 . .OR.(w/=igrsurf(g2)%NSEG)) THEN
151 ENDIF
152 ENDIF
153
154
155
156
157
158 ELSEIF (flag==1) THEN
159
160 DO j=1,nsurf
161 IF (igrsurf(j)%ID==grs) g1 = j
162 END DO
163 DO j=1,nsurf
164 IF (igrsurf(j)%ID==grm) g2 = j
165 END DO
166
167
168 IF ((g1==0).OR.(g2==0)) GOTO 149
169
170 i1 = igrsurf(g1)%NSEG
171 i2 = igrsurf(g2)%NSEG
172 tag = 1
173 tag2 = 1
176
177 IF (iddom/=0) THEN
178
179 w = 1
180 val = 1
185 ELSE
186
187 w = 0
188 val = 0
193 ENDIF
194
195
196 IF ((n_surfp==0).AND.(n_surfp2>0)) tag=2
197 IF ((n_surfp>0).AND.(n_surfp2==0)) tag=3
198 IF ((n_surfp==0).AND.(n_surfp2==0)) tag=-w
199 IF (flg_swale==0) THEN
200 IF ((n_surft==i1).AND.(n_surft2==i2)) tag=w-1
201 ENDIF
202
203
204 IF ((tag>0).AND.(tag2>0)) THEN
205 IF ((n_surft/=i1).OR.(n_surft2/=i2)) THEN
208 ENDIF
209 ENDIF
210
211
212
213
214
215 ELSEIF (flag==2) THEN
216
217 DO j=1,nslin
218 IF (igrslin(j)%ID==grs) g1 = j
219 END DO
220 DO j=1,nslin
221 IF (igrslin(j)%ID==grm) g2 = j
222 END DO
223
224
225 IF ((g1==0).OR.(g2==0)) GOTO 149
226
227 i1 = igrslin(g1)%NSEG
228 i2 = igrslin(g2)%NSEG
229 tag = 1
230 tag2 = 1
233
234 IF (iddom/=0) THEN
235
236 w = 1
237 val = 1
242 ELSE
243
244 w = 0
245 val = 0
250 ENDIF
251
252
253 IF ((n_linp==0).AND.(n_linp2>0)) tag=2
254 IF ((n_linp>0).AND.(n_linp2==0)) tag=3
255 IF ((n_linp==0).AND.(n_linp2==0)) tag=-w
256 IF (flg_swale==0) THEN
257 IF ((n_lint==i1).AND.(n_lint2==i2)) tag=w-1
258 ENDIF
259
260
261 IF ((tag>0).AND.(tag2>0)) THEN
262 IF ((n_lint/=i1).OR.(n_lint2/=i2)) THEN
265 ENDIF
266 ENDIF
267
268
269
270
271
272 ELSEIF (flag==3) THEN
273
274 DO j=1,ngrbric
275 IF (igrbric(j)%ID==grs) g1 = j
276 END DO
277 DO j=1,nsurf
278 IF (igrsurf(j)%ID==grm) g2 = j
279 END DO
280
281
282 IF ((g1==0).OR.(g2==0)) GOTO 149
283
284 i1 = igrbric(g1)%NENTITY
285 i2 = igrsurf(g2)%NSEG
286 tag = 1
287 tag2 = 1
290
291 IF (iddom/=0) THEN
292
293 w = 1
294 val = 1
299 ELSE
300
301 w = 0
302 val = 0
307 ENDIF
308
309
310 IF ((n_grbp==0).AND.(n_surfp2>0)) tag=2
311 IF ((n_grbp>0).AND.(n_surfp2==0)) tag=3
312 IF ((n_grbp==0).AND.(n_surfp2==0)) tag=-w
313 IF (flg_swale==0) THEN
314 IF ((n_grbt==i1).AND.(n_surft2==i2)) tag=w-1
315 ENDIF
316
317
318 IF ((tag>0).AND.(tag2>0)) THEN
319 IF ((n_grbt/=i1).OR.(n_surft2/=i2)) THEN
322 ENDIF
323 ENDIF
324
325 ENDIF
326
327
328
329
330
331
332 IF ((tag2>0).AND.(tag>-1)) GOTO 149
333
334 GOTO 150
335
336
338 compt = compt+1
339
340150 CONTINUE
341
342
343 RETURN
integer, dimension(:,:), allocatable igrbric_r2r
integer, dimension(:), allocatable tagint
integer, dimension(:,:), allocatable isurf_r2r
integer, dimension(:), allocatable tagint_warn
integer, dimension(:,:), allocatable islin_r2r