/// <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); }
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; }
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); }
/// <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); }
/// <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; }
/// <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; }