Пример #1
0
        /// <summary>
        /// Case 14: Calculation of capacity state in symmetric section for bidirectional bending with axial force
        /// </summary>
        public void Case14()
        {
            // geometry definition
            Geometry geometry = new Geometry();

            geometry.Add(0.0, 0.0);
            geometry.Add(0.3, 0.0);
            geometry.Add(0.3, 0.45);
            geometry.Add(0.0, 0.45);
            // rebars definition
            List <Rebar> rebars = new List <Rebar>();

            rebars.Add(new Rebar(0.15, 0.04, 0.025977 * 0.025977 * Math.PI / 4.0));
            // concrete parameters
            Concrete concrete = new Concrete();

            concrete.SetStrainStressModelRectangular(21.36e6, 0.0035, 35e9, 0.8);
            // steel parameters
            Steel steel = new Steel();

            steel.SetModelIdealElastoPlastic(310e6, 0.01, 200e9);
            // solver creation and parameterization
            RCSolver solver = RCSolver.CreateNewSolver(geometry);

            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistance(200E3, -96E3, -24E3);
            // result for rebars
            SetOfForces forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            SetOfForces forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Point2D     Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            double      Acc            = solver.GetConcreteStressArea();
            // result for RC section
            SetOfForces forces = solver.GetInternalForces(ResultType.Section);
            double      angle  = solver.GetNeutralAxisAngle();
            double      dist   = solver.GetNeutralAxisDistance();

            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 14: Calculation of capacity state in symmetric section for bidirectional bending with axial force ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            sb.AppendLine(FormatOutput("dist", dist, 6));
            sb.AppendLine(FormatOutput("angle", angle, 6));
        }
Пример #2
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);
        }
Пример #3
0
        /// <summary>
        /// Calculates the safety factor.
        /// </summary>
        /// <param name="inNMM">The acting forces.</param>
        /// <returns>Safety factor. Resistance forces to acting forces ratio.</returns>
        public double SafetyFactor(InternalForcesContainer inNMM)
        {
            double safetyFactor = -1.0;

            solver.SolveResistance(inNMM.ForceFx, -inNMM.MomentMy, inNMM.MomentMz);
            SetOfForces solveNMM = solver.GetInternalForces(Autodesk.CodeChecking.Concrete.ResultType.Section);

            if (Math.Abs(inNMM.ForceFx) > Math.Abs(inNMM.MomentMy))
            {
                if (Math.Abs(inNMM.ForceFx) > Math.Abs(inNMM.MomentMz))
                {
                    safetyFactor = solveNMM.AxialForce / inNMM.ForceFx;
                }
                else
                {
                    safetyFactor = solveNMM.MomentY / inNMM.MomentMz;
                }
            }
            else if (Math.Abs(inNMM.MomentMy) > Math.Abs(inNMM.MomentMz))
            {
                safetyFactor = solveNMM.MomentX / -inNMM.MomentMy;
            }
            else
            {
                safetyFactor = solveNMM.MomentY / inNMM.MomentMz;
            }
            return(safetyFactor);
        }
        /// <structural_toolkit_2015>

        /// <summary>
        /// Calculate the moment of inertia for cracking section.
        /// </summary>
        /// <param name="inNMM">The acting forces.</param>
        /// <returns>Returns moment of inertia for cracking section.</returns>
        public double InertiaOfCrackingSection(InternalForcesContainer inNMM)
        {
            double momentOfInertiaCrackingConcreteSection = 0.0;

            SafetyFactor(inNMM);
            SetOfForces solverNMM       = solver.GetInternalForces(Autodesk.CodeChecking.Concrete.ResultType.Section);
            double      neutralAxisDist = solver.GetNeutralAxisDistance();
            double      stressArea      = solver.GetConcreteStressArea();
            double      comprHeight     = 0.5 * totalHeight + neutralAxisDist;
            Steel       steel           = solver.GetSteel();

            Autodesk.CodeChecking.Concrete.Concrete concrete = solver.GetConcrete();
            double n = steel.ModulusOfElasticity / concrete.ModulusOfElasticity;

            switch (crossSectionType)
            {
            case SectionShapeType.RectangularBar:
            {
                momentOfInertiaCrackingConcreteSection = comprHeight * comprHeight * stressArea / 3.0; // bh^3/12 + b*h*(0.5*h)^2, b*h=stressArea
            }
            break;

            default:
                throw new Exception("InertiaOfCrackingSection. Unhandled cross section type. Only rectangular cross-section can be used on this path. 3th party implementation is necessary.");
            }
            foreach (Rebar bar in solver.GetRebars())
            {
                momentOfInertiaCrackingConcreteSection += n * bar.Area * Math.Pow((bar.Y + neutralAxisDist), 2);
            }
            return(momentOfInertiaCrackingConcreteSection);
        }
