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; }
internal RebarPoint(double A_b, double X_shp, double Y_shp, RebarMaterial RebarMaterial) { KodestructAci.Rebar b = new KodestructAci.Rebar(A_b, RebarMaterial.Material); this.RebarPointLData = new KodestructAci.RebarPoint(b, new KodestructAci.RebarCoordinate() { X = X_shp, Y = Y_shp }); }
protected virtual void CalculateElements() { List <RebarPoint> RebarPoints = new List <RebarPoint>(); double dx = NodeJ.X - NodeI.X; double dy = NodeJ.Y - NodeI.Y; Vector seg = new Vector(dx, dy); int N = NumberOfSubdivisions; int NumberOfRebarPoints = NumberOfSubdivisions + 1; double segDx; double segDy; double PointArea = A_total / NumberOfRebarPoints; Rebar rebar = new Rebar(PointArea, rebarMaterial); if (setBackCornerBars == false) { segDx = dx / N; segDy = dy / N; RebarCoordinate coord1 = new RebarCoordinate(NodeI.X, NodeI.Y); RebarPoints.Add(new RebarPoint(rebar, coord1)); for (int i = 0; i < NumberOfSubdivisions; i++) { RebarCoordinate Pt = new RebarCoordinate(NodeI.X + (i + 1) * segDx, NodeI.Y + (i + 1) * segDy); RebarPoints.Add(new RebarPoint(rebar, Pt)); } } else { segDx = dx / (N + 1.0); segDy = dy / (N + 1.0); for (int i = 0; i < NumberOfSubdivisions; i++) { RebarCoordinate Pt = new RebarCoordinate(NodeI.X + (i + 1) * segDx, NodeI.Y + (i + 1) * segDy); RebarPoints.Add(new RebarPoint(rebar, Pt)); } } this.rebarPoints = RebarPoints; }