public CohesiveShell8ToHexa20(ICohesiveZoneMaterial3D material, IQuadrature2D quadratureForStiffness) { this.QuadratureForStiffness = quadratureForStiffness; this.nGaussPoints = quadratureForStiffness.IntegrationPoints.Count; materialsAtGaussPoints = new ICohesiveZoneMaterial3D[nGaussPoints]; for (int i = 0; i < nGaussPoints; i++) { materialsAtGaussPoints[i] = material.Clone(); } }
private static (double[][] stressHistory, double[][, ] constitutiveMatrixHistory) StressStrainHistory(double[][] strainHistory, ICohesiveZoneMaterial3D testedMaterial) { double[][] stressHistory = new double[strainHistory.GetLength(0)][]; double[][,] constitutiveMatrixHistory = new double[strainHistory.GetLength(0)][, ]; for (int l = 0; l < strainHistory.GetLength(0); l++) { if (l == 42) { Console.Write("breakPointIsHere"); } testedMaterial.UpdateMaterial(strainHistory[l]); testedMaterial.SaveState(); stressHistory[l] = new double[testedMaterial.Tractions.Length]; testedMaterial.Tractions.CopyTo(stressHistory[l], 0); constitutiveMatrixHistory[l] = new double[testedMaterial.ConstitutiveMatrix.NumColumns, testedMaterial.ConstitutiveMatrix.NumRows]; for (int m = 0; m < testedMaterial.ConstitutiveMatrix.NumColumns; m++) { for (int n = 0; n < testedMaterial.ConstitutiveMatrix.NumRows; n++) { constitutiveMatrixHistory[l][m, n] = testedMaterial.ConstitutiveMatrix[m, n]; } } } return(stressHistory, constitutiveMatrixHistory); }