This component belongs to the category of LinearSolver. The role of the SparseLDLSolver is to solve the linear system without any a priori on this system.
To do so, the SparseLDLSolver relies on the method of LDL decomposition. The system matrix will be decomposed , where is the lower part of the matrix and is its diagonal.
As a direct solver, the SparseLDLSolver computes at each simulation time step an exact solution as follows:
Using a block forward substitution, we can first find the solution of:
Next, a second solution can be computed:
Finally, from the relationship where is easy to compute, we can find the exact solution via backward substitution:
It is important to note that this decomposition considers that the system matrix is symmetric.
No important data is available for the LDL since it simply computes the direct solution.
However, an option for saving the matrix is given using the data savingMatrixToFile. You can thus choose the savingFilename and the precision of the digits saved in this file using savingPrecision.
The SparseLDLSolver requires the use (above in the scene graph) of an integration scheme, and (below in the scene graph) of a MechanicalObject storing the state information that the SparseLDLSolver will access.
As a direct solver, the SparseLDLSolver might be extremely time consuming for large system. However, it will always give you an exact solution, making the assumption that the system matrix is symmetric.
This component is used as follows in XML format:
or using SofaPython3:
With a description of each data
An example scene involving a SparseLDLSolver is available in examples/Components/linearsolver/FEMBAR-SparseLDLSolver.scn
Last modified: 13 July 2021