src/expde/indices/neigh.cc

Go to the documentation of this file.
00001 //    expde: expression templates for partial differential equations.
00002 //    Copyright (C) 2001  Christoph Pflaum
00003 //    This program is free software; you can redistribute it and/or modify
00004 //    it under the terms of the GNU General Public License as published by
00005 //    the Free Software Foundation; either version 2 of the License, or
00006 //    (at your option) any later version.
00007 //
00008 //    This program is distributed in the hope that it will be useful,
00009 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011 //    GNU General Public License for more details.
00012 //
00013 //                 SEE  Notice1.doc made by 
00014 //                 LAWRENCE LIVERMORE NATIONAL LABORATORY
00015 //
00016 
00017 // ------------------------------------------------------------
00018 // variable.cc
00019 //
00020 // ------------------------------------------------------------
00021 
00022 // Include level 0:
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 // Include level 0:
00037 #include "../parser.h"
00038 
00039 // Include level 1:
00040 #include "../paramete.h"
00041 #include "../abbrevi.h"
00042 #include "../math_lib/math_lib.h"
00043 
00044 // Include level 2:
00045 #include "../basic/basic.h"
00046 
00047 // Include level 3:
00048 #include "../domain/domain.h"
00049 
00050 // Include level 4:
00051 #include "../formulas/boundy.h"
00052 #include "../formulas/loc_sten.h"
00053 
00054 // Include level 5:
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 // Include level 5.1
00065 #include "../evpar/evpar.h"
00066 
00067 // Include level 6:
00068 #include "../extemp/variable.h"  
00069 #include "../extemp/eleme.h"
00070      
00071 // Include level 7:
00072 #include "index.h"
00073 
00074 
00076                // 1. Index_set
00077                // 2. ExpdeIndex
00078                // 3. from variable.h
00080 
00082 // 1. Index_set
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 // The following three function do the following
00094 // let Jset be this Index_set 
00095 //     if "I in set" then put I in Jset
00096 // Index_set::Add_..._condi fills the values of the arrays in J
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   // preparations
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   //Start for new array setting
00210   Start_setting_arrays();
00211 
00212   // setting
00213   typ = i->index_set()->type(i->i_integer());
00214   if(typ==type_P_interior) {
00215     // interior
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     // nearb
00224     iter_n = i->index_set()->pointer_P_nearb(i->i_integer());
00225     I = iter_n->Ind();
00226     // Mitte
00227     Add_regular_condi(I,set);
00228     for(l=0;l<6;++l) {
00229       Add_Bo2p_condi(I,(dir_3D)l,set);
00230     }
00231     // Ecken
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     // Kanten
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     // Flaechen
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     // cellpoints
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     // nearb
00417     iter_cf = i->index_set()->pointer_P_cellpoi(i->i_integer());
00418     I = iter_cf->Ind();
00419     // Mitte
00420     Add_cellpoi_condi(I,set);
00421     // Ecken
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     // nearb
00472     iter_b = i->index_set()->pointer_P_Bo2p(i->i_integer());
00473     I = iter_b->Ind();
00474     // Mitte
00475     Add_regular_condi(I,set);
00476     for(l=0;l<6;++l) {
00477       Add_Bo2p_condi(I,(dir_3D)l,set);
00478     }
00479     // Ecken
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     // Kanten
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     // Flaechen
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     // cellpoints
00658     for(k=0;k<8;++k) {
00659       Inext = I.son((dir_sons)k);
00660       Add_cellpoi_condi(Inext,set);
00661     }
00662   }
00663   // set size
00664   size = used_P_interior + used_P_nearb + used_P_cellpoi + used_P_Bo2p;
00665 }
00666 

Generated on Mon Jan 16 13:23:41 2006 for IPPL by  doxygen 1.4.6