コード例 #1
0
 /// <summary>
 /// If the matrices stored in this object have already been calculated, they will be reused even if the original
 /// free-free stiffness matrix has changed. To avoid that, this method must be called.
 /// </summary>
 public void Clear()
 {
     inverseKff         = null;
     RigidBodyModes     = null;
     inverseKii         = null;
     inverseKiiDiagonal = null;
     Kbb = null;
     Kbi = null;
     //linearSystem.Matrix = null; // DO NOT DO THAT!!! The analyzer manages that.
 }
コード例 #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 InvertKff(double factorizationTolerance, bool inPlace)
 {
     if (RigidBodyModes != null)
     {
         return;
     }
     inverseKff     = linearSystem.Matrix.FactorSemidefiniteCholesky(inPlace, factorizationTolerance);
     RigidBodyModes = new List <Vector>();
     foreach (double[] rbm in inverseKff.NullSpaceBasis)
     {
         RigidBodyModes.Add(Vector.CreateFromArray(rbm, false));
     }
 }