Ejemplo n.º 1
0
 public ConcreteFlexuralSectionBase(IConcreteSection Section, List <RebarPoint> LongitudinalBars, ICalcLog log,
                                    ConfinementReinforcementType ConfinementReinforcementType = ConfinementReinforcementType.Ties, double ConvergenceToleranceStrain = 0.000002)
     : base(Section, LongitudinalBars, log, false)
 {
     this.ConvergenceToleranceStrain   = ConvergenceToleranceStrain;
     this.ConfinementReinforcementType = ConfinementReinforcementType;
 }
        /// <summary>
        /// Strength reduction factor per Table 21.2.2
        /// </summary>
        /// <param name="failureMode">Compression, tension-controlled or transitional</param>
        /// <param name="ConfinementReinforcementType"></param>
        /// <param name="epsilon_t">Actual calculated tensile strain</param>
        /// <param name="epsilon_ty">Yield strain</param>
        /// <returns></returns>
        public double Get_phiFlexureAndAxial(FlexuralFailureModeClassification failureMode,
            ConfinementReinforcementType ConfinementReinforcementType, double epsilon_t, double epsilon_ty)
        {
            epsilon_t = Math.Abs(epsilon_t);
            switch (failureMode)
            {
                case FlexuralFailureModeClassification.CompressionControlled:
                    if (ConfinementReinforcementType == ACI.ConfinementReinforcementType.Spiral)
                    {
                        return 0.75;
                    }
                    else
                    {
                        return 0.65;
                    }
                    break;
                case FlexuralFailureModeClassification.Transition:
                    if (ConfinementReinforcementType == ACI.ConfinementReinforcementType.Spiral)
                    {
                        return 0.75 + 0.15 * (epsilon_t - epsilon_ty) / (0.005 - epsilon_ty);
                    }
                    else
                    {
                        return 0.65 + 0.25 * (epsilon_t - epsilon_ty) / (0.005 - epsilon_ty);
                    }
                    break;
                case FlexuralFailureModeClassification.TensionControlled:
                    return 0.9;
                    break;
                default:
                    return 0.65;
                    break;
            }

        }
        public ConcreteSectionCompression GetCompressionMemberFromFlexuralSection(ConcreteSectionFlexure flexuralSection,
                                                                                  ConfinementReinforcementType ConfinementReinforcement, bool IsPrestressed = false)
        {
            CalcLog log = new CalcLog();
            CompressionMemberType CompressionMemberType = GetCompressionMemberType(ConfinementReinforcement, IsPrestressed);

            ConcreteSectionCompression compSection = new ConcreteSectionCompression(flexuralSection, CompressionMemberType, log);

            return(compSection);
        }
        /// <summary>
        /// Concrete generic shape
        /// </summary>
        /// <param name="PolygonPoints">Points representing closed polyline describing the outline of concrete shape</param>
        /// <param name="Concrete">Concrete material</param>
        /// <param name="RebarPoints">Points representing vertical rebar. Rebar points have associated rebar material and location</param>
        /// <param name="b_w">Section width (required for shear strength calculations)</param>
        /// <param name="ConfinementReinforcementType"></param>
        /// <param name="d">Distance from tension rebar centroid to the furthermost compressed point (required for shear strength calculations)</param>
        /// <returns></returns>
        public ConcreteSectionFlexure GetGeneralSection(List <Point2D> PolygonPoints,
                                                        IConcreteMaterial Concrete, List <RebarPoint> RebarPoints, double b_w, double d,
                                                        ConfinementReinforcementType ConfinementReinforcementType = ConfinementReinforcementType.NoReinforcement)
        {
            CalcLog log                      = new CalcLog();
            var     GenericShape             = new PolygonShape(PolygonPoints);
            CrossSectionGeneralShape Section = new CrossSectionGeneralShape(Concrete, null, GenericShape, b_w, d);
            ConcreteSectionFlexure   beam    = new ConcreteSectionFlexure(Section, RebarPoints, log, ConfinementReinforcementType);

            return(beam);
        }
        public ConcreteSectionCompression GetRectangularCompressionMember(double Width, double Height, double fc, List <RebarPoint> LongitudinalBars,
                                                                          ConfinementReinforcementType ConfinementReinforcement, bool IsPrestressed = false)
        {
            CalcLog                      log     = new CalcLog();
            ConcreteMaterial             mat     = new ConcreteMaterial(fc, ConcreteTypeByWeight.Normalweight, log);
            CrossSectionRectangularShape Section = new CrossSectionRectangularShape(mat, null, Width, Height);
            CompressionMemberType        CompressionMemberType = GetCompressionMemberType(ConfinementReinforcement, IsPrestressed);
            ConcreteSectionCompression   column = new ConcreteSectionCompression(Section, LongitudinalBars, CompressionMemberType, log);

            return(column);
        }
        public ConcreteFlexuralStrengthResult GetDesignFlexuralStrength(FlexuralCompressionFiberPosition FlexuralCompressionFiberPosition,
                                                                        ConfinementReinforcementType ConfinementReinforcementType)
        {
            IStrainCompatibilityAnalysisResult nominalResult = this.GetNominalFlexuralCapacity(FlexuralCompressionFiberPosition);
            ConcreteFlexuralStrengthResult     result        = new ConcreteFlexuralStrengthResult(nominalResult, FlexuralCompressionFiberPosition, this.Section.Material.beta1);
            StrengthReductionFactorFactory     f             = new StrengthReductionFactorFactory();
            FlexuralFailureModeClassification  failureMode   = f.GetFlexuralFailureMode(result.epsilon_t, result.epsilon_ty);
            double phi    = f.Get_phiFlexureAndAxial(failureMode, ConfinementReinforcementType, result.epsilon_t, result.epsilon_ty);
            double phiM_n = phi * nominalResult.Moment;

            result.phiM_n = phiM_n; result.FlexuralFailureModeClassification = failureMode;
            return(result);
        }
        public ConcreteFlexuralStrengthResult GetDesignFlexuralStrength(FlexuralCompressionFiberPosition FlexuralCompressionFiberPosition,
            ConfinementReinforcementType ConfinementReinforcementType)
        {
            IStrainCompatibilityAnalysisResult nominalResult = this.GetNominalFlexuralCapacity(FlexuralCompressionFiberPosition);
            ConcreteFlexuralStrengthResult result = new ConcreteFlexuralStrengthResult(nominalResult, FlexuralCompressionFiberPosition, this.Section.Material.beta1);
            StrengthReductionFactorFactory f = new StrengthReductionFactorFactory();
            FlexuralFailureModeClassification failureMode = f.GetFlexuralFailureMode(result.epsilon_t, result.epsilon_ty);
            double phi = f.Get_phiFlexureAndAxial(failureMode, ConfinementReinforcementType, result.epsilon_t, result.epsilon_ty);
            double phiM_n = phi * nominalResult.Moment;
            result.phiM_n = phiM_n; result.FlexuralFailureModeClassification = failureMode;
            return result;

        }
        public void ShearWallCalculatesPMMDiagram()
        {
            double f_c_prime                         = 6;
            double f_c_prime_psi                     = f_c_prime * 1000;
            RebarMaterialFactory factory             = new RebarMaterialFactory();
            string         RebarSpecificationId      = "A615Grade60";
            IRebarMaterial LongitudinalRebarMaterial = factory.GetMaterial(RebarSpecificationId);
            double         h_total                   = 20 * 12;
            double         t_w                       = 12;
            double         N_curtains                = 2;
            double         s                         = 12;
            double         c_edge                    = 0;

            BoundaryZone BoundaryZoneTop    = new BoundaryZone(3, 3, "No8", 6, 3, 3);
            BoundaryZone BoundaryZoneBottom = new BoundaryZone(3, 3, "No8", 6, 3, 3);
            string       WallRebarSizeId    = "No4";


            FlexuralCompressionFiberPosition p    = FlexuralCompressionFiberPosition.Top;
            ConcreteMaterial             Concrete = new ConcreteMaterial(f_c_prime_psi, ConcreteTypeByWeight.Normalweight, null);
            ConfinementReinforcementType ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties;

            CrossSectionRectangularShape shape = new CrossSectionRectangularShape(Concrete, null, t_w, h_total);

            List <KodestructAci.RebarPoint> LongitudinalBars = GetLongitudinalBars(shape.SliceableShape as ISectionRectangular, h_total, t_w, WallRebarSizeId, N_curtains, s, c_edge,
                                                                                   BoundaryZoneTop, BoundaryZoneBottom, LongitudinalRebarMaterial);

            KodestructAci.IConcreteFlexuralMember fs = new KodestructAci14.ConcreteSectionFlexure(shape, LongitudinalBars, null, ConfinementReinforcementType);

            IConcreteSectionWithLongitudinalRebar Section = fs as IConcreteSectionWithLongitudinalRebar;
            ConcreteSectionCompression            column  = new ConcreteSectionCompression(Section, ConfinementReinforcementType, null);
            //Convert axial force to pounds
            List <PMPair> Pairs         = column.GetPMPairs(p);
            var           PairsAdjusted = Pairs.Select(pair => new PMPair(pair.P / 1000.0, pair.M / 1000.0 / 12.0));

            string Filename = Path.Combine(Path.GetTempPath(), "PMInteractionShearWall.csv");

            using (CsvFileWriter writer = new CsvFileWriter(Filename))
            {
                foreach (var pair in PairsAdjusted)
                {
                    CsvRow row = new CsvRow();
                    row.Add(pair.M.ToString());
                    row.Add(pair.P.ToString());
                    writer.WriteRow(row);
                }
            }
        }
