Ignore:
Timestamp:
Apr 10, 2012, 1:55:49 PM (14 years ago)
Author:
Julian Iseringhausen <isering@…>
Children:
a40eea
Parents:
d24c2f
Message:

Merge recent changes of the vmg library into ScaFaCos.

Includes a fix for the communication problems on Jugene.

git-svn-id: https://svn.version.fz-juelich.de/scafacos/trunk@1666 5161e1c8-67bf-11de-9fd5-51895aff932f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/samples/discretization_poisson_fv.cpp

    rd24c2f rac6d04  
    2323  Index i_c, i_f;
    2424
    25   const vmg_float h2_inv = 0.5 / sol_f.MeshWidth();
     25  const Vector h2_inv = 0.5 / sol_f.Extent().MeshWidth();
    2626
    27   const Index b1_c = sol_c.Local().AlignmentBegin();
    28   const Index b2_c = sol_c.Local().AlignmentEnd() - 1;
     27  const Index b1_c = sol_c.Local().FinerBeginFoo();
     28  const Index b2_c = sol_c.Local().FinerEndFoo() - 1;
    2929  const Index b1_f = 0;
    3030  const Index b2_f = rhs_f.Local().SizeTotal() - 1;
     
    3232  const Index begin_f = sol_f.Local().Begin();
    3333  const Index end_f = sol_f.Local().End();
    34   const Index begin_c = sol_c.Local().AlignmentBegin();
     34  const Index begin_c = sol_c.Local().FinerBeginFoo();
    3535
    3636  const vmg_float c_1_3 = 1.0 / 3.0;
    37   const vmg_float c_2_3_sp = 2.0 / 3.0 * sol_f.MeshWidth();
     37  const Vector c_2_3_sp = 2.0 / 3.0 * sol_f.Extent().MeshWidth();
    3838  const vmg_float c_4_3 = 4.0 / 3.0;
    3939
     
    4343  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())
    4444    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()) {
    45       assert(b2_c.X()+1 >= 0 && b2_c.X() < sol_c.Local().SizeTotal().X());
    46       assert(i_c.Y() >= 0 && i_c.Y() < sol_c.Local().SizeTotal().Y());
    47       assert(i_c.Z() >= 0 && i_c.Z() < sol_c.Local().SizeTotal().Z());
    48       assert(b2_f.X()-1 >= 0 && b2_f.X()-1 < sol_f.Local().SizeTotal().X());
    49       assert(i_f.Y() >= 0 && i_f.Y() < sol_f.Local().SizeTotal().Y());
    50       assert(i_f.Z() >= 0 && i_f.Z() < sol_f.Local().SizeTotal().Z());
    51       rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = (sol_c(b1_c.X()-1,i_c.Y(),i_c.Z()) - sol_f(b1_f.X()+1,i_f.Y(),i_f.Z())) * h2_inv;
    52       rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = (sol_c(b2_c.X()+1,i_c.Y(),i_c.Z()) - sol_f(b2_f.X()-1,i_f.Y(),i_f.Z())) * h2_inv;
     45      rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = (sol_c(b1_c.X()-1,i_c.Y(),i_c.Z()) - sol_f(b1_f.X()+1,i_f.Y(),i_f.Z())) * h2_inv.X();
     46      rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = (sol_c(b2_c.X()+1,i_c.Y(),i_c.Z()) - sol_f(b2_f.X()-1,i_f.Y(),i_f.Z())) * h2_inv.X();
    5347    }
    5448
     
    8276    for (i_f.Z()=begin_f.Z(); i_f.Z()<end_f.Z(); ++i_f.Z()) {
    8377
    84       rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = sol_f(b1_f.X(),i_f.Y(),i_f.Z()) = c_2_3_sp * rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) +
     78      rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) = sol_f(b1_f.X(),i_f.Y(),i_f.Z()) = c_2_3_sp.X() * rhs_f(b1_f.X(),i_f.Y(),i_f.Z()) +
    8579        c_4_3 * sol_f(b1_f.X()+1,i_f.Y(),i_f.Z()) -
    8680        c_1_3 * sol_f(b1_f.X()+2,i_f.Y(),i_f.Z());
    8781
    88       rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = sol_f(b2_f.X(),i_f.Y(),i_f.Z()) = c_2_3_sp * rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) +
     82      rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) = sol_f(b2_f.X(),i_f.Y(),i_f.Z()) = c_2_3_sp.X() * rhs_f(b2_f.X(),i_f.Y(),i_f.Z()) +
    8983        c_4_3 * sol_f(b2_f.X()-1,i_f.Y(),i_f.Z()) -
    9084        c_1_3 * sol_f(b2_f.X()-2,i_f.Y(),i_f.Z());
     
    9791  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())
    9892    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()) {
    99       rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = (sol_c(i_c.X(),b1_c.Y()-1,i_c.Z()) - sol_f(i_f.X(),b1_f.Y()+1,i_f.Z())) * h2_inv;
    100       rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = (sol_c(i_c.X(),b2_c.Y()+1,i_c.Z()) - sol_f(i_f.X(),b2_f.Y()-1,i_f.Z())) * h2_inv;
     93      rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = (sol_c(i_c.X(),b1_c.Y()-1,i_c.Z()) - sol_f(i_f.X(),b1_f.Y()+1,i_f.Z())) * h2_inv.Y();
     94      rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = (sol_c(i_c.X(),b2_c.Y()+1,i_c.Z()) - sol_f(i_f.X(),b2_f.Y()-1,i_f.Z())) * h2_inv.Y();
    10195    }
    10296
     
    130124    for (i_f.Z()=begin_f.Z(); i_f.Z()<end_f.Z(); ++i_f.Z()) {
    131125
    132       rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = sol_f(i_f.X(),b1_f.Y(),i_f.Z()) = c_2_3_sp * rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) +
     126      rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) = sol_f(i_f.X(),b1_f.Y(),i_f.Z()) = c_2_3_sp.Y() * rhs_f(i_f.X(),b1_f.Y(),i_f.Z()) +
    133127        c_4_3 * sol_f(i_f.X(),b1_f.Y()+1,i_f.Z()) -
    134128        c_1_3 * sol_f(i_f.X(),b1_f.Y()+2,i_f.Z());
    135129
    136       rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = sol_f(i_f.X(),b2_f.Y(),i_f.Z()) = c_2_3_sp * rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) +
     130      rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) = sol_f(i_f.X(),b2_f.Y(),i_f.Z()) = c_2_3_sp.Y() * rhs_f(i_f.X(),b2_f.Y(),i_f.Z()) +
    137131        c_4_3 * sol_f(i_f.X(),b2_f.Y()-1,i_f.Z()) -
    138132        c_1_3 * sol_f(i_f.X(),b2_f.Y()-2,i_f.Z());
     
    145139  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())
    146140    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()) {
    147       rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = (sol_c(i_c.X(),i_c.Y(),b1_c.Z()-1) - sol_f(i_f.X(),i_f.Y(),b1_f.Z()+1)) * h2_inv;
    148       rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = (sol_c(i_c.X(),i_c.Y(),b2_c.Z()+1) - sol_f(i_f.X(),i_f.Y(),b2_f.Z()-1)) * h2_inv;
     141      rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = (sol_c(i_c.X(),i_c.Y(),b1_c.Z()-1) - sol_f(i_f.X(),i_f.Y(),b1_f.Z()+1)) * h2_inv.Z();
     142      rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = (sol_c(i_c.X(),i_c.Y(),b2_c.Z()+1) - sol_f(i_f.X(),i_f.Y(),b2_f.Z()-1)) * h2_inv.Z();
    149143    }
    150144
     
    177171    for (i_f.Y()=begin_f.Y(); i_f.Y()<end_f.Y(); ++i_f.Y()) {
    178172
    179       rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = sol_f(i_f.X(),i_f.Y(),b1_f.Z()) = c_2_3_sp * rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) +
     173      rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) = sol_f(i_f.X(),i_f.Y(),b1_f.Z()) = c_2_3_sp.Z() * rhs_f(i_f.X(),i_f.Y(),b1_f.Z()) +
    180174        c_4_3 * sol_f(i_f.X(),i_f.Y(),b1_f.Z()+1) -
    181175        c_1_3 * sol_f(i_f.X(),i_f.Y(),b1_f.Z()+2);
    182176
    183       rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = sol_f(i_f.X(),i_f.Y(),b2_f.Z()) = c_2_3_sp * rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) +
     177      rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) = sol_f(i_f.X(),i_f.Y(),b2_f.Z()) = c_2_3_sp.Z() * rhs_f(i_f.X(),i_f.Y(),b2_f.Z()) +
    184178        c_4_3 * sol_f(i_f.X(),i_f.Y(),b2_f.Z()-1) -
    185179        c_1_3 * sol_f(i_f.X(),i_f.Y(),b2_f.Z()-2);
Note: See TracChangeset for help on using the changeset viewer.