public void CalcStrainAndStressGlobal(List <Node> nodes, Material material)
        {
            double          E        = material.GetE();
            double          nu       = material.GetNu();
            Cmatrix         C        = new Cmatrix(E, nu);
            Matrix <double> C_matrix = C.CreateMatrix();

            for (int i = 0; i < nodes.Count; i++)
            {
                List <Vector <double> > stress = nodes[i].GetStress();

                double          amount       = stress.Count;
                Vector <double> globalStress = Vector <double> .Build.Dense(6);

                for (int k = 0; k < stress.Count; k++)
                {
                    globalStress[0] += stress[k][0];
                    globalStress[1] += stress[k][1];
                    globalStress[2] += stress[k][2];
                    globalStress[3] += stress[k][3];
                    globalStress[4] += stress[k][4];
                    globalStress[5] += stress[k][5];
                }

                for (int j = 0; j < globalStress.Count; j++)
                {
                    globalStress[j] = (double)globalStress[j] / amount;
                }

                nodes[i].SetGlobalStrain(C_matrix.Inverse().Multiply(globalStress));

                //Adding Mises
                var tempStressVec = Vector <double> .Build.Dense(globalStress.Count + 1);

                globalStress.Storage.CopySubVectorTo(tempStressVec.Storage, 0, 0, 6);
                double Sxx   = globalStress[0];
                double Syy   = globalStress[1];
                double Szz   = globalStress[2];
                double Sxy   = globalStress[3];
                double Sxz   = globalStress[4];
                double Syz   = globalStress[5];
                double mises = Math.Sqrt(0.5 * (Math.Pow(Sxx - Syy, 2) + Math.Pow(Syy - Szz, 2) + Math.Pow(Szz - Sxx, 2)) + 3 * (Math.Pow(Sxy, 2) + Math.Pow(Sxz, 2) + Math.Pow(Syz, 2)));
                tempStressVec.At(6, mises);

                nodes[i].SetGlobalStress(tempStressVec);
            }
        }
        public void CalcStrainAndStress(List <Element> elements, Material material)
        {
            double          E        = material.GetE();
            double          nu       = material.GetNu();
            Cmatrix         C        = new Cmatrix(E, nu);
            Matrix <double> C_matrix = C.CreateMatrix();

            List <Matrix <double> > B_e = new List <Matrix <double> >();
            List <int>  c_e             = new List <int>();
            List <Node> nodes_e         = new List <Node>();

            StrainCalc sC = new StrainCalc();

            for (int i = 0; i < elements.Count; i++)
            {
                B_e     = elements[i].GetBMatrixes();
                nodes_e = elements[i].GetVertices();

                sC.StrainCalculations(B_e, nodes_e, C_matrix);
            }
        }