コード例 #1
0
        private double CalNY(double c, int div = 1000)
        {
            double dy  = H / (div - 1);
            double phi = -ConcProperty.Epsu / c;
            double oc  = H * 0.5 - c;
            double NC  = 0;
            double NS  = 0.0;

            for (int i = 0; i < div; i++)
            {
                double y0    = -0.5 * H + dy * i;
                double l0    = CutLengY(y0);
                double eps   = phi * (y0 - oc);
                double Nconc = ConcProperty.GetSigma(eps) * dy * l0;
                NC += Nconc;
            }

            foreach (SingleRebar item in Rebars)
            {
                double eps    = phi * (item.Location.Y - oc);
                double Nsteel = RebarProperty.GetSigma(eps);
                NS += Nsteel;
            }
            return(NS + NC);
        }
コード例 #2
0
        private double CalMY(double c, int div = 1000)
        {
            double dy  = H / (div - 1);
            double phi = -ConcProperty.Epsu / c;
            double oc  = H * 0.5 - c;
            double MC  = 0;
            double MS  = 0.0;

            for (int i = 0; i < div; i++)
            {
                double y0    = -0.5 * H + dy * i;
                double l0    = CutLengY(y0);
                double eps   = phi * (y0 - oc);
                double Nconc = ConcProperty.GetSigma(eps) * dy * l0;
                MC += Nconc * (y0 - PlasticCenter.Y);
            }

            foreach (SingleRebar item in Rebars)
            {
                double eps    = phi * (item.Location.Y - oc);
                double Nsteel = RebarProperty.GetSigma(eps);
                MS += Nsteel * (item.Location.Y - PlasticCenter.Y);
            }
            return(MS + MC);
        }
コード例 #3
0
        private double CalNX(double c, int div = 1000)
        {
            double dx  = B / (div - 1);
            double phi = -ConcProperty.Epsu / c;
            double oc  = 0.5 * B - c;
            double NC  = 0;
            double NS  = 0.0;

            for (int i = 0; i < div; i++)
            {
                double x0    = -0.5 * B + dx * i;
                double l0    = CutLengX(x0);
                double eps   = phi * (x0 - oc);
                double Nconc = ConcProperty.GetSigma(eps) * dx * l0;
                NC += Nconc;
            }

            foreach (SingleRebar item in Rebars)
            {
                double eps    = phi * (item.Location.X - oc);
                double Nsteel = RebarProperty.GetSigma(eps);
                NS += Nsteel;
            }
            return(NS + NC);
        }
コード例 #4
0
        private double CalMX(double c, int div = 1000)
        {
            double dx  = B / (div - 1);
            double phi = -ConcProperty.Epsu / c;
            double oc  = B * 0.5 - c;
            double MC  = 0;
            double MS  = 0.0;

            for (int i = 0; i < div; i++)
            {
                double x0    = -0.5 * B + dx * i;
                double l0    = CutLengX(x0);
                double eps   = phi * (x0 - oc);
                double Nconc = ConcProperty.GetSigma(eps) * dx * l0;
                MC += Nconc * (x0 - PlasticCenter.Y);
            }

            foreach (SingleRebar item in Rebars)
            {
                double eps    = phi * (item.Location.X - oc);
                double Nsteel = RebarProperty.GetSigma(eps);
                MS += Nsteel * (item.Location.X - PlasticCenter.X);
            }
            return(MS + MC);
        }