Пример #5
0
        /// <summary>
        /// Case 9: Calculation of internal forces in symmetric section for given state of strain with inclined neutral axis
        /// </summary>
        public void Case9()
        {
            // geometry definition
            Geometry geometry = new Geometry();

            geometry.Add(0.0, 0.0);
            geometry.Add(0.0, 0.6);
            geometry.Add(0.3, 0.6);
            geometry.Add(0.3, 0.0);
            // rebars definition
            List <Rebar> rebars    = new List <Rebar>();
            double       rebarArea = 0.012 * 0.012 * Math.PI / 4.0;

            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.05, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.05, rebarArea));
            // concrete parameters
            Concrete concrete = new Concrete();

            concrete.SetStrainStressModelBiLinear(25e6, 0.003, 28e9, 0.002);
            // steel parameters
            Steel steel = new Steel();

            steel.SetModelIdealElastoPlastic(550e6, 0.1, 200e9);
            // solver creation and parameterization
            RCSolver solver = RCSolver.CreateNewSolver(geometry);

            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveForces(ResultType.Section, 0.0025, -0.00383423, 0.34906585);
            // result for rebars
            SetOfForces forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            SetOfForces forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Point2D     Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            double      Acc            = solver.GetConcreteStressArea();
            // result for RC section
            SetOfForces forces = solver.GetInternalForces(ResultType.Section);

            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 9: Calculation of internal forces in symmetric section for given state of strain with inclined neutral axis ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
        }
Пример #6
0
        /// <summary>
        /// Calculate the moment of inertia for cracking section.
        /// </summary>
        /// <param name="inNMM">The acting forces.</param>
        /// <returns>Returns moment of inertia for cracking section.</returns>
        public double InertiaOfCrackingSection(InternalForcesContainer inNMM)
        {
            double momentOfInertiaCrackingConcreteSection = 0.0;

            solver.SolveResistance(inNMM.ForceFx, inNMM.MomentMy, 0.0);
            SetOfForces solverNMM        = solver.GetInternalForces(Autodesk.CodeChecking.Concrete.ResultType.Section);
            double      neutralAxisDist  = solver.GetNeutralAxisDistance();
            double      centerOfInertiaY = solverGeometry.CenterOfInertia.Y;
            double      stressArea       = solver.GetConcreteStressArea();
            double      comprHeight      = -neutralAxisDist;
            Steel       steel            = solver.GetSteel();

            Autodesk.CodeChecking.Concrete.Concrete concrete = solver.GetConcrete();
            double bottomWidth = solverGeometry.Point(1).X - solverGeometry.Point(0).X;
            double n           = steel.ModulusOfElasticity / concrete.ModulusOfElasticity;

            momentOfInertiaCrackingConcreteSection  = comprHeight * comprHeight * comprHeight * bottomWidth / 3.0; // bh^3/12 + b*h*(0.5*h)^2
            momentOfInertiaCrackingConcreteSection += n * (solver.GetMomentOfInertiaX(Autodesk.CodeChecking.Concrete.ResultType.Rebars) + Math.Abs(neutralAxisDist) * solver.GetArea(Autodesk.CodeChecking.Concrete.ResultType.Rebars));
            switch (crossSectionType)
            {
            case SectionShapeType.RectangularBar:
                break;

            case SectionShapeType.T:
            {
                bool   bottomMoreCompression = inNMM.MomentMy >= 0.0;
                double TotalWidth            = solverGeometry.Point(4).X - solverGeometry.Point(5).X;
                if (bottomMoreCompression)
                {
                    double WithoutSlabHeight = solverGeometry.Point(2).Y - solverGeometry.Point(1).Y;
                    if (comprHeight > WithoutSlabHeight)
                    {
                        double partT = (comprHeight - WithoutSlabHeight);
                        momentOfInertiaCrackingConcreteSection += Math.Pow(comprHeight - 0.5 * partT, 2) * (TotalWidth - bottomWidth);
                        momentOfInertiaCrackingConcreteSection += (TotalWidth - bottomWidth) * partT * partT * partT / 12.0;
                    }
                }
                else
                {
                    double SlabHeight = solverGeometry.Point(4).Y - solverGeometry.Point(3).Y;
                    SlabHeight = Math.Min(SlabHeight, comprHeight);
                    momentOfInertiaCrackingConcreteSection += Math.Pow(comprHeight - 0.5 * SlabHeight, 2) * (TotalWidth - bottomWidth);
                    momentOfInertiaCrackingConcreteSection += (TotalWidth - bottomWidth) * SlabHeight * SlabHeight * SlabHeight / 12.0;
                }
            }
            break;

            default:
                throw new Exception("InertiaOfCrackingSection. Unhandled cross section type. Only R and T cross-sections can be used on this path.");
            }
            return(momentOfInertiaCrackingConcreteSection);
        }
