Пример #1
0
 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());
                }
            }
        }