Ejemplo n.º 9
0
        internal ShearWallSection(double h_total, double t_w,
                                  string RebarSizeId, double N_curtains, double s, double c_edge,
                                  BoundaryZone BoundaryZoneTop, BoundaryZone BoundaryZoneBottom,
                                  ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial)
        {
            ConfinementReinforcementType ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties;

            base.ConcreteMaterial = ConcreteMaterial;
            CrossSectionIShape shape = GetIShape(ConcreteMaterial.Concrete, h_total, t_w, BoundaryZoneTop, BoundaryZoneBottom);

            List <KodestructAci.RebarPoint> LongitudinalBars = GetLongitudinalBars(shape.SliceableShape as ISectionI, h_total, t_w, RebarSizeId, N_curtains, s, c_edge,
                                                                                   BoundaryZoneTop, BoundaryZoneBottom, LongitudinalRebarMaterial);

            KodestructAci.IConcreteFlexuralMember fs = new KodestructAci14.ConcreteSectionFlexure(shape, LongitudinalBars, new CalcLog(), ConfinementReinforcementType);
            this.FlexuralSection = fs;
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Strength reduction factor per Table 21.2.2
        /// </summary>
        /// <param name="failureMode">Compression, tension-controlled or transitional</param>
        /// <param name="ConfinementReinforcementType"></param>
        /// <param name="epsilon_t">Actual calculated tensile strain</param>
        /// <param name="epsilon_ty">Yield strain</param>
        /// <returns></returns>
        public double Get_phiFlexureAndAxial(FlexuralFailureModeClassification failureMode,
                                             ConfinementReinforcementType ConfinementReinforcementType, double epsilon_t, double epsilon_ty)
        {
            if (epsilon_t >= 0)
            {
                return(0.65);
            }
            else
            {
                epsilon_t = Math.Abs(epsilon_t);
                switch (failureMode)
                {
                case FlexuralFailureModeClassification.CompressionControlled:
                    if (ConfinementReinforcementType == ACI.ConfinementReinforcementType.Spiral)
                    {
                        return(0.75);
                    }
                    else
                    {
                        return(0.65);
                    }
                    break;

                case FlexuralFailureModeClassification.Transition:
                    if (ConfinementReinforcementType == ACI.ConfinementReinforcementType.Spiral)
                    {
                        return(0.75 + 0.15 * (epsilon_t - epsilon_ty) / (0.005 - epsilon_ty));
                    }
                    else
                    {
                        return(0.65 + 0.25 * (epsilon_t - epsilon_ty) / (0.005 - epsilon_ty));
                    }
                    break;

                case FlexuralFailureModeClassification.TensionControlled:
                    return(0.9);

                    break;

                default:
                    return(0.65);

                    break;
                }
            }
        }
        public ConcreteSectionCompression GetGeneralCompressionMember(List <Point2D> PolygonPoints, List <RebarPoint> LongitudinalBars,
                                                                      IConcreteMaterial ConcreteMaterial, IRebarMaterial RebarMaterial,
                                                                      ConfinementReinforcementType ConfinementReinforcement, double b_w = 0.0, double d = 0.0, bool IsPrestressed = false)
        {
            CalcLog log          = new CalcLog();
            var     GenericShape = new PolygonShape(PolygonPoints);

            if (b_w == 0.0)
            {
                b_w = GenericShape.XMax - GenericShape.XMin;
            }

            if (d == 0.0)
            {
                d = GenericShape.YMax - GenericShape.YMin;
            }
            CrossSectionGeneralShape Section         = new CrossSectionGeneralShape(ConcreteMaterial, null, GenericShape, b_w, d);
            ConcreteSectionFlexure   flexuralSection = new ConcreteSectionFlexure(Section, LongitudinalBars, log, ConfinementReinforcement);

            return(GetCompressionMemberFromFlexuralSection(flexuralSection, ConfinementReinforcement, IsPrestressed));
        }
        private CompressionMemberType GetCompressionMemberType(ConfinementReinforcementType ConfinementReinforcement, bool IsPrestressed)
        {
            CompressionMemberType CompressionMemberType = Concrete.ACI318_14.CompressionMemberType.NonPrestressedWithTies;

            switch (ConfinementReinforcement)
            {
            case ConfinementReinforcementType.Spiral:
                CompressionMemberType = IsPrestressed == false ? CompressionMemberType.NonPrestressedWithSpirals : Concrete.ACI318_14.CompressionMemberType.PrestressedWithSpirals;
                break;

            case ConfinementReinforcementType.Ties:
                CompressionMemberType = IsPrestressed == false ? CompressionMemberType.NonPrestressedWithTies : Concrete.ACI318_14.CompressionMemberType.PrestressedWithTies;
                break;

            default:
                CompressionMemberType = IsPrestressed == false ? CompressionMemberType.NonPrestressedWithTies : Concrete.ACI318_14.CompressionMemberType.PrestressedWithTies;
                break;
            }

            return(CompressionMemberType);
        }
        public  ConcreteCompressionStrengthResult GetDesignMomentWithCompressionStrength( double P_u,
            FlexuralCompressionFiberPosition FlexuralCompressionFiberPosition,
            ConfinementReinforcementType ConfinementReinforcementType)
        {
            double P_o = GetMaximumForce();
            StrengthReductionFactorFactory ff = new StrengthReductionFactorFactory();
            double phiAxial = ff.Get_phiFlexureAndAxial(FlexuralFailureModeClassification.CompressionControlled, ConfinementReinforcementType, 0, 0);
            double phiP_n = phiAxial * P_o;

            if (P_u > phiP_n)
            {
                throw new Exception("Axial forces exceeds maximum axial force.");
            }
            IStrainCompatibilityAnalysisResult nominalResult = this.GetNominalMomentResult(P_u,FlexuralCompressionFiberPosition);
            ConcreteCompressionStrengthResult result = new ConcreteCompressionStrengthResult(nominalResult, FlexuralCompressionFiberPosition, this.Section.Material.beta1);
            StrengthReductionFactorFactory f = new StrengthReductionFactorFactory();
            FlexuralFailureModeClassification failureMode = f.GetFlexuralFailureMode(result.epsilon_t, result.epsilon_ty);
            double phi = f.Get_phiFlexureAndAxial(failureMode, ConfinementReinforcementType, result.epsilon_t, result.epsilon_ty);
            double phiM_n = phi * nominalResult.Moment;
            result.phiM_n = phiM_n; result.FlexuralFailureModeClassification = failureMode;
            return result;
        }
        public void ShearWallCalculatesPMMDiagramMaxIteration()
        {
            double         f_c_prime                 = 6;
            double         f_c_prime_psi             = f_c_prime * 1000;
            IRebarMaterial LongitudinalRebarMaterial = new RebarMaterialGeneral(60000);
            double         l_w = 20 * 12;
            double         h   = 12;


            FlexuralCompressionFiberPosition p    = FlexuralCompressionFiberPosition.Top;
            ConcreteMaterial             Concrete = new ConcreteMaterial(f_c_prime_psi, ConcreteTypeByWeight.Normalweight, null);
            ConfinementReinforcementType ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties;

            CrossSectionRectangularShape shape = new CrossSectionRectangularShape(Concrete, null, h, l_w);

            List <RebarPoint> LongitudinalBars = GetLongitudinalBarsFromCoordinates(LongitudinalRebarMaterial);

            KodestructAci.IConcreteFlexuralMember fs = new KodestructAci14.ConcreteSectionFlexure(shape, LongitudinalBars, null, ConfinementReinforcementType);

            IConcreteSectionWithLongitudinalRebar Section = fs as IConcreteSectionWithLongitudinalRebar;
            ConcreteSectionCompression            column  = new ConcreteSectionCompression(Section, ConfinementReinforcementType, null);
            //Convert axial force to pounds
            List <PMPair> Pairs         = column.GetPMPairs(p, 50, true);
            var           PairsAdjusted = Pairs.Select(pair => new PMPair(pair.P / 1000.0, pair.M / 1000.0 / 12.0));

            string Filename = Path.Combine(Path.GetTempPath(), "PMInteractionShearWallMaxIteration.csv");

            using (CsvFileWriter writer = new CsvFileWriter(Filename))
            {
                foreach (var pair in PairsAdjusted)
                {
                    CsvRow row = new CsvRow();
                    row.Add(pair.M.ToString());
                    row.Add(pair.P.ToString());
                    writer.WriteRow(row);
                }
            }
        }
        public ConcreteSectionCompression(IConcreteSectionWithLongitudinalRebar Section,
                                          ConfinementReinforcementType ConfinementReinforcementType,
                                          ICalcLog log, bool IsPrestressed = false)
            : base(Section.Section, Section.LongitudinalBars, log)
        {
            this.ConfinementReinforcementType = ConfinementReinforcementType;
            switch (ConfinementReinforcementType)
            {
            case ConfinementReinforcementType.Spiral:
                this.CompressionMemberType = IsPrestressed == false ? CompressionMemberType.NonPrestressedWithSpirals : CompressionMemberType.PrestressedWithSpirals;

                break;

            case ConfinementReinforcementType.Ties:
                this.CompressionMemberType = IsPrestressed == false ? CompressionMemberType.NonPrestressedWithTies : CompressionMemberType.PrestressedWithTies;
                break;

            case ConfinementReinforcementType.NoReinforcement:
                throw new Exception("Invalid type of ConfinementReinforcementType variable. Specify either ties or spirals. Alternatively use nodes for plain concrete design");
                break;
                this.CompressionMemberType = IsPrestressed == false ? CompressionMemberType.NonPrestressedWithTies : CompressionMemberType.PrestressedWithTies;
                break;
            }
        }
        /// <summary>
        /// Creates compression member from top/bottom and side reinforcement
        /// </summary>
        /// <param name="Width">Width</param>
        /// <param name="Height">Heigth</param>
        /// <param name="ConcreteMaterial">Concrete material (as IConcreteMaterial)</param>
        /// <param name="RebarMaterial"> Rebar material (as IRebarMaterial) </param>
        /// <param name="A_s_TopBottom">Area of left or right reinforcement (each)</param>
        /// <param name="A_s_LeftRight">Area of top or bottom reinforcement (each)</param>
        /// <param name="c_centerTopBottom">Cover to rebar centroid for top and bottom reinforcement</param>
        /// <param name="c_centerLeftRight">Cover to rebar centroid for left and right side reinforcement</param>
        /// <param name="ConfinementReinforcement">Distiguishes between ties and spirals</param>
        /// <param name="IsPrestressed">Distinguishes between prestressed versus non-prestressed members</param>
        /// <returns></returns>
        public ConcreteSectionCompression GetRectangularCompressionMember(double Width, double Height,
                                                                          IConcreteMaterial ConcreteMaterial, IRebarMaterial RebarMaterial,
                                                                          double A_s_TopBottom, double A_s_LeftRight,
                                                                          double c_centerTopBottom, double c_centerLeftRight,
                                                                          ConfinementReinforcementType ConfinementReinforcement, bool IsPrestressed = false)
        {
            CalcLog   log     = new CalcLog();
            RebarLine topLine = new RebarLine(A_s_TopBottom,
                                              new Point2D(-Width / 2.0 + c_centerLeftRight, Height / 2.0 - c_centerTopBottom),
                                              new Point2D(Width / 2.0 - c_centerLeftRight, Height / 2.0 - c_centerTopBottom),
                                              RebarMaterial, false);

            RebarLine botLine = new RebarLine(A_s_TopBottom,
                                              new Point2D(-Width / 2.0 + c_centerLeftRight, -Height / 2.0 + c_centerTopBottom),
                                              new Point2D(Width / 2.0 - c_centerLeftRight, -Height / 2.0 + c_centerTopBottom),
                                              RebarMaterial, false);

            RebarLine leftLine = new RebarLine(A_s_LeftRight,
                                               new Point2D(-Width / 2.0 + c_centerLeftRight, -Height / 2.0 + c_centerTopBottom),
                                               new Point2D(-Width / 2.0 + c_centerLeftRight, Height / 2.0 - c_centerTopBottom),
                                               RebarMaterial, true);

            RebarLine rightLine = new RebarLine(A_s_LeftRight,
                                                new Point2D(Width / 2.0 - c_centerLeftRight, -Height / 2.0 + c_centerTopBottom),
                                                new Point2D(Width / 2.0 - c_centerLeftRight, Height / 2.0 - c_centerTopBottom),
                                                RebarMaterial, true);

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

            LongitudinalBars.AddRange(topLine.RebarPoints);
            LongitudinalBars.AddRange(botLine.RebarPoints);
            LongitudinalBars.AddRange(leftLine.RebarPoints);
            LongitudinalBars.AddRange(rightLine.RebarPoints);

            return(this.GetRectangularCompressionMember(Width, Height, ConcreteMaterial, LongitudinalBars, ConfinementReinforcement, log, IsPrestressed));
        }
Ejemplo n.º 17
0
 /// <summary>
 ///  Constructor used for flexure and axial load analysis.
 /// </summary>
 public ConcreteSectionFlexure(IConcreteSection Section,
                               List <RebarPoint> LongitudinalBars, ICalcLog log, ConfinementReinforcementType ConfinementReinforcementType)
     : base(Section, LongitudinalBars, log, ConfinementReinforcementType)
 {
 }
 public ReinforcedConcreteBeamNonprestressed(IConcreteSection Section, ConfinementReinforcementType ConfinementReinforcementType, ICalcLog log)
 {
     this.ConcreteSection = Section;
     this.Log             = log;
     this.ConfinementReinforcementType = ConfinementReinforcementType;
 }
//        public ConcreteSectionFlexure GetRectangularSectionWithBoundaryZones(double b, double h,
//double A_sBoundary, double L_Boundary, RebarDesignation curtainBar, double s_curtain, int N_curtains, IConcreteMaterial mat, IRebarMaterial rebarMaterial,
//    ConfinementReinforcementType ConfinementReinforcementType, int NumberOfSubdivisions = 20)
//        {

//            double YTop = h / 2.0 - c_centTopBottom;
//            double YBottom = -h / 2.0 + c_centTopBottom;
//            double XLeft = -b / 2.0 + c_centLeftRight;
//            double XRight = b / 2.0 - c_centLeftRight;

//            Point2D P1 = new Point2D(XLeft, YTop);
//            Point2D P2 = new Point2D(XRight, YTop);
//            Point2D P3 = new Point2D(XRight, YBottom);
//            Point2D P4 = new Point2D(XLeft, YBottom);



//            RebarLine topLine = null;
//            RebarLine bottomLine = null;

//            RebarLine leftLine = null;
//            RebarLine rightLine = null;

//            if (NumberOfSubdivisions == 0)
//            {
//                topLine = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false);
//                bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false);
//                if (A_sLeftRight > 0)
//                {
//                    leftLine = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true);
//                    rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true);
//                }

//            }
//            else
//            {
//                topLine = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false, false, NumberOfSubdivisions);
//                bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false, false, NumberOfSubdivisions);
//                if (A_sLeftRight > 0)
//                {
//                    leftLine = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true, false, NumberOfSubdivisions);
//                    rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true, false, NumberOfSubdivisions);
//                }
//            }


//            List<RebarPoint> LongitudinalBars = new List<RebarPoint>();


//            if (topLine != null) LongitudinalBars.AddRange(topLine.RebarPoints);
//            if (bottomLine != null) LongitudinalBars.AddRange(bottomLine.RebarPoints);
//            if (leftLine != null) LongitudinalBars.AddRange(leftLine.RebarPoints);
//            if (rightLine != null) LongitudinalBars.AddRange(rightLine.RebarPoints);


//            CrossSectionRectangularShape section = new CrossSectionRectangularShape(mat, null, b, h);
//            CalcLog log = new CalcLog();

//            ConcreteSectionFlexure sectionFlexure = new ConcreteSectionFlexure(section, LongitudinalBars, log, ConfinementReinforcementType);
//            return sectionFlexure;
//        }

        public ConcreteSectionFlexure GetRectangularSectionFourSidesDistributed(double b, double h,
                                                                                double A_sTopBottom, double A_sLeftRight, double c_centTopBottom, double c_centLeftRight, IConcreteMaterial mat, IRebarMaterial rebarMaterial,
                                                                                ConfinementReinforcementType ConfinementReinforcementType, int NumberOfSubdivisions = 0)
        {
            double YTop    = h / 2.0 - c_centTopBottom;
            double YBottom = -h / 2.0 + c_centTopBottom;
            double XLeft   = -b / 2.0 + c_centLeftRight;
            double XRight  = b / 2.0 - c_centLeftRight;

            Point2D P1 = new Point2D(XLeft, YTop);
            Point2D P2 = new Point2D(XRight, YTop);
            Point2D P3 = new Point2D(XRight, YBottom);
            Point2D P4 = new Point2D(XLeft, YBottom);



            RebarLine topLine    = null;
            RebarLine bottomLine = null;

            RebarLine leftLine  = null;
            RebarLine rightLine = null;

            if (NumberOfSubdivisions == 0)
            {
                topLine    = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false);
                bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false);
                if (A_sLeftRight > 0)
                {
                    leftLine  = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true);
                    rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true);
                }
            }
            else
            {
                topLine    = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false, false, NumberOfSubdivisions);
                bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false, false, NumberOfSubdivisions);
                if (A_sLeftRight > 0)
                {
                    leftLine  = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true, false, NumberOfSubdivisions);
                    rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true, false, NumberOfSubdivisions);
                }
            }


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


            if (topLine != null)
            {
                LongitudinalBars.AddRange(topLine.RebarPoints);
            }
            if (bottomLine != null)
            {
                LongitudinalBars.AddRange(bottomLine.RebarPoints);
            }
            if (leftLine != null)
            {
                LongitudinalBars.AddRange(leftLine.RebarPoints);
            }
            if (rightLine != null)
            {
                LongitudinalBars.AddRange(rightLine.RebarPoints);
            }


            CrossSectionRectangularShape section = new CrossSectionRectangularShape(mat, null, b, h);
            CalcLog log = new CalcLog();

            ConcreteSectionFlexure sectionFlexure = new ConcreteSectionFlexure(section, LongitudinalBars, log, ConfinementReinforcementType);

            return(sectionFlexure);
        }
        public ConcreteFlexuralStrengthResult GetFlexuralDesignStrength(List <RebarPoint> LongitudinalBars, FlexuralCompressionFiberPosition CompressionFiber, ConfinementReinforcementType ConfinementReinforcementType)
        {
            ConcreteSectionFlexure s = new ConcreteSectionFlexure(this.ConcreteSection, LongitudinalBars, Log, ConfinementReinforcementType);

            return(s.GetDesignFlexuralStrength(CompressionFiber));
        }
 public PrestressedConcreteSection(IPrestressedConcreteSection Section, List <RebarPoint> LongitudinalBars,
                                   CrossSectionLocationType LocationType, MemberClass MemberClass, ICalcLog log, ConfinementReinforcementType ConfinementReinforcementType)
     : base(Section, LongitudinalBars, log, ConfinementReinforcementType)
 {
     this.crossSectionLocationType = LocationType;
     this.memberClass        = MemberClass;
     this.prestressedSection = Section;
 }
        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, ConfinementReinforcementType ConfinementReinforcementType)
        {
            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, ConfinementReinforcementType);

            return(beam);
        }
 public ConcreteSectionFlexure GetNonPrestressedDoublyReinforcedRectangularSection(double b, double h,
                                                                                   double A_s1, double A_s2, double c_cntr1, double c_cntr2,
                                                                                   ConcreteMaterial concreteMaterial, IRebarMaterial rebarMaterial, ConfinementReinforcementType ConfinementReinforcementType)
 {
     return(GetNonPrestressedDoublyReinforcedRectangularSection(b, h, A_s1, A_s2, c_cntr1, c_cntr2, 0, 0, 0, 0, concreteMaterial, rebarMaterial, ConfinementReinforcementType));
 }
 public PrestressedBeamSectionBase(IConcreteSection Section,
                                   List <RebarPoint> LongitudinalBars, ICalcLog log, ConfinementReinforcementType ConfinementReinforcementType)
     : base(Section, LongitudinalBars, log, ConfinementReinforcementType)
 {
 }
