mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: earlier exit from interface polling in updateMatrixInterfaces
- exit the wait-some polling loop when no interfaces are left to be updated
This commit is contained in:
@ -128,28 +128,42 @@ void Foam::LduMatrix<Type, DType, LUType>::updateMatrixInterfaces
|
||||
// without waiting for all requests.
|
||||
|
||||
DynamicList<int> indices; // (work array)
|
||||
while
|
||||
|
||||
for
|
||||
(
|
||||
UPstream::nPollProcInterfaces < 0
|
||||
&& UPstream::waitSomeRequests(startRequest, &indices)
|
||||
bool pollingActive = (UPstream::nPollProcInterfaces < 0);
|
||||
(
|
||||
pollingActive
|
||||
&& UPstream::waitSomeRequests(startRequest, &indices)
|
||||
);
|
||||
/*nil*/
|
||||
)
|
||||
{
|
||||
pollingActive = false;
|
||||
|
||||
forAll(interfaces_, interfacei)
|
||||
{
|
||||
auto* intf = interfaces_.get(interfacei);
|
||||
|
||||
if (intf && !intf->updatedMatrix() && intf->ready())
|
||||
if (intf && !intf->updatedMatrix())
|
||||
{
|
||||
intf->updateInterfaceMatrix
|
||||
(
|
||||
result,
|
||||
add,
|
||||
lduMesh_.lduAddr(),
|
||||
interfacei,
|
||||
psiif,
|
||||
interfaceCoeffs[interfacei],
|
||||
commsType
|
||||
);
|
||||
if (intf->ready())
|
||||
{
|
||||
intf->updateInterfaceMatrix
|
||||
(
|
||||
result,
|
||||
add,
|
||||
lduMesh_.lduAddr(),
|
||||
interfacei,
|
||||
psiif,
|
||||
interfaceCoeffs[interfacei],
|
||||
commsType
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
pollingActive = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,29 +131,50 @@ void Foam::lduMatrix::updateMatrixInterfaces
|
||||
// without waiting for all requests.
|
||||
|
||||
DynamicList<int> indices; // (work array)
|
||||
while
|
||||
|
||||
// const label maxPolling =
|
||||
// (
|
||||
// (UPstream::nPollProcInterfaces < 0)
|
||||
// ? (UPstream::nRequests() - startRequest)
|
||||
// : UPstream::nPollProcInterfaces
|
||||
// );
|
||||
|
||||
for
|
||||
(
|
||||
UPstream::nPollProcInterfaces < 0
|
||||
&& UPstream::waitSomeRequests(startRequest, &indices)
|
||||
bool pollingActive = (UPstream::nPollProcInterfaces < 0);
|
||||
(
|
||||
pollingActive
|
||||
&& UPstream::waitSomeRequests(startRequest, &indices)
|
||||
);
|
||||
/*nil*/
|
||||
)
|
||||
{
|
||||
pollingActive = false;
|
||||
|
||||
forAll(interfaces, interfacei)
|
||||
{
|
||||
auto* intf = interfaces.get(interfacei);
|
||||
|
||||
if (intf && !intf->updatedMatrix() && intf->ready())
|
||||
if (intf && !intf->updatedMatrix())
|
||||
{
|
||||
intf->updateInterfaceMatrix
|
||||
(
|
||||
result,
|
||||
add,
|
||||
mesh().lduAddr(),
|
||||
interfacei,
|
||||
psiif,
|
||||
coupleCoeffs[interfacei],
|
||||
cmpt,
|
||||
commsType
|
||||
);
|
||||
if (intf->ready())
|
||||
{
|
||||
intf->updateInterfaceMatrix
|
||||
(
|
||||
result,
|
||||
add,
|
||||
mesh().lduAddr(),
|
||||
interfacei,
|
||||
psiif,
|
||||
coupleCoeffs[interfacei],
|
||||
cmpt,
|
||||
commsType
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
pollingActive = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user