-
Notifications
You must be signed in to change notification settings - Fork 106
Closed
Description
Summary
The outer retry loop uses while (nsub < MAX_NSUB && ...) with nsub doubling each attempt from 1. This means nsub == MAX_NSUB is never attempted.
Location
Source/sdc/sdc_newton_solve.H:254Source/sdc/sdc_newton_solve.H:270
Problem Details
Current logic:
const int MAX_NSUB = 64;
int nsub = 1;
while (nsub < MAX_NSUB && ierr != newton::NEWTON_SUCCESS) {
...
nsub *= 2;
}Attempt sequence is 1, 2, 4, 8, 16, 32; 64 is skipped.
Impact
- Solver may report failure one subdivision level earlier than intended.
- Effective retry budget is lower than configured/documented by
MAX_NSUB.
Suggested Patch
Include the maximum configured subdivision in the loop condition:
diff --git a/Source/sdc/sdc_newton_solve.H b/Source/sdc/sdc_newton_solve.H
--- a/Source/sdc/sdc_newton_solve.H
+++ b/Source/sdc/sdc_newton_solve.H
@@
- while (nsub < MAX_NSUB && ierr != newton::NEWTON_SUCCESS) {
+ while (nsub <= MAX_NSUB && ierr != newton::NEWTON_SUCCESS) {Prepared by Codex
Reactions are currently unavailable