public void GeneralBeamFlexuralCapacityTopReturnsNominalValue() { double fc = 4000.0; FlexuralSectionFactory sf = new FlexuralSectionFactory(); IConcreteMaterial mat = GetConcreteMaterial(fc); List <Point2D> PolyPoints = new List <Point2D>() { new Point2D(-6.0, 0.0), new Point2D(-6.0, 12.0), new Point2D(6.0, 12.0), new Point2D(6.0, 0) }; Rebar thisBar = new Rebar(1.0, new MaterialAstmA615(A615Grade.Grade60)); var coord = new RebarCoordinate(0, 1.0); List <RebarPoint> RebarPoints = new List <RebarPoint>() { new RebarPoint(thisBar, coord) }; //GetGeneralSection(List<Point2D> PolygonPoints, //ConcreteMaterial Concrete, List<RebarPoint> RebarPoints, double b_w, double d) ConcreteSectionFlexure beam = sf.GetGeneralSection(PolyPoints, mat, RebarPoints, 12.0, 9.0); IStrainCompatibilityAnalysisResult MResult = beam.GetNominalFlexuralCapacity(FlexuralCompressionFiberPosition.Top); double M_n = MResult.Moment / 12000; double refValue = 51.32; double actualTolerance = EvaluateActualTolerance(M_n, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
public void BeamReturnsphiMn() { var ConcreteMaterial = new Kodestruct.Concrete.ACI318_14.Materials.ConcreteMaterial(6000, ACI.Entities.ConcreteTypeByWeight.Normalweight, null); FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory(); double b = 16; double h = 40; double f_y = 60000; RebarMaterialGeneral LongitudinalRebarMaterial = new RebarMaterialGeneral(f_y); List <RebarPoint> LongitudinalBars = new List <RebarPoint>(); Rebar TopRebar = new Rebar(4, LongitudinalRebarMaterial); RebarPoint TopPoint = new RebarPoint(TopRebar, new RebarCoordinate() { X = 0, Y = h / 2.0 - 3 }); LongitudinalBars.Add(TopPoint); Rebar BottomRebar = new Rebar(4, LongitudinalRebarMaterial); RebarPoint BottomPoint = new RebarPoint(BottomRebar, new RebarCoordinate() { X = 0, Y = -h / 2.0 + 3 }); LongitudinalBars.Add(BottomPoint); CrossSectionRectangularShape shape = new CrossSectionRectangularShape(ConcreteMaterial, null, b, h); IConcreteFlexuralMember fs = new ConcreteSectionFlexure(shape, LongitudinalBars, null, ConfinementReinforcementType.Ties); ConcreteFlexuralStrengthResult result = fs.GetDesignFlexuralStrength(FlexuralCompressionFiberPosition.Top); }
public void ColumnDistributedInteractionReturnsSPCOL_Nominal2() { double b = 16; double h = 16; double f_c = 5000; List <RebarPoint> LongitudinalBars = new List <RebarPoint>(); FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory(); CompressionSectionFactory compressionFactory = new CompressionSectionFactory(); IConcreteMaterial mat = GetConcreteMaterial(f_c); IRebarMaterial rebarMat = new MaterialAstmA615(A615Grade.Grade60); ConcreteSectionFlexure flexureMember = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, 4.0, 0, 2.5, 2.5, mat, rebarMat, ConfinementReinforcementType.Ties, 1); ConcreteSectionCompression col = compressionFactory.GetCompressionMemberFromFlexuralSection(flexureMember, CompressionMemberType.NonPrestressedWithTies); double P = 500 * 1000; double refValue = 369 * 12 * 1000; //from SP column software double M_n = col.GetNominalMomentResult(P, FlexuralCompressionFiberPosition.Top).Moment; double phiM_n_KipFt = M_n / 1000.0 / 12.0; double actualTolerance = EvaluateActualTolerance(M_n, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
public void ColumnDistributedInteractionReturnsSPCOL_Nominal1_Strains() { double b = 16; double h = 16; double f_c = 5000; List <RebarPoint> LongitudinalBars = new List <RebarPoint>(); FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory(); CompressionSectionFactory compressionFactory = new CompressionSectionFactory(); IConcreteMaterial mat = GetConcreteMaterial(f_c); IRebarMaterial rebarMat = new MaterialAstmA615(A615Grade.Grade60); ConcreteSectionFlexure flexureMember = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, 4.0, 0, 2.5, 2.5, mat, rebarMat, ConfinementReinforcementType.Ties, 1); ConcreteSectionCompression col = compressionFactory.GetCompressionMemberFromFlexuralSection(flexureMember, CompressionMemberType.NonPrestressedWithTies); double refForce = 1220; double refMoment = 160.8; double SteelStrain = 0.000654; double P = col.SectionAxialForceResultantFunction(SteelStrain) / 1000.0; double actualTolerance = EvaluateActualTolerance(P, refForce); //IStrainCompatibilityAnalysisResult momentResult = col.GetNominalMomentResult(refForce, FlexuralCompressionFiberPosition.Top); //double M_n = momentResult.Moment / 12000.0; Assert.LessOrEqual(actualTolerance, tolerance); }
public void ColumnDistributedInteractionReturnsSPCOL_Nominal0_Strains() { double b = 16; double h = 16; double f_c = 5000; List <RebarPoint> LongitudinalBars = new List <RebarPoint>(); FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory(); CompressionSectionFactory compressionFactory = new CompressionSectionFactory(); IConcreteMaterial mat = GetConcreteMaterial(f_c); IRebarMaterial rebarMat = new MaterialAstmA615(A615Grade.Grade60); ConcreteSectionFlexure flexureMember = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, 4.0, 0, 2.5, 2.5, mat, rebarMat, ConfinementReinforcementType.Ties, 1); ConcreteSectionCompression col = compressionFactory.GetCompressionMemberFromFlexuralSection(flexureMember, CompressionMemberType.NonPrestressedWithTies); double refForce = 1440; double refMoment = 43.0; double SteelStrain = 0.00126; double P = col.SectionAxialForceResultantFunction(SteelStrain) / 1000.0; double actualTolerance = EvaluateActualTolerance(P, refForce); Assert.True(actualTolerance <= tolerance); }
public ConcreteSectionCompression GetConcreteExampleColumnWithDistributed() { double b = 16; double h = 16; double f_c = 5000; List <RebarPoint> LongitudinalBars = new List <RebarPoint>(); FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory(); CompressionSectionFactory compressionFactory = new CompressionSectionFactory(); IConcreteMaterial mat = GetConcreteMaterial(f_c); IRebarMaterial rebarMat = new MaterialAstmA615(A615Grade.Grade60); ConcreteSectionFlexure flexureMember = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, 4, 0, 2.5, 2.5, mat, rebarMat); ConcreteSectionCompression column = compressionFactory.GetCompressionMember(flexureMember, CompressionMemberType.NonPrestressedWithTies); return(column); }
internal RectangularSectionFourSideReinforced(double b, double h, double A_sTopBottom, double A_sLeftRight, double c_cntrTopBottom, double c_cntrLeftRight, ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial, bool hasTies = false) { KodestructAci.ConfinementReinforcementType ConfinementReinforcementType; if (hasTies == true) { ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties; } else { ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.NoReinforcement; } base.ConcreteMaterial = ConcreteMaterial; //duplicate save of concrete material into base Dynamo class FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory(); ConcreteSectionFlexure fs = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, A_sTopBottom, A_sLeftRight, c_cntrTopBottom, c_cntrLeftRight, ConcreteMaterial.Concrete, LongitudinalRebarMaterial.Material, ConfinementReinforcementType); this.FlexuralSection = fs; }