protected TriangleElement(SerializationInfo info, StreamingContext context) : base(info, context)
 {
     _material    = (BaseMaterial)info.GetValue("_material", typeof(BaseMaterial));
     _section     = (Base2DSection)info.GetValue("_section", typeof(Base2DSection));
     _behavior    = (TriangleElementBehaviour)info.GetInt32("_behavior");
     _formulation = (MembraneFormulation)info.GetInt32("_behavior");
 }
Пример #2
0
        internal static Matrix GetDMatrix(double e, double nu, MembraneFormulation f)
        {
            var d = new Matrix(3, 3);

            if (f == MembraneFormulation.PlaneStress)
            {
                //page 23 of JAVA Thesis pdf

                var cf = e / (1 - nu * nu);

                d[0, 0] = d[1, 1] = 1;
                d[1, 0] = d[0, 1] = nu;
                d[2, 2] = (1 - nu) / 2;

                d.MultiplyByConstant(cf);
            }
            else
            {
                //page 24 of JAVA Thesis pdf

                var cf = e / ((1 + nu) * (1 - 2 * nu));

                d[0, 0] = d[1, 1] = 1 - nu;
                d[1, 0] = d[0, 1] = nu;
                d[2, 2] = (1 - 2 * nu) / 2;

                d.MultiplyByConstant(cf);
            }

            return(d);
        }
Пример #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CstElement"/> class.
 /// </summary>
 /// <param name="info">The information.</param>
 /// <param name="context">The context.</param>
 protected CstElement(SerializationInfo info, StreamingContext context)
     : base(info, context)
 {
     this._thickness       = info.GetDouble("_thickness");
     this._poissonRatio    = info.GetDouble("_poissonRatio");
     this._elasticModulus  = info.GetDouble("_elasticModulus");
     this._formulationType = (MembraneFormulation)info.GetInt32("_formulationType");
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DktElement"/> class.
 /// </summary>
 /// <param name="info">The information.</param>
 /// <param name="context">The context.</param>
 protected TriangleFlatShell(SerializationInfo info, StreamingContext context) : base(info, context)
 {
     this._thickness       = info.GetDouble("_thickness");
     this._poissonRatio    = info.GetDouble("_poissonRatio");
     this._elasticModulus  = info.GetDouble("_elasticModulus");
     this._addDrillingDof  = info.GetBoolean("_addDrillingDof");
     this._behaviour       = (FlatShellBehaviour)info.GetInt32("_behaviour");
     this._formulationType = (MembraneFormulation)info.GetInt32("_formulationType");
 }
Пример #5
0
        /// <summary>
        /// Gets the stiffness matrix of DKT element.
        /// </summary>
        /// <param name="x">The x location of points, in local coordinates.</param>
        /// <param name="y">The y location of points, in local coordinates.</param>
        /// <param name="t">The thickness.</param>
        /// <param name="e">The elastic modulus.</param>
        /// <param name="nu">The Poisson ratio.</param>
        /// <returns></returns>
        internal static Matrix GetStiffnessMatrix(double[] x, double[] y, double t, double e, double nu, MembraneFormulation f)
        {
            double a;//area

            {
                var x31 = x[2] - x[0];
                var x12 = x[0] - x[1];
                var y31 = y[2] - y[0];
                var y12 = y[0] - y[1];

                a = 0.5 * Math.Abs(x31 * y12 - x12 * y31);
            }

            var d = GetDMatrix(e, nu, f);

            var b = GetBMatrix(0, 0, x, y);//only one Gaussian point

            var klocal = b.Transpose() * d * b;

            klocal.MultiplyByConstant(t * a);

            return(klocal);
        }