3. Principle of resolution by elimination#
3.1. Definition of the problem to be solved#
The system to be solved can take the following general form:
under duress
With the introduction of Lagrange multipliers, the problem becomes
and is put in the general form
: label: eq-4
left [begin {array} {cc} K& {B} ^ {B} ^ {T}\ B& 0end {array}right]left{begin {array} {c} u\ mathrm {lambda}\ lambda}\lambda}\{lambda}\\ lambda}\\lambda}\}\ lambda}\\{lambda}\\\lambda}right}
In the case of double dualization (AFFE_CHAR_MECA), this matrix is increased, and the system to be solved becomes
: label: eq-5
left [begin {array} {ccc} {ccc} K& {B}} ^ {B} ^ {T}\ B& -mathrm {alpha} {I} _ {d} &mathrm {alpha} {I} {I} {I} _ {d} _ {d} & -mathrm {alpha} {I} _ {d}end {array}right]left{begin {array} {c} u\ {mathrm {lambda}} _ {1}\ {mathrm {lambda}}} _ {2}end {array}right}} =left{begin {array} {lambda}}} _ {lambda}} _ {lambda}} _ {lambda}} _ {lambda}} _ {lambda}} _ {2}\ end {array}right} =left{begin {array} {lambda}}} _ {lambda}}} _ {lambda}} _ {lambda}} _ {0}\ {u} _ {0}end {array}right}
after naturally posing \({\lambda }_{1}={\lambda }_{2}=\lambda /2\).
To make its semi-definite character positive to the generic problem \(\mathit{Ku}=f\), in the case where the matrix \(K\) presents a topology resulting from the layout in the form () or (), we will try to decompose the solution \(u\) of the problem in the form \(u={u}_{p}+{u}_{g}\), where
\({u}_{p}\) is the particular solution to the problem,
\({u}_{g}\) is the general solution to the problem, associated with the \([B]\{{u}_{g}\}=\{0\}\) boundary conditions.
3.2. Search for the particular solution#
The search for the particular solution is simply finding \({u}_{p}\) such as \([B]\{{u}_{p}\}=\{{u}_{0}\}\). To calculate \({u}_{p}\), we consider the decomposition on the image and the core of \(B\), i.e. \({u}_{p}={u}_{p-i}+{u}_{p-n}\), with \({u}_{p-i}\) belonging to the image of \(B\) and \({u}_{p-n}\) belonging to the core of \(B\).
This problem can be solved in a least-squares sense, and in this case, we consider the solution of () with the minimum \({L}_{2}\) norm, that is \({u}_{p}={u}_{p-i}\). \(\{{u}_{p-i}\}\) is the solution to the minimization problem:
To efficiently calculate \({u}_{p-i}\), provided that \(B\) is of full rank (rank equal to \(\mathit{Nb}\), so no redundant constraints), the following property is used:
And so
The solution sought is naturally given by:
In practice, we perform a Cholesky factorization of the symmetric matrix \({\mathit{BB}}^{T}\), using the MUMPS library, then we solve
Finally, we get \(\{{u}_{p}\}\):
\(\{{u}_{p}\}=\{{u}_{p-i}\}={[B]}^{T}\{y\}\) |
3.3. Finding the general solution#
Since the general solution \({u}_{g}\) checks for \([B]\{{u}_{g}\}=\{0\}\), it belongs to the core of \(B\). The search for the general solution therefore involves a step of building a \(Z\) base of the \(B\) core. We can then project the problem onto the core, and solve this problem, which is better posed and smaller in size.
3.3.1. Obtaining a core base#
Formally, building the \(B\) core can be done in several ways:
Decomposition into single values of \(B\), which is \(B={\mathit{USV}}^{T}\). \(\mathit{Ker}(B)\) is the space generated by the columns of \({V}^{T}\) associated with a zero singular value.
Decomposition \(\mathit{QR}\) of \({B}^{T}\), which is \(B={R}^{T}{Q}^{T}\). \(\mathit{Ker}(B)\) is the space generated by the columns of \(Q\) associated with a zero value on the diagonal of \({R}^{T}\).
Decomposition \(\mathit{LU}\) of \({B}^{T}\). The kernel calculation is not a direct step, and is obtained from sub-blocks of \(L\).
It is this third method that is implemented in code_aster. We use the SuperLu library to build factorization \(\mathit{LU}\) of \({B}^{T}\):
It is then easy to see that a base of \(\mathit{Ker}(B)\) is given by:
Here we are making the assumption that \(B\) is of full rank. If this is not the case, then simply build \({L}_{1}\) from the block of \(L\) associated with the non-zero terms of the diagonal of \(U\).
3.3.2. Projection and resolution#
Once the core base is calculated, the resolution is direct. We ask \({u}_{g}=Z\overline{u}\), and the solution of the problem is therefore directly given by
since, by construction,
In some cases, it is necessary to access Lagrange multipliers. They must therefore be rebuilt, based on solutions \({u}_{p}\) and \({u}_{g}\). To do this, we need to solve the first line of the system (), or
If \(B\) is of full rank, the solution is formally written:
and is calculated in practice by reusing the factorization of \(B{B}^{T}\) calculated for the search for the particular solution. Similarly, if \(B\) is not of a full rank, it is possible to remove redundant constraints.