Ejemplo n.º 1
0
        /// <summary>
        /// Calculate the acting forces to Cracking forces ratio.
        /// </summary>
        /// <param name="inNMM">The acting forces.</param>
        /// <param name="crackingStress">Stress limit for cracking/uncracking section.</param>
        /// <returns></returns>
        public double ForcesToCrackingForces(InternalForcesContainer inNMM, double crackingStress)
        {
            if (!CalculationUtility.IsZeroM(inNMM.MomentMz))
            {
                throw new Exception("Deflection calculation is not aviable for biaxial bending.");
            }
            double crackigForcesToForces = Double.MaxValue;

            solver.SolveResistance(inNMM.ForceFx, inNMM.MomentMy, 0);
            double strainMin = solver.GetStrainMin(Autodesk.CodeChecking.Concrete.ResultType.Concrete);

            if (strainMin < 0.0)
            {
                double      ActingForceToResistance = 1.0;
                SetOfForces ResistanceForces        = solver.GetInternalForces(Autodesk.CodeChecking.Concrete.ResultType.Section);
                if (Math.Abs(inNMM.MomentMy) > Math.Abs(inNMM.ForceFx))
                {
                    ActingForceToResistance = inNMM.MomentMy / ResistanceForces.MomentX;
                }
                else
                {
                    ActingForceToResistance = inNMM.ForceFx / ResistanceForces.AxialForce;
                }
                Autodesk.CodeChecking.Concrete.Concrete concrete = solver.GetConcrete();
                double noCrackingTensonStress = -strainMin * concrete.ModulusOfElasticity * ActingForceToResistance;
                crackigForcesToForces = crackingStress / noCrackingTensonStress;
            }
            return(crackigForcesToForces);
        }