Пример #7
0
        /// <summary>
        /// Case 4: Calculation of internal forces for given state of strain in the section and bilinear model of concrete
        /// Case 4a, Case 4b and Case 4c - common geometry, concrete and steel parameters different rebars and calculation
        /// </summary>
        public void Case4()
        {
            // Case 4a:
            // geometry definition
            Geometry geometry = new Geometry();

            geometry.Add(0.0, 0.0);
            geometry.Add(0.0, 0.6);
            geometry.Add(0.3, 0.6);
            geometry.Add(0.3, 0.0);
            // rebars definition
            List <Rebar> rebars    = new List <Rebar>();
            double       rebarArea = 0.016 * 0.016 * Math.PI / 4.0;

            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.05, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.05, rebarArea));
            // concrete parameters
            Concrete concrete = new Concrete();

            concrete.SetStrainStressModelBiLinear(30e6, 0.0035, 32e9, 0.002);
            // steel parameters
            Steel steel = new Steel();

            steel.SetModelIdealElastoPlastic(400e6, 0.1, 205e9);
            // solver creation and parameterization
            RCSolver solver = RCSolver.CreateNewSolver(geometry);

            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveForces(ResultType.Section, 0.0035, 0.0005);
            // result for rebars
            SetOfForces forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            SetOfForces forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Point2D     Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            double      Acc            = solver.GetConcreteStressArea();
            // result for RC section
            SetOfForces forces = solver.GetInternalForces(ResultType.Section);

            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 4a: Calculation of internal forces for given state of strain in the section and bilinear model of concrete ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            output.Text = output.Text + sb.AppendLine();
            //
            // Case 4b
            rebars.Clear();
            rebarArea = 0.032 * 0.032 * Math.PI / 4.0;
            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.05, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.05, rebarArea));
            solver.SetRebars(rebars);
            //calulation
            solver.SolveForces(ResultType.Section, 0.0035, -0.02936558);
            // result for rebars
            forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            Acc            = solver.GetConcreteStressArea();
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 4b: Calculation of internal forces for given state of strain in the section and bilinear model of concrete ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            output.Text = output.Text + sb.AppendLine();
            //
            // Case 4c
            rebars.Clear();
            rebarArea = 0.032 * 0.032 * Math.PI / 4.0;
            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.25, 0.05, rebarArea));
            solver.SetRebars(rebars);
            //calulation
            solver.SolveForces(ResultType.Section, 0.0015, -0.002);
            // result for rebars
            forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            Acc            = solver.GetConcreteStressArea();
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 4c: Calculation of internal forces for given state of strain in the section and bilinear model of concrete ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            output.Text = output.Text + sb.AppendLine();
        }
