/// <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); }