Skip to content

Commit 04d3ab3

Browse files
committed
Merge branch 'f3dparallel' into move-ops
2 parents 1aedd28 + 07afd43 commit 04d3ab3

4 files changed

Lines changed: 11 additions & 11 deletions

File tree

include/bout/field3d.hxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ public:
342342
const Region<Ind3D>& getValidRegionWithDefault(const std::string& region_name) const;
343343
void setRegion(const std::string& region_name) override;
344344
void resetRegion() override { regionID.reset(); };
345-
void resetRegionParallel();
345+
void resetRegionParallel(bool force = false);
346346
void setRegion(size_t id) override { regionID = id; };
347347
void setRegion(std::optional<size_t> id) override { regionID = id; };
348348
std::optional<size_t> getRegionID() const override { return regionID; };

src/field/field3d.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -883,8 +883,8 @@ void Field3D::setRegion(const std::string& region_name) {
883883
regionID = fieldmesh->getRegionID(region_name);
884884
}
885885

886-
void Field3D::resetRegionParallel() {
887-
if (isFci()) {
886+
void Field3D::resetRegionParallel(const bool force) {
887+
if (force or isFci()) {
888888
for (int i = 0; i < fieldmesh->ystart; ++i) {
889889
yup_fields[i].setRegion(fmt::format("RGN_YPAR_{:+d}", i + 1));
890890
ydown_fields[i].setRegion(fmt::format("RGN_YPAR_{:+d}", -i - 1));

src/mesh/coordinates.cxx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,15 +1111,11 @@ int Coordinates::geometry(bool recalculate_staggered,
11111111
if (localmesh->get(d2y, "d2y" + suffix, 0.0, false, location)) {
11121112
output_warn.write(
11131113
"\tWARNING: differencing quantity 'd2y' not found. Calculating from dy\n");
1114-
if (dy.isFci()) {
1115-
d1_dy = BoutNaN;
1116-
} else {
1117-
d1_dy = DDY(1. / dy.asField3DParallel()); // d/di(1/dy)
1114+
d1_dy = DDY(1. / dy.asField3DParallel()); // d/di(1/dy)
11181115

1119-
localmesh->communicate_no_slices(d1_dy);
1120-
d1_dy =
1121-
interpolateAndExtrapolate(d1_dy, location, true, true, true, transform.get());
1122-
}
1116+
localmesh->communicate_no_slices(d1_dy);
1117+
d1_dy =
1118+
interpolateAndExtrapolate(d1_dy, location, true, true, true, transform.get());
11231119
} else {
11241120
d2y.setLocation(location);
11251121
// set boundary cells if necessary

src/mesh/parallel/fci.cxx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ void load_parallel_metric_component(std::string name, Field3D& component, int of
8888
if (!component.hasParallelSlices()) {
8989
component.splitParallelSlices();
9090
component.disallowCalcParallelSlices();
91+
component.resetRegionParallel(true);
9192
}
9293
auto& pcom = component.ynext(offset);
9394
pcom.allocate();
@@ -104,6 +105,7 @@ void load_parallel_metric_components(Coordinates* coords, int offset) {
104105
LOAD_PAR(g_22);
105106
LOAD_PAR(g_33);
106107
LOAD_PAR(g_13);
108+
LOAD_PAR(dy);
107109
LOAD_PAR(Bxy);
108110

109111
#undef LOAD_PAR
@@ -457,9 +459,11 @@ void FCITransform::outputVars(Options& output_options) {
457459

458460
void FCITransform::loadParallelMetrics(Coordinates* coords) {
459461
#if BOUT_USE_METRIC_3D
462+
output_info.write("\tLoading parallel metrics\n");
460463
const auto JB0 = coords->J * coords->Bxy;
461464
coords->J.splitParallelSlices();
462465
coords->J.disallowCalcParallelSlices();
466+
coords->J.resetRegionParallel(true);
463467
for (int i = 1; i <= mesh.ystart; ++i) {
464468
load_parallel_metric_components(coords, -i);
465469
load_parallel_metric_components(coords, i);

0 commit comments

Comments
 (0)