@@ -202,7 +202,7 @@ void BoundaryDirichlet_O1::apply(Field3D& f, BoutReal t) {
202202 } else {
203203 // Standard (non-staggered) case
204204 for (; !bndry->isDone (); bndry->next1d ()) {
205- for (int zk = 0 ; zk < mesh->LocalNz ; zk++) {
205+ for (int zk = mesh-> zstart ; zk <= mesh->zend ; zk++) {
206206 if (fg) {
207207 val = fg->generate (Context (bndry, zk, loc, t, mesh));
208208 }
@@ -214,7 +214,7 @@ void BoundaryDirichlet_O1::apply(Field3D& f, BoutReal t) {
214214 // Set any other guard cells using the values on the cells
215215 int xi = bndry->x + i * bndry->bx ;
216216 int yi = bndry->y + i * bndry->by ;
217- for (int zk = 0 ; zk < mesh->LocalNz ; zk++) {
217+ for (int zk = mesh-> zstart ; zk <= mesh->zend ; zk++) {
218218 if (fg) {
219219 val = fg->generate (Context (bndry, zk, loc, t, mesh));
220220 }
@@ -238,7 +238,7 @@ void BoundaryDirichlet_O1::apply_ddt(Field3D& f) {
238238 Field3D* dt = f.timeDeriv ();
239239
240240 for (bndry->first (); !bndry->isDone (); bndry->next ()) {
241- for (int z = 0 ; z < mesh->LocalNz ; z++) {
241+ for (int z = mesh-> zstart ; z <= mesh->zend ; z++) {
242242 (*dt)(bndry->x , bndry->y , z) = 0 .; // Set time derivative to zero
243243 }
244244 }
@@ -1933,13 +1933,13 @@ void BoundaryNeumann_NonOrthogonal::apply(Field3D& f) {
19331933 } else {
19341934 for (; !bndry->isDone (); bndry->next1d ()) {
19351935#if BOUT_USE_METRIC_3D
1936- for (int zk = 0 ; zk < mesh->LocalNz ; zk++) {
1936+ for (int zk = mesh-> zstart ; zk <= mesh->zend ; zk++) {
19371937 BoutReal delta = bndry->bx * metric->dx (bndry->x , bndry->y , zk)
19381938 + bndry->by * metric->dy (bndry->x , bndry->y , zk);
19391939#else
19401940 BoutReal delta = bndry->bx * metric->dx (bndry->x , bndry->y )
19411941 + bndry->by * metric->dy (bndry->x , bndry->y );
1942- for (int zk = 0 ; zk < mesh->LocalNz ; zk++) {
1942+ for (int zk = mesh-> zstart ; zk <= mesh->zend ; zk++) {
19431943#endif
19441944 if (fg) {
19451945 val = fg->generate (Context (bndry, zk, loc, t, mesh));
@@ -1967,7 +1967,7 @@ void BoundaryNeumann_NonOrthogonal::apply(Field3D& f) {
19671967 ASSERT1 (mesh == f.getMesh ());
19681968 Field3D* dt = f.timeDeriv ();
19691969 for (bndry->first (); !bndry->isDone (); bndry->next ()) {
1970- for (int z = 0 ; z < mesh->LocalNz ; z++) {
1970+ for (int z = mesh-> zstart ; z <= mesh->zend ; z++) {
19711971 (*dt)(bndry->x , bndry->y , z) = 0 .; // Set time derivative to zero
19721972 }
19731973 }
0 commit comments