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);
            }
        }
예제 #2
0
 private void CalculateMoments()
 {
     M1 = GetM1();
     M2 = GetM2();
     Ma = GetMa();
     MomentsWereCalculated = true;
 }
        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);
        }
        private ForceDataPoint CalculateMmax()
        {
            double Mmax = R1 * (a + R1 / (2.0 * w));
            double XMax = a + R1 / w;

            ForceDataPoint fdp = new ForceDataPoint(XMax, Mmax);

            return(fdp);
        }
예제 #5
0
        void GenerateMomentEntry(ForceDataPoint M, int TemplateId, bool IsMax, bool IsMin)
        {
            Dictionary <string, double> valDic = new Dictionary <string, double>()
            {
                { "L", L },
                { "X", M.X },
                { "P", P },
                { "a", a },
                { "b", b }
            };

            BeamEntryFactory.CreateEntry("Mx", M.Value, BeamTemplateType.Mmax, TemplateId,
                                         valDic, CASE, beam, IsMax, IsMin);
        }
        public ForceDataPoint ShearMax()
        {
            double Vval = w * b;

            BeamEntryFactory.CreateEntry("Vx", Vval, BeamTemplateType.Vmax, 2,
                                         new Dictionary <string, double>()
            {
                { "X", L },
                { "b", b },
                { "w", w }
            }, CASE, beam, true);
            ForceDataPoint V = new ForceDataPoint(L, Vval);

            return(V);
        }
예제 #7
0
        public ForceDataPoint MomentMax()
        {
            if (MomentsWereCalculated == false)
            {
                CalculateMoments();
            }
            List <ForceDataPoint> Moments = new List <ForceDataPoint>()
            {
                M1, MPointLeft, MPointRight, M2
            };
            ForceDataPoint MaxMoment = Moments.MaxBy(m => m.Value);

            AddMomentEntry(MaxMoment, true, false);
            return(MaxMoment);
        }
 private void AddMomentEntry(ForceDataPoint M, bool IsMax, bool IsMin)
 {
     if (M == M1)
     {
         BeamEntryFactory.CreateEntry("Mx", M.Value, BeamTemplateType.Mmax, 1,
                                      new Dictionary <string, double>()
         {
             { "L", L },
             { "X", M.X },
             { "w", w },
             { "a", a },
             { "b", b },
             { "c", c },
             { "d", d },
             { "e", e }
         }, CASE, beam, IsMax, IsMin);
     }
     else if (M == M2)
     {
         BeamEntryFactory.CreateEntry("Mx", M.Value, BeamTemplateType.Mmax, 3,
                                      new Dictionary <string, double>()
         {
             { "L", L },
             { "X", M.X },
             { "w", w },
             { "a", a },
             { "b", b },
             { "c", c },
             { "d", d },
             { "e", e }
         }, CASE, beam, IsMax, IsMin);
     }
     else
     {
         BeamEntryFactory.CreateEntry("Mx", M.Value, BeamTemplateType.Mmax, 2,
                                      new Dictionary <string, double>()
         {
             { "M1", L },
             { "X", M.X },
             { "w", w },
             { "a", a },
             { "R1", R1 }
         }, CASE, beam, IsMax, IsMin);
     }
 }
