-
Notifications
You must be signed in to change notification settings - Fork 195
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
Implicit Field Solve Preconditioner based on Curl-Curl Operator #5286
Implicit Field Solve Preconditioner based on Curl-Curl Operator #5286
Conversation
* Copy rho from guard cells in IGF solver * Reset checksum
…X is not yet implemented in 1D, added precompiler guardrails to not use it in 1D
7680f9d
to
5c45dc1
Compare
5f0b89d
to
0db699d
Compare
…g new ones and copying back-and-forth
…ng used and clang-tidy complains about them
Co-authored-by: Weiqun Zhang <[email protected]>
Co-authored-by: Weiqun Zhang <[email protected]>
@@ -85,6 +87,16 @@ public: | |||
int a_nl_iter, | |||
bool a_from_jacobian ) = 0; | |||
|
|||
[[nodiscard]] virtual amrex::Real theta () const { return 1.0; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Making this a member of the base class is fine for now. In a future PR, we can remove it by passing in m_theta*a_dt to the solver. This will require modifications to several files in the ImplicitSolver folder and in the NonlinearSolvers folder, but it will make the code more tidy. I can do this after this PR is merged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR looks good to me.
Implemented a preconditioner for the implicit E-field solve using the AMReX curl-curl operator and the MLMG solver.
Preconditioner
base class that defines the action of a preconditioner for the JFNK algorithm.CurlCurlMLMGPC
that uses the multigrid solution for the curl-curl operator (implemented inAMReX
) to precondition the E-field JFNK solve.Other changes needed for this:
ImplicitSolver
class that allows preconditioners to accessWarpX
info (likeGeometry
, boundaries, etc).Some premilinary wall times for:
with
32^2
particles per cell:with
10^2
particles per cell: