Changeset fb228be


Ignore:
Timestamp:
Apr 14, 2013, 11:46:36 AM (13 years ago)
Author:
Julian Iseringhausen <isering@…>
Children:
61a9c2
Parents:
13b272
Message:

Work on inner boudary setter method.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/discretization/discretization_poisson_fv.cpp

    r13b272 rfb228be  
    102102  Index i_c, i_f;
    103103
    104   const Boundary& bc = MG::GetComm()->BoundaryConditions();
     104  Comm& comm = *MG::GetComm();
     105
     106  const Boundary& bc = comm.BoundaryConditions();
    105107  const Index off((GridIndexTranslations::LocalToGlobal(sol_f, sol_f.Local().Begin())[0] % 2 == 0 ? 0 : 1),
    106108      (GridIndexTranslations::LocalToGlobal(sol_f, sol_f.Local().Begin())[1] % 2 == 0 ? 0 : 1),
    107109      (GridIndexTranslations::LocalToGlobal(sol_f, sol_f.Local().Begin())[2] % 2 == 0 ? 0 : 1));
    108110
    109   const Index begin_f = sol_f.Local().Begin() + off;
     111  const Index begin_f = sol_f.Local().Begin() - off;
    110112  const Index end_f = sol_f.Local().End();
    111113
     
    125127  const vmg_float c_4_3 = 4.0 / 3.0;
    126128
     129  comm.CommToGhosts(sol_f);
     130  comm.CommToGhosts(sol_c);
    127131
    128132  //
     
    135139      for (i_f.Y()=begin_f.Y(), i_c.Y()=begin_c.Y(); i_f.Y()<end_f.Y(); i_f.Y()+=2, ++i_c.Y())
    136140        for (i_f.Z()=begin_f.Z(), i_c.Z()=begin_c.Z(); i_f.Z()<end_f.Z(); i_f.Z()+=2, ++i_c.Z())
    137           rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = 0.5 * (sol_c(b1_c.X()-1,i_c.Y(),i_c.Z()) - sol_f(b1_f.X()+1,i_f.Y(),i_f.Z()));
    138 
    139       for (i_f.Y()=begin_f.Y()-1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
     141          rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = 0.5 * (sol_c(b1_c.X(),i_c.Y(),i_c.Z()) - sol_f(b1_f.X()+1,i_f.Y(),i_f.Z()));
     142
     143      for (i_f.Y()=begin_f.Y()+1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
    140144        for (i_f.Z()=begin_f.Z(); i_f.Z()<end_f.Z(); i_f.Z()+=2)
    141145          rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = 0.5 * (rhs_f(b1_f.X(),i_f.Y()-1,i_f.Z()) + rhs_f(b1_f.X(),i_f.Y()+1,i_f.Z()));
    142146
    143147      for (i_f.Y()=begin_f.Y(); i_f.Y()<end_f.Y(); i_f.Y()+=2)
    144         for (i_f.Z()=begin_f.Z()-1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
     148        for (i_f.Z()=begin_f.Z()+1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
    145149          rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = 0.5 * (rhs_f(b1_f.X(),i_f.Y(),i_f.Z()-1) + rhs_f(b1_f.X(),i_f.Y(),i_f.Z()+1));
    146150
    147       for (i_f.Y()=begin_f.Y()-1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
    148         for (i_f.Z()=begin_f.Z()-1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
     151      for (i_f.Y()=begin_f.Y()+1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
     152        for (i_f.Z()=begin_f.Z()+1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
    149153          rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = 0.25 * (rhs_f(b1_f.X(),i_f.Y()-1,i_f.Z()-1) +
    150154                                                    rhs_f(b1_f.X(),i_f.Y()+1,i_f.Z()-1) +
     
    164168      for (i_f.Y()=begin_f.Y(), i_c.Y()=begin_c.Y(); i_f.Y()<end_f.Y(); i_f.Y()+=2, ++i_c.Y())
    165169        for (i_f.Z()=begin_f.Z(), i_c.Z()=begin_c.Z(); i_f.Z()<end_f.Z(); i_f.Z()+=2, ++i_c.Z())
    166           rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = 0.5 * (sol_c(b2_c.X()+1,i_c.Y(),i_c.Z()) - sol_f(b2_f.X()-1,i_f.Y(),i_f.Z()));
    167 
    168       for (i_f.Y()=begin_f.Y()-1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
     170          rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = 0.5 * (sol_c(b2_c.X(),i_c.Y(),i_c.Z()) - sol_f(b2_f.X()-1,i_f.Y(),i_f.Z()));
     171
     172      for (i_f.Y()=begin_f.Y()+1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
    169173        for (i_f.Z()=begin_f.Z(); i_f.Z()<end_f.Z(); i_f.Z()+=2)
    170174          rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = 0.5 * (rhs_f(b2_f.X(),i_f.Y()-1,i_f.Z()) + rhs_f(b2_f.X(),i_f.Y()+1,i_f.Z()));
    171175
    172176      for (i_f.Y()=begin_f.Y(); i_f.Y()<end_f.Y(); i_f.Y()+=2)
    173         for (i_f.Z()=begin_f.Z()-1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
     177        for (i_f.Z()=begin_f.Z()+1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
    174178          rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = 0.5 * (rhs_f(b2_f.X(),i_f.Y(),i_f.Z()-1) + rhs_f(b2_f.X(),i_f.Y(),i_f.Z()+1));
    175179
    176       for (i_f.Y()=begin_f.Y()-1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
    177         for (i_f.Z()=begin_f.Z()-1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
     180      for (i_f.Y()=begin_f.Y()+1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
     181        for (i_f.Z()=begin_f.Z()+1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
    178182          rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = 0.25 * (rhs_f(b2_f.X(),i_f.Y()-1,i_f.Z()-1) +
    179183                                                    rhs_f(b2_f.X(),i_f.Y()+1,i_f.Z()-1) +
     
    199203      for (i_f.X()=begin_f.X(), i_c.X()=begin_c.X(); i_f.X()<end_f.X(); i_f.X()+=2, ++i_c.X())
    200204        for (i_f.Z()=begin_f.Z(), i_c.Z()=begin_c.Z(); i_f.Z()<end_f.Z(); i_f.Z()+=2, ++i_c.Z())
    201           rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = 0.5 * (sol_c(i_c.X(),b1_c.Y()-1,i_c.Z()) - sol_f(i_f.X(),b1_f.Y()+1,i_f.Z()));
    202 
    203       for (i_f.X()=begin_f.X()-1; i_f.X()<end_f.X(); i_f.X()+=2)
     205          rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = 0.5 * (sol_c(i_c.X(),b1_c.Y(),i_c.Z()) - sol_f(i_f.X(),b1_f.Y()+1,i_f.Z()));
     206
     207      for (i_f.X()=begin_f.X()+1; i_f.X()<end_f.X(); i_f.X()+=2)
    204208        for (i_f.Z()=begin_f.Z(); i_f.Z()<end_f.Z(); i_f.Z()+=2)
    205209          rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = 0.5 * (rhs_f(i_f.X()-1,b1_f.Y(),i_f.Z()) + rhs_f(i_f.X()+1,b1_f.Y(),i_f.Z()));
    206210
    207211      for (i_f.X()=begin_f.X(); i_f.X()<end_f.X(); i_f.X()+=2)
    208         for (i_f.Z()=begin_f.Z()-1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
     212        for (i_f.Z()=begin_f.Z()+1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
    209213          rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = 0.5 * (rhs_f(i_f.X(),b1_f.Y(),i_f.Z()-1) + rhs_f(i_f.X(),b1_f.Y(),i_f.Z()+1));
    210214
    211       for (i_f.X()=begin_f.X()-1; i_f.X()<end_f.X(); i_f.X()+=2)
    212         for (i_f.Z()=begin_f.Z()-1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
     215      for (i_f.X()=begin_f.X()+1; i_f.X()<end_f.X(); i_f.X()+=2)
     216        for (i_f.Z()=begin_f.Z()+1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
    213217          rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = 0.25 * (rhs_f(i_f.X()-1,b1_f.Y(),i_f.Z()-1) +
    214218                                                    rhs_f(i_f.X()+1,b1_f.Y(),i_f.Z()-1) +
     
    228232      for (i_f.X()=begin_f.X(), i_c.X()=begin_c.X(); i_f.X()<end_f.X(); i_f.X()+=2, ++i_c.X())
    229233        for (i_f.Z()=begin_f.Z(), i_c.Z()=begin_c.Z(); i_f.Z()<end_f.Z(); i_f.Z()+=2, ++i_c.Z())
    230           rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = 0.5 * (sol_c(i_c.X(),b2_c.Y()+1,i_c.Z()) - sol_f(i_f.X(),b2_f.Y()-1,i_f.Z()));
    231 
    232       for (i_f.X()=begin_f.X()-1; i_f.X()<end_f.X(); i_f.X()+=2)
     234          rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = 0.5 * (sol_c(i_c.X(),b2_c.Y(),i_c.Z()) - sol_f(i_f.X(),b2_f.Y()-1,i_f.Z()));
     235
     236      for (i_f.X()=begin_f.X()+1; i_f.X()<end_f.X(); i_f.X()+=2)
    233237        for (i_f.Z()=begin_f.Z(); i_f.Z()<end_f.Z(); i_f.Z()+=2)
    234238          rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = 0.5 * (rhs_f(i_f.X()-1,b2_f.Y(),i_f.Z()) + rhs_f(i_f.X()+1,b2_f.Z(),i_f.Z()));
    235239
    236240      for (i_f.X()=begin_f.X(); i_f.X()<end_f.X(); i_f.X()+=2)
    237         for (i_f.Z()=begin_f.Z()-1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
     241        for (i_f.Z()=begin_f.Z()+1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
    238242          rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = 0.5 * (rhs_f(i_f.X(),b2_f.Y(),i_f.Z()-1) + rhs_f(i_f.X(),b2_f.Y(),i_f.Z()+1));
    239243
    240       for (i_f.X()=begin_f.X()-1; i_f.X()<end_f.X(); i_f.X()+=2)
    241         for (i_f.Z()=begin_f.Z()-1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
     244      for (i_f.X()=begin_f.X()+1; i_f.X()<end_f.X(); i_f.X()+=2)
     245        for (i_f.Z()=begin_f.Z()+1; i_f.Z()<end_f.Z(); i_f.Z()+=2)
    242246          rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = 0.25 * (rhs_f(i_f.X()-1,b2_f.Y(),i_f.Z()-1) +
    243247                                                    rhs_f(i_f.X()+1,b2_f.Y(),i_f.Z()-1) +
     
    264268      for (i_f.X()=begin_f.X(), i_c.X()=begin_c.X(); i_f.X()<end_f.X(); i_f.X()+=2, ++i_c.X())
    265269        for (i_f.Y()=begin_f.Y(), i_c.Y()=begin_c.Y(); i_f.Y()<end_f.Y(); i_f.Y()+=2, ++i_c.Y())
    266           rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = 0.5 * (sol_c(i_c.X(),i_c.Y(),b1_c.Z()-1) - sol_f(i_f.X(),i_f.Y(),b1_f.Z()+1));
    267 
    268       for (i_f.X()=begin_f.X()-1; i_f.X()<end_f.X(); i_f.X()+=2)
     270          rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = 0.5 * (sol_c(i_c.X(),i_c.Y(),b1_c.Z()) - sol_f(i_f.X(),i_f.Y(),b1_f.Z()+1));
     271
     272      for (i_f.X()=begin_f.X()+1; i_f.X()<end_f.X(); i_f.X()+=2)
    269273        for (i_f.Y()=begin_f.Y(); i_f.Y()<end_f.Y(); i_f.Y()+=2)
    270274          rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = 0.5 * (rhs_f(i_f.X()-1,i_f.Y(),b1_f.Z()) + rhs_f(i_f.X()+1,i_f.Y(),b1_f.Z()));
    271275
    272276      for (i_f.X()=begin_f.X(); i_f.X()<end_f.X(); i_f.X()+=2)
    273         for (i_f.Y()=begin_f.Y()-1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
     277        for (i_f.Y()=begin_f.Y()+1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
    274278          rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = 0.5 * (rhs_f(i_f.X(),i_f.Y()-1,b1_f.Z()) + rhs_f(i_f.X(),i_f.Y()+1,b1_f.Z()));
    275279
    276       for (i_f.X()=begin_f.X()-1; i_f.X()<end_f.X(); i_f.X()+=2)
    277         for (i_f.Y()=begin_f.Y()-1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
     280      for (i_f.X()=begin_f.X()+1; i_f.X()<end_f.X(); i_f.X()+=2)
     281        for (i_f.Y()=begin_f.Y()+1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
    278282          rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = 0.25 * (rhs_f(i_f.X()-1,i_f.Y()-1,b1_f.Z()) +
    279283                                                    rhs_f(i_f.X()+1,i_f.Y()-1,b1_f.Z()) +
     
    293297      for (i_f.X()=begin_f.X(), i_c.X()=begin_c.X(); i_f.X()<end_f.X(); i_f.X()+=2, ++i_c.X())
    294298        for (i_f.Y()=begin_f.Y(), i_c.Y()=begin_c.Y(); i_f.Y()<end_f.Y(); i_f.Y()+=2, ++i_c.Y())
    295           rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = 0.5 * (sol_c(i_c.X(),i_c.Y(),b2_c.Z()+1) - sol_f(i_f.X(),i_f.Y(),b2_f.Z()-1));
    296 
    297       for (i_f.X()=begin_f.X()-1; i_f.X()<end_f.X(); i_f.X()+=2)
     299          rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = 0.5 * (sol_c(i_c.X(),i_c.Y(),b2_c.Z()) - sol_f(i_f.X(),i_f.Y(),b2_f.Z()-1));
     300
     301      for (i_f.X()=begin_f.X()+1; i_f.X()<end_f.X(); i_f.X()+=2)
    298302        for (i_f.Y()=begin_f.Y(); i_f.Y()<end_f.Y(); i_f.Y()+=2)
    299303          rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = 0.5 * (rhs_f(i_f.X()-1,i_f.Y(),b2_f.Z()) + rhs_f(i_f.X()+1,i_f.Y(),b2_f.Z()));
    300304
    301305      for (i_f.X()=begin_f.X(); i_f.X()<end_f.X(); i_f.X()+=2)
    302         for (i_f.Y()=begin_f.Y()-1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
     306        for (i_f.Y()=begin_f.Y()+1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
    303307          rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = 0.5 * (rhs_f(i_f.X(),i_f.Y()-1,b2_f.Z()) + rhs_f(i_f.X(),i_f.Y()+1,b2_f.Z()));
    304308
    305       for (i_f.X()=begin_f.X()-1; i_f.X()<end_f.X(); i_f.X()+=2)
    306         for (i_f.Y()=begin_f.Y()-1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
     309      for (i_f.X()=begin_f.X()+1; i_f.X()<end_f.X(); i_f.X()+=2)
     310        for (i_f.Y()=begin_f.Y()+1; i_f.Y()<end_f.Y(); i_f.Y()+=2)
    307311          rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = 0.25 * (rhs_f(i_f.X()-1,i_f.Y()-1,b2_f.Z()) +
    308312                                                    rhs_f(i_f.X()+1,i_f.Y()-1,b2_f.Z()) +
Note: See TracChangeset for help on using the changeset viewer.