public void CreateAndInvertCoarseProblemMatrix(Dictionary <int, HashSet <INode> > cornerNodesOfSubdomains,
                                                       FetiDPDofSeparator dofSeparator, Dictionary <int, IFetiDPSubdomainMatrixManager> matrixManagers)
        {
            SkylineMatrix globalKccStar = CreateGlobalKccStar(cornerNodesOfSubdomains, dofSeparator, matrixManagers);

            this.inverseGlobalKccStar = globalKccStar.FactorLdl(true);
        }
Example #2
0
 /// <summary>
 /// Will do nothing if it was already called. To perform this for a different stiffness matrix, first call
 /// <see cref="Clear"/>.
 /// </summary>
 public void ExtractAndInvertKii(int[] internalDofs)
 {
     if (inverseKii != null)
     {
         return;
     }
     try
     {
         SkylineMatrix Kii = Krr.GetSubmatrixSymmetricSkyline(internalDofs);
         inverseKii = Kii.FactorLdl(true);
     }
     catch (MatrixDataOverwrittenException)
     {
         throw new InvalidOperationException(
                   "The remainder-remainder stiffness submatrix of this subdomain has been overwritten and cannot be used"
                   + " anymore. Try calling this method before factorizing/inverting it.");
     }
 }