public AnaliticalTwoSidesFixed(InputModelArgs model, double sigma)
        {
            alfa1 = model.Material.GetAlfa1();
            h     = model.Shape.H;
            l     = model.Shape.L;
            E     = model.Material.E[0];
            v     = model.Material.v[0, 0];

            D      = E * h * h * h * (1 + alfa1) / (12 * (1 - v * v));
            Lambda = 14 * E * h / (30 * (1 + v));
            B      = E * h * (1 + alfa1) / (1 - v * v);
            N0     = sigma * h;

            lambda_2  = N0 / D;
            k_2       = Lambda / (Lambda + N0);
            lambda1_2 = lambda_2 * k_2;

            lambda1 = Math.Sqrt(lambda1_2);


            ch = Math.Cosh(lambda1 * l / 2);
            sh = Math.Sinh(lambda1 * l / 2);

            _b = l * (1 / (Lambda + N0) - 1 / (D * lambda_2)) / (2 * lambda1 * sh);

            p = (-1) * CountLoad();
        }
        private string getAxesData(InputModelArgs args)
        {
            NumberFormatInfo numberFormatInfo = new CultureInfo("en-US", false).NumberFormat;

            numberFormatInfo.NumberDecimalSeparator = ".";
            string resData = "M 0,0";

            resData += "L " + (args.Shape.L * zoomValue).ToString("0.00000", numberFormatInfo) + ",0";

            /*resData += "M " + (args.Shape.L*zoomValue).ToString("0.00000", numberFormatInfo) + ","+
             *        ((-1)*args.Shape.H*zoomValue).ToString("0.00000", numberFormatInfo);
             * resData += "L " + (args.Shape.L * zoomValue).ToString("0.00000", numberFormatInfo) + "," + (args.Shape.L * zoomValue).ToString("0.00000", numberFormatInfo);*/
            return(resData);
        }
Exemple #3
0
        static void Main(string[] args)
        {
            InputModelArgs model = new InputModelArgs();

            model.Shape.L = 1;
            model.Shape.H = 0.1;
            model.Material.AutoiFillE(40000);
            model.Material.AutoFillV(0.3);
            model.Material.AutoFillG();
            model.Boundary = BoundaryConditions.FixedLeftSide;
            model.Load     = 2752.4039476340849;
            FEMSolver solver = new FEMSolver(model);

            int iter;

            Result result = solver.SolvePDE(30, 6, 0.001, out iter);

            AnaliticalOneSideFixed analitical = new AnaliticalOneSideFixed(model);

            using (StreamWriter sw = new StreamWriter("ResultU1.txt"))
            {
                foreach (Node node in solver.Mesh.MiddleNodes)
                {
                    Vector alfa = new Vector(3);
                    alfa[0] = node.X;
                    alfa[2] = node.Y;
                    sw.WriteLine(node.X.ToString() + " " + solver.U[2 * node.Index].ToString("0.00000") + "\t" + analitical.U(alfa)[0].ToString("0.00000"));
                }
                sw.Close();
            }



            using (StreamWriter sw = new StreamWriter("ResultU3.txt"))
            {
                foreach (Node node in solver.Mesh.MiddleNodes)
                {
                    Vector alfa = new Vector(3);
                    alfa[0] = node.X;
                    alfa[2] = node.Y;
                    sw.WriteLine(node.X.ToString() + "\t" + result.U[2 * node.Index + 1].ToString("0.00000") + "\t" + analitical.U(alfa)[2].ToString("0.00000"));
                }
                sw.Close();
            }
            Console.WriteLine("Ітерацій: " + iter.ToString());
            Console.WriteLine("Files Filed");
            Console.Read();
        }
        public AnaliticalOneSideFixed(InputModelArgs model)
        {
            this.model = model;

            double alfa1 = model.Material.GetAlfa1();
            double h     = model.Shape.H;
            double l     = model.Shape.L;
            double E     = model.Material.E[0];
            double v     = model.Material.v[0, 0];

            D      = E * h * h * h * (1 + alfa1) / (12 * (1 - v * v));
            Lambda = 14 * E * h / (30 * (1 + v));
            p      = -model.Load;
            l2     = l * l;
            l3     = l * l * l;
            l4     = l * l * l * l;
            l5     = l * l * l * l * l;
            l6     = l * l * l * l * l * l;
            l7     = l * l * l * l * l * l * l;


            wK1 = p / (2 * Lambda);
            wK2 = p / (6 * D);
        }
 public FEMSolver(InputModelArgs model)
 {
     Model = model;
     Mesh  = new MeshGenerator();
 }
 public ModelViewModel()
 {
     Model   = new InputModelArgs();
     Results = new ObservableCollection <ResultItem>();
     SetDefaultValues();
 }