예제 #1
0
        /// <summary>
        /// Defines a set of rectangles for analysis with respect to
        /// y-axis, each occupying full height of section. The rectangles are rotated 90 deg.,
        /// because internally the properties are calculated  with respect to x-axis.
        /// </summary>
        /// <returns>List of analysis rectangles</returns>
        public override List <CompoundShapePart> GetCompoundRectangleYAxisList()
        {
            double FlangeThickness = this.t_f;
            double FlangeWidth     = this.b_f;

            r = k - t_f;
            double FlangeOverhang = (FlangeWidth - t_w - 2.0 * r) / 2.0;

            CompoundShapePart LeftFlange = new CompoundShapePart(2 * FlangeThickness, FlangeOverhang,
                                                                 new Point2D(0, b_f - FlangeOverhang / 2.0));

            CompoundShapePart RightFlange = new CompoundShapePart(2 * FlangeThickness, FlangeOverhang,
                                                                  new Point2D(0, FlangeOverhang / 2.0));

            PartWithDoubleFillet LeftFillet  = new PartWithDoubleFillet(r, 2 * FlangeThickness, new Point2D(0, b_f - FlangeOverhang), false);
            PartWithDoubleFillet RightFillet = new PartWithDoubleFillet(r, 2 * FlangeThickness, new Point2D(0, FlangeOverhang), true);
            CompoundShapePart    Web         = new CompoundShapePart(d, t_w, new Point2D(0, b_f / 2));

            List <CompoundShapePart> rectY = new List <CompoundShapePart>()
            {
                LeftFlange,
                LeftFillet,
                Web,
                RightFillet,
                RightFlange
            };

            return(rectY);
        }
        public void CompoundShapeReturnsPNA_WT()
        {
            //Properties
            double d        = 8.49;
            double b_f      = 10.4;
            double t_w      = 0.585;
            double t_f      = 0.985;
            double k        = 1.39;
            double y_p      = 0.706;
            double refValue = d - y_p;

            CompoundShapePart    TopFlange = new CompoundShapePart(b_f, t_f, new Point2D(0, d - t_f / 2));
            PartWithDoubleFillet TopFillet = new PartWithDoubleFillet(k, t_w, new Point2D(0, d - t_f), true);
            CompoundShapePart    Web       = new CompoundShapePart(t_w, d - t_f - k, new Point2D(0, d / 2));

            List <CompoundShapePart> tee = new List <CompoundShapePart>()
            {
                TopFlange,
                TopFillet,
                Web,
            };

            ArbitraryCompoundShape shape = new ArbitraryCompoundShape(tee, null);
            double y_pCalculated         = shape.y_pBar;
            double actualTolerance       = EvaluateActualTolerance(y_pCalculated, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        public void CompoundShapeReturnsPNA_W()
        {
            //Properties
            double d   = 17.7;
            double b_f = 6.00;
            double t_w = 0.300;
            double t_f = 0.425;
            double k   = 0.827;

            double refValue = d / 2;

            CompoundShapePart    TopFlange    = new CompoundShapePart(b_f, t_f, new Point2D(0, d - t_f / 2));
            CompoundShapePart    BottomFlange = new CompoundShapePart(b_f, t_f, new Point2D(0, t_f / 2));
            CompoundShapePart    Web          = new CompoundShapePart(t_w, d - 2 * (t_f + k), new Point2D(0, d / 2));
            PartWithDoubleFillet TopFillet    = new PartWithDoubleFillet(k, t_w, new Point2D(0, d - t_f), true);
            PartWithDoubleFillet BottomFillet = new PartWithDoubleFillet(k, t_w, new Point2D(0, t_f), false);


            List <CompoundShapePart> Ishape = new List <CompoundShapePart>()
            {
                BottomFlange,
                BottomFillet,
                Web,
                TopFillet,
                TopFlange,
            };

            ArbitraryCompoundShape shape = new ArbitraryCompoundShape(Ishape, null);
            double y_pCalculated         = shape.y_pBar;
            double actualTolerance       = EvaluateActualTolerance(y_pCalculated, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
예제 #4
0
        double r; //fillet radius

        /// <summary>
        /// Defines a set of rectangles for analysis with respect to 
        /// x-axis, each occupying full width of section.
        /// </summary>
        /// <returns>List of analysis rectangles</returns>
        public override List<CompoundShapePart> GetCompoundRectangleXAxisList()
        {
            double t_f = this.t_f;
            double b_f = this.b_f;
            r = k - t_f;

            CompoundShapePart TopFlange = new CompoundShapePart(b_f, t_f, new Point2D(0, d - t_f / 2));
            CompoundShapePart Web = new CompoundShapePart(t_w, d - (t_f + r), new Point2D(0, (d -t_f-r)/ 2));
            PartWithDoubleFillet TopFillet = new PartWithDoubleFillet(r, t_w, new Point2D(0, d - t_f), true);

            List<CompoundShapePart> Ishape = new List<CompoundShapePart>()
            {
                 TopFlange,  
                 TopFillet,
                 Web

            };
            return Ishape;
        }
예제 #5
0
        double r; //fillet radius

        /// <summary>
        /// Defines a set of rectangles for analysis with respect to
        /// x-axis, each occupying full width of section.
        /// </summary>
        /// <returns>List of analysis rectangles</returns>
        public override List <CompoundShapePart> GetCompoundRectangleXAxisList()
        {
            double t_f = this.t_f;
            double b_f = this.b_f;

            r = k - t_f;

            CompoundShapePart    TopFlange = new CompoundShapePart(b_f, t_f, new Point2D(0, d - t_f / 2));
            CompoundShapePart    Web       = new CompoundShapePart(t_w, d - (t_f + r), new Point2D(0, (d - t_f - r) / 2));
            PartWithDoubleFillet TopFillet = new PartWithDoubleFillet(r, t_w, new Point2D(0, d - t_f), true);

            List <CompoundShapePart> Ishape = new List <CompoundShapePart>()
            {
                TopFlange,
                TopFillet,
                Web
            };

            return(Ishape);
        }
예제 #6
0
        /// <summary>
        /// Defines a set of rectangles for analysis with respect to
        /// y-axis, each occupying full d of section. The rectangles are rotated 90 deg.,
        /// because internally the properties are calculated  with respect to x-axis.
        /// </summary>
        /// <returns>List of analysis rtangles</returns>
        public override List <CompoundShapePart> GetCompoundRectangleYAxisList()
        {
            //double t_f = this.t_fTop;
            //double b_f = this.b_fTop;


            //Note: all insertion points are calculated from the left side of the shape
            CompoundShapePart    Web    = new CompoundShapePart(d, t_w, new Point2D(0, t_w / 2.0));
            PartWithDoubleFillet Fillet = new PartWithDoubleFillet(k, 2 * t_f, new Point2D(0, t_w), true);
            CompoundShapePart    Flange = new CompoundShapePart(2 * t_f, b_f - t_w - k,
                                                                new Point2D(0, (t_w + k + (b_f - t_w - k) / 2.0)));


            List <CompoundShapePart> rectY = new List <CompoundShapePart>()
            {
                Web,
                Fillet,
                Flange
            };

            return(rectY);
        }
예제 #7
0
        /// <summary>
        /// Defines a set of rectangles for analysis with respect to 
        /// y-axis, each occupying full height of section. The rectangles are rotated 90 deg., 
        /// because internally the properties are calculated  with respect to x-axis.
        /// </summary>
        /// <returns>List of analysis rectangles</returns>
        public override List<CompoundShapePart> GetCompoundRectangleYAxisList()
        {
            double FlangeThickness = this.t_f;
            double FlangeWidth = this.b_f;
            r = k - t_f;
            double FlangeOverhang = (FlangeWidth - t_w - 2.0 * r) / 2.0;

            CompoundShapePart LeftFlange = new CompoundShapePart(2 * FlangeThickness, FlangeOverhang,
                new Point2D(0,b_f-FlangeOverhang/2.0));

            CompoundShapePart RightFlange = new CompoundShapePart(2 * FlangeThickness, FlangeOverhang,
                new Point2D(0, FlangeOverhang/2.0));

            PartWithDoubleFillet LeftFillet = new PartWithDoubleFillet(r, 2 * FlangeThickness, new Point2D(0, b_f - FlangeOverhang), false);
            PartWithDoubleFillet RightFillet = new PartWithDoubleFillet(r, 2 * FlangeThickness, new Point2D(0, FlangeOverhang), true);
            CompoundShapePart Web = new CompoundShapePart(d, t_w, new Point2D(0, b_f / 2)); 

            List<CompoundShapePart> rectY = new List<CompoundShapePart>()
            {
                LeftFlange,   
                LeftFillet,
                Web,
                RightFillet,
                RightFlange  
            };
            return rectY;
        }
예제 #8
0
        /// <summary>
        /// Defines a set of rectangles for analysis with respect to 
        /// y-axis, each occupying full d of section. The rectangles are rotated 90 deg., 
        /// because internally the properties are calculated  with respect to x-axis.
        /// </summary>
        /// <returns>List of analysis rtangles</returns>
        public override List<CompoundShapePart> GetCompoundRectangleYAxisList()
        {
            //double t_f = this.t_fTop;
            //double b_f = this.b_fTop;


            //Note: all insertion points are calculated from the left side of the shape
            CompoundShapePart Web = new CompoundShapePart(d, t_w, new Point2D(0, t_w / 2.0));
            PartWithDoubleFillet Fillet = new PartWithDoubleFillet(k, 2 * t_f, new Point2D(0, t_w), true);
            CompoundShapePart Flange = new CompoundShapePart(2 * t_f, b_f - t_w - k,
                new Point2D(0, (t_w + k + (b_f - t_w - k) / 2.0)));
             

            List<CompoundShapePart> rectY = new List<CompoundShapePart>()
            {
                Web,
                Fillet,
                Flange  
            };
            return rectY;
        }