Код программы MainForm

Страницы работы

Содержание работы

Приложение Б

(обязательное)

Код программы MainForm

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using Tao.OpenGl;

namespace k_kskr

{

    public partial class MainForm : Form

    {

        public MainForm()

        {

            InitializeComponent();

            AnT.InitializeContexts();

        }

        int allCountElement; //общее количество элементов

        int allCountUsel=0;

        double Sa; //площадь треугольника

        //координатная матрица

        double[,] A;

        //обратная координатная матрица

        double[,] B;

        //матрица

        double[,] Q;

        //локальная матрица жёсткости

        double[,] localMatrix;

        //глобальная матрица жесткости

        double[,] globalMatrix;

        /*формирование матрицы Q*/

        public void formMatrixQ()

        {

            Q = new double[3, 6];

            Q[0, 1] = 1.0f;

            Q[1, 5] = 1.0f;

            Q[2, 2] = 1.0f;

            Q[2, 4] = 1.0f;

        }

        /*формирование координатной матрицы А*/

        public void formMatrixA(double x0, double y0,

                                double x1, double y1,

                                double x2, double y2)

        {

            A = new double[6, 6];

            double[] kX = new double[3];

            kX[0] = x0;

            kX[1] = x1;

            kX[2] = x2;

            double[] kY = new double[3];

            kY[0] = y0;

            kY[1] = y1;

            kY[2] = y2;

            for (int i = 0; i < 3; i++)

            {//заполнение матрицы А по две строки

                A[i * 2, 0] = 1.0f;

                A[i * 2, 1] = kX[i];

                A[i * 2, 2] = kY[i];

                A[i * 2 + 1, 3] = 1.0f;

                A[i * 2 + 1, 4] = kX[i];

                A[i * 2 + 1, 5] = kY[i];

            }

        }

        /*Формирование матрицы E*/

        public double[,] formMatrixE(double modul_yunga, double koef_puassona)

        {           

            double[,] E = new double[3, 3];

            double koef = modul_yunga/(1-koef_puassona*koef_puassona);

            E[0, 0] = koef;

            E[0, 1] = koef*koef_puassona;

            E[0, 2] = 0;

            E[1, 0] = koef_puassona *koef;

            E[1, 1] = koef;

            E[1, 2] = 0;

            E[2, 0] = 0;

            E[2, 1] = 0;

            E[2, 2] = koef * (1-koef_puassona)/2;

            return E;

        }

        public void formVectorR()//вектор нагрузки

        {

            R = new double[allCountUsel * 2];

            for (int i = 0; i < R.Length-2; i++)

                R[i] = 0;

            Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL);//заполнение внутри опция

            Gl.glColor3f(1, 0, 0.5f);

            Gl.glBegin(Gl.GL_QUADS);//начало  рисования квадратами

            float koef = 0.1f;

            //рисование нагрузки

            Gl.glVertex3f((float)usels[usels.GetLength(0) - 1, usels.GetLength(1) - 1].x - koef,

                (float)usels[usels.GetLength(0) - 1, usels.GetLength(1) - 1].y - koef, 0);

            Gl.glVertex3f((float)usels[usels.GetLength(0) - 1, usels.GetLength(1) - 1].x + koef,

               (float)usels[usels.GetLength(0) - 1, usels.GetLength(1) - 1].y - koef, 0);

            Gl.glVertex3f((float)usels[usels.GetLength(0) - 1, usels.GetLength(1) - 1].x + koef,

               (float)usels[usels.GetLength(0) - 1, usels.GetLength(1) - 1].y + koef, 0);

            Gl.glVertex3f((float)usels[usels.GetLength(0) - 1, usels.GetLength(1) - 1].x - koef,

               (float)usels[usels.GetLength(0) - 1, usels.GetLength(1) - 1].y + koef, 0);

            Gl.glEnd();

            R[R.Length - 2] = Double.Parse(textF.Text) * Math.Cos(Double.Parse(textAngle.Text));

            R[R.Length - 1] = Double.Parse(textF.Text) * Math.Sin(Double.Parse(textAngle.Text));         

        }

        public Mesh[] mesh;//список конечных элементов

        public Usel[,] usels; //список координат всех узлов

        public int[] coordx, coordy;

        public double[] X; //вектор результатов

        public double[] R; //вектор нагрузок

        public void Draw()//рисование пластины

        {

Похожие материалы

Информация о работе