Пример #8
0
        /// <summary>
        /// Case 16: Calculation of capacity state in symmetric section for fixed axial force
        /// </summary>
        public void Case16()
        {
            // Case 16a
            // geometry definition
            Geometry geometry = new Geometry();

            geometry.Add(0.0, 0.0);
            geometry.Add(0.0, 0.6);
            geometry.Add(0.3, 0.6);
            geometry.Add(0.3, 0.0);
            // rebars definition
            List <Rebar> rebars    = new List <Rebar>();
            double       rebarArea = 0.040 * 0.040 * Math.PI / 4.0;

            rebars.Add(new Rebar(0.03, 0.03, rebarArea));
            rebars.Add(new Rebar(0.03, 0.57, rebarArea));
            rebars.Add(new Rebar(0.27, 0.57, rebarArea));
            rebars.Add(new Rebar(0.27, 0.03, rebarArea));
            // concrete parameters
            Concrete concrete = new Concrete();

            concrete.SetStrainStressModelRectangular(17.12e6, 0.0035, 32e9, 0.8);
            // steel parameters
            Steel steel = new Steel();

            steel.SetModelIdealElastoPlastic(310e6, 0.025, 200e9);
            // solver creation and parameterization
            RCSolver solver = RCSolver.CreateNewSolver(geometry);

            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistanceM(678E3, Axis.x, false);
            // result for rebars
            SetOfForces forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            SetOfForces forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Point2D     Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            double      Acc            = solver.GetConcreteStressArea();
            // result for RC section
            SetOfForces forces = solver.GetInternalForces(ResultType.Section);
            double      angle  = solver.GetNeutralAxisAngle();
            double      dist   = solver.GetNeutralAxisDistance();

            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 16a: Calculation of capacity state in symmetric section for fixed axial force");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            sb.AppendLine(FormatOutput("dist", dist, 6));
            sb.AppendLine(FormatOutput("angle", angle, 6));

            // Case 16b
            // geometry definition
            geometry = new Geometry();
            geometry.Add(0.0, 0.0);
            geometry.Add(0.0, 0.3);
            geometry.Add(0.6, 0.3);
            geometry.Add(0.6, 0.0);
            // rebars definition
            rebars.Clear();
            rebarArea = 0.036 * 0.036 * Math.PI / 4.0;
            rebars.Add(new Rebar(0.09, 0.06, rebarArea));
            rebars.Add(new Rebar(0.09, 0.12, rebarArea));
            rebars.Add(new Rebar(0.09, 0.18, rebarArea));
            rebars.Add(new Rebar(0.09, 0.24, rebarArea));
            rebars.Add(new Rebar(0.51, 0.06, rebarArea));
            rebars.Add(new Rebar(0.51, 0.12, rebarArea));
            rebars.Add(new Rebar(0.51, 0.18, rebarArea));
            rebars.Add(new Rebar(0.51, 0.24, rebarArea));
            // steel parameters
            steel = new Steel();
            steel.DesignStrength      = 420e6;
            steel.HardeningFactor     = 1.0;
            steel.ModulusOfElasticity = 200e9;
            steel.StrainUltimateLimit = 0.025;
            // solver creation and parameterization
            solver = RCSolver.CreateNewSolver(geometry);
            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistanceM(1700E3, Axis.y, true);
            // result for rebars
            forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            Acc            = solver.GetConcreteStressArea();
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            angle  = solver.GetNeutralAxisAngle();
            dist   = solver.GetNeutralAxisDistance();
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 16b: Calculation of capacity state in symmetric section for fixed axial force");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            sb.AppendLine(FormatOutput("dist", dist, 6));
            sb.AppendLine(FormatOutput("angle", angle, 6));
        }