예제 #9
0
        private void CalculateMoments()
        {
            double M1v = -(Mo * b) / (L * L) * (L - 3.0 * a);

            M1 = new ForceDataPoint(0.0, M1v);

            double MPointLeftv = Mo * (-(6.0 * a * a * b) / Math.Pow(L, 3) - b / (L * L) * (L - 3.0 * a));

            MPointLeft = new ForceDataPoint(a, MPointLeftv);

            double MPointRightv = Mo * (-(6.0 * a * a * b) / Math.Pow(L, 3) - b / (L * L) * (L - 3.0 * a) + 1.0);

            MPointRight = new ForceDataPoint(a, MPointRightv);

            double M2v = -(Mo * a) / (L * L) * (2.0 * L - 3.0 * a);

            M2 = new ForceDataPoint(L, M2v);
        }
        public ForceDataPoint MomentMin()
        {
            if (ReactionsWereCalculated == false)
            {
                CalulateReactions();
            }
            if (MomentsWereCalculated == false)
            {
                CalculateMoments();
            }

            List <ForceDataPoint> Moments = new List <ForceDataPoint>
            {
                M1, M2, Mmid
            };
            ForceDataPoint Mminimum = Moments.MinBy(m => m.Value);

            this.AddMomentEntry(Mminimum, false, true);
            return(Mminimum);
        }
        private void CalculateMoments()
        {
            double M1v = (w * b) / (24.0 * L * L) * (b * b * (L + 3.0 * (c - a)) - 24.0 * e * e * d);

            M1 = new ForceDataPoint(0.0, M1v);
            BeamEntryFactory.CreateEntry("M1", M1v, BeamTemplateType.M, 1,
                                         new Dictionary <string, double>()
            {
                { "L", L },
                { "w", w },
                { "a", a },
                { "b", b },
                { "c", c },
                { "d", d },
                { "e", e }
            }, CASE, beam);

            double M2v = R1 * L - w * b * e + M1v;

            M2 = new ForceDataPoint(L, M2v);

            BeamEntryFactory.CreateEntry("M2", M2v, BeamTemplateType.M, 2,
                                         new Dictionary <string, double>()
            {
                { "R1", R1 },
                { "M1", M1v },
                { "L", L },
                { "w", w },
                { "b", b },
                { "c", c },
                { "e", e }
            }, CASE, beam);
            double MmidV = M1v + R1 * (a + R1 / (2.0 * w));
            double XmidV = a + R1 / w;

            Mmid = new ForceDataPoint(XmidV, MmidV);

            MomentsWereCalculated = true;
        }
        private void AddShearEntry(ForceDataPoint shearCase)
        {
            double V = shearCase.Value;
            double X = shearCase.X;

            if (V == Math.Abs(CalculateV1()))
            {
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 1,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "w", w },
                    { "a", a },
                }, CASE, beam, true);
            }
            else if (V == Math.Abs(CalculateV2()))
            {
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 2,
                                             new Dictionary <string, double>()
                {
                    { "X", X },
                    { "w", w },
                    { "a", a },
                }, CASE, beam, true);
            }
            else // (V == CalculateV3())
            {
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 3,
                                             new Dictionary <string, double>()
                {
                    { "L", L },
                    { "X", X },
                    { "w", w },
                    { "a", a },
                }, CASE, beam, true);
            }
        }
예제 #13
0
        private void AddMomentEntry(ForceDataPoint M, bool IsMax, bool IsMin)
        {
            BeamTemplateType BTemplate;

            BTemplate = (IsMax == true) ? BeamTemplateType.Mmax : BeamTemplateType.Mmin;


            Dictionary <string, double> valDic = new Dictionary <string, double>()
            {
                { "L", L },
                { "X", M.X },
                { "a", a },
                { "b", b },
                { "Mo", Mo }
            };


            if (M == M1)
            {
                BeamEntryFactory.CreateEntry("Mx", M.Value, BTemplate, 1,
                                             valDic, CASE, beam, IsMax, IsMin);
            }
            else if (M == MPointLeft)
            {
                BeamEntryFactory.CreateEntry("Mx", M.Value, BTemplate, 2,
                                             valDic, CASE, beam, IsMax, IsMin);
            }
            else if (M == MPointRight)
            {
                BeamEntryFactory.CreateEntry("Mx", M.Value, BTemplate, 3,
                                             valDic, CASE, beam, IsMax, IsMin);
            }
            else
            {
                BeamEntryFactory.CreateEntry("Mx", M.Value, BTemplate, 4,
                                             valDic, CASE, beam, IsMax, IsMin);
            }
        }
예제 #14
0
        private void AddMomentEntry(ForceDataPoint M, bool IsMax, bool IsMin)
        {
            BeamTemplateType BTemplate;
            BTemplate = (IsMax == true) ? BeamTemplateType.Mmax : BeamTemplateType.Mmin;
                   
            
            Dictionary<string, double> valDic = new Dictionary<string, double>()
                    {      
                         {"L",L },
                           {"X",M.X },
                           {"a",a },
                           {"b",b },
                           {"Mo",Mo }
                     };


            if (M == M1)
            {
                BeamEntryFactory.CreateEntry("Mx", M.Value, BTemplate, 1,
                valDic, CASE, beam, IsMax, IsMin);
            }
            else if (M == MPointLeft)
            {
                BeamEntryFactory.CreateEntry("Mx", M.Value, BTemplate, 2,
                valDic, CASE, beam, IsMax, IsMin);
            }
            else if (M == MPointRight)
            {
                BeamEntryFactory.CreateEntry("Mx", M.Value, BTemplate, 3,
                valDic, CASE, beam, IsMax, IsMin);
            }
            else
            {
                BeamEntryFactory.CreateEntry("Mx", M.Value, BTemplate, 4,
                valDic, CASE, beam, IsMax, IsMin);
            }

        }
예제 #15
0
        private void AddShearEntry(ForceDataPoint shearCase)
        {
            double V = shearCase.Value;
            double X = shearCase.X;
            if (V==Math.Abs(CalculateV1()))
	        {
		            BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 1,
                    new Dictionary<string, double>()
                        {
                           {"L",L },
                           {"X",X },
                           {"w",w },
                           {"a",a },
                         }, CASE, beam, true);
	        }
            else if (V ==Math.Abs( CalculateV2()))
            {
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 2,
                new Dictionary<string, double>()
                        {
                           {"X",X },
                           {"w",w },
                           {"a",a },
                         }, CASE, beam, true);
            }
            else // (V == CalculateV3())
            {
                BeamEntryFactory.CreateEntry("Vx", V, BeamTemplateType.Vmax, 3,
                new Dictionary<string, double>()
                        {
                           {"L",L },
                           {"X",X },
                           {"w",w },
                           {"a",a },
                         }, CASE, beam, true);
            }
        }
