public ForceDataPoint ShearMax()
        {
            ForceDataPoint V;
            double         V1 = Math.Abs(R1);
            double         V2 = Math.Abs(R2);

            if (V1 > V2)
            {
                V = new ForceDataPoint(0.0, V1);
                BeamEntryFactory.CreateEntry("Vx", V.Value, BeamTemplateType.Vmax, 1,
                                             new Dictionary <string, double>()
                {
                    { "R1", V1 },
                    { "X", 0 },
                }, CASE, beam, true);
            }
            else
            {
                V = new ForceDataPoint(L, V2);
                BeamEntryFactory.CreateEntry("Vx", V.Value, BeamTemplateType.Vmax, 2,
                                             new Dictionary <string, double>()
                {
                    { "R2", V2 },
                    { "X", 0 },
                }, CASE, beam, true);
            }
            return(V);
        }
        public double Moment(double X)
        {
            beam.EvaluateX(X);
            double M;
            Dictionary <string, double> valDic = new Dictionary <string, double>()
            {
                { "L", L },
                { "X", X },
                { "P", P }
            };

            if (X <= L / 2.0)
            {
                M = P / 8.0 * (4 * X - L);

                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 1,
                                             valDic, CASE, beam);
            }
            else
            {
                M = P / 8.0 * (3 * L - 4 * X);

                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 2,
                                             valDic, CASE, beam);
            }
            return(M);
        }
        public ForceDataPoint MomentMin()
        {
            if (ReactionStateIsUpdated == false)
            {
                CalculateReactions();
            }
            if (Mmax == null)
            {
                Mmax = CalculateMmax();
            }

            if (w >= 0)
            {
                BeamEntryFactory.CreateEntry("Mx", 0.0, BeamTemplateType.M_zero, 0,
                                             null, CASE, beam, false, true);
                return(new ForceDataPoint(0.0, 0.0));
            }
            else
            {
                BeamEntryFactory.CreateEntry("Mx", Mmax.Value, BeamTemplateType.Mmax, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", Mmax.X },
                    { "w", w },
                    { "a", a },
                    { "b", b },
                    { "c", c },
                }, CASE, beam, false, true);
                return(Mmax);
            }
        }
示例#4
0
        public ForceDataPoint ShearMax()
        {
            double V1 = Math.Abs(CalculateV1());
            double V2 = Math.Abs(CalculateV2());

            if (V1 > V2)
            {
                BeamEntryFactory.CreateEntry("Vx", V1, BeamTemplateType.Vmax, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", L },
                    { "w", w },
                    { "a", a },
                }, CASE, beam, true);
                return(new ForceDataPoint(L, V1));
            }
            else
            {
                BeamEntryFactory.CreateEntry("Vx", V2, BeamTemplateType.Vmax, 2,
                                             new Dictionary <string, double>()
                {
                    { "X", L },
                    { "w", w },
                    { "a", a },
                }, CASE, beam, true);
                return(new ForceDataPoint(L, V2));
            }
        }
示例#5
0
        public double Moment(double X)
        {
            beam.EvaluateX(X);
            if (ReactionsWereCalculated == false)
            {
                CalculateReactions();
            }
            double M;
            double R1 = V1;

            if (X <= a)
            {
                M = R1 * X;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 1,
                                             new Dictionary <string, double>()
                {
                    { "R1", R1 },
                    { "X", X }
                }, CASE, beam);
            }
            else
            {
                M = R1 * X - P * (X - a);
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 1,
                                             new Dictionary <string, double>()
                {
                    { "R1", R1 },
                    { "X", X },
                    { "P", P },
                    { "P", P },
                    { "a", a }
                }, CASE, beam);
            }
            return(M);
        }
        public ForceDataPoint MomentMin()
        {
            double Pabs = Math.Abs(P);
            double M    = -Pabs * L / 8.0;
            double X;

            if (P <= 0.0)
            {
                X = L / 2.0;
            }
            else
            {
                X = 0.0;
            }
            Dictionary <string, double> valDic = new Dictionary <string, double>()
            {
                { "L", L },
                { "X", X },
                { "P", P },
            };

            BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mmax, 1,
                                         valDic, CASE, beam, false, true);

            return(new ForceDataPoint(X, M));
        }
        public ForceDataPoint MomentMax()
        {
            double M;

            if (P > 0.0)
            {
                M = P * a * b / L;

                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mmax, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", a },
                    { "P", P },
                    { "a", a },
                    { "b", b }
                }, CASE, beam, true);
            }
            else
            {
                M = 0.0;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.M_zero, 0,
                                             null, CASE, beam, true);
            }
            return(new ForceDataPoint(a, M));
        }
