#include <NonLinMGtools.h>
Inheritance diagram for NonLinMGtools::

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Reimplemented from MLSolverUDC. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
should return the number of different spaces and sub-spaces involved. For multigrid this is the number of grids. For domain decomposition methods this is the number of all sub-domains plus one for the global domain plus the number of coarse spaces involved (if there are some). The spaces are identified by numbers form 1 to "getNoOfSpaces". This Id is of type "SpaceId". Reimplemented from MLSolverUDC. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Reimplemented from MLSolverUDC. |
|
|
Reimplemented from MLSolverUDC. |
|
|
Reimplemented from MLSolverUDC. |
|
|
Reimplemented from MLSolverUDC. |
|
|
|
|
|
|
|
|
|
|
|
Reimplemented from MLSolverUDC. |
|
|
Reimplemented from MLSolverUDC. |
|
|
|
|
|
compute the residual. Can be implemented by "LinEqAdmFE" or "LinEqSystem". See also "solveSubSystem". Reimplemented from MLSolverUDC. |
|
|
|
|
|
|
|
|
(approximate) solution of the subspace problem, set up the linear or nonlinear system of equations and solve it. Can be implemented using "LinEqAdmFE", "LinEqSystem" or "NonLinEqSolver". The system may has been assembled previously or may be assembled now (less efficient). This function is called several times for each space with different right hand sides. Note: For domain decomposition methods also boundary conditions may change for each call. Take care of the "StartVectorMode" flag in the case of iterative solvers. Direct solvers can also be used. Direct solvers are not appropriate for every space, but only for small sub-spaces. The "MLSolverMode" flag indicates, whether the solver is called in the forward loop or in the backward loop. In the multigrid context the names pre-smoothing and post-smoothing are common. Some "MLSolver" algorithms only use the default forward loop (e.g. the additive versions) and the flag can be ignored. If both loops are present and the total algorithm should be symmetric, the sub-domain solvers in the forward loop or in the backward loop have to be adjoint. If you want to implement different forward (pre) and backward (post) solvers, use the flag to branch. The return value indicates, whether the solution was actually computed and the solution is valid. For a multigrid without pre-smoother for example, a call of the pre-smoother would just return "false" without touching the solution vector. Reimplemented from MLSolverUDC. |
|
|
usually a projection of a vector from one space to another space. Can be implemented by class "Proj" or inherited classes. Arguments are the identifiers of source and destination spaces and a flag indicating, whether the result should be written or added. This flag can be passed to the "apply" function of "Proj". Often the transfer i to j is adjoint to the transfer j to i. It is then useful to set up only one "Proj" from i to j and to use the "TRANSPOSED" flag for the adjoint transfer from j to i. Note: For multigrid "Proj" has to be set up from coarse to fine, not reverse. The return value indicates, whether a transfer was actually formed. For a domain decomposition algorithm and a transfer between non intersecting domains a value "false" may be returned. In combination with the flag for adding the solution, the destination vector would not be touched. This can enable the "MLSolver" algorithm to discard further calls of this transfer operator (not implemented now). Reimplemented from MLSolverUDC. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|