// This is a symetric matrix: m=n (= global m)

    /*
     * J = m*n
     * W = n*n
     * JT = n*m
     * WJT = n*m
     * JWJT = m*m
     */

    public Eq11LHS(BlockSparseMatrix a_J, double[] a_W)
    {
        m_J          = a_J;
        m_W          = a_W;
        m_Size       = a_J.GetM();             //=m
        m_TempVector = new double[m_W.Length]; //=n
    }
 public ParticleSystem(LinearSolver a_Solver, float a_ConstraintSpringConstant, float a_ConstraintDampingConstant)
 {
     m_Solver = a_Solver;
     if (m_Solver == null)
     {
         throw new Exception("Please provide a valid solver.");
     }
     m_Particles   = new List <Particle>();
     m_Forces      = new List <Force>();
     m_Constraints = new List <Constraint>();
     m_J           = new BlockSparseMatrix();
     m_JDot        = new BlockSparseMatrix();
     m_ConstraintSpringConstant  = a_ConstraintSpringConstant;
     m_ConstraintDampingConstant = a_ConstraintDampingConstant;
 }