Example #1
0
        protected IStrainCompatibilityAnalysisResult GetResult(SectionAnalysisResult SectionResult)
        {
            RebarPointResult controllingBar        = GetMaxSteelStrainPoint(SectionResult.TensionRebarResults);
            double           MaxSteelTensionStrain = controllingBar.Strain;
            double           Mn = SectionResult.Moment;
            IStrainCompatibilityAnalysisResult result = new ConcreteSectionFlexuralAnalysisResult(Mn, SectionResult.StrainDistribution, controllingBar);

            return(result);
        }
Example #2
0
        private RebarPointResult GetMaxSteelStrainPoint(List <RebarPointResult> rebarResult)
        {
            //Find minimum value because of sign convention
            RebarPointResult minStrainPoint = null;
            var MinStrainBar = rebarResult.MinBy(b => b.Strain);

            return(MinStrainBar);
            //RebarPointResult maxStrainPoint= null;
            //double MaxSteelStrain = double.NegativeInfinity;
            //foreach (var bar in rebarResult)
            //{
            //    if (bar.Strain >=MaxSteelStrain)
            //{
            //     maxStrainPoint = bar;
            //}
            //        }
            //        return maxStrainPoint;
        }
Example #3
0
        public IStrainCompatibilityAnalysisResult GetNominalFlexuralCapacity
            (FlexuralCompressionFiberPosition CompressionFiberPosition)
        {
            currentCompressionFiberPosition = CompressionFiberPosition;

            //Step 1: Assume strain distribution with all bars below section centroid yielding
            LinearStrainDistribution TrialStrainDistribution = GetInitialStrainEstimate(CompressionFiberPosition);
            SectionAnalysisResult    TrialSectionResult      = GetSectionResult(TrialStrainDistribution, CompressionFiberPosition);
            double Mn = 0;

            //check id T and C force are equal

            //if T<>C
            if (GetAnalysisResultConverged(TrialSectionResult, ConvergenceToleranceStrain) == false)
            {
                SectionAnalysisResult IteratedResult = null;
                try
                {
                    TCIterationBound bound = GetSolutionBoundaries(TrialSectionResult, TrialStrainDistribution);     //make sure solution exists
                    IteratedResult = FindPureMomentResult(CompressionFiberPosition, bound, ConvergenceToleranceStrain);
                    RebarPointResult controllingBar = GetMaxSteelStrainPoint(TrialSectionResult.TensionRebarResults);
                    Mn = IteratedResult.Moment;
                    return(new ConcreteSectionFlexuralAnalysisResult(Mn, IteratedResult.StrainDistribution, controllingBar));
                }
                catch (SectionAnalysisFailedToConvergeException)
                {
                    throw new SectionFailedToConvergeException();
                }
            }
            //if T=C
            else
            {
                IStrainCompatibilityAnalysisResult result = GetResult(TrialSectionResult);
                return(result);
            }
        }
 public ConcreteSectionFlexuralAnalysisResult(double Moment, LinearStrainDistribution StrainDistribution, RebarPointResult controllingTensionBar) : base(Moment, StrainDistribution)
 {
     this.ControllingTensionBar = controllingTensionBar;
 }
 public ConcreteSectionCompressionAnalysisResult(double Moment, LinearStrainDistribution StrainDistribution, RebarPointResult controllingTensionBar)
     : base(Moment, StrainDistribution, controllingTensionBar)
 {
 }