-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Started the Convergence system #28848
base: next
Are you sure you want to change the base?
Conversation
fef1637
to
01cd337
Compare
Job Documentation, step Docs: sync website on edb0c33 wanted to post the following: View the site here This comment will be updated on new commits. |
01cd337
to
551e2ae
Compare
Job Coverage, step Generate coverage on edb0c33 wanted to post the following: Framework coverage
Modules coverageContact
Full coverage reportsReports
Warnings
This comment will be updated on new commits. |
I'm considering renaming |
551e2ae
to
edb0c33
Compare
This PR revives #26744.
This creates a new system: Convergence. See #24128.
I'm putting this up now so that I can document some TODOs. Because it's in a messy state, I plan to squash everything into one commit before merging.
Tasks that remain:
checkConvergence()
API. Currently I have iteration index as the one and only argument, since we may want to use the same convergence class for multiple types of convergence check, and different types of convergence check will need to obtain that index differently. The same argument can be applied to others. Also I think that some classes will only be compatible with certain types of convergence check. We would probably want to do some checking to make sure it's used in a compatible way. Perhaps we should have some kind ofIterationType
argument? I'm open to other ideas.UPDATE: Opened Make Convergence object checks aware of solve type #28927 for this task.
EquationSystems
- does it do anything to set convergence parameters in there? ShouldConvergence
being doing that? Some parameters inResidualConvergence
are unclear on if they're actually used, like the linear solve parameters. They get set in theEquationSystems
object (which might be eventually set to PETSc), but at least some do not seem to come back into the class in the convergence check, maybe only getting used in libMesh's own convergence checks?UPDATE 1: The
EquationSystems
object is populated with the convergence-related parameters and then used in various convergence checks of different solvers, which do not all have the freedom to specify a generic convergence criteria. My plan is to not interact with theEquationSystems
object from theConvergence
classes if it is not necessary, and let the Executioner parameters populate it, as they do currently.UPDATE 2: The eigen executioners modify convergence-related parameters through
EquationSystems
, so it looks like we'll need to work withEquationSystems
in the Convergence object after all.ResidualConvergence
? The current behavior is to allow the executioner parameters but override them. That's maybe the simplest implementation-wise, but seems very error-prone for users.UPDATE: I plan to give only a warning if the user specifies nonlinear convergence parameters in the executioner when they have a non-default convergence.
PostprocessorConvergence
to perform checks ofexecute_on
. Here the Convergence would need to know what kind of iterations it will be used with, so we need to think about how to do this.Update: Opened Perform checks on execute_on for PostprocessorConvergence #28928 for this task.