public Shell8NonLinear(IShellMaterial material, IQuadrature3D quadratureForStiffness) { this.Interpolation = InterpolationShell8.UniqueInstance; this.QuadratureForStiffness = quadratureForStiffness; this.nGaussPoints = quadratureForStiffness.IntegrationPoints.Count; materialsAtGaussPoints = new IShellMaterial[nGaussPoints]; for (int i = 0; i < nGaussPoints; i++) { materialsAtGaussPoints[i] = material.Clone(); } }
/// <summary> /// Creates a <see cref="TSplineKirchhoffLoveShellElementMaterial"/>. /// </summary> /// <param name="id">The element id.</param> /// <param name="patch">The patch that contains the element.</param> /// <param name="degreeKsi">Degree for parametric axis Ksi.</param> /// <param name="degreeHeta">Degree for parametric axis Heta.</param> /// <param name="thickness">Shell thickness. Constant throughout the shell.</param> /// <param name="extractionOperator">Bezier extraction operation from TSplines to Bezier elements.</param> /// <param name="shellMaterial">Material of the shell element.</param> public TSplineKirchhoffLoveShellElementMaterial(int id, Patch patch, int degreeKsi, int degreeHeta, double thickness, Matrix extractionOperator, IShellMaterial shellMaterial) { this.ID = id; this.Patch = patch; this.DegreeKsi = degreeKsi; this.DegreeHeta = degreeHeta; this.Thickness = thickness; this.ExtractionOperator = extractionOperator; CreateElementGaussPoints(this); foreach (var medianSurfaceGP in _thicknessIntegrationPoints.Keys) { _materialsAtThicknessGp.Add(medianSurfaceGP, new Dictionary <GaussLegendrePoint3D, IShellMaterial>()); foreach (var point in _thicknessIntegrationPoints[medianSurfaceGP]) { _materialsAtThicknessGp[medianSurfaceGP].Add(point, shellMaterial.Clone()); } } }