# SparseLDLSolver

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.

## Sequence diagram

## Data

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**.

## Usage

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**.

## Example

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: 12 May 2021