00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifdef COMP_GNUOLD
00024 #include <iostream.h>
00025 #include <fstream.h>
00026 #include <time.h>
00027 #include <math.h>
00028 #else
00029 #include <iostream>
00030 #include <fstream>
00031 #include <ctime>
00032 #include <cmath>
00033 #endif
00034
00035
00036
00037 #include "../parser.h"
00038
00039
00040 #include "../paramete.h"
00041 #include "../abbrevi.h"
00042 #include "../math_lib/math_lib.h"
00043
00044
00045 #include "../basic/basic.h"
00046
00047
00048 #include "../domain/domain.h"
00049
00050
00051 #include "../formulas/boundy.h"
00052 #include "../formulas/loc_sten.h"
00053
00054
00055 #include "../grid/gpar.h"
00056 #include "../grid/parallel.h"
00057 #include "../grid/mgcoeff.h"
00058 #include "../grid/sto_man.h"
00059 #include "../grid/gridbase.h"
00060 #include "../grid/grid.h"
00061 #include "../grid/input.h"
00062
00063
00064
00065 #include "../evpar/evpar.h"
00066
00067
00068 #include "../extemp/variable.h"
00069 #include "../extemp/eleme.h"
00070
00071
00072 #include "index.h"
00073
00074
00076
00077
00078
00080
00082
00084
00085 void Index_set::Start_setting_arrays() {
00086 used_P_interior = 0;
00087 used_P_nearb = 0;
00088 used_P_cellpoi = 0;
00089 used_P_Bo2p = 0;
00090 size = 0;
00091 }
00092
00093
00094
00095
00096
00097
00098 void Index_set::Add_regular_condi(Index3D I, Index_set* set) {
00099 int n;
00100 typ_of_general_points typ;
00101
00102 if(set->Exists_index(I,6)) {
00103 n = set->Give_value(I,6);
00104 typ = set->type(n);
00105 if(typ==type_P_interior) {
00106 start_P_interior[used_P_interior] = set->pointer_P_interior(n);
00107 ++used_P_interior;
00108 if(developer_version) {
00109 if(used_P_interior > minimal_length_P_interior) {
00110 cout << " Warning: "
00111 << " there might be an error in minimal_length_P_interior"
00112 << " \n Tell Christph Pflaum: "
00113 << " used_P_interior: " << used_P_interior << endl;
00114 }
00115 }
00116 }
00117 else if(typ==type_P_nearb) {
00118 start_P_nearb[used_P_nearb] = set->pointer_P_nearb(n);
00119 ++used_P_nearb;
00120 if(developer_version) {
00121 if(used_P_nearb > minimal_length_P_nearb) {
00122 cout << " Warning: there might be an error in minimal_length_P_nearb"
00123 << " \n Tell Christoph Pflaum: "
00124 << " used_P_nearb: " << used_P_nearb << endl;
00125 }
00126 }
00127 }
00128 else {
00129 if(developer_version) {
00130 cout << " error in Index_set::Add_regular_condi: "
00131 << typ
00132 << " x: " << I.I_x().get()
00133 << " y: " << I.I_y().get()
00134 << " z: " << I.I_z().get()
00135 << " n: " << n << endl;
00136 }
00137 }
00138 }
00139 }
00140
00141 void Index_set::Add_cellpoi_condi(Index3D I, Index_set* set) {
00142 int n;
00143
00144 if(set->Exists_index(I,7)) {
00145 n = set->Give_value(I,7);
00146 if(developer_version) {
00147 if(set->type(n)!=type_P_cellpoi) {
00148 cout << " error in Index_set::Add_cellpoi_condi" << endl;
00149 }
00150 }
00151 start_P_cellpoi[used_P_cellpoi] = set->pointer_P_cellpoi(n);;
00152 ++used_P_cellpoi;
00153 if(developer_version) {
00154 if(used_P_cellpoi > minimal_length_P_cellpoi) {
00155 cout << " Warning: there might be an error in minimal_length_P_cellpoi"
00156 << " \n Tell Christoph Pflaum: "
00157 << " used_P_cellpoi: " << used_P_cellpoi << endl;
00158 }
00159 }
00160 }
00161 }
00162
00163 void Index_set::Add_Bo2p_condi(Index3D I, dir_3D d, Index_set* set) {
00164 int n;
00165
00166 if(set->Exists_index(I,(int)d)) {
00167 n = set->Give_value(I,(int)d);
00168 if(developer_version) {
00169 if(set->type(n)!=type_P_Bo2p) {
00170 cout << " error in Index_set::Add_Bo2p_condi" << endl;
00171 }
00172 }
00173 start_P_Bo2p[used_P_Bo2p] = set->pointer_P_Bo2p(n);;
00174 ++used_P_Bo2p;
00175 if(developer_version) {
00176 if(used_P_Bo2p > minimal_length_P_Bo2p) {
00177 cout << " Warning: there might be an error in minimal_length_P_Bo2p"
00178 << " \n Tell Christoph Pflaum: "
00179 << " used_P_Bo2p: " << used_P_Bo2p << endl;
00180 }
00181 }
00182 }
00183 }
00184
00185 void Index_set::operator=(Index_set_Expr index_set_expr) {
00186 Index_set* set;
00187 ExpdeIndex* i;
00188 Index3D I, Inext;
00189 int k,l,m;
00190 int max_level;
00191
00192 P_interior *iter_i;
00193 P_nearb *iter_n;
00194 P_Bo2p *iter_b;
00195 P_cellpoi *iter_cf;
00196
00197
00198 typ_of_general_points typ;
00199
00200
00201 set = index_set_expr.set;
00202 i = index_set_expr.i;
00203
00204 max_level = grid->Max_level();
00205
00206 set->initialize_hashtable();
00207 nicht_implementiert = true;
00208
00209
00210 Start_setting_arrays();
00211
00212
00213 typ = i->index_set()->type(i->i_integer());
00214 if(typ==type_P_interior) {
00215
00216 iter_i = i->index_set()->pointer_P_interior(i->i_integer());
00217 I = iter_i->Ind();
00218 for(k=0;k<3;++k) for(l=0;l<3;++l) for(m=0;m<3;++m) {
00219 Add_regular_condi(I.next((Ort1D)k,(Ort1D)l,(Ort1D)m,max_level),set);
00220 }
00221 }
00222 if(typ==type_P_nearb) {
00223
00224 iter_n = i->index_set()->pointer_P_nearb(i->i_integer());
00225 I = iter_n->Ind();
00226
00227 Add_regular_condi(I,set);
00228 for(l=0;l<6;++l) {
00229 Add_Bo2p_condi(I,(dir_3D)l,set);
00230 }
00231
00232 Inext = I.next_ENT(max_level);
00233 Add_regular_condi(Inext,set);
00234 Add_Bo2p_condi(Inext,Wdir,set);
00235 Add_Bo2p_condi(Inext,Sdir,set);
00236 Add_Bo2p_condi(Inext,Ddir,set);
00237
00238 Inext = I.next_WNT(max_level);
00239 Add_regular_condi(Inext,set);
00240 Add_Bo2p_condi(Inext,Edir,set);
00241 Add_Bo2p_condi(Inext,Sdir,set);
00242 Add_Bo2p_condi(Inext,Ddir,set);
00243
00244 Inext = I.next_EST(max_level);
00245 Add_regular_condi(Inext,set);
00246 Add_Bo2p_condi(Inext,Wdir,set);
00247 Add_Bo2p_condi(Inext,Ndir,set);
00248 Add_Bo2p_condi(Inext,Ddir,set);
00249
00250 Inext = I.next_WST(max_level);
00251 Add_regular_condi(Inext,set);
00252 Add_Bo2p_condi(Inext,Edir,set);
00253 Add_Bo2p_condi(Inext,Ndir,set);
00254 Add_Bo2p_condi(Inext,Ddir,set);
00255
00256 Inext = I.next_END(max_level);
00257 Add_regular_condi(Inext,set);
00258 Add_Bo2p_condi(Inext,Wdir,set);
00259 Add_Bo2p_condi(Inext,Sdir,set);
00260 Add_Bo2p_condi(Inext,Tdir,set);
00261
00262 Inext = I.next_WND(max_level);
00263 Add_regular_condi(Inext,set);
00264 Add_Bo2p_condi(Inext,Edir,set);
00265 Add_Bo2p_condi(Inext,Sdir,set);
00266 Add_Bo2p_condi(Inext,Tdir,set);
00267
00268 Inext = I.next_ESD(max_level);
00269 Add_regular_condi(Inext,set);
00270 Add_Bo2p_condi(Inext,Wdir,set);
00271 Add_Bo2p_condi(Inext,Ndir,set);
00272 Add_Bo2p_condi(Inext,Tdir,set);
00273
00274 Inext = I.next_WSD(max_level);
00275 Add_regular_condi(Inext,set);
00276 Add_Bo2p_condi(Inext,Edir,set);
00277 Add_Bo2p_condi(Inext,Ndir,set);
00278 Add_Bo2p_condi(Inext,Tdir,set);
00279
00280
00281 Inext = I.next_WS(max_level);
00282 Add_regular_condi(Inext,set);
00283 Add_Bo2p_condi(Inext,Edir,set);
00284 Add_Bo2p_condi(Inext,Ndir,set);
00285 Add_Bo2p_condi(Inext,Tdir,set);
00286 Add_Bo2p_condi(Inext,Ddir,set);
00287
00288 Inext = I.next_ES(max_level);
00289 Add_regular_condi(Inext,set);
00290 Add_Bo2p_condi(Inext,Wdir,set);
00291 Add_Bo2p_condi(Inext,Ndir,set);
00292 Add_Bo2p_condi(Inext,Tdir,set);
00293 Add_Bo2p_condi(Inext,Ddir,set);
00294
00295 Inext = I.next_WN(max_level);
00296 Add_regular_condi(Inext,set);
00297 Add_Bo2p_condi(Inext,Edir,set);
00298 Add_Bo2p_condi(Inext,Sdir,set);
00299 Add_Bo2p_condi(Inext,Tdir,set);
00300 Add_Bo2p_condi(Inext,Ddir,set);
00301
00302 Inext = I.next_EN(max_level);
00303 Add_regular_condi(Inext,set);
00304 Add_Bo2p_condi(Inext,Wdir,set);
00305 Add_Bo2p_condi(Inext,Sdir,set);
00306 Add_Bo2p_condi(Inext,Tdir,set);
00307 Add_Bo2p_condi(Inext,Ddir,set);
00308
00309
00310 Inext = I.next_ET(max_level);
00311 Add_regular_condi(Inext,set);
00312 Add_Bo2p_condi(Inext,Wdir,set);
00313 Add_Bo2p_condi(Inext,Ddir,set);
00314 Add_Bo2p_condi(Inext,Ndir,set);
00315 Add_Bo2p_condi(Inext,Sdir,set);
00316
00317 Inext = I.next_WT(max_level);
00318 Add_regular_condi(Inext,set);
00319 Add_Bo2p_condi(Inext,Edir,set);
00320 Add_Bo2p_condi(Inext,Ddir,set);
00321 Add_Bo2p_condi(Inext,Ndir,set);
00322 Add_Bo2p_condi(Inext,Sdir,set);
00323
00324 Inext = I.next_ED(max_level);
00325 Add_regular_condi(Inext,set);
00326 Add_Bo2p_condi(Inext,Wdir,set);
00327 Add_Bo2p_condi(Inext,Tdir,set);
00328 Add_Bo2p_condi(Inext,Ndir,set);
00329 Add_Bo2p_condi(Inext,Sdir,set);
00330
00331 Inext = I.next_WD(max_level);
00332 Add_regular_condi(Inext,set);
00333 Add_Bo2p_condi(Inext,Edir,set);
00334 Add_Bo2p_condi(Inext,Tdir,set);
00335 Add_Bo2p_condi(Inext,Ndir,set);
00336 Add_Bo2p_condi(Inext,Sdir,set);
00337
00338
00339 Inext = I.next_ND(max_level);
00340 Add_regular_condi(Inext,set);
00341 Add_Bo2p_condi(Inext,Sdir,set);
00342 Add_Bo2p_condi(Inext,Tdir,set);
00343 Add_Bo2p_condi(Inext,Edir,set);
00344 Add_Bo2p_condi(Inext,Wdir,set);
00345
00346 Inext = I.next_SD(max_level);
00347 Add_regular_condi(Inext,set);
00348 Add_Bo2p_condi(Inext,Ndir,set);
00349 Add_Bo2p_condi(Inext,Tdir,set);
00350 Add_Bo2p_condi(Inext,Edir,set);
00351 Add_Bo2p_condi(Inext,Wdir,set);
00352
00353 Inext = I.next_NT(max_level);
00354 Add_regular_condi(Inext,set);
00355 Add_Bo2p_condi(Inext,Sdir,set);
00356 Add_Bo2p_condi(Inext,Ddir,set);
00357 Add_Bo2p_condi(Inext,Edir,set);
00358 Add_Bo2p_condi(Inext,Wdir,set);
00359
00360 Inext = I.next_ST(max_level);
00361 Add_regular_condi(Inext,set);
00362 Add_Bo2p_condi(Inext,Ndir,set);
00363 Add_Bo2p_condi(Inext,Ddir,set);
00364 Add_Bo2p_condi(Inext,Edir,set);
00365 Add_Bo2p_condi(Inext,Wdir,set);
00366
00367
00368 Inext = I.next_W(max_level);
00369 Add_regular_condi(Inext,set);
00370 Add_Bo2p_condi(Inext,Ndir,set);
00371 Add_Bo2p_condi(Inext,Sdir,set);
00372 Add_Bo2p_condi(Inext,Tdir,set);
00373 Add_Bo2p_condi(Inext,Ddir,set);
00374
00375 Inext = I.next_E(max_level);
00376 Add_regular_condi(Inext,set);
00377 Add_Bo2p_condi(Inext,Ndir,set);
00378 Add_Bo2p_condi(Inext,Sdir,set);
00379 Add_Bo2p_condi(Inext,Tdir,set);
00380 Add_Bo2p_condi(Inext,Ddir,set);
00381
00382 Inext = I.next_N(max_level);
00383 Add_regular_condi(Inext,set);
00384 Add_Bo2p_condi(Inext,Edir,set);
00385 Add_Bo2p_condi(Inext,Wdir,set);
00386 Add_Bo2p_condi(Inext,Tdir,set);
00387 Add_Bo2p_condi(Inext,Ddir,set);
00388
00389 Inext = I.next_S(max_level);
00390 Add_regular_condi(Inext,set);
00391 Add_Bo2p_condi(Inext,Edir,set);
00392 Add_Bo2p_condi(Inext,Wdir,set);
00393 Add_Bo2p_condi(Inext,Tdir,set);
00394 Add_Bo2p_condi(Inext,Ddir,set);
00395
00396 Inext = I.next_T(max_level);
00397 Add_regular_condi(Inext,set);
00398 Add_Bo2p_condi(Inext,Edir,set);
00399 Add_Bo2p_condi(Inext,Wdir,set);
00400 Add_Bo2p_condi(Inext,Ndir,set);
00401 Add_Bo2p_condi(Inext,Sdir,set);
00402
00403 Inext = I.next_D(max_level);
00404 Add_regular_condi(Inext,set);
00405 Add_Bo2p_condi(Inext,Edir,set);
00406 Add_Bo2p_condi(Inext,Wdir,set);
00407 Add_Bo2p_condi(Inext,Ndir,set);
00408 Add_Bo2p_condi(Inext,Sdir,set);
00409
00410 for(k=0;k<8;++k) {
00411 Inext = I.son((dir_sons)k);
00412 Add_cellpoi_condi(Inext,set);
00413 }
00414 }
00415 if(typ==type_P_cellpoi) {
00416
00417 iter_cf = i->index_set()->pointer_P_cellpoi(i->i_integer());
00418 I = iter_cf->Ind();
00419
00420 Add_cellpoi_condi(I,set);
00421
00422 Inext = I.neighbour(ENTd);
00423 Add_regular_condi(Inext,set);
00424 Add_Bo2p_condi(Inext,Wdir,set);
00425 Add_Bo2p_condi(Inext,Sdir,set);
00426 Add_Bo2p_condi(Inext,Ddir,set);
00427
00428 Inext = I.neighbour(WNTd);
00429 Add_regular_condi(Inext,set);
00430 Add_Bo2p_condi(Inext,Edir,set);
00431 Add_Bo2p_condi(Inext,Sdir,set);
00432 Add_Bo2p_condi(Inext,Ddir,set);
00433
00434 Inext = I.neighbour(ESTd);
00435 Add_regular_condi(Inext,set);
00436 Add_Bo2p_condi(Inext,Wdir,set);
00437 Add_Bo2p_condi(Inext,Ndir,set);
00438 Add_Bo2p_condi(Inext,Ddir,set);
00439
00440 Inext = I.neighbour(WSTd);
00441 Add_regular_condi(Inext,set);
00442 Add_Bo2p_condi(Inext,Edir,set);
00443 Add_Bo2p_condi(Inext,Ndir,set);
00444 Add_Bo2p_condi(Inext,Ddir,set);
00445
00446 Inext = I.neighbour(ENDd);
00447 Add_regular_condi(Inext,set);
00448 Add_Bo2p_condi(Inext,Wdir,set);
00449 Add_Bo2p_condi(Inext,Sdir,set);
00450 Add_Bo2p_condi(Inext,Tdir,set);
00451
00452 Inext = I.neighbour(WNDd);
00453 Add_regular_condi(Inext,set);
00454 Add_Bo2p_condi(Inext,Edir,set);
00455 Add_Bo2p_condi(Inext,Sdir,set);
00456 Add_Bo2p_condi(Inext,Tdir,set);
00457
00458 Inext = I.neighbour(ESDd);
00459 Add_regular_condi(Inext,set);
00460 Add_Bo2p_condi(Inext,Wdir,set);
00461 Add_Bo2p_condi(Inext,Ndir,set);
00462 Add_Bo2p_condi(Inext,Tdir,set);
00463
00464 Inext = I.neighbour(WSDd);
00465 Add_regular_condi(Inext,set);
00466 Add_Bo2p_condi(Inext,Edir,set);
00467 Add_Bo2p_condi(Inext,Ndir,set);
00468 Add_Bo2p_condi(Inext,Tdir,set);
00469 }
00470 if(typ==type_P_Bo2p) {
00471
00472 iter_b = i->index_set()->pointer_P_Bo2p(i->i_integer());
00473 I = iter_b->Ind();
00474
00475 Add_regular_condi(I,set);
00476 for(l=0;l<6;++l) {
00477 Add_Bo2p_condi(I,(dir_3D)l,set);
00478 }
00479
00480 Inext = I.next_ENT(max_level);
00481 Add_regular_condi(Inext,set);
00482 Add_Bo2p_condi(Inext,Wdir,set);
00483 Add_Bo2p_condi(Inext,Sdir,set);
00484 Add_Bo2p_condi(Inext,Ddir,set);
00485
00486 Inext = I.next_WNT(max_level);
00487 Add_regular_condi(Inext,set);
00488 Add_Bo2p_condi(Inext,Edir,set);
00489 Add_Bo2p_condi(Inext,Sdir,set);
00490 Add_Bo2p_condi(Inext,Ddir,set);
00491
00492 Inext = I.next_EST(max_level);
00493 Add_regular_condi(Inext,set);
00494 Add_Bo2p_condi(Inext,Wdir,set);
00495 Add_Bo2p_condi(Inext,Ndir,set);
00496 Add_Bo2p_condi(Inext,Ddir,set);
00497
00498 Inext = I.next_WST(max_level);
00499 Add_regular_condi(Inext,set);
00500 Add_Bo2p_condi(Inext,Edir,set);
00501 Add_Bo2p_condi(Inext,Ndir,set);
00502 Add_Bo2p_condi(Inext,Ddir,set);
00503
00504 Inext = I.next_END(max_level);
00505 Add_regular_condi(Inext,set);
00506 Add_Bo2p_condi(Inext,Wdir,set);
00507 Add_Bo2p_condi(Inext,Sdir,set);
00508 Add_Bo2p_condi(Inext,Tdir,set);
00509
00510 Inext = I.next_WND(max_level);
00511 Add_regular_condi(Inext,set);
00512 Add_Bo2p_condi(Inext,Edir,set);
00513 Add_Bo2p_condi(Inext,Sdir,set);
00514 Add_Bo2p_condi(Inext,Tdir,set);
00515
00516 Inext = I.next_ESD(max_level);
00517 Add_regular_condi(Inext,set);
00518 Add_Bo2p_condi(Inext,Wdir,set);
00519 Add_Bo2p_condi(Inext,Ndir,set);
00520 Add_Bo2p_condi(Inext,Tdir,set);
00521
00522 Inext = I.next_WSD(max_level);
00523 Add_regular_condi(Inext,set);
00524 Add_Bo2p_condi(Inext,Edir,set);
00525 Add_Bo2p_condi(Inext,Ndir,set);
00526 Add_Bo2p_condi(Inext,Tdir,set);
00527
00528
00529 Inext = I.next_WS(max_level);
00530 Add_regular_condi(Inext,set);
00531 Add_Bo2p_condi(Inext,Edir,set);
00532 Add_Bo2p_condi(Inext,Ndir,set);
00533 Add_Bo2p_condi(Inext,Tdir,set);
00534 Add_Bo2p_condi(Inext,Ddir,set);
00535
00536 Inext = I.next_ES(max_level);
00537 Add_regular_condi(Inext,set);
00538 Add_Bo2p_condi(Inext,Wdir,set);
00539 Add_Bo2p_condi(Inext,Ndir,set);
00540 Add_Bo2p_condi(Inext,Tdir,set);
00541 Add_Bo2p_condi(Inext,Ddir,set);
00542
00543 Inext = I.next_WN(max_level);
00544 Add_regular_condi(Inext,set);
00545 Add_Bo2p_condi(Inext,Edir,set);
00546 Add_Bo2p_condi(Inext,Sdir,set);
00547 Add_Bo2p_condi(Inext,Tdir,set);
00548 Add_Bo2p_condi(Inext,Ddir,set);
00549
00550 Inext = I.next_EN(max_level);
00551 Add_regular_condi(Inext,set);
00552 Add_Bo2p_condi(Inext,Wdir,set);
00553 Add_Bo2p_condi(Inext,Sdir,set);
00554 Add_Bo2p_condi(Inext,Tdir,set);
00555 Add_Bo2p_condi(Inext,Ddir,set);
00556
00557
00558 Inext = I.next_ET(max_level);
00559 Add_regular_condi(Inext,set);
00560 Add_Bo2p_condi(Inext,Wdir,set);
00561 Add_Bo2p_condi(Inext,Ddir,set);
00562 Add_Bo2p_condi(Inext,Ndir,set);
00563 Add_Bo2p_condi(Inext,Sdir,set);
00564
00565 Inext = I.next_WT(max_level);
00566 Add_regular_condi(Inext,set);
00567 Add_Bo2p_condi(Inext,Edir,set);
00568 Add_Bo2p_condi(Inext,Ddir,set);
00569 Add_Bo2p_condi(Inext,Ndir,set);
00570 Add_Bo2p_condi(Inext,Sdir,set);
00571
00572 Inext = I.next_ED(max_level);
00573 Add_regular_condi(Inext,set);
00574 Add_Bo2p_condi(Inext,Wdir,set);
00575 Add_Bo2p_condi(Inext,Tdir,set);
00576 Add_Bo2p_condi(Inext,Ndir,set);
00577 Add_Bo2p_condi(Inext,Sdir,set);
00578
00579 Inext = I.next_WD(max_level);
00580 Add_regular_condi(Inext,set);
00581 Add_Bo2p_condi(Inext,Edir,set);
00582 Add_Bo2p_condi(Inext,Tdir,set);
00583 Add_Bo2p_condi(Inext,Ndir,set);
00584 Add_Bo2p_condi(Inext,Sdir,set);
00585
00586
00587 Inext = I.next_ND(max_level);
00588 Add_regular_condi(Inext,set);
00589 Add_Bo2p_condi(Inext,Sdir,set);
00590 Add_Bo2p_condi(Inext,Tdir,set);
00591 Add_Bo2p_condi(Inext,Edir,set);
00592 Add_Bo2p_condi(Inext,Wdir,set);
00593
00594 Inext = I.next_SD(max_level);
00595 Add_regular_condi(Inext,set);
00596 Add_Bo2p_condi(Inext,Ndir,set);
00597 Add_Bo2p_condi(Inext,Tdir,set);
00598 Add_Bo2p_condi(Inext,Edir,set);
00599 Add_Bo2p_condi(Inext,Wdir,set);
00600
00601 Inext = I.next_NT(max_level);
00602 Add_regular_condi(Inext,set);
00603 Add_Bo2p_condi(Inext,Sdir,set);
00604 Add_Bo2p_condi(Inext,Ddir,set);
00605 Add_Bo2p_condi(Inext,Edir,set);
00606 Add_Bo2p_condi(Inext,Wdir,set);
00607
00608 Inext = I.next_ST(max_level);
00609 Add_regular_condi(Inext,set);
00610 Add_Bo2p_condi(Inext,Ndir,set);
00611 Add_Bo2p_condi(Inext,Ddir,set);
00612 Add_Bo2p_condi(Inext,Edir,set);
00613 Add_Bo2p_condi(Inext,Wdir,set);
00614
00615
00616 Inext = I.next_W(max_level);
00617 Add_regular_condi(Inext,set);
00618 Add_Bo2p_condi(Inext,Ndir,set);
00619 Add_Bo2p_condi(Inext,Sdir,set);
00620 Add_Bo2p_condi(Inext,Tdir,set);
00621 Add_Bo2p_condi(Inext,Ddir,set);
00622
00623 Inext = I.next_E(max_level);
00624 Add_regular_condi(Inext,set);
00625 Add_Bo2p_condi(Inext,Ndir,set);
00626 Add_Bo2p_condi(Inext,Sdir,set);
00627 Add_Bo2p_condi(Inext,Tdir,set);
00628 Add_Bo2p_condi(Inext,Ddir,set);
00629
00630 Inext = I.next_N(max_level);
00631 Add_regular_condi(Inext,set);
00632 Add_Bo2p_condi(Inext,Edir,set);
00633 Add_Bo2p_condi(Inext,Wdir,set);
00634 Add_Bo2p_condi(Inext,Tdir,set);
00635 Add_Bo2p_condi(Inext,Ddir,set);
00636
00637 Inext = I.next_S(max_level);
00638 Add_regular_condi(Inext,set);
00639 Add_Bo2p_condi(Inext,Edir,set);
00640 Add_Bo2p_condi(Inext,Wdir,set);
00641 Add_Bo2p_condi(Inext,Tdir,set);
00642 Add_Bo2p_condi(Inext,Ddir,set);
00643
00644 Inext = I.next_T(max_level);
00645 Add_regular_condi(Inext,set);
00646 Add_Bo2p_condi(Inext,Edir,set);
00647 Add_Bo2p_condi(Inext,Wdir,set);
00648 Add_Bo2p_condi(Inext,Ndir,set);
00649 Add_Bo2p_condi(Inext,Sdir,set);
00650
00651 Inext = I.next_D(max_level);
00652 Add_regular_condi(Inext,set);
00653 Add_Bo2p_condi(Inext,Edir,set);
00654 Add_Bo2p_condi(Inext,Wdir,set);
00655 Add_Bo2p_condi(Inext,Ndir,set);
00656 Add_Bo2p_condi(Inext,Sdir,set);
00657
00658 for(k=0;k<8;++k) {
00659 Inext = I.son((dir_sons)k);
00660 Add_cellpoi_condi(Inext,set);
00661 }
00662 }
00663
00664 size = used_P_interior + used_P_nearb + used_P_cellpoi + used_P_Bo2p;
00665 }
00666