Код программы MainForm, страница 4

            // устанавливаем цвет очистки окна

            Gl.glClearColor(0f, 0.8f, 0.8f, 1);

            // устанавливаем порт вывода, основываясь на размерах элемента управления AnT

            Gl.glViewport(0, 0, AnT.Width, AnT.Height);

            Gl.glMatrixMode(Gl.GL_PROJECTION);                                  // Select The Projection Matrix

            Gl.glLoadIdentity();                                                // Reset The Projection Matrix

            Glu.gluPerspective(45, AnT.Width / (double)AnT.Height, 0.1, 100);

            Gl.glMatrixMode(Gl.GL_MODELVIEW);                                   // Select The Modelview Matrix

            Gl.glLoadIdentity();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            formMatrixQ();

            getMesh();

            Draw();                      

        }

        void generateGlobalMatrix()

        {

            formMatrixQ();

            globalMatrix = new double[allCountUsel * 2, allCountUsel * 2];

            for (int i = 0; i < globalMatrix.GetLength(0); i++)

                for (int j = 0; j < globalMatrix.GetLength(0); j++)

                    globalMatrix[i, j] = 0;

            for (int i = 0; i < mesh.Length - 1; i++)

            {

                generateLocalMatrix(i);

                for (int j = 0; j < localMatrix.GetLength(0); j++)

                {

                    globalMatrix[i, j + i] += localMatrix[j, 0];

                    globalMatrix[i, j + i + 1] += localMatrix[j, 1];

                    globalMatrix[i + 1, j + i] += localMatrix[j, 2];

                    globalMatrix[i + 1, j + i + 1] += localMatrix[j, 3];

                    globalMatrix[i + 2, j + i] += localMatrix[j, 4];

                    globalMatrix[i + 2, j + i + 1] += localMatrix[j, 5];

                }

            }

        }

        void boundary()

        {

            for (int i = 0; i < usels.GetLength(0); i++)

            {

                for (int j = 0; j < usels.GetLength(1); j++)

                {

                    if (usels[i,j]!=null && usels[i, j].stat)

                    {

                        for (int kk = 0; kk < globalMatrix.GetLength(0); kk++)

                        {

                            globalMatrix[i * 2 + j, kk] = 0;

                            globalMatrix[kk, i * 2 + j] = 0;

                        }

                        globalMatrix[i * 2 + j, i * 2 + j] = 1;

                    }

                }}}

        void generateLocalMatrix(int i)

        {

            double[,] E1 = formMatrixE(double.Parse(textYu.Text), double.Parse(textPs.Text));

            formMatrixA(mesh[i].element[0].x, mesh[i].element[0].y,

                            mesh[i].element[1].x, mesh[i].element[1].y,

                            mesh[i].element[2].x, mesh[i].element[2].y);

 B = Matrix.obratnaya_matrix(A);           

            localMatrix = Matrix.proizvedenie(Matrix.proizvedenie(Matrix.proizvedenie(Matrix.proizvedenie(Matrix.transponirovanie(B), Matrix.transponirovanie(Q)), E1), Q), B); }

        private void button2_Click(object sender, EventArgs e)

        {

            generateGlobalMatrix();

            boundary();

            X = Matrix.method_gaussa(globalMatrix, R);

            DrawResult();

            label6.Text ="Максимальное смещение в узле приложения силы\n по ОХ="+ X[X.Length-2] + "\n и OY=" + X[X.Length-1];

        }

    }

}

Код программы содержащий два основных класса Usel и Mesh

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace k_kskr

{

    public class Usel

    {

        public double x, y;

        public bool stat;   // false - не граничный узел

                            // true - левый граничный узел

        public Usel(double param_x, double param_y, bool param_stat)

        {

            x = param_x;

            y = param_y;

            stat = param_stat;

        }

    }

    //конечный треугольный элемент

    public class Mesh

    {

        public Usel[] element;

        public Mesh(Usel usel1, Usel usel2, Usel usel3)

        {

            element = new Usel[3];

            element[0] = usel1;

            element[1] = usel2;

            element[2] = usel3;     

   }

}

   }