예제 #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);
        }
        /// <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>Acting forces to cracking forces ratio</returns>
        public double ForcesToCrackingForces(InternalForcesContainer inNMM, double crackingStress)
        {
            double forcesToCrackigForces = 0;

            if (!CalculationUtility.IsZeroM(inNMM.MomentMz))
            {
                throw new Exception("Deflection calculation is not aviable for biaxial bending.");
            }
            double actingForcesStress = 0;

            if (!CalculationUtility.IsZeroM(inNMM.MomentMy))
            {
                double w = solverGeometry.MomentOfInertiaX;
                w /= inNMM.MomentMy > 0.0 ? (geometryMaxY - solverGeometry.CenterOfInertia.Y) : (solverGeometry.CenterOfInertia.Y - geometryMinY);
                actingForcesStress += Math.Abs(inNMM.MomentMy) / w;
            }
            if (!CalculationUtility.IsZeroN(inNMM.ForceFx))
            {
                actingForcesStress += -inNMM.ForceFx / solverGeometry.Area;
            }
            if (actingForcesStress >= 0)
            {
                forcesToCrackigForces = actingForcesStress / crackingStress;
            }
            return(forcesToCrackigForces);
        }