Пример #9
0
        /// <summary>
        /// Case 10: Calculation of capacity state in symmetric section for bending moment Mx
        /// </summary>
        public void Case10()
        {
            // Case 10a
            // geometry definition
            Geometry geometry = new Geometry();

            geometry.Add(0.0, 0.0);
            geometry.Add(0.0, 0.6);
            geometry.Add(0.3, 0.6);
            geometry.Add(0.3, 0.0);
            // rebars definition
            List <Rebar> rebars    = new List <Rebar>();
            double       rebarArea = 0.020 * 0.020 * Math.PI / 4.0;

            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.25, 0.05, rebarArea));
            // concrete parameters
            Concrete concrete = new Concrete();

            concrete.SetStrainStressModelRectangular(20e6, 0.0035, 30e9, 0.9);
            // steel parameters
            Steel steel = new Steel();

            steel.SetModelIdealElastoPlastic(500e6, 0.075, 200e9);
            // solver creation and parameterization
            RCSolver solver = RCSolver.CreateNewSolver(geometry);

            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistanceM(0, Axis.x, false);
            // result for rebars
            SetOfForces forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            SetOfForces forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Point2D     Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            double      Acc            = solver.GetConcreteStressArea();
            // result for RC section
            SetOfForces forces = solver.GetInternalForces(ResultType.Section);
            double      angle  = solver.GetNeutralAxisAngle();
            double      dist   = solver.GetNeutralAxisDistance();

            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 10a: Calculation of internal forces in symmetric section for given state of strain with inclined neutral axis");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            sb.AppendLine(FormatOutput("dist", dist, 6));
            sb.AppendLine(FormatOutput("angle", angle, 6));
            // Case 10b
            // rebars definition
            rebarArea = 0.032 * 0.032 * Math.PI / 4.0;
            rebars.Clear();
            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.05, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.05, rebarArea));
            // concrete parameters
            concrete.SetStrainStressModelParabolicRectangular(30e6, 0.0035, 32e9, 0.0020);
            // steel parameters
            steel.DesignStrength      = 400e6;
            steel.StrainUltimateLimit = 0.1;
            // solver parameterization
            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistanceM(0, Axis.x, false);
            // result for rebars
            forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            Acc            = solver.GetConcreteStressArea();
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 10b: Calculation of internal forces in symmetric section for given state of strain with inclined neutral axis ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
        }
Пример #10
0
        /// <summary>
        /// Case 12: Calculation of capacity state in symmetric section for bending moment Mx with axial force
        /// </summary>
        public void Case12()
        {
            // Case 12a
            // geometry definition
            Geometry geometry = new Geometry();

            geometry.Add(0.0, 0.0);
            geometry.Add(0.3, 0.0);
            geometry.Add(0.3, 0.6);
            geometry.Add(0.0, 0.6);
            // rebars definition
            List <Rebar> rebars    = new List <Rebar>();
            double       rebarArea = 0.012 * 0.012 * Math.PI / 4.0;

            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.05, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.05, rebarArea));
            // concrete parameters
            Concrete concrete = new Concrete();

            concrete.SetStrainStressModelLinear(20e6, 0.0035, 30e9);
            // steel parameters
            Steel steel = new Steel();

            steel.SetModelIdealElastoPlastic(500e6, 0.075, 200e9);
            // solver creation and parameterization
            RCSolver solver = RCSolver.CreateNewSolver(geometry);

            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistance(43979.98E3, -3465.40E3, 0);
            // result for rebars
            SetOfForces forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            SetOfForces forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Point2D     Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            double      Acc            = solver.GetConcreteStressArea();
            // result for RC section
            SetOfForces forces = solver.GetInternalForces(ResultType.Section);
            double      angle  = solver.GetNeutralAxisAngle();
            double      dist   = solver.GetNeutralAxisDistance();

            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 12a:  Calculation of capacity state in symmetric section for bending moment Mx with axial force ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            sb.AppendLine(FormatOutput("dist", dist, 6));
            sb.AppendLine(FormatOutput("angle", angle, 6));

            // Case 12b
            // rebars definition
            rebars.Clear();
            rebarArea = 0.016 * 0.016 * Math.PI / 4.0;
            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.05, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.55, rebarArea));
            rebars.Add(new Rebar(0.25, 0.05, rebarArea));
            // concrete parameters
            concrete.SetStrainStressModelBiLinear(30e6, 0.0035, 32e9, 0.0020);
            // steel parameters
            steel.DesignStrength      = 400e6;
            steel.HardeningFactor     = 1.0;
            steel.ModulusOfElasticity = 205e9;
            steel.StrainUltimateLimit = 0.1;
            // solver parameterization
            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistance(114.8397E3, -5.634275E3, 0);
            // result for rebars
            forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            Acc            = solver.GetConcreteStressArea();
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 12b:Calculation of capacity state in symmetric section for bending moment Mx with axial force");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));

            // Case 12c
            // concrete parameters
            concrete.SetStrainStressModelPowerRectangular(30e6, 0.0035, 32e9, 0.002, 1.4);
            // steel parameters
            steel.DesignStrength      = 400e6;
            steel.HardeningFactor     = 1.0;
            steel.ModulusOfElasticity = 200e9;
            steel.StrainUltimateLimit = 0.1;
            // solver parameterization
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistance(4.41023E3, -0.1662045455E3, 0);
            // result for rebars
            forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            Acc            = solver.GetConcreteStressArea();
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 12c: Calculation of capacity state in symmetric section for bending moment Mx with axial force ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
        }
