|
| | SemiImplicitEM ()=default |
| |
| | ~SemiImplicitEM () override=default |
| |
| | SemiImplicitEM (const SemiImplicitEM &)=delete |
| |
| SemiImplicitEM & | operator= (const SemiImplicitEM &)=delete |
| |
| | SemiImplicitEM (SemiImplicitEM &&)=delete |
| |
| SemiImplicitEM & | operator= (SemiImplicitEM &&)=delete |
| |
| void | Define (WarpX *a_WarpX) override |
| | Read user-provided parameters that control the implicit solver. Allocate internal arrays for intermediate field values needed by the solver. More...
|
| |
| void | PrintParameters () const override |
| |
| void | OneStep (amrex::Real a_time, amrex::Real a_dt, int a_step) override |
| | Advance fields and particles by one time step using the specified implicit algorithm. More...
|
| |
| void | ComputeRHS (WarpXSolverVec &a_RHS, const WarpXSolverVec &a_E, amrex::Real a_time, amrex::Real a_dt, int a_nl_iter, bool a_from_jacobian) override |
| | Computes the RHS of the equation corresponding to the specified implicit algorithm. The discrete equations corresponding to numerical integration of ODEs are often written in the form U = b + RHS(U), where U is the variable to be solved for (e.g., the solution at the next time step), b is a constant (i.e., the solution from the previous time step), and RHS(U) is the right-hand-side of the equation. Iterative solvers, such as Picard and Newton, and higher-order Runge-Kutta methods, need to compute RHS(U) multiple times for different values of U. Thus, a routine that returns this value is needed. e.g., Ebar - E^n = cvac^2*0.5*dt*(curl(Bbar) - mu0*Jbar(Ebar,Bbar)) Here, U = Ebar, b = E^n, and the expression on the right is RHS(U). More...
|
| |
| | ImplicitSolver ()=default |
| |
| virtual | ~ImplicitSolver ()=default |
| |
| | ImplicitSolver (const ImplicitSolver &)=delete |
| |
| ImplicitSolver & | operator= (const ImplicitSolver &)=delete |
| |
| | ImplicitSolver (ImplicitSolver &&)=delete |
| |
| ImplicitSolver & | operator= (ImplicitSolver &&)=delete |
| |
| bool | IsDefined () const |
| |
| void | GetParticleSolverParams (int &a_max_particle_iter, amrex::ParticleReal &a_particle_tol) const |
| |
| void SemiImplicitEM::ComputeRHS |
( |
WarpXSolverVec & |
a_RHS, |
|
|
const WarpXSolverVec & |
a_E, |
|
|
amrex::Real |
a_time, |
|
|
amrex::Real |
a_dt, |
|
|
int |
a_nl_iter, |
|
|
bool |
a_from_jacobian |
|
) |
| |
|
overridevirtual |
Computes the RHS of the equation corresponding to the specified implicit algorithm. The discrete equations corresponding to numerical integration of ODEs are often written in the form U = b + RHS(U), where U is the variable to be solved for (e.g., the solution at the next time step), b is a constant (i.e., the solution from the previous time step), and RHS(U) is the right-hand-side of the equation. Iterative solvers, such as Picard and Newton, and higher-order Runge-Kutta methods, need to compute RHS(U) multiple times for different values of U. Thus, a routine that returns this value is needed. e.g., Ebar - E^n = cvac^2*0.5*dt*(curl(Bbar) - mu0*Jbar(Ebar,Bbar)) Here, U = Ebar, b = E^n, and the expression on the right is RHS(U).
Implements ImplicitSolver.