Changeset 534af9 for src/comm/comm.cpp


Ignore:
Timestamp:
Apr 20, 2013, 1:52:38 PM (13 years ago)
Author:
Julian Iseringhausen <isering@…>
Children:
881e4b
Parents:
032852
Message:

Adapted Comm::GetParticleGrid to open boundary conditions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/comm/comm.cpp

    r032852 r534af9  
    8989    return *particle_grid;
    9090
    91   const Multigrid& multigrid = *MG::GetRhs();
    92   const Grid& grid = multigrid(multigrid.MaxLevel());
     91  const Grid& grid = (*MG::GetRhs())(MG::GetRhs()->MaxLevel());
     92
    9393  LocalIndices local = grid.Local();
     94  GlobalIndices global = grid.Global();
     95  SpatialExtent extent = grid.Extent();
    9496
    9597  const int& near_field_cells = MG::GetFactory().GetObjectStorageVal<int>("PARTICLE_NEAR_FIELD_CELLS");
    9698
    97   local.BoundaryBegin1() = 0;
    98   local.BoundaryEnd1() = 0;
    99   local.BoundarySize1() = 0;
     99  for (int i=0; i<3; ++i) {
    100100
    101   local.BoundaryBegin2() = 0;
    102   local.BoundaryEnd2() = 0;
    103   local.BoundarySize2() = 0;
     101    if (BoundaryConditions()[i] == Open || BoundaryConditions()[i] == Dirichlet) {
     102
     103      if (global.LocalBegin()[i] == global.GlobalBegin()[i])
     104        global.LocalBegin()[i] += 1;
     105
     106      if (global.LocalEnd()[i] == global.GlobalEnd()[i])
     107        global.LocalEnd()[i] -= 1;
     108
     109      global.LocalSize()[i] = global.LocalEnd()[i] - global.LocalBegin()[i];
     110
     111      global.GlobalBegin()[i] += 1;
     112      global.GlobalEnd()[i] -= 1;
     113      global.GlobalSize()[i] = global.GlobalEnd()[i] - global.GlobalBegin()[i];
     114
     115      extent.Begin()[i] += extent.MeshWidth()[i];
     116      extent.End()[i] -= extent.MeshWidth()[i];
     117      extent.Size()[i] = extent.End()[i] - extent.Begin()[i];
     118
     119    }
     120
     121  }
     122
     123  local.BoundaryBegin1() = local.BoundaryEnd1() = local.BoundarySize1() = 0;
     124  local.BoundaryBegin2() = local.BoundaryEnd2() = local.BoundarySize2() = 0;
    104125
    105126  local.End() -= local.Begin();
     
    127148  local.SizeTotal() = local.Size() + local.HaloSize1() + local.HaloSize2();
    128149
    129   particle_grid = new Grid(grid.Global(), local, grid.Extent());
     150  particle_grid = new Grid(global, local, extent);
    130151
    131152  return *particle_grid;
Note: See TracChangeset for help on using the changeset viewer.