Пример #11
0
        /// <summary>
        /// Case 7 Calculation of internal forces for given state of strain in the section and inclined branch model of steel
        /// </summary>
        public void Case7()
        {
            // geometry definition
            Geometry geometry = new Geometry();

            geometry.Add(0.0, 0.0);
            geometry.Add(0.0, 0.6);
            geometry.Add(0.3, 0.6);
            geometry.Add(0.3, 0.0);
            // rebars definition
            List <Rebar> rebars = new List <Rebar>();

            rebars.Add(new Rebar(0.05, 0.05, 0.032 * 0.032 * Math.PI / 4.0));
            rebars.Add(new Rebar(0.15, 0.05, 0.032 * 0.032 * Math.PI / 4.0));
            rebars.Add(new Rebar(0.25, 0.05, 0.032 * 0.032 * Math.PI / 4.0));
            rebars.Add(new Rebar(0.05, 0.15, 0.020 * 0.020 * Math.PI / 4.0));
            rebars.Add(new Rebar(0.25, 0.15, 0.020 * 0.020 * Math.PI / 4.0));
            rebars.Add(new Rebar(0.05, 0.55, 0.012 * 0.012 * Math.PI / 4.0));
            rebars.Add(new Rebar(0.25, 0.55, 0.012 * 0.012 * Math.PI / 4.0));
            // concrete parameters
            Concrete concrete = new Concrete();

            concrete.SetStrainStressModelLinear(20e6, 0.0035, 30e9);
            // steel parameters
            Steel steel = new Steel();

            steel.SetModelWithHardening(500e6, 0.075, 200e9, 1.05);
            // solver creation and parameterization
            RCSolver solver = RCSolver.CreateNewSolver(geometry);

            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveForces(ResultType.Section, 0.0035, -0.0070);
            // result for rebars
            SetOfForces forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            SetOfForces forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Point2D     Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            double      Acc            = solver.GetConcreteStressArea();
            // result for RC section
            SetOfForces forces = solver.GetInternalForces(ResultType.Section);

            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 7 Calculation of internal forces for given state of strain in the section and inclined branch model of steel ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
        }
