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?
In
CDiscAdjMultizoneDriver::HandleDataTransferwe have the following code structure:Transfer_Datareturnstrueif and only if the interface type isBOUNDARY_DISPLACEMENTS. If this happens once, no further call toTransfer_Datawill occur for this particulariZonebecause 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 inCMultizoneDriver::Update?