Ignore:
Timestamp:
Apr 5, 2013, 12:39:30 PM (13 years ago)
Author:
Julian Iseringhausen <julian.iseringhausen@…>
Children:
4a709e
Parents:
f57182
Message:

Merge stashed open boundary stuff.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/solver/solver_singular.cpp

    rf57182 r8180d8  
    6060
    6161  // Make sure that arrays are big enough to hold expanded system of equations
    62   this->Realloc(rhs.Global().GlobalSize().Product() + 1);
     62  this->Realloc(rhs.Global().GlobalSizeNew().Product() + 1);
    6363
    6464  for (grid_iter = rhs.Iterators().Local().Begin(); grid_iter != rhs.Iterators().Local().End(); ++grid_iter) {
     
    8585
    8686      for (int j=0; j<3; ++j)
    87         if (comm->BoundaryConditions()[j] == Periodic) {
    88           if (i[j] < 0)
    89             i[j] += rhs.Global().GlobalSize()[j];
    90           else if (i[j] >= rhs.Global().GlobalSize()[j])
    91             i[j] -= rhs.Global().GlobalSize()[j];
    92         }
     87        if (comm->BoundaryConditions()[j] == Periodic) {
     88          if (i[j] < rhs.Global().GlobalBegin()[j])
     89            i[j] += rhs.Global().GlobalSizeNew()[j];
     90          else if (i[j] >= rhs.Global().GlobalEnd()[j])
     91            i[j] -= rhs.Global().GlobalSizeNew()[j];
     92        }
    9393
    9494      // Compute global 1-dimensional index
     
    132132      for (int k=0; k<sol.Local().Size().Z(); k++) {
    133133
    134         // Compute global 1-dimensional index
    135         index = sol.GlobalLinearIndex(sol.Global().LocalBegin().X()+i,
    136                                       sol.Global().LocalBegin().Y()+j,
    137                                       sol.Global().LocalBegin().Z()+k);
     134        // Compute global 1-dimensional index
     135        index = sol.GlobalLinearIndex(sol.Global().LocalBegin().X() + i,
     136                                      sol.Global().LocalBegin().Y() + j,
     137                                      sol.Global().LocalBegin().Z() + k);
    138138
    139         // Set solution
    140         sol(sol.Local().Begin().X()+i, sol.Local().Begin().Y()+j, sol.Local().Begin().Z()+k) = this->Sol(index) - correction;
     139        assert(index >= 0 && index < sol.Global().GlobalSizeNew().Product());
     140
     141        // Set solution
     142        sol(sol.Local().Begin().X()+i, sol.Local().Begin().Y()+j, sol.Local().Begin().Z()+k) = this->Sol(index) - correction;
    141143
    142144      }
Note: See TracChangeset for help on using the changeset viewer.