示例#8
0
        public ForceDataPoint ShearMax()
        {
            double V1A = Math.Abs(V1);
            double V2A = Math.Abs(V2);
            double X;

            Dictionary <string, double> valDic = new Dictionary <string, double>()
            {
                { "L", L },
                { "P", P },
                { "a", a },
                { "b", b }
            };

            if (V1A > V2A)
            {
                valDic.Add("X", a);
                BeamEntryFactory.CreateEntry("Vx", V1A, BeamTemplateType.Vmax, 1,
                                             valDic, CASE, beam, true);
                X = a;
                return(new ForceDataPoint(X, V1A));
            }
            else
            {
                X = L;
                valDic.Add("X", L);
                BeamEntryFactory.CreateEntry("Vx", V1A, BeamTemplateType.Vmax, 2,
                                             valDic, CASE, beam, true);
                return(new ForceDataPoint(X, V2A));
            }
        }
示例#9
0
        void CalculateReactions()
        {
            // double V = P * b * b / (2.0 * Math.Pow(L, 3)) * (a + 2.0 * L);
            // double V = P*a/(2.0*Math.Pow(L,3))*(3.0*L*L-a*a);

            Dictionary <string, double> valDic = new Dictionary <string, double>()
            {
                { "L", L },
                { "P", P },
                { "a", a },
                { "b", b }
            };



            double R1 = V1;

            BeamEntryFactory.CreateEntry("R1", R1, BeamTemplateType.R, 1,
                                         valDic, CASE, beam);
            double R2 = V2;

            BeamEntryFactory.CreateEntry("R2", R2, BeamTemplateType.R, 2,
                                         valDic, CASE, beam);

            ReactionsWereCalculated = true;
        }
        public double Deflection(double X)
        {
            double delta;
            double E = beam.ModulusOfElasticity;
            double I = beam.MomentOfInertia;

            int CaseId = 1;

            if (X <= L / 2.0)
            {
                delta  = (P * X) / (48 * E * I) * (3 * Math.Pow(L, 2.0) - 4 * Math.Pow(X, 2.0));
                CaseId = 1;
            }
            else
            {
                delta  = (P * (L - X)) / (48 * E * I) * (3 * Math.Pow(L, 2.0) - 4 * Math.Pow(L - X, 2.0));
                CaseId = 2;
            }
            BeamEntryFactory.CreateEntry("delta", delta, BeamTemplateType.deltaMax, CaseId,
                                         new Dictionary <string, double>()
            {
                { "X", X },
                { "P", P },
                { "E", E },
                { "I", I },
                { "L", L }
            }, CASE, beam);

            return(delta);
        }
        public ForceDataPoint MomentMin()
        {
            double M;

            if (P > 0.0)
            {
                M = 0.0;

                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.M_zero, 0,
                                             null, CASE, beam, false, true);
            }
            else
            {
                M = P * L / 4.0;

                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mmax, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", L / 2.0 },
                    { "P", P },
                }, CASE, beam, false, true);
            }
            return(new ForceDataPoint(L / 2.0, M));
        }
        public double Moment(double X)
        {
            beam.EvaluateX(X);

            double M;

            if (X <= L / 2.0)
            {
                M = P * X / 2.0;

                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 1,
                                             new Dictionary <string, double>()
                {
                    { "X", X },
                    { "P", P }
                }, CASE, beam);

                return(M);
            }
            else
            {
                M = P * (L - X) / 2.0;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 2,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "P", P }
                }, CASE, beam);
            }

            return(M);
        }
