Skip to content

Incorrect use of short-circuit 'or'? #1285

Description

@maxaehle

In CDiscAdjMultizoneDriver::HandleDataTransfer we have the following code structure:

bool DeformMesh = false;
for (unsigned short jZone = 0; jZone < nZone; jZone++){
  if (jZone != iZone && interface_container[jZone][iZone] != nullptr) {
    DeformMesh = DeformMesh || Transfer_Data(jZone, iZone);
  }
}
if (DeformMesh) DynamicMeshUpdate(iZone, ExtIter);

Transfer_Data returns true if and only if the interface type is BOUNDARY_DISPLACEMENTS. If this happens once, no further call to Transfer_Data will occur for this particular iZone because of short-circuit evaluation of the ||.

Though I'm new to the adjoint driver, I can hardly imagine that this is intended. Maybe the order of the arguments of || should be swapped, or it should be coded as in CMultizoneDriver::Update?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions