Changeset 6e10f33 for src/grid/grid_index_translations.cpp
- Timestamp:
- Apr 12, 2013, 8:41:41 PM (13 years ago)
- Children:
- e5d779b
- Parents:
- b3075a
- File:
-
- 1 edited
-
src/grid/grid_index_translations.cpp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/grid/grid_index_translations.cpp
rb3075a r6e10f33 32 32 33 33 #include "base/helper.hpp" 34 #include "comm/comm.hpp" 34 35 #include "grid/grid_double_iterator.hpp" 35 36 #include "grid/grid_index_translations.hpp" … … 50 51 Index GridIndexTranslations::LocalToGlobal(const Grid& grid, const Index& index_local) 51 52 { 52 return index_local - grid.Local(). Begin() + grid.Global().LocalBegin();53 return index_local - grid.Local().HaloSize1() + grid.Global().LocalBegin(); 53 54 } 54 55 … … 60 61 Index GridIndexTranslations::GlobalToLocal(const Grid& grid, const Index& index_global) 61 62 { 62 return index_global - grid.Global().LocalBegin() + grid.Local(). Begin();63 return index_global - grid.Global().LocalBegin() + grid.Local().HaloSize1(); 63 64 } 64 65 … … 98 99 const Grid& grid_2, GridIteratorSet& bounds_2) 99 100 { 101 const Boundary& boundary = MG::GetComm()->BoundaryConditions(); 102 100 103 if (grid_1.Level() == grid_2.Level()) { 101 constIndex begin_global = grid_1.Global()102 .LocalBegin()103 .Clamp(grid_2.Global().LocalBegin(), grid_2.Global().LocalEnd());104 Index begin_global = grid_1.Global() 105 .LocalBegin() 106 .Clamp(grid_2.Global().LocalBegin(), grid_2.Global().LocalEnd()); 104 107 105 const Index end_global = grid_1.Global() 106 .LocalEnd() 107 .Clamp(grid_2.Global().LocalBegin(), grid_2.Global().LocalEnd()); 108 Index end_global = grid_1.Global() 109 .LocalEnd() 110 .Clamp(grid_2.Global().LocalBegin(), grid_2.Global().LocalEnd()); 111 112 for (int j=0; j<3; ++j) { 113 if (boundary[j] == Dirichlet || boundary[j] == Open) { 114 if (begin_global[j] == grid_1.Global().GlobalBegin()[j] || begin_global[j] == grid_2.Global().GlobalBegin()[j]) 115 begin_global[j] += 1; 116 if (end_global[j] == grid_1.Global().GlobalEnd()[j] || end_global[j] == grid_2.Global().GlobalEnd()[j]) 117 end_global[j] -= 1; 118 } 119 } 108 120 109 121 bounds_1 = GridIteratorSet(GlobalToLocal(grid_1, begin_global), GlobalToLocal(grid_2, end_global)); … … 128 140 } 129 141 142 for (int j=0; j<3; ++j) { 143 if (boundary[j] == Dirichlet || boundary[j] == Open) { 144 if (grid_1.Global().LocalBegin()[j] == grid_1.Global().GlobalBegin()[j] || grid_2.Global().LocalBegin()[j] == grid_2.Global().GlobalBegin()[j]) 145 begin_finest[j] += global_mult; 146 if (grid_1.Global().LocalEnd()[j] == grid_1.Global().GlobalEnd()[j] || grid_2.Global().LocalEnd()[j] == grid_2.Global().GlobalEnd()[j]) 147 end_finest[j] -= global_mult; 148 } 149 } 150 130 151 bounds_1 = GridIteratorSet(GlobalFinestToLocal(grid_1, begin_finest), GlobalFinestToLocal(grid_1, end_finest)+1); 131 152 bounds_2 = GridIteratorSet(GlobalFinestToLocal(grid_2, begin_finest), GlobalFinestToLocal(grid_2, end_finest)+1); … … 133 154 } 134 155 } 156 157 void GridIndexTranslations::GetInnerBoundary(const Grid& grid_c, Index& b1_c, Index& b2_c, 158 const Grid& grid_f, Index& b1_f, Index& b2_f) 159 { 160 if (grid_f.Global().BoundaryType() == LocallyRefined) { 161 162 const int global_mult = Helper::intpow(2, MG::GetSol()->MaxLevel() - grid_c.Level()); 163 164 Index begin_finest = GlobalToGlobalFinest(grid_c, grid_c.Global().LocalBegin()) 165 .Clamp(GlobalToGlobalFinest(grid_f, grid_f.Global().LocalBegin()), 166 GlobalToGlobalFinest(grid_f, grid_f.Global().LocalEnd()-1)); 167 168 Index end_finest = GlobalToGlobalFinest(grid_c, grid_c.Global().LocalEnd()-1) 169 .Clamp(GlobalToGlobalFinest(grid_f, grid_f.Global().LocalBegin()), 170 GlobalToGlobalFinest(grid_f, grid_f.Global().LocalEnd()-1)); 171 172 } else { 173 b1_c = -1; 174 b2_c = -1; 175 b1_f = -1; 176 b2_f = -1; 177 } 178 }
Note:
See TracChangeset
for help on using the changeset viewer.
