Changeset ac6d04 for src/grid/grid_index_translations.cpp
- Timestamp:
- Apr 10, 2012, 1:55:49 PM (14 years ago)
- Children:
- a40eea
- Parents:
- d24c2f
- File:
-
- 1 edited
-
src/grid/grid_index_translations.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/grid/grid_index_translations.cpp
rd24c2f rac6d04 24 24 Index GridIndexTranslations::GlobalToLocal(const Index& index_global) const 25 25 { 26 return index_global - Father()->Global().BeginLocal() + Father()->Local().Begin(); 26 const Index index_local = index_global - Father()->Global().LocalBegin() + Father()->Local().Begin(); 27 return index_local; 27 28 } 28 29 29 30 Index GridIndexTranslations::GlobalToFiner(const Index& index_global) 30 31 { 31 return 2 * index_global; 32 const Index index_finer = 2 * index_global; 33 return index_finer; 32 34 } 33 35 34 36 Index GridIndexTranslations::GlobalToCoarser(const Index& index_global) 35 37 { 36 for (int i=0; i<3; ++i) 37 assert(index_global[i] % 2 == 0); 38 39 return index_global / 2; 38 assert(index_global % 2 == 0); 39 const Index index_coarser = index_global / 2; 40 return index_coarser; 40 41 } 41 42 42 43 Index GridIndexTranslations::GlobalToFiner(const Index& index_global, const int& num_levels) 43 44 { 44 return Helper::intpow(2, num_levels) * index_global; 45 const Index index_finer = Helper::intpow(2, num_levels) * index_global; 46 return index_finer; 45 47 } 46 48 … … 48 50 { 49 51 int quotient = Helper::intpow(2, num_levels); 50 51 for (int i=0; i<3; ++i) 52 assert(index_global[i] % quotient == 0); 53 54 return index_global / quotient; 52 assert(index_global % quotient == 0); 53 const Index index_coarser = index_global / quotient; 54 return index_coarser; 55 55 } 56 56 57 57 Index GridIndexTranslations::LocalToGlobal(const Index& index_local) const 58 58 { 59 return index_local - Father()->Local().Begin() + Father()->Global().BeginLocal(); 59 const Index index_global = index_local - Father()->Local().Begin() + Father()->Global().LocalBegin(); 60 return index_global; 60 61 } 61 62 … … 69 70 assert(Father()->Level() < multigrid.MaxLevel()); 70 71 71 Index index_global_fine = GlobalToFiner(LocalToGlobal(index_local)); 72 const Index index_global_fine = GlobalToFiner(LocalToGlobal(index_local)); 73 const Index index_local_fine = multigrid(Father()->Level()+1).Indexing().GlobalToLocal(index_global_fine); 72 74 73 return multigrid(Father()->Level()+1).Indexing().GlobalToLocal(index_global_fine);75 return index_local_fine; 74 76 } 75 77 … … 83 85 assert(Father()->Level() > multigrid.MinLevel()); 84 86 85 Index index_global_coarse = GlobalToCoarser(LocalToGlobal(index_local)); 87 const Index index_global_coarse = GlobalToCoarser(LocalToGlobal(index_local)); 88 const Index index_local_coarse = multigrid(Father()->Level()-1).Indexing().GlobalToLocal(index_global_coarse); 86 89 87 return multigrid(Father()->Level()-1).Indexing().GlobalToLocal(index_global_coarse);90 return index_local_coarse; 88 91 } 89 92 90 93 Index GridIndexTranslations::FinestGlobalToLocal(const Index& index_finest) const 91 94 { 92 return GlobalToLocal(FinestGlobalToGlobal(index_finest)); 95 const Index index_local = GlobalToLocal(FinestGlobalToGlobal(index_finest)); 96 return index_local; 93 97 } 94 98 95 99 Index GridIndexTranslations::FinestGlobalToGlobal(const Index& index_finest) const 96 100 { 97 int quotient = Helper::intpow(2, Father()->Father()->MaxLevel() - Father()->Level()); 98 99 for (int i=0; i<3; ++i) 100 assert(index_finest[i] % quotient == 0); 101 102 return index_finest / quotient; 101 const int quotient = Helper::intpow(2, Father()->Father()->MaxLevel() - Father()->Level()); 102 assert(index_finest % quotient == 0); 103 const Index index_global = index_finest / quotient; 104 return index_global; 103 105 } 104 106
Note:
See TracChangeset
for help on using the changeset viewer.
