예제 #1
0
        public RebarPointResult(double Stress, double Strain, double Force, double DistanceToNa, RebarPoint Point)

        {
            this.Stress = Stress;
            this.Strain = Strain;
            this.Force  = Force;
            this.DistanceToNeutralAxis = DistanceToNa;
            this.Point = Point;
        }
예제 #2
0
 public RebarPointResult(double Stress, double Strain, double Force, double DistanceToNa, RebarPoint Point)
     
 {
     this.Stress = Stress;
     this.Strain = Strain;
     this.Force = Force;
     this.DistanceToNeutralAxis = DistanceToNa;
     this.Point = Point;
 }
        internal RectangularSectionSinglyReinforced(double b, double h, double A_s, double c_cntr,
        ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial, bool hasTies=false)
        {

            CrossSectionRectangularShape shape = new CrossSectionRectangularShape(ConcreteMaterial.Concrete, null, b, h);
            base.ConcreteMaterial = ConcreteMaterial; //duplicate save of concrete material into base Dynamo class

            List<wosadAci.RebarPoint> LongitudinalBars = new List<wosadAci.RebarPoint>();

                wosadAci.Rebar thisBar = new wosadAci.Rebar(A_s, LongitudinalRebarMaterial.Material);
                wosadAci.RebarPoint point = new wosadAci.RebarPoint(thisBar, new wosadAci.RebarCoordinate() { X = 0, Y = -h / 2.0 + c_cntr });
            LongitudinalBars.Add(point);

            wosadAci.IConcreteFlexuralMember fs = new wosadAci14.ConcreteSectionFlexure(shape, LongitudinalBars, new CalcLog());
            this.FlexuralSection = fs;
        }
예제 #4
0
        public ConcreteSectionFlexure GetConcreteBeam(double Width, double Height, double fc, params RebarInput[] rebarInput)
        {

            IConcreteSection Section = GetRectangularSection(Width, Height, fc);

            List<RebarPoint> LongitudinalBars = new List<RebarPoint>();
            foreach (var bar in rebarInput)
            {
                Rebar thisBar = new Rebar(bar.Area, new MaterialAstmA615(A615Grade.Grade60));
                RebarPoint point = new RebarPoint(thisBar, new RebarCoordinate() { X = 0, Y = -Height / 2.0 + bar.Cover });
                LongitudinalBars.Add(point);
            }

            ConcreteSectionFlexure beam = new ConcreteSectionFlexure(Section,LongitudinalBars, log);
            return beam;
        }
예제 #5
0
        public ConcreteSectionFlexure GetNonPrestressedDoublyReinforcedRectangularSection(double b, double h, 
            double A_s1,double A_s2,double c_cntr1,double c_cntr2, 
            double A_s_prime1,double A_s_prime2, double c_cntr_prime1, double c_cntr_prime2, 
            ConcreteMaterial concrete, IRebarMaterial rebar)
        {
            CrossSectionRectangularShape Section = new CrossSectionRectangularShape(concrete, null, b, h);
             List<RebarPoint> LongitudinalBars = new List<RebarPoint>();

            Rebar bottom1 = new Rebar(A_s1, rebar);
            RebarPoint pointBottom1 = new RebarPoint(bottom1, new RebarCoordinate() { X = 0, Y = -h / 2.0 + c_cntr1 });
            LongitudinalBars.Add(pointBottom1);


            if (A_s2!=0)
            {
                Rebar bottom2 = new Rebar(A_s2, rebar);
                RebarPoint pointBottom2 = new RebarPoint(bottom2, new RebarCoordinate() { X = 0, Y = -h / 2.0 + c_cntr2 });
                LongitudinalBars.Add(pointBottom2);
            }

            if (A_s_prime1 != 0)
            {
                Rebar top1 = new Rebar(A_s_prime1, rebar);
                RebarPoint pointTop1 = new RebarPoint(top1, new RebarCoordinate() { X = 0, Y = h / 2.0 - c_cntr_prime1 });
                LongitudinalBars.Add(pointTop1);
            }

            if (A_s_prime2 != 0)
            {
                Rebar top2 = new Rebar(A_s_prime2, rebar);
                RebarPoint pointTop2 = new RebarPoint(top2, new RebarCoordinate() { X = 0, Y = h / 2.0 - c_cntr_prime2 });
                LongitudinalBars.Add(pointTop2);
            }

            CalcLog log = new CalcLog();
            ConcreteSectionFlexure beam = new ConcreteSectionFlexure(Section, LongitudinalBars, log);
            return beam;
        }
예제 #6
0
        protected RebarPoint FindRebarWithExtremeCoordinate(BarCoordinateFilter CoordinateFilter, BarCoordinateLimitFilterType LimitFilter, double CutoffCoordinate)
        {
            RebarPoint returnBar = null;

            RebarPoint maxXRebar = null;
            RebarPoint maxYRebar = null;
            RebarPoint minXRebar = null;
            RebarPoint minYRebar = null;

            double MaxY = double.NegativeInfinity;
            double MaxX = double.NegativeInfinity;
            double MinY = double.PositiveInfinity;
            double MinX = double.PositiveInfinity;

            if (longitBars.Count == 0)
            {
                throw new NoRebarException();
            }

            foreach (var bar in longitBars)
            {
                if (bar.Coordinate.X > MaxX)
                {
                    if (bar.Coordinate.X < CutoffCoordinate)
                    {
                        maxXRebar = bar;
                        MaxX      = bar.Coordinate.X;
                    }
                }

                if (bar.Coordinate.Y > MaxY)
                {
                    if (bar.Coordinate.Y < CutoffCoordinate)
                    {
                        maxYRebar = bar;
                        MaxY      = bar.Coordinate.Y;
                    }
                }
                if (bar.Coordinate.X < MinX)
                {
                    if (bar.Coordinate.X > CutoffCoordinate)
                    {
                        minXRebar = bar;
                        MinX      = bar.Coordinate.X;
                    }
                }

                if (bar.Coordinate.Y < MinY)
                {
                    if (bar.Coordinate.Y > CutoffCoordinate)
                    {
                        minYRebar = bar;
                        MinY      = bar.Coordinate.Y;
                    }
                }
            }

            if (CoordinateFilter == BarCoordinateFilter.X && LimitFilter == BarCoordinateLimitFilterType.Maximum)
            {
                returnBar = maxXRebar;
            }

            if (CoordinateFilter == BarCoordinateFilter.X && LimitFilter == BarCoordinateLimitFilterType.Minimum)
            {
                returnBar = minXRebar;
            }

            if (CoordinateFilter == BarCoordinateFilter.Y && LimitFilter == BarCoordinateLimitFilterType.Maximum)
            {
                returnBar = maxYRebar;
            }

            if (CoordinateFilter == BarCoordinateFilter.Y && LimitFilter == BarCoordinateLimitFilterType.Minimum)
            {
                returnBar = minYRebar;
            }

            return(returnBar);
        }