示例#13
0
        public double Moment(double X)
        {
            double M;

            beam.EvaluateX(X);
            if (X <= L / 2.0)
            {
                M = (P / 2.0 + (M1 - M2) / L) * X - M1;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "P", P },
                    { "M1", M1 },
                    { "M2", M2 },
                }, CASE, beam);
            }
            else
            {
                M = P / 2.0 * (L - X) + ((M1 - M2) * X) / L - M1;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 2,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "P", P },
                    { "M1", M1 },
                    { "M2", M2 },
                }, CASE, beam);
            }
            return(M);
        }
        public double Shear(double X)
        {
            beam.EvaluateX(X);

            double V;

            if (X < a)
            {
                V = GetShearLeft();
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "P", P },
                    { "b", b }
                }, CASE, beam);
            }
            else if (X > a)
            {
                V = GetShearRight();
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 2,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "P", P },
                    { "a", a }
                }, CASE, beam);
            }
            else
            {
                if (a > b)
                {
                    V = GetShearRight();
                    BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 2,
                                                 new Dictionary <string, double>()
                    {
                        { "L", L },
                        { "X", X },
                        { "P", P },
                        { "a", a }
                    }, CASE, beam);
                }
                else // at the point of load
                {
                    V = GetShearLeft();
                    BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 1,
                                                 new Dictionary <string, double>()
                    {
                        { "L", L },
                        { "X", X },
                        { "P", P },
                        { "b", b }
                    }, CASE, beam);
                }
            }

            return(V);
        }
        public ForceDataPoint ShearMax()
        {
            double V;

            if (a > b)
            {
                V = GetShearRight();
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 2,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", a },
                    { "P", P },
                    { "a", a },
                }, CASE, beam, true);
            }
            else
            {
                V = GetShearLeft();
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", a },
                    { "P", P },
                    { "b", b },
                }, CASE, beam, true);
            }

            return(new ForceDataPoint(a, V));
        }
        public ForceDataPoint MomentMin()
        {
            if (ReactionsWereCalculated == false)
            {
                CalculateReactions();
            }
            if (DimensionsWereCalculated == false)
            {
                CalculateDimensions();
            }

            double M, X;

            if (w < 0)
            {
                M = M1;
                X = M1Location;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mmax, 1,
                                             new Dictionary <string, double>()
                {
                    { "X", X },
                    { "w", w },
                    { "R1", R1 },
                    { "a", a }
                }, CASE, beam, false, true);
            }
            else
            {
                M = MSupport;
                X = L;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mmax, 2,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", L },
                    { "w", w },
                    { "a", a },
                    { "b", b },
                    { "c", c },
                    { "d", d },
                    { "e", e }
                }, CASE, beam, false, true);
            }
            return(new ForceDataPoint(X, M));


            //double M = double.PositiveInfinity;
            //double Xgovern = 0;
            //beam.LogModeActive = false;
            //List<double> Stations = CreateStationList();
            //foreach (var sta in Stations)
            //{
            //    double Mcurrent = Moment(sta);
            //    M = Mcurrent < M ? Mcurrent : M;
            //    Xgovern = Mcurrent < M ? sta : Xgovern;
            //}
            //beam.LogModeActive = true;
            //return CreateEntry(Xgovern, M, false, true);
        }
        public ForceDataPoint ShearMax()
        {
            double V = P;

            BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 1,
                                         null, CASE, beam, true);
            return(new ForceDataPoint(a, V));
        }
        public ForceDataPoint ShearMax()
        {
            double V = CalculateShear();

            BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 1,
                                         null, CASE, beam, true);
            return(new ForceDataPoint(0.0, Math.Abs(V)));
        }
 private void  Calculate_e()
 {
     this.e = c + b / 2.0;
     BeamEntryFactory.CreateEntry("e", e, BeamTemplateType.e, 1,
                                  new Dictionary <string, double>()
     {
         { "b", b },
         { "c", c }
     }, CASE, beam);
 }
示例#20
0
        public ForceDataPoint ShearMax()
        {
            double V = 0.0;

            BeamEntryFactory.CreateEntry("Vx", Math.Abs(V), BeamTemplateType.Vmax, 1,
                                         new Dictionary <string, double>()
            {
                { "X", 0.0 }
            }, CASE, beam, true);
            return(new ForceDataPoint(0.0, Math.Abs(V)));
        }
 public ForceDataPoint ShearMax()
 {
     BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 1,
                                  new Dictionary <string, double>()
     {
         { "L", L },
         { "X", 0.0 },
         { "Mo", Mo }
     }, CASE, beam, true);
     return(new ForceDataPoint(0.0, V));
 }
 private void CalculateX1(double X)
 {
     X1 = X1 - L;
     BeamEntryFactory.CreateEntry("X1", X1, BeamTemplateType.Mmax, 1,
                                  new Dictionary <string, double>()
     {
         { "L", L },
         { "X", X },
     }, CASE, beam, true);
     X1Calculated = true;
 }
