Changeset 6e10f33 for src/grid/multigrid.cpp
- Timestamp:
- Apr 12, 2013, 8:41:41 PM (13 years ago)
- Children:
- e5d779b
- Parents:
- b3075a
- File:
-
- 1 edited
-
src/grid/multigrid.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/grid/multigrid.cpp
rb3075a r6e10f33 82 82 for (int j=0; j<3; ++j) { 83 83 84 if (comm->BoundaryConditions()[j] == Dirichlet ||85 comm->BoundaryConditions()[j] == Open) {86 87 local_l.SizeTotal()[j] = global_separated[i].LocalSize()[j];88 89 /*90 * We have a boundary at the ends of the process grids91 * and halo grid points otherwise92 */93 if (global_separated[i].LocalBegin()[j] == 0) {94 local_l.BoundaryBegin1()[j] = 0;95 local_l.BoundaryEnd1()[j] = 1;96 }else {97 ++local_l.SizeTotal()[j];98 local_l.HaloBegin1()[j] = 0;99 local_l.HaloEnd1()[j] = 1;100 }101 102 if (global_separated[i].LocalEnd()[j] == global_separated[i].GlobalEnd()[j]) {103 local_l.BoundaryBegin2()[j] = local_l.SizeTotal()[j] - 1;104 local_l.BoundaryEnd2()[j] = local_l.SizeTotal()[j];105 }else {106 ++local_l.SizeTotal()[j];107 local_l.HaloBegin2()[j] = local_l.SizeTotal()[j] - 1;108 local_l.HaloEnd2()[j] = local_l.SizeTotal()[j];109 }110 111 }else if (comm->BoundaryConditions()[j] == Periodic) {112 113 local_l.SizeTotal()[j] = global_separated[i].LocalSize()[j] + 2;114 115 /*116 * No boundary117 */118 local_l.BoundaryBegin1()[j] = local_l.BoundaryEnd1()[j] = 0;119 local_l.BoundaryBegin2()[j] = local_l.BoundaryEnd2()[j] = 0;120 121 /*122 * Halo grid points on all processes123 */124 local_l.HaloBegin1()[j] = 0;125 local_l.HaloEnd1()[j] = 1;126 local_l.HaloBegin2()[j] = local_l.SizeTotal()[j] - 1;127 local_l.HaloEnd2()[j] = local_l.SizeTotal()[j];128 129 }84 if (comm->BoundaryConditions()[j] == Dirichlet || 85 comm->BoundaryConditions()[j] == Open) { 86 87 local_l.SizeTotal()[j] = global_separated[i].LocalSize()[j]; 88 89 /* 90 * We have a boundary at the ends of the process grids 91 * and halo grid points otherwise 92 */ 93 if (global_separated[i].LocalBegin()[j] == global_separated[i].GlobalBegin()[j]) { 94 local_l.BoundaryBegin1()[j] = 0; 95 local_l.BoundaryEnd1()[j] = 1; 96 }else { 97 ++local_l.SizeTotal()[j]; 98 local_l.HaloBegin1()[j] = 0; 99 local_l.HaloEnd1()[j] = 1; 100 } 101 102 if (global_separated[i].LocalEnd()[j] == global_separated[i].GlobalEnd()[j]) { 103 local_l.BoundaryBegin2()[j] = local_l.SizeTotal()[j] - 1; 104 local_l.BoundaryEnd2()[j] = local_l.SizeTotal()[j]; 105 }else { 106 ++local_l.SizeTotal()[j]; 107 local_l.HaloBegin2()[j] = local_l.SizeTotal()[j] - 1; 108 local_l.HaloEnd2()[j] = local_l.SizeTotal()[j]; 109 } 110 111 }else if (comm->BoundaryConditions()[j] == Periodic) { 112 113 local_l.SizeTotal()[j] = global_separated[i].LocalSize()[j] + 2; 114 115 /* 116 * No boundary 117 */ 118 local_l.BoundaryBegin1()[j] = local_l.BoundaryEnd1()[j] = 0; 119 local_l.BoundaryBegin2()[j] = local_l.BoundaryEnd2()[j] = 0; 120 121 /* 122 * Halo grid points on all processes 123 */ 124 local_l.HaloBegin1()[j] = 0; 125 local_l.HaloEnd1()[j] = 1; 126 local_l.HaloBegin2()[j] = local_l.SizeTotal()[j] - 1; 127 local_l.HaloEnd2()[j] = local_l.SizeTotal()[j]; 128 129 } 130 130 131 131 } … … 223 223 for (i_c.Y()=grid_c.Local().Begin().Y(); i_c.Y()<grid_c.Local().End().Y(); ++i_c.Y()) 224 224 for (i_c.Z()=grid_c.Local().Begin().Z(); i_c.Z()<grid_c.Local().End().Z(); ++i_c.Z()) 225 grid_c(i_c) = grid_f.GetVal(i_f.X(), 2*i_c.Y(), 2*i_c.Z());225 grid_c(i_c) = grid_f.GetVal(i_f.X(), 2*i_c.Y(), 2*i_c.Z()); 226 226 227 227 i_c.X() = grid_c.Local().BoundaryBegin2().X(); … … 229 229 for (i_c.Y()=grid_c.Local().Begin().Y(); i_c.Y()<grid_c.Local().End().Y(); ++i_c.Y()) 230 230 for (i_c.Z()=grid_c.Local().Begin().Z(); i_c.Z()<grid_c.Local().End().Z(); ++i_c.Z()) 231 grid_c(i_c) = grid_f.GetVal(i_f.X(), 2*i_c.Y(), 2*i_c.Z());231 grid_c(i_c) = grid_f.GetVal(i_f.X(), 2*i_c.Y(), 2*i_c.Z()); 232 232 233 233 i_c.Y() = grid_c.Local().BoundaryBegin1().Y(); … … 235 235 for (i_c.X()=0; i_c.X()<grid_c.Local().SizeTotal().X(); ++i_c.X()) 236 236 for (i_c.Z()=grid_c.Local().Begin().Z(); i_c.Z()<grid_c.Local().End().Z(); ++i_c.Z()) 237 grid_c(i_c) = grid_f.GetVal(2*i_c.X(), i_f.Y(), 2*i_c.Z());237 grid_c(i_c) = grid_f.GetVal(2*i_c.X(), i_f.Y(), 2*i_c.Z()); 238 238 239 239 i_c.Y() = grid_c.Local().BoundaryBegin2().Y(); … … 241 241 for (i_c.X()=0; i_c.X()<grid_c.Local().SizeTotal().X(); ++i_c.X()) 242 242 for (i_c.Z()=grid_c.Local().Begin().Z(); i_c.Z()<grid_c.Local().End().Z(); ++i_c.Z()) 243 grid_c(i_c) = grid_f.GetVal(2*i_c.X(), i_f.Y(), 2*i_c.Z());243 grid_c(i_c) = grid_f.GetVal(2*i_c.X(), i_f.Y(), 2*i_c.Z()); 244 244 245 245 i_c.Z() = grid_c.Local().BoundaryBegin1().Z(); … … 247 247 for (i_c.X()=0; i_c.X()<grid_c.Local().SizeTotal().X(); ++i_c.X()) 248 248 for (i_c.Y()=0; i_c.Y()<grid_c.Local().SizeTotal().Y(); ++i_c.Y()) 249 grid_c(i_c) = grid_f.GetVal(2*i_c.X(), 2*i_c.Y(), i_f.Z());249 grid_c(i_c) = grid_f.GetVal(2*i_c.X(), 2*i_c.Y(), i_f.Z()); 250 250 251 251 i_c.Z() = grid_c.Local().BoundaryBegin2().Z(); … … 253 253 for (i_c.X()=0; i_c.X()<grid_c.Local().SizeTotal().X(); ++i_c.X()) 254 254 for (i_c.Y()=0; i_c.Y()<grid_c.Local().SizeTotal().Y(); ++i_c.Y()) 255 grid_c(i_c) = grid_f.GetVal(2*i_c.X(), 2*i_c.Y(), i_f.Z());255 grid_c(i_c) = grid_f.GetVal(2*i_c.X(), 2*i_c.Y(), i_f.Z()); 256 256 257 257 }
Note:
See TracChangeset
for help on using the changeset viewer.
