private void Calc_μSd()
        {
            var lim = TabeleEC2.KofZaProracunPravougaonogPresekaEC.GetLimitKofZaProracunPravougaonogPresekaEC(beton);

            if (TipDim == TipDimenzionisanja.Vezano)
            {
                μSd = TabeleEC2.KofZaProracunPravougaonogPresekaEC.GetμSd(Msds, b, d, beton.fcd / 10);
                Kof = TabeleEC2.KofZaProracunPravougaonogPresekaEC.Get_Kof_From_μ(μSd);
                Steper.AddStep($"μSd=Msd[KNcm] / (b[cm] * d[cm]^2 * fcd[KNcm])= {Math.Round(Kof.μRd,3)}", "Bezdimenziona vrednost Momenta savijanja");
            }
            else
            {
                Steper.AddStep($"μSd= {Math.Round(Kof.μRd,3)}", "Bezdimenziona vrednost Momenta savijanja odabrana za slobodno armiranje");
            }


            if (μSd >= lim.μRd)
            {
                Steper.AddStep($"μSd ≥ μlim= {Math.Round(lim.μRd,3)}; => μSd={Math.Round(lim.μRd,3)}", "Dvojno armiranje");
                Kof = lim;
            }
            else
            {
                Steper.AddStep($"μSd < μlim= {Math.Round(lim.μRd,3)}; => μSd={Math.Round(Kof.μRd,3)}", "Dvojno armiranje");
            }

            Steper.AddStep($"{nameof(Kof.εc)}= {Math.Round(Kof.εc,2)}[‰]; {nameof(Kof.εs1)}= {Math.Round(Kof.εs1,3)}[‰]; {nameof(Kof.ω)}= {Math.Round(Kof.ω,3)}; {nameof(Kof.ζ)}= {Math.Round(Kof.ζ,3)}", "Diletacija po betonu i armaturi i mehanicki kofeficijen armiranja");
        }
        private void Calc_As()
        {
            As1_pot = Mrd_limit * 100 / (Kof.ζ * d * armatura.fyd) - (Nsd / armatura.fyd) + (Msds * 100 - Mrd_limit * 100) / ((d - d2) * armatura.fyd);
            As2_pot = (Msds * 100 - Mrd_limit * 100) / ((d - d2) * armatura.fyd);

            Steper.AddStep($"As1=Mrd_limit/(ζ*d*fyd)-Nsd/fyd+(Mrd_limit-Msds)/((d-d2)*fyd)= {Math.Round(Mrd_limit * 100,2)} / ({Math.Round(Kof.ζ,3)} * {d} * {Math.Round(armatura.fyd,2)}) - ({Math.Round(Nsd,2)} / {Math.Round(armatura.fyd,2)}) + ({Math.Round(Msds * 100,2)} - {Math.Round(Mrd_limit * 100,2)}) / (({d} - {d2}) * {Math.Round(armatura.fyd,2)})= {Math.Round(As1_pot,2)}[cm2];",
                           "Potrebna armatura u zoni zatezanja");
            Steper.AddStep($"As2=(Msds - Mrd_limit) / ((d - d2) * fyd)= ({Math.Round(Msds * 100,2)} - {Math.Round(Mrd_limit * 100,2)}) / (({d} - {d2}) * {Math.Round(armatura.fyd,2)})= {Math.Round(As2_pot,2)} [cm2]",
                           "Potrebna armatura u zoni pritiska");
        }
 private void Calc_MsdNsd()
 {
     if (Msd != 0)
     {
         return;
     }
     Msd = 1.35 * Mg + 1.5 * Mq;
     Steper.AddStep($"Msd=1.35*Mg[KNm]+1.5*Mq[KNm]={Math.Round(Msd,2)}[KNm];", "Racunski momenat savijanja");
     Nsd = 1.35 * Ng + 1.5 * Nq;
     Steper.AddStep($"Nsd=1.35*Ng[KNm]+1.5*Nq[KNm]={Math.Round(Nsd,2)}[KNm];", "Racunska normalna sila");
 }
        private void Calc_As_min()
        {
            As1_pot = 0.26 * beton.fctm / armatura.fyd * d * b;
            if (As1_pot < beton.ρ * b * d)
            {
                As1_pot = beton.ρ * b * d;
            }

            Steper.AddStep($"As1=Mrd_limit/(ζ*d*fcd)-Nsd/fyd+(Mrd_limit-Msds)/((d-d2)*fyd)= {Mrd_limit * 100} / ({Kof.ζ} * {d} * {armatura.fyd}) - ({Nsd} / {armatura.fyd}) + ({Msds * 100} - {Mrd_limit * 100}) / (({d} - {d2}) * {armatura.fyd})= {As1_pot}[cm2];",
                           "Potrebna armatura u zoni zatezanja");
            Steper.AddStep($"As2 = (Msds - Mrd_limit) / ((d - d2) * fyd)= ({Msds * 100} - {Mrd_limit * 100}) / (({d} - {d2}) * {armatura.fyd})",
                           "Potrebna armatura u zoni pritiska");
        }
 private void As_validation()
 {
     ρ = (Math.Round(As1_pot, 2) + Math.Round(As2_pot, 2)) / b / h;
     Steper.AddStep($"ρ = (As1 + As2) / (b * h)= ({Math.Round(As1_pot,2)} + {Math.Round(As2_pot,2)}) / {b} / {h}= {ρ}; ρ_max= {Math.Round(ρ_max,2)}",
                    "Provera maksimalnog procenta armiranja");
 }
 private void Calc_Mrd_lim()
 {
     Mrd_limit = (Kof.μRd * b * Math.Pow(d, 2) * beton.fcd / 10) / 100;
     Steper.AddStep($"Mrd_limit=μSd*b*d^2+fcd= {Math.Round(Kof.μRd,3)}*{b}*{d}^2*{Math.Round(beton.fcd / 10,2)}= {Math.Round(Mrd_limit,2) *100}[KNcm]= {Math.Round(Mrd_limit,2)}[KNm];",
                    "Maksimalni moment savijanja koji jednostruko armirani presek moze da prihvati");
 }
 private void Calc_Msds()
 {
     Msds = Msd + Nsd * (h / 100 / 2 - d1 / 100);
     Steper.AddStep($"Msds=Msd[KNm]+Nsd[KN]*(h[m]/2-d1[m])={Math.Round(Msd,2)}+{Math.Round(Nsd,2)}*({h / 100 / 2}-{d1 / 100})[KNm]= {Math.Round(Msds,2)}[KNm];", "Racunski momenat savijanja u odnosu na teziste zategnute armature");
 }
 private void Calc_f()
 {
     Steper.AddStep($"fcd=0.85*fck/1.5=0.85*{beton.fck/10}[KNcm]/1.5= {Math.Round((beton.fcd/10),2)}[KNcm]", "Racunska cvrstoca pri pritisku betona");
     Steper.AddStep($"fyd=fyk/1.15={Math.Round(armatura.fyk,2)}[KNcm]/1.15= {Math.Round(armatura.fyd,2)}[KNcm]", "Racunska vrednost granice razvlacenja armature");
 }