Ejemplo n.º 25
0
        public ConcreteSectionCompression GetConcreteCompressionMember(double Width, double Height, double fc, List <RebarPoint> LongitudinalBars, ConfinementReinforcementType ConfinementReinforcementType)
        {
            CalcLog          log     = new CalcLog();
            IConcreteSection Section = GetRectangularSection(Width, Height, fc);

            IConcreteFlexuralMember    fs     = new ConcreteSectionFlexure(Section, LongitudinalBars, new CalcLog(), ConfinementReinforcementType);
            ConcreteSectionCompression column = new ConcreteSectionCompression(fs as IConcreteSectionWithLongitudinalRebar, ConfinementReinforcementType, log);

            return(column);
        }
 public ConcreteFlexuralStrengthResult GetFlexuralDesignStrength(List<RebarPoint> LongitudinalBars, FlexuralCompressionFiberPosition CompressionFiber, ConfinementReinforcementType ConfinementReinforcementType)
 {
     ConcreteSectionFlexure s = new ConcreteSectionFlexure(this.ConcreteSection, LongitudinalBars, Log);
     return s.GetDesignFlexuralStrength(CompressionFiber, ConfinementReinforcementType);
 }
Ejemplo n.º 27
0
        public ConcreteCompressionStrengthResult GetDesignMomentWithCompressionStrength(double P_u,
                                                                                        FlexuralCompressionFiberPosition FlexuralCompressionFiberPosition,
                                                                                        ConfinementReinforcementType ConfinementReinforcementType)
        {
            double P_o = GetMaximumForce();
            StrengthReductionFactorFactory ff = new StrengthReductionFactorFactory();
            double phiAxial = ff.Get_phiFlexureAndAxial(FlexuralFailureModeClassification.CompressionControlled, ConfinementReinforcementType, 0, 0);
            double phiP_n   = phiAxial * P_o;

            if (P_u > phiP_n)
            {
                throw new Exception("Axial forces exceeds maximum axial force.");
            }
            IStrainCompatibilityAnalysisResult nominalResult = this.GetNominalMomentResult(P_u, FlexuralCompressionFiberPosition);
            ConcreteCompressionStrengthResult  result        = new ConcreteCompressionStrengthResult(nominalResult, FlexuralCompressionFiberPosition, this.Section.Material.beta1);
            StrengthReductionFactorFactory     f             = new StrengthReductionFactorFactory();
            FlexuralFailureModeClassification  failureMode   = f.GetFlexuralFailureMode(result.epsilon_t, result.epsilon_ty);
            double phi    = f.Get_phiFlexureAndAxial(failureMode, ConfinementReinforcementType, result.epsilon_t, result.epsilon_ty);
            double phiM_n = phi * nominalResult.Moment;

            result.phiM_n = phiM_n; result.FlexuralFailureModeClassification = failureMode;
            return(result);
        }