Пример #12
0
        /// <summary>
        /// Case 15: Calculation of capacity state in asymmetric section for bidirectional bending with axial force
        /// </summary>
        public void Case15()
        {
            // Case 15a
            // geometry definition
            Geometry geometry = new Geometry();

            geometry.Add(0.00, 0.00);
            geometry.Add(0.00, 0.60);
            geometry.Add(0.25, 0.60);
            geometry.Add(0.25, 0.25);
            geometry.Add(0.70, 0.25);
            geometry.Add(0.70, 0.00);
            // rebars definition
            List <Rebar> rebars    = new List <Rebar>();
            double       rebarArea = 0.020 * 0.020 * Math.PI / 4.0;

            rebars.Add(new Rebar(0.05, 0.05, rebarArea));
            rebars.Add(new Rebar(0.05, 0.55, rebarArea));
            rebars.Add(new Rebar(0.20, 0.55, rebarArea));
            rebars.Add(new Rebar(0.20, 0.05, rebarArea));
            rebars.Add(new Rebar(0.65, 0.05, rebarArea));
            rebars.Add(new Rebar(0.65, 0.20, rebarArea));
            rebars.Add(new Rebar(0.05, 0.20, rebarArea));
            // concrete parameters
            Concrete concrete = new Concrete();

            concrete.SetStrainStressModelRectangular(20e6, 0.0035, 35e9, 0.8);
            // steel parameters
            Steel steel = new Steel();

            steel.SetModelIdealElastoPlastic(310e6, 0.075, 200e9);
            // solver creation and parameterization
            RCSolver solver = RCSolver.CreateNewSolver(geometry);

            solver.SetRebars(rebars);
            solver.SetConcrete(concrete);
            solver.SetSteel(steel);
            //calulation
            solver.SolveResistance(72.4471E3, -28.9825E3, 2.5743E3);
            // result for rebars
            SetOfForces forcesRebar = solver.GetInternalForces(ResultType.Rebars);
            // result for concrete
            SetOfForces forcesConcrete = solver.GetInternalForces(ResultType.Concrete);
            Point2D     Gcc            = solver.GetStressGravityCenter(ResultType.Concrete);
            double      Acc            = solver.GetConcreteStressArea();
            // result for RC section
            SetOfForces forces = solver.GetInternalForces(ResultType.Section);
            double      angle  = solver.GetNeutralAxisAngle();
            double      dist   = solver.GetNeutralAxisDistance();

            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 15a: Calculation of capacity state in asymmetric section for bidirectional bending with axial force ");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("Ns", forcesRebar.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxs", forcesRebar.MomentX, 6));
            sb.AppendLine(FormatOutput("Mys", forcesRebar.MomentY, 6));
            sb.AppendLine(FormatOutput("Ac", Acc, 6));
            sb.AppendLine(FormatOutput("Gcx", Gcc.X, 6));
            sb.AppendLine(FormatOutput("Gcy", Gcc.Y, 6));
            sb.AppendLine(FormatOutput("Nc", forcesConcrete.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mxc", forcesConcrete.MomentX, 6));
            sb.AppendLine(FormatOutput("Myc", forcesConcrete.MomentY, 6));
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
            sb.AppendLine(FormatOutput("dist", dist, 6));
            sb.AppendLine(FormatOutput("angle", angle, 6));


            // Case 15b
            // concrete parameters (rectangular)
            concrete.SetStrainStressModelRectangular(20e6, 0.0035, 35e9, 0.8);
            // solver parameterization
            solver.SetConcrete(concrete);
            //calulation
            solver.SolveResistance(72.4471E3, -28.9825E3, 2.5743E3);
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 15b: Calculation of capacity state in asymmetric section for bidirectional bending with axial force (rectangular)");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));

            // concrete parameters(linear)
            concrete.SetStrainStressModelLinear(25e6, 0.0035, 32e9);
            // solver parameterization
            solver.SetConcrete(concrete);
            //calulation
            solver.SolveResistance(72.4471E3, -28.9825E3, 2.5743E3);
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 15b: Calculation of capacity state in asymmetric section for bidirectional bending with axial force (linear)");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));

            // concrete parameters (bilinear)
            concrete.SetStrainStressModelBiLinear(25e6, 0.0035, 32e9, 0.0020);
            // solver parameterization
            solver.SetConcrete(concrete);
            //calulation
            solver.SolveResistance(72.4471E3, -28.9825E3, 2.5743E3);
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 15b: Calculation of capacity state in asymmetric section for bidirectional bending with axial force (bilinear)");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));

            // concrete parameters (parabolic-rectangular)
            concrete.SetStrainStressModelParabolicRectangular(25e6, 0.0035, 32e9, 0.0020);
            // solver parameterization
            solver.SetConcrete(concrete);
            //calulation
            solver.SolveResistance(72.4471E3, -28.9825E3, 2.5743E3);
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 15b: Calculation of capacity state in asymmetric section for bidirectional bending with axial force (parabolic-rectangular)");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));

            // concrete parameters (power-rectangular)
            concrete.SetStrainStressModelPowerRectangular(25e6, 0.0035, 32e9, 0.002, 1.5);
            // solver parameterization
            solver.SetConcrete(concrete);
            //calulation
            solver.SolveResistance(72.4471E3, -28.9825E3, 2.5743E3);
            // result for RC section
            forces = solver.GetInternalForces(ResultType.Section);
            // result presentation
            sb.AppendLine();
            sb.AppendLine(decoration);
            sb.AppendLine("Case 15b: Calculation of capacity state in asymmetric section for bidirectional bending with axial force (parabolic-rectangular)");
            sb.AppendLine(decoration);
            sb.AppendLine(FormatOutput("N", forces.AxialForce, 6));
            sb.AppendLine(FormatOutput("Mx", forces.MomentX, 6));
            sb.AppendLine(FormatOutput("My", forces.MomentY, 6));
        }