internal RectangularSectionSinglyReinforced(double b, double h, double A_s, double c_cntr, ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial, bool hasTies = false) { KodestructAci.ConfinementReinforcementType ConfinementReinforcementType; if (hasTies == true) { ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties; } else { ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.NoReinforcement; } CrossSectionRectangularShape shape = new CrossSectionRectangularShape(ConcreteMaterial.Concrete, null, b, h); base.ConcreteMaterial = ConcreteMaterial; //duplicate save of concrete material into base Dynamo class List <KodestructAci.RebarPoint> LongitudinalBars = new List <KodestructAci.RebarPoint>(); KodestructAci.Rebar thisBar = new KodestructAci.Rebar(A_s, LongitudinalRebarMaterial.Material); KodestructAci.RebarPoint point = new KodestructAci.RebarPoint(thisBar, new KodestructAci.RebarCoordinate() { X = 0, Y = -h / 2.0 + c_cntr }); LongitudinalBars.Add(point); KodestructAci.IConcreteFlexuralMember fs = new KodestructAci14.ConcreteSectionFlexure(shape, LongitudinalBars, new CalcLog(), ConfinementReinforcementType); this.FlexuralSection = fs; }
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; }
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); }