예제 #16
0
                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;
                    }
                }
예제 #17
0
                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;
                }
예제 #18
0
                private ForceDataPoint CalculateMmax()
                {
                    double Mmax = R1 * (a + R1 / (2.0 * w));
                    double XMax = a + R1 / w;

                    ForceDataPoint fdp = new ForceDataPoint(XMax, Mmax);
                    return fdp;
                }
예제 #19
0
            private void AddMomentEntry(ForceDataPoint M, bool IsMax, bool IsMin)
            {

                if (M==M1)
                {
                    BeamEntryFactory.CreateEntry("Mx", M.Value, BeamTemplateType.Mmax, 1,
                    new Dictionary<string, double>()
                        {
                           {"L",L },
                           {"X",M.X },
                           {"w",w },
                           {"a",a },
                           {"b",b },
                           {"c",c },
                           {"d",d},
                           {"e",e}
                         }, CASE, beam, IsMax,IsMin);
                }
                else if (M==M2)
                {
                    BeamEntryFactory.CreateEntry("Mx", M.Value, BeamTemplateType.Mmax, 3,
                    new Dictionary<string, double>()
                        {
                           {"L",L },
                           {"X",M.X },
                           {"w",w },
                           {"a",a },
                           {"b",b },
                           {"c",c },
                           {"d",d},
                           {"e",e}
                         }, CASE, beam, IsMax, IsMin);
                }
                else
                {
                    BeamEntryFactory.CreateEntry("Mx", M.Value, BeamTemplateType.Mmax, 2,
                    new Dictionary<string, double>()
                        {
                           {"M1",L },
                           {"X",M.X },
                           {"w",w },
                           {"a",a },
                           {"R1",R1 }
                         }, CASE, beam, IsMax, IsMin);
                }

            }
예제 #20
0
            private void CalculateMoments()
            {

                double M1v =(w*b)/(24.0*L*L )*(b*b*(L+3.0*(c-a))-24.0*e*e*d);
                M1 = new ForceDataPoint(0.0, M1v);
                    BeamEntryFactory.CreateEntry("M1", M1v, BeamTemplateType.M, 1,
                    new Dictionary<string, double>()
                        {
                           {"L",L },
                           {"w",w },
                           {"a",a },
                           {"b",b },
                           {"c",c },
                           {"d",d},
                           {"e",e}
                         }, CASE, beam);

                double M2v = R1 * L - w * b * e + M1v;
                M2 = new ForceDataPoint(L, M2v);

                BeamEntryFactory.CreateEntry("M2", M2v, BeamTemplateType.M, 2,
                new Dictionary<string, double>()
                        {
                           {"R1",R1 },
                           {"M1",M1v },
                           {"L",L },
                           {"w",w },
                           {"b",b },
                           {"c",c },
                           {"e",e}
                         }, CASE, beam);
                double MmidV = M1v+R1*(a+R1/(2.0*w));
                double XmidV = a+R1/w;
                
                Mmid = new ForceDataPoint(XmidV, MmidV);
                
                MomentsWereCalculated = true;
            }
예제 #21
0
        public ForceDataPoint ShearMax()
        {

            double Vval = w * b;
            BeamEntryFactory.CreateEntry("Vx", Vval, BeamTemplateType.Vmax, 2,
            new Dictionary<string, double>()
                        {  {"X",L },
                           {"b",b },
                           {"w",w }
                         }, CASE, beam, true);
            ForceDataPoint V = new ForceDataPoint(L, Vval);
            return V;
        }
예제 #22
0
        private void CalculateMoments()
        {
            double M1v = -(Mo * b) / (L * L) * (L - 3.0 * a);
            M1 = new ForceDataPoint(0.0, M1v);

            double MPointLeftv = Mo * (-(6.0 * a * a * b) / Math.Pow(L, 3) - b / (L * L) * (L - 3.0 * a));
            MPointLeft = new ForceDataPoint(a, MPointLeftv);

            double MPointRightv = Mo * (-(6.0 * a * a * b) / Math.Pow(L, 3) - b / (L * L) * (L - 3.0 * a)+1.0);
            MPointRight= new ForceDataPoint(a, MPointRightv);

            double M2v = -(Mo * a) / (L * L) * (2.0*L - 3.0 * a);
            M2 = new ForceDataPoint(L, M2v);

        }