Ignore:
Timestamp:
Apr 12, 2013, 8:41:41 PM (13 years ago)
Author:
Julian Iseringhausen <isering@…>
Children:
e5d779b
Parents:
b3075a
Message:

Some work...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/grid/multigrid.cpp

    rb3075a r6e10f33  
    8282      for (int j=0; j<3; ++j) {
    8383
    84         if (comm->BoundaryConditions()[j] == Dirichlet ||
    85             comm->BoundaryConditions()[j] == Open) {
    86 
    87           local_l.SizeTotal()[j] = global_separated[i].LocalSize()[j];
    88 
    89           /*
    90            * We have a boundary at the ends of the process grids
    91            * and halo grid points otherwise
    92            */
    93           if (global_separated[i].LocalBegin()[j] == 0) {
    94             local_l.BoundaryBegin1()[j] = 0;
    95             local_l.BoundaryEnd1()[j] = 1;
    96           }else {
    97             ++local_l.SizeTotal()[j];
    98             local_l.HaloBegin1()[j] = 0;
    99             local_l.HaloEnd1()[j] = 1;
    100           }
    101 
    102           if (global_separated[i].LocalEnd()[j] == global_separated[i].GlobalEnd()[j]) {
    103             local_l.BoundaryBegin2()[j] = local_l.SizeTotal()[j] - 1;
    104             local_l.BoundaryEnd2()[j] = local_l.SizeTotal()[j];
    105           }else {
    106             ++local_l.SizeTotal()[j];
    107             local_l.HaloBegin2()[j] = local_l.SizeTotal()[j] - 1;
    108             local_l.HaloEnd2()[j] = local_l.SizeTotal()[j];
    109           }
    110 
    111         }else if (comm->BoundaryConditions()[j] == Periodic) {
    112 
    113           local_l.SizeTotal()[j] = global_separated[i].LocalSize()[j] + 2;
    114 
    115           /*
    116            * No boundary
    117            */
    118           local_l.BoundaryBegin1()[j] = local_l.BoundaryEnd1()[j] = 0;
    119           local_l.BoundaryBegin2()[j] = local_l.BoundaryEnd2()[j] = 0;
    120 
    121           /*
    122            * Halo grid points on all processes
    123            */
    124           local_l.HaloBegin1()[j] = 0;
    125           local_l.HaloEnd1()[j] = 1;
    126           local_l.HaloBegin2()[j] = local_l.SizeTotal()[j] - 1;
    127           local_l.HaloEnd2()[j] = local_l.SizeTotal()[j];
    128 
    129         }
     84        if (comm->BoundaryConditions()[j] == Dirichlet ||
     85            comm->BoundaryConditions()[j] == Open) {
     86
     87          local_l.SizeTotal()[j] = global_separated[i].LocalSize()[j];
     88
     89          /*
     90           * We have a boundary at the ends of the process grids
     91           * and halo grid points otherwise
     92           */
     93          if (global_separated[i].LocalBegin()[j] == global_separated[i].GlobalBegin()[j]) {
     94            local_l.BoundaryBegin1()[j] = 0;
     95            local_l.BoundaryEnd1()[j] = 1;
     96          }else {
     97            ++local_l.SizeTotal()[j];
     98            local_l.HaloBegin1()[j] = 0;
     99            local_l.HaloEnd1()[j] = 1;
     100          }
     101
     102          if (global_separated[i].LocalEnd()[j] == global_separated[i].GlobalEnd()[j]) {
     103            local_l.BoundaryBegin2()[j] = local_l.SizeTotal()[j] - 1;
     104            local_l.BoundaryEnd2()[j] = local_l.SizeTotal()[j];
     105          }else {
     106            ++local_l.SizeTotal()[j];
     107            local_l.HaloBegin2()[j] = local_l.SizeTotal()[j] - 1;
     108            local_l.HaloEnd2()[j] = local_l.SizeTotal()[j];
     109          }
     110
     111        }else if (comm->BoundaryConditions()[j] == Periodic) {
     112
     113          local_l.SizeTotal()[j] = global_separated[i].LocalSize()[j] + 2;
     114
     115          /*
     116           * No boundary
     117           */
     118          local_l.BoundaryBegin1()[j] = local_l.BoundaryEnd1()[j] = 0;
     119          local_l.BoundaryBegin2()[j] = local_l.BoundaryEnd2()[j] = 0;
     120
     121          /*
     122           * Halo grid points on all processes
     123           */
     124          local_l.HaloBegin1()[j] = 0;
     125          local_l.HaloEnd1()[j] = 1;
     126          local_l.HaloBegin2()[j] = local_l.SizeTotal()[j] - 1;
     127          local_l.HaloEnd2()[j] = local_l.SizeTotal()[j];
     128
     129        }
    130130
    131131      }
     
    223223    for (i_c.Y()=grid_c.Local().Begin().Y(); i_c.Y()<grid_c.Local().End().Y(); ++i_c.Y())
    224224      for (i_c.Z()=grid_c.Local().Begin().Z(); i_c.Z()<grid_c.Local().End().Z(); ++i_c.Z())
    225         grid_c(i_c) = grid_f.GetVal(i_f.X(), 2*i_c.Y(), 2*i_c.Z());
     225        grid_c(i_c) = grid_f.GetVal(i_f.X(), 2*i_c.Y(), 2*i_c.Z());
    226226
    227227    i_c.X() = grid_c.Local().BoundaryBegin2().X();
     
    229229    for (i_c.Y()=grid_c.Local().Begin().Y(); i_c.Y()<grid_c.Local().End().Y(); ++i_c.Y())
    230230      for (i_c.Z()=grid_c.Local().Begin().Z(); i_c.Z()<grid_c.Local().End().Z(); ++i_c.Z())
    231         grid_c(i_c) = grid_f.GetVal(i_f.X(), 2*i_c.Y(), 2*i_c.Z());
     231        grid_c(i_c) = grid_f.GetVal(i_f.X(), 2*i_c.Y(), 2*i_c.Z());
    232232
    233233    i_c.Y() = grid_c.Local().BoundaryBegin1().Y();
     
    235235    for (i_c.X()=0; i_c.X()<grid_c.Local().SizeTotal().X(); ++i_c.X())
    236236      for (i_c.Z()=grid_c.Local().Begin().Z(); i_c.Z()<grid_c.Local().End().Z(); ++i_c.Z())
    237         grid_c(i_c) = grid_f.GetVal(2*i_c.X(), i_f.Y(), 2*i_c.Z());
     237        grid_c(i_c) = grid_f.GetVal(2*i_c.X(), i_f.Y(), 2*i_c.Z());
    238238
    239239    i_c.Y() = grid_c.Local().BoundaryBegin2().Y();
     
    241241    for (i_c.X()=0; i_c.X()<grid_c.Local().SizeTotal().X(); ++i_c.X())
    242242      for (i_c.Z()=grid_c.Local().Begin().Z(); i_c.Z()<grid_c.Local().End().Z(); ++i_c.Z())
    243         grid_c(i_c) = grid_f.GetVal(2*i_c.X(), i_f.Y(), 2*i_c.Z());
     243        grid_c(i_c) = grid_f.GetVal(2*i_c.X(), i_f.Y(), 2*i_c.Z());
    244244
    245245    i_c.Z() = grid_c.Local().BoundaryBegin1().Z();
     
    247247    for (i_c.X()=0; i_c.X()<grid_c.Local().SizeTotal().X(); ++i_c.X())
    248248      for (i_c.Y()=0; i_c.Y()<grid_c.Local().SizeTotal().Y(); ++i_c.Y())
    249         grid_c(i_c) = grid_f.GetVal(2*i_c.X(), 2*i_c.Y(), i_f.Z());
     249        grid_c(i_c) = grid_f.GetVal(2*i_c.X(), 2*i_c.Y(), i_f.Z());
    250250
    251251    i_c.Z() = grid_c.Local().BoundaryBegin2().Z();
     
    253253    for (i_c.X()=0; i_c.X()<grid_c.Local().SizeTotal().X(); ++i_c.X())
    254254      for (i_c.Y()=0; i_c.Y()<grid_c.Local().SizeTotal().Y(); ++i_c.Y())
    255         grid_c(i_c) = grid_f.GetVal(2*i_c.X(), 2*i_c.Y(), i_f.Z());
     255        grid_c(i_c) = grid_f.GetVal(2*i_c.X(), 2*i_c.Y(), i_f.Z());
    256256
    257257  }
Note: See TracChangeset for help on using the changeset viewer.