示例#23
0
        public double Shear(double X)
        {
            double V = 0.0;

            BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 1,
                                         new Dictionary <string, double>()
            {
                { "X", X }
            }, CASE, beam);
            return(V);
        }
 public double Shear(double X)
 {
     beam.EvaluateX(X);
     BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 1,
                                  new Dictionary <string, double>()
     {
         { "L", L },
         { "X", X },
         { "Mo", Mo }
     }, CASE, beam);
     return(V);
 }
        public double Moment(double X)
        {
            beam.EvaluateX(X);
            double M;

            if (ReactionStateIsUpdated == false)
            {
                CalculateReactions();
            }

            if (X <= a)
            {
                //left-hand segment
                M = R1 * X;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "R1", R1 }
                }, CASE, beam);
            }
            else
            {
                if (X >= L - b)
                {
                    //right hand side segment
                    M = R2 * (L - X);
                    BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 3,
                                                 new Dictionary <string, double>()
                    {
                        { "L", L },
                        { "X", X },
                        { "R2", R2 }
                    }, CASE, beam);
                }
                else
                {
                    //middle segment
                    M = R1 * X - w / 2.0 * Math.Pow(X - a, 2);
                    BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 2,
                                                 new Dictionary <string, double>()
                    {
                        { "L", L },
                        { "X", X },
                        { "w", w },
                        { "a", a },
                        { "R1", R1 }
                    }, CASE, beam);
                }
            }
            return(M);
        }
        public double Moment(double X)
        {
            beam.EvaluateX(X);
            if (ReactionsWereCalculated == false)
            {
                CalculateReactions();
            }
            if (DimensionsWereCalculated == false)
            {
                CalculateDimensions();
            }

            double M;

            if (X <= a) //left-hand segment
            {
                M = R1 * X;
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 1,
                                             new Dictionary <string, double>()
                {
                    { "R1", R1 },
                    { "X", X }
                }, CASE, beam);
            }
            else if (X >= a + b) //right-hand segment
            {
                M = R1 * X - w * b * (X - d);
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 3,
                                             new Dictionary <string, double>()
                {
                    { "R1", R1 },
                    { "X", X },
                    { "w", w },
                    { "d", d },
                    { "b", b }
                }, CASE, beam);
            }
            else
            {
                M = R1 * X - w / 2.0 * Math.Pow(X - a, 2);
                BeamEntryFactory.CreateEntry("Mx", M, BeamTemplateType.Mx, 2,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "w", w },
                    { "R1", R1 },
                    { "a", a },
                }, CASE, beam);
            }
            return(M);
        }
        public double Shear(double X)
        {
            beam.EvaluateX(X);
            if (ReactionStateIsUpdated == false)
            {
                CalculateReactions();
            }
            double V;

            if (X <= a)
            {
                //left-hand segment
                V = R1;
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "R1", R1 },
                }, CASE, beam);
            }
            else
            {
                if (X >= L - b)
                {
                    //right hand side segment
                    V = R2;
                    BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 3,
                                                 new Dictionary <string, double>()
                    {
                        { "L", L },
                        { "X", X },
                        { "R2", R2 },
                    }, CASE, beam);
                }
                else
                {
                    //middle segment
                    V = R1 - w * (X - a);
                    BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 1,
                                                 new Dictionary <string, double>()
                    {
                        { "L", L },
                        { "X", X },
                        { "R1", R1 },
                        { "w", w },
                        { "a", a }
                    }, CASE, beam);
                }
            }
            return(V);
        }
示例#28
0
        public ForceDataPoint ShearMax()
        {
            double Vmax = R2;

            BeamEntryFactory.CreateEntry("Vx", Vmax, BeamTemplateType.Vmax, 1,
                                         new Dictionary <string, double>()
            {
                { "L", L },
                { "X", L },
                { "w", w }
            }, CASE, beam, true);
            return(new ForceDataPoint(L, Vmax));
        }
示例#29
0
        public ForceDataPoint ShearMax()
        {
            double V = Math.Abs(P);

            BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vx, 1,
                                         new Dictionary <string, double>()
            {
                { "X", L },
                { "P", P }
            }, CASE, beam);

            return(new ForceDataPoint(a, V));
        }
示例#30
0
        public double Moment(double X)
        {
            beam.EvaluateX(X);
            double Mx = Mo;

            BeamEntryFactory.CreateEntry("Mx", Mx, BeamTemplateType.Mx, 1,
                                         new Dictionary <string, double>()
            {
                { "X", X },
                { "Mo", Mo },
            }, CASE, beam);
            return(Mx);
        }