using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Wolfram.NETLink;


namespace _dplateBergulyovAS
{
    public partial class Form1 : Form
    {
    //********************************************************************************************
        double Ex, Ey, Ez;                                           // 

        double Gxy, Gxz, Gyz;                                        // 

        double Vxy, Vxz, Vyx, Vyz, Vzx, Vzy;                         // 

        double plateXsize, plateYsize, plateZsize;                   // 

        int borderCondX0, borderCondXa, borderCondY0, borderCondYb; //  
                                                                    //  x = 0, x = a,
                                                                    //y = 0, y = b :
                                                                    //1 -  
                                                                    //2 - 

        string strX, strY, strZ;                                    //  
                                                                    //  (
                                                                    // x, y, z)

        int ColPointsX, ColPointsY;                                 //-  
                                                                    //   y 

        int DiscrOrtogonalPoints;                                   //-  
                                                                    //

        int ColPointsXtype;                                         //   
                                                                    //   (OX):
                                                                    //1 -   
                                                                    //2 -   

        int ColPointsYtype;                                         //   
                                                                    //   (OY):
                                                                    //1 -   
                                                                    //2 -   

        string tempSTRfordouble;                                    //  
                                                                    //  -
                                                                    //   
                                                                    //

        string SigmaZZ0, SigmaZX0, SigmaZY0;                        //   -
        string SigmaZZc, SigmaZXc, SigmaZYc;                        //    
                                                                    //Mathematica 6

        double[,] SigmaZZ0Matrix;                                    //   -
        double[,] SigmaZX0Matrix;                                    //,   -
        double[,] SigmaZY0Matrix;                                    //    -
        double[,] SigmaZZcMatrix;                                    //,        -
        double[,] SigmaZXcMatrix;                                    //  x, y      -
        double[,] SigmaZYcMatrix;                                    //--------------------------

        string[,] XMatrix;                                           //  
        string[,] YMatrix;                                           //, 
        string[,] ZMatrix;                                           //  
                                                                     //(   z)

        double[] f0;                                                 //   
                                                                     //  

        double[] fc;                                                 //   
                                                                     //  

        string[] f;                                                  //   
    //********************************************************************************************

        private static IKernelLink kernelLink;
        private static MathKernel mathKernel;

        double[] KsiKlist;  //      
        double[] TetaPlist; //      y

        double[] GridPtsXList; //     
        double[] GridPtsYList; //     y

        double Alpha11, Alpha22, Alpha33, Alpha12, Alpha13, Alpha23, Alpha44, Alpha55, Alpha66;
        double Liambda11, Liambda22, Liambda33, Liambda12, Liambda13, Liambda23, Liambda44, Liambda55, Liambda66;
        double a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3;

        double Beta13, Beta23, Beta33;                                //  SigmaZZq

        // -  -----------------------------------------------------------------
        double[,] A1u, A2u, A3u, A4u, A5u, A1v, A2v, A3v, A4v, A5v, A1w, A2w, A3w, A4w, A5w;

        double[,] A21, A23, A26, A41, A43, A46, A62, A64, A65;

        double[,] A1uInverse, A1vInverse, A1wInverse;
        //     --------------------------------------------------------
        double Alpha11uFi, Alpha12uFi, Alpha13uFi, Alpha21uFi, Alpha22uFi, Alpha23uFi;
        double Beta11uFi, Beta12uFi, Beta13uFi, Beta21uFi, Beta22uFi, Beta23uFi;

        double Alpha11uKsi, Alpha12uKsi, Alpha13uKsi, Alpha21uKsi, Alpha22uKsi, Alpha23uKsi;
        double Beta11uKsi, Beta12uKsi, Beta13uKsi, Beta21uKsi, Beta22uKsi, Beta23uKsi;
        //----------------------------------
        double Alpha11vFi, Alpha12vFi, Alpha13vFi, Alpha21vFi, Alpha22vFi, Alpha23vFi;
        double Beta11vFi, Beta12vFi, Beta13vFi, Beta21vFi, Beta22vFi, Beta23vFi;

        double Alpha11vKsi, Alpha12vKsi, Alpha13vKsi, Alpha21vKsi, Alpha22vKsi, Alpha23vKsi;
        double Beta11vKsi, Beta12vKsi, Beta13vKsi, Beta21vKsi, Beta22vKsi, Beta23vKsi;
        //----------------------------------
        double Alpha11wFi, Alpha12wFi, Alpha13wFi, Alpha21wFi, Alpha22wFi, Alpha23wFi;
        double Beta11wFi, Beta12wFi, Beta13wFi, Beta21wFi, Beta22wFi, Beta23wFi;

        double Alpha11wKsi, Alpha12wKsi, Alpha13wKsi, Alpha21wKsi, Alpha22wKsi, Alpha23wKsi;
        double Beta11wKsi, Beta12wKsi, Beta13wKsi, Beta21wKsi, Beta22wKsi, Beta23wKsi;

        //    
        //( 3 * ColPointsX * ColPointsY )X( 6 * ColPointsX * ColPointsY )
        double[,] Bq;

        //   
        //( 6 * ColPointsX * ColPointsY )X( 6 * ColPointsX * ColPointsY )
        double[,] A;
    //********************************************************************************************
                //------------------------   ------------------------\\
        double[,] S1uTotal; //       S1u 
                            //       .
                            //   ((N+1)*(M+1)) x P, P - -   -.
        double[,] S2uTotal;
        double[,] S1vTotal;
        double[,] S2vTotal;
        double[,] S1wTotal;
        double[,] S2wTotal;

        int totallayerno = 0; //  ( )

    //********************************************************************************************

        public Form1()
        {
            InitializeComponent();
        }

        private void StartInitialization()
        {
            //lEvaluation.Location.Y = 740;
            //lEvaluation.Location.X = 50;

            string s1, s2, sign;
            pbEvaluation.Value = 5;
            lEvaluation2.Text = " ...";
            //-----------------------------------------------------------------------------------
            if (tbExNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbExNum.Text; }
            if (tbExDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbExDouble.Text; }
            tempSTRfordouble = s1 + "," + s2; Ex = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbEyNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbEyNum.Text; }
            if (tbEyDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbEyDouble.Text; }
            tempSTRfordouble = s1 + "," + s2; Ey = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbEzNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbEzNum.Text; }
            if (tbEzDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbEzDouble.Text; }
            tempSTRfordouble = s1 + "," + s2; Ez = (double)System.Convert.ToDouble(tempSTRfordouble);

            //-----------------------------------------------------------------------------------
            if (tbGxyNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbGxyNum.Text; }
            if (tbGxyDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbGxyDouble.Text; }
            tempSTRfordouble = s1 + "," + s2; Gxy = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbGxzNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbGxzNum.Text; }
            if (tbGxzDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbGxzDouble.Text; }
            tempSTRfordouble = s1 + "," + s2; Gxz = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbGyzNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbGyzNum.Text; }
            if (tbGyzDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbGyzDouble.Text; }
            tempSTRfordouble = s1 + "," + s2; Gyz = (double)System.Convert.ToDouble(tempSTRfordouble);

            //-----------------------------------------------------------------------------------
            if (tbVxyNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbVxyNum.Text; }
            if (tbVxyDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbVxyDouble.Text; }
            sign = ""; 
            tempSTRfordouble = sign + s1 + "," + s2; Vxy = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbVxzNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbVxzNum.Text; }
            if (tbVxzDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbVxzDouble.Text; }
            sign = ""; 
            tempSTRfordouble = sign + s1 + "," + s2; Vxz = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbVyzNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbVyzNum.Text; }
            if (tbVyzDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbVyzDouble.Text; }
            sign = ""; 
            tempSTRfordouble = sign + s1 + "," + s2; Vyz = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbVyxNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbVyxNum.Text; }
            if (tbVyxDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbVyxDouble.Text; }
            sign = ""; 
            tempSTRfordouble = sign + s1 + "," + s2; Vyx = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbVzxNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbVzxNum.Text; }
            if (tbVzxDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbVzxDouble.Text; }
            sign = ""; 
            tempSTRfordouble = sign + s1 + "," + s2; Vzx = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbVzyNum.Text.Length == 0) { s1 = "0"; } else { s1 = tbVzyNum.Text; }
            if (tbVzyDouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbVzyDouble.Text; }
            sign = ""; 
            tempSTRfordouble = sign + s1 + "," + s2; Vzy = (double)System.Convert.ToDouble(tempSTRfordouble);

            //-----------------------------------------------------------------------------------
            if (tbXsizeAnum.Text.Length == 0) { s1 = "0"; } else { s1 = tbXsizeAnum.Text; }
            if (tbXsizeAdouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbXsizeAdouble.Text; }
            tempSTRfordouble = s1 + "," + s2; plateXsize = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbYsizeBnum.Text.Length == 0) { s1 = "0"; } else { s1 = tbYsizeBnum.Text; }
            if (tbYsizeBdouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbYsizeBdouble.Text; }
            tempSTRfordouble = s1 + "," + s2; plateYsize = (double)System.Convert.ToDouble(tempSTRfordouble);

            if (tbZsizeCnum.Text.Length == 0) { s1 = "0"; } else { s1 = tbZsizeCnum.Text; }
            if (tbZsizeCdouble.Text.Length == 0) { s2 = "0"; } else { s2 = tbZsizeCdouble.Text; }
            tempSTRfordouble = s1 + "," + s2; plateZsize = (double)System.Convert.ToDouble(tempSTRfordouble);

            //-----------------------------------------------------------------------------------
            if (rbJostX0.Checked) { borderCondX0 = 1; } else { borderCondX0 = 2; }
            if (rbJostXa.Checked) { borderCondXa = 1; } else { borderCondXa = 2; }
            if (rbJostY0.Checked) { borderCondY0 = 1; } else { borderCondY0 = 2; }
            if (rbJostYb.Checked) { borderCondYb = 1; } else { borderCondYb = 2; }

            //-----------------------------------------------------------------------------------
            strX = tbX.Text; if (strX.Length == 0) { strX = "0.0"; }
            strY = tbY.Text; if (strY.Length == 0) { strY = "0.0"; }
            strZ = tbZ.Text; if (strZ.Length == 0) { strZ = "0.0"; }
            //-----------------------------------------------------------------------------------
            if (tbColPointsX.Text.Length == 0) { s1 = "0"; } else { s1 = tbColPointsX.Text; }
            tempSTRfordouble = s1; ColPointsX = System.Convert.ToInt32(tempSTRfordouble);

            if (tbColPointsY.Text.Length == 0) { s1 = "0"; } else { s1 = tbColPointsY.Text; }
            tempSTRfordouble = s1; ColPointsY = System.Convert.ToInt32(tempSTRfordouble);

            if (tbDiscrOrtogonalPoints.Text.Length == 0) { s1 = "0"; } else { s1 = tbDiscrOrtogonalPoints.Text; }
            tempSTRfordouble = s1; DiscrOrtogonalPoints = System.Convert.ToInt32(tempSTRfordouble);

            if (rbColPointsXtype1.Checked) { ColPointsXtype = 1; } else { ColPointsXtype = 2; }
            if (rbColPointsYtype1.Checked) { ColPointsYtype = 1; } else { ColPointsYtype = 2; }

            //-----------------------------------------------------------------------------------
            SigmaZZ0 = tbSigmaZZ0.Text; if (SigmaZZ0.Length == 0) { SigmaZZ0 = "0.0"; }
            SigmaZX0 = tbSigmaZX0.Text; if (SigmaZX0.Length == 0) { SigmaZX0 = "0.0"; }
            SigmaZY0 = tbSigmaZY0.Text; if (SigmaZY0.Length == 0) { SigmaZY0 = "0.0"; }
            SigmaZZc = tbSigmaZZc.Text; if (SigmaZZc.Length == 0) { SigmaZZc = "0.0"; }
            SigmaZXc = tbSigmaZXc.Text; if (SigmaZXc.Length == 0) { SigmaZXc = "0.0"; }
            SigmaZYc = tbSigmaZYc.Text; if (SigmaZYc.Length == 0) { SigmaZYc = "0.0"; }
        }

        private bool CheckInitializationCorrect()
        {
            pbEvaluation.Value = 10;
            lEvaluation2.Text = "   ...";
            if ((Ex == 0)||(Ey == 0)||(Ez == 0)||(Gxy == 0)||(Gxz == 0)||(Gyz == 0))
            {
                MessageBox.Show("        ", 
                                "   ",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);

                return false;
            }
            //Vxy, Vxz, Vyx, Vyz, Vzx, Vzy
            if (!(((Vxy > 0) && (Vxy < 0.5)) && ((Vxz > 0) && (Vxz < 0.5)) && ((Vyx > 0) && (Vyx < 0.5))
                   && ((Vyz > 0) && (Vyz < 0.5)) && ((Vzx > 0) && (Vzx < 0.5)) && ((Vzy > 0) && (Vzy < 0.5))))
            {
                MessageBox.Show("       0  0.5",
                                "   ",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);

                return false;
            }

            if ((plateXsize == 0) || (plateYsize == 0) || (plateZsize == 0))
            {
                MessageBox.Show("   ",
                                "   ",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);

                return false;
            }
            //ColPointsX, ColPointsY, DiscrOrtogonalPoints
            if ((ColPointsX < 4) || (ColPointsX > 30) || ( (ColPointsX % 2) == 1 ))
            {
                MessageBox.Show("ʳ        4  30   ",
                                "   ",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);

                return false;
            }
            if ((ColPointsY < 4) || (ColPointsY > 30) || ((ColPointsY % 2) == 1))
            {
                MessageBox.Show("ʳ        4  30   ",
                                "   ",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);

                return false;
            }

            if (DiscrOrtogonalPoints < 10) 
            {
                MessageBox.Show("ʳ      ,  10",
                                "   ",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);

                return false;
            }

            
            return true;
        }

        private void CreateXdimensionColPointsList()
        {
            pbEvaluation.Value = 30;
            lEvaluation2.Text = "      ...";
            //plateXsize, plateYsize
            //ColPointsX, ColPointsY
            //KsiKlist,   TetaPlist
            KsiKlist = new double[ColPointsX];
            TetaPlist = new double[ColPointsY];

            GridPtsXList = new double[ColPointsX];
            GridPtsYList = new double[ColPointsY];

            double currentGridPoint = 0; //  
            GridPtsXList[0] = 0;
            double step = (double)plateXsize / (ColPointsX - 1); //  
            if (ColPointsXtype == 1) //      
            {
                for (int i = 1; i <= ColPointsX - 1; i++)
                {
                    if ((i % 2) == 1)
                    {
                        KsiKlist[i - 1] = currentGridPoint + step * (0.5 - (double)(Math.Sqrt(3) / 6));
                        KsiKlist[i] = currentGridPoint + step * (0.5 + (double)(Math.Sqrt(3) / 6));
                    }
                    currentGridPoint += step;
                    GridPtsXList[i] = currentGridPoint;
                }
            }  else
            {
                for (int i = 1; i <= ColPointsX; i++)
                {
                    KsiKlist[i-1] = currentGridPoint;
                    GridPtsXList[i-1] = currentGridPoint;
                    currentGridPoint += step;
                }
            }
            //------------------------------------
            for (int i = 0; i < ColPointsX; i++)
            {
                GridPtsXList[i] = i * (double)plateXsize / (ColPointsX - 1);
            }
            //------------------------------------------------------------------------------
            currentGridPoint = 0; //  
            GridPtsYList[0] = 0;
            step = (double)plateYsize / (ColPointsY - 1); //  
            if (ColPointsYtype == 1) //      
            {
                for (int i = 1; i <= ColPointsY - 1; i++)
                {
                    if ((i % 2) == 1)
                    {
                        TetaPlist[i - 1] = currentGridPoint + step * (0.5 - (double)(Math.Sqrt(3) / 6));
                        TetaPlist[i] = currentGridPoint + step * (0.5 + (double)(Math.Sqrt(3) / 6));
                    }
                    currentGridPoint += step;
                    GridPtsYList[i] = currentGridPoint;
                }
            }
            else
            {
                for (int i = 1; i <= ColPointsY; i++)
                {
                    TetaPlist[i-1] = currentGridPoint;
                    GridPtsYList[i - 1] = currentGridPoint;
                    currentGridPoint += step;
                }
            }
            //------------------------------------
            for (int i = 0; i < ColPointsY; i++)
            {
                GridPtsYList[i] = i * (double)plateYsize / (ColPointsY - 1);
            }


         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//Ksi.txt"))
            {
                for (int i = 1; i <= ColPointsX; i++)
                {
                    sw.WriteLine("Ksi[" + System.Convert.ToString(i) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KsiKlist[i - 1]), ",", "."));               
                }
                sw.WriteLine("---------------------------------------");
                for (int i = 1; i <= ColPointsY; i++)
                {
                    sw.WriteLine("Teta[" + System.Convert.ToString(i) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(TetaPlist[i - 1]), ",", "."));
                }
            }*/


        }
        //====================================================================================================
        //     ,    
        //   inode  : 1, 2, 3,....  -1, -2, -3,....
        //       [0, plateXsize]  0
        //   : [],   -  ,        
        // (  )
        // inode: 0 .. ColPointsX - 1
        private int DetectRelatIntervX(int inode, double x)
        {
            if ((x < 0) || (x > plateXsize)) { return 0; }
            int absidx = 0; //  ,    (0 .. ColPointsX - 2)

            for (int i = 1; i <= ColPointsX - 1; i++)
            {
                if ((x >= GridPtsXList[i - 1]) && (x <= GridPtsXList[i]))
                {
                    absidx = i - 1;
                }
            }
            if (absidx < inode) { return absidx - inode; }
            else
            { return absidx - inode + 1; }
            return 0;
        }
        
        //  B3i    -   . i -  
        private double B3ix(int i, double x)
        {
            int intvnumber = DetectRelatIntervX(i, x);
            if ((intvnumber == 0) || (intvnumber > 2) || (intvnumber < -2)) { return 0; }

            //   ( )
            double stepx = (double)(plateXsize) / (ColPointsX - 1);

            if (intvnumber == -2)
            {
                //     
                int leftbordidx = i - 2;
                double leftbordistance = x - GridPtsXList[leftbordidx]; 

                //   
                double y = Math.Round((double)leftbordistance / stepx, 10);
                return ((double)1 / 6) * Math.Pow(y, 3);
            }
            if (intvnumber == -1)
            {
                //     
                int leftbordidx = i - 1;
                double leftbordistance = x - GridPtsXList[leftbordidx];

                //   
                double y = Math.Round((double)leftbordistance / stepx,10);
                return ((double)1 / 6) * (-3 * Math.Pow(y, 3) + 3 * Math.Pow(y, 2) + 3 * y + 1);
            }
            if (intvnumber == 1)
            {
                //     
                int leftbordidx = i;
                double leftbordistance = x - GridPtsXList[leftbordidx];

                //   
                double y = Math.Round((double)leftbordistance / stepx,10);
                return ((double)1 / 6) * (3 * Math.Pow(y, 3) - 6 * Math.Pow(y, 2) + 4);
            }
            if (intvnumber == 2)
            {
                //     
                int leftbordidx = i + 1;
                double leftbordistance = x - GridPtsXList[leftbordidx];

                //   
                double y = Math.Round((double)leftbordistance / stepx,10);
                return ((double)1 / 6) *  Math.Pow(1 - y, 3);
            }
            return 0;
        }

        //====================================================================================================
        //     ,    y
        //   inode  : 1, 2, 3,....  -1, -2, -3,....
        //       [0, plateYsize]  0
        //   : [],   -  ,        
        // (  )
        // inode: 0 .. ColPointsY - 1
        private int DetectRelatIntervY(int inode, double y)
        {
            if ((y < 0) || (y > plateYsize)) { return 0; }
            int absidx = 0; //  ,    (0 .. ColPointsY - 2)

            for (int i = 1; i <= ColPointsY - 1; i++)
            {
                if ((y >= GridPtsYList[i - 1]) && (y <= GridPtsYList[i]))
                {
                    absidx = i - 1;
                }
            }
            if (absidx < inode) { return absidx - inode; }
            else
            { return absidx - inode + 1; }
            return 0;
        }

        //  B3i    Y-   y. i -  
        private double B3iy(int i, double y)
        {
            int intvnumber = DetectRelatIntervY(i, y);
            if ((intvnumber == 0) || (intvnumber > 2) || (intvnumber < -2)) { return 0; }

            //   ( )
            double stepy = (double)(plateYsize) / (ColPointsY - 1);

            if (intvnumber == -2)
            {
                //     
                int leftbordidx = i - 2;
                double leftbordistance = y - GridPtsYList[leftbordidx];

                //   
                double z = Math.Round((double)leftbordistance / stepy,10);
                return ((double)1 / 6) * Math.Pow(z, 3);
            }
            if (intvnumber == -1)
            {
                //     
                int leftbordidx = i - 1;
                double leftbordistance = y - GridPtsYList[leftbordidx];

                //   
                double z = Math.Round((double)leftbordistance / stepy,10);
                return ((double)1 / 6) * (-3 * Math.Pow(z, 3) + 3 * Math.Pow(z, 2) + 3 * z + 1);
            }
            if (intvnumber == 1)
            {
                //     
                int leftbordidx = i;
                double leftbordistance = y - GridPtsYList[leftbordidx];

                //   
                double z = Math.Round((double)leftbordistance / stepy,10);
                return ((double)1 / 6) * (3 * Math.Pow(z, 3) - 6 * Math.Pow(z, 2) + 4);
            }
            if (intvnumber == 2)
            {
                //     
                int leftbordidx = i + 1;
                double leftbordistance = y - GridPtsYList[leftbordidx];

                //   
                double z = Math.Round((double)leftbordistance / stepy, 10);
                return ((double)1 / 6) * Math.Pow(1 - z, 3);
            }
            return 0;
        }
/*
        string SigmaZZ0, SigmaZX0, SigmaZY0;                        //   -
        string SigmaZZc, SigmaZXc, SigmaZYc;                        //    
                                                                    //Mathematica 6

        double[,] SigmaZZ0Matrix;                                    //   -
        double[,] SigmaZX0Matrix;                                    //,   -
        double[,] SigmaZY0Matrix;                                    //    -
        double[,] SigmaZZcMatrix;                                    //,        -
        double[,] SigmaZXcMatrix;                                    //  x, y      -
        double[,] SigmaZYcMatrix;                                    //--------------------------
*/

        //        
        private string DotReplace(string str)
        {
            string tempstr = str;
            for (int i = 0; i < tempstr.Length; i++)
            {
                if (tempstr[i] == '.')
                {
                   // tempstr.Remove(i, 1);
                   // tempstr.Insert(i, ','.ToString());
                    StringBuilder builder = new StringBuilder(tempstr);
                    builder[i] = ',';
                    tempstr = builder.ToString();
                }
            }
            return tempstr;
        }

        private string CommaReplace(string str)
        {
            string tempstr = str;
            for (int i = 0; i < tempstr.Length; i++)
            {
                if (tempstr[i] == ',')
                {
                    // tempstr.Remove(i, 1);
                    // tempstr.Insert(i, ','.ToString());
                    StringBuilder builder = new StringBuilder(tempstr);
                    builder[i] = '.';
                    tempstr = builder.ToString();
                }
            }
            return tempstr;
        }

        private string StrIntToDouble(string value)
        {
            string tempstr = value;
            bool ifreal = false;
            for (int i = 0; i < tempstr.Length; i++)
            {
                if ((tempstr[i] == '.') || (tempstr[i] == ','))
                {
                    ifreal = true;
                }
            }
            if (!ifreal)
            {
                tempstr += ".0";
            }
            return tempstr;
        }

        private bool CreateZborderExternalForsesMatrix()
        {
            pbEvaluation.Value = 35;
            lEvaluation2.Text = "ϳ      ...";
            SigmaZZ0Matrix = new double[ColPointsX, ColPointsY];
            SigmaZX0Matrix = new double[ColPointsX, ColPointsY];
            SigmaZY0Matrix = new double[ColPointsX, ColPointsY];

            SigmaZZcMatrix = new double[ColPointsX, ColPointsY];
            SigmaZXcMatrix = new double[ColPointsX, ColPointsY];
            SigmaZYcMatrix = new double[ColPointsX, ColPointsY];

            //  -----------------------
            kernelLink = MathLinkFactory.CreateKernelLink();
            kernelLink.WaitAndDiscardAnswer();

            mathKernel = new MathKernel();
            mathKernel.Connect();
            

            for (int i = 0; i < ColPointsX; i++)
            {
                for (int j = 0; j < ColPointsY; j++)
                {
                    StringBuilder code = new StringBuilder();
                    string tempstrx = StrIntToDouble(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString((double)(KsiKlist[i])), ",", "."));
                    string tempstry = StrIntToDouble(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString((double)(TetaPlist[j])), ",", "."));
                    code.AppendLine(" x = " + tempstrx + ";");
                    code.AppendLine(" y = " + tempstry + ";");
                    code.AppendLine(" zx0 = " + SigmaZX0 + ";");
                    code.AppendLine(" zy0 = " + SigmaZY0 + ";");
                    code.AppendLine(" zz0 = " + SigmaZZ0 + ";");
                    code.AppendLine(" zxc = " + SigmaZXc + ";");
                    code.AppendLine(" zyc = " + SigmaZYc + ";");
                    code.AppendLine(" zzc = " + SigmaZZc + ";");
                    
                    code.AppendLine("strzx0 = OpenWrite[\"C:\\SickWallOrtotrPlate\\ZborderConditionsZX0.txt\"]" + ";");
                    code.AppendLine("strzy0 = OpenWrite[\"C:\\SickWallOrtotrPlate\\ZborderConditionsZY0.txt\"]" + ";");
                    code.AppendLine("strzz0 = OpenWrite[\"C:\\SickWallOrtotrPlate\\ZborderConditionsZZ0.txt\"]" + ";");
                    code.AppendLine("strzxc = OpenWrite[\"C:\\SickWallOrtotrPlate\\ZborderConditionsZXc.txt\"]" + ";");
                    code.AppendLine("strzyc = OpenWrite[\"C:\\SickWallOrtotrPlate\\ZborderConditionsZYc.txt\"]" + ";");
                    code.AppendLine("strzzc = OpenWrite[\"C:\\SickWallOrtotrPlate\\ZborderConditionsZZc.txt\"]" + ";");

                    code.AppendLine("Write[strzx0, zx0]" + ";");
                    code.AppendLine("Write[strzy0, zy0]" + ";");
                    code.AppendLine("Write[strzz0, zz0]" + ";");
                    code.AppendLine("Write[strzxc, zxc]" + ";");
                    code.AppendLine("Write[strzyc, zyc]" + ";");
                    code.AppendLine("Write[strzzc, zzc]" + ";");

                    code.AppendLine("Close[strzx0]" + ";");
                    code.AppendLine("Close[strzy0]" + ";");
                    code.AppendLine("Close[strzz0]" + ";");
                    code.AppendLine("Close[strzxc]" + ";");
                    code.AppendLine("Close[strzyc]" + ";");
                    code.AppendLine("Close[strzzc]" + ";");

                    mathKernel.Compute(code.ToString());
                    

                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//ZborderConditionsZX0.txt"))
                    {
                        string strvalue = sr.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2);
                            SigmaZX0Matrix[i, j] = fvalue;
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     =>    SigmaZX0",
                                "      ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }

                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//ZborderConditionsZY0.txt"))
                    {
                        string strvalue = sr.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2);
                            SigmaZY0Matrix[i, j] = fvalue;
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     =>    SigmaZY0",
                                "      ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }

                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//ZborderConditionsZZ0.txt"))
                    {
                        string strvalue = sr.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2); 
                            SigmaZZ0Matrix[i, j] = fvalue;
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     =>    SigmaZZ0",
                                "      ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }

                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//ZborderConditionsZXc.txt"))
                    {
                        string strvalue = sr.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2); 
                            SigmaZXcMatrix[i, j] = fvalue;
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     =>    SigmaZXc",
                                "      ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }

                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//ZborderConditionsZYc.txt"))
                    {
                        string strvalue = sr.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2); 
                            SigmaZYcMatrix[i, j] = fvalue;
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     =>    SigmaZYc",
                                "      ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }

                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//ZborderConditionsZZc.txt"))
                    {
                        string strvalue = sr.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2); 
                            SigmaZZcMatrix[i, j] = fvalue;
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     =>    SigmaZZc",
                                "      ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }
                    
                }
            }
            
            mathKernel.Dispose();
            kernelLink.Close();
            return true;
        }

        private string FortranSyntaxReplace(string str)
        {
            string tempstr = str;
            for (int i = 0; i < tempstr.Length; i++)
            {
                if (tempstr[i] == '[')
                {
                    StringBuilder builder = new StringBuilder(tempstr);
                    builder[i] = '(';
                    tempstr = builder.ToString();
                }
                if (tempstr[i] == ']')
                {
                    StringBuilder builder = new StringBuilder(tempstr);
                    builder[i] = ')';
                    tempstr = builder.ToString();
                }
                if (tempstr[i] == 'z')
                {
                    StringBuilder builder = new StringBuilder(tempstr);
                    builder[i] = 'x';
                    tempstr = builder.ToString();
                }
            }
            return tempstr;
        }


        private bool CreateXYZMatrix()
        {
            pbEvaluation.Value = 40;
            lEvaluation2.Text = "ϳ      ...";

            XMatrix = new string[ColPointsX, ColPointsY];
            YMatrix = new string[ColPointsX, ColPointsY];
            ZMatrix = new string[ColPointsX, ColPointsY];

            //  -----------------------
            kernelLink = MathLinkFactory.CreateKernelLink();
            kernelLink.WaitAndDiscardAnswer();

            mathKernel = new MathKernel();
            mathKernel.Connect();

            //------------------------------------------
            double delta = Alpha11 * (Alpha22 * Alpha33 - Alpha23 * Alpha23) -
                           Alpha12 * (Alpha12 * Alpha33 - Alpha13 * Alpha23) +
                           Alpha13 * (Alpha12 * Alpha23 - Alpha13 * Alpha22);

            double d1 = -1 * Alpha55;
            double d2 = -1 * Alpha44;
            double d3 = (double)(-1 * delta) / (Alpha11 * Alpha22 - Alpha12 * Alpha12);

            strX = CommaReplace(System.Convert.ToString(d1)) + " * ( " + strX + " ) ";
            strY = CommaReplace(System.Convert.ToString(d2)) + " * ( " + strY + " ) ";
            strZ = CommaReplace(System.Convert.ToString(d3)) + " * ( " + strZ + " ) ";
            //------------------------------------------


            for (int i = 0; i < ColPointsX; i++)
            {
                for (int j = 0; j < ColPointsY; j++)
                {
                    StringBuilder code = new StringBuilder();
                    code.AppendLine(" x = " + StrIntToDouble(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString((double)(KsiKlist[i])), ",", ".") + ";"));
                    code.AppendLine(" y = " + StrIntToDouble(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString((double)(TetaPlist[j])), ",", ".") + ";"));
                    code.AppendLine(" xmtr = " + strX + ";");
                    code.AppendLine(" ymtr = " + strY + ";");
                    code.AppendLine(" zmtr = " + strZ + ";");


                    code.AppendLine("strxmtr = OpenWrite[\"C:\\SickWallOrtotrPlate\\Xmtr.txt\"]" + ";");
                    code.AppendLine("strymtr = OpenWrite[\"C:\\SickWallOrtotrPlate\\Ymtr.txt\"]" + ";");
                    code.AppendLine("strzmtr = OpenWrite[\"C:\\SickWallOrtotrPlate\\Zmtr.txt\"]" + ";");

                    code.AppendLine("Write[strxmtr, xmtr]" + ";");
                    code.AppendLine("Write[strymtr, ymtr]" + ";");
                    code.AppendLine("Write[strzmtr, zmtr]" + ";");

                    code.AppendLine("Close[strxmtr]" + ";");
                    code.AppendLine("Close[strymtr]" + ";");
                    code.AppendLine("Close[strzmtr]" + ";");

                    mathKernel.Compute(code.ToString());


                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//Xmtr.txt"))
                    {
                        XMatrix[i,j] = sr.ReadLine();
                        
                        
                    }

                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//Ymtr.txt"))
                    {
                        YMatrix[i, j] = sr.ReadLine();

                        
                    }

                    using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//Zmtr.txt"))
                    {
                        ZMatrix[i, j] = sr.ReadLine();

                       
                    }


                }
            }

            for (int i = 0; i < ColPointsX; i++)
            {
                for (int j = 0; j < ColPointsY; j++)
                {
                    //   ------------------------
                    StringBuilder code2 = new StringBuilder();
                    code2.AppendLine(" z = 1; ");
                    code2.AppendLine(" check = " + XMatrix[i, j] + ";");
                    code2.AppendLine(" fcheck = OpenWrite[\"C:\\SickWallOrtotrPlate\\check.txt\"]" + ";");
                    code2.AppendLine(" Write[fcheck, check] " + ";");
                    code2.AppendLine(" Close[fcheck]" + ";");
                    mathKernel.Compute(code2.ToString());

                    using (StreamReader sr2 = new StreamReader("C://SickWallOrtotrPlate//check.txt"))
                    {
                        string strvalue = sr2.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2);
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     X",
                                "    ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }
                    // ----------------------------------------------

                    //   ------------------------
                    code2 = new StringBuilder();
                    code2.AppendLine(" z = 1; ");
                    code2.AppendLine(" check = " + YMatrix[i, j] + ";");
                    code2.AppendLine(" fcheck = OpenWrite[\"C:\\SickWallOrtotrPlate\\check.txt\"]" + ";");
                    code2.AppendLine(" Write[fcheck, check] " + ";");
                    code2.AppendLine(" Close[fcheck]" + ";");
                    mathKernel.Compute(code2.ToString());

                    using (StreamReader sr2 = new StreamReader("C://SickWallOrtotrPlate//check.txt"))
                    {
                        string strvalue = sr2.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2);
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     Y",
                                "    ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }
                    // ----------------------------------------------

                    //   ------------------------
                    code2 = new StringBuilder();
                    code2.AppendLine(" z = 1; ");
                    code2.AppendLine(" check = " + ZMatrix[i, j] + ";");
                    code2.AppendLine(" fcheck = OpenWrite[\"C:\\SickWallOrtotrPlate\\check.txt\"]" + ";");
                    code2.AppendLine(" Write[fcheck, check] " + ";");
                    code2.AppendLine(" Close[fcheck]" + ";");
                    mathKernel.Compute(code2.ToString());

                    using (StreamReader sr2 = new StreamReader("C://SickWallOrtotrPlate//check.txt"))
                    {
                        string strvalue = sr2.ReadLine();
                        string strvalue2 = DotReplace(strvalue);
                        try
                        {
                            double fvalue = System.Convert.ToDouble(strvalue2);
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("     Z",
                                "    ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                            mathKernel.Dispose();
                            kernelLink.Close();
                            return false;
                        }
                    }
                    // ----------------------------------------------

                }

            }
            //--------------     ---------------------------
            //---- [ => (,    ] => ),    z => x --------------------------------------
            for (int i = 0; i < ColPointsX; i++)
            {
                for (int j = 0; j < ColPointsY; j++)
                {
                    XMatrix[i, j] = FortranSyntaxReplace(XMatrix[i, j]);
                    YMatrix[i, j] = FortranSyntaxReplace(YMatrix[i, j]);
                    ZMatrix[i, j] = FortranSyntaxReplace(ZMatrix[i, j]);
                }
            }

            mathKernel.Dispose();
            kernelLink.Close();
            return true;
        }

        private void AlphaIJInitialization()
        {
            pbEvaluation.Value = 15;
            lEvaluation2.Text = "  Alpha_ij...";
            Alpha11 = (double)(1/Ex);
            Alpha22 = (double)(1/Ey);
            Alpha33 = (double)(1/Ez);
            Alpha12 = (double)(-1*Vxy/Ey);
            Alpha13 = (double)(-1*Vzx/Ex);
            Alpha23 = (double)(-1*Vyz/Ez);
            Alpha44 = (double)(1/Gyz);
            Alpha55 = (double)(1/Gxz);
            Alpha66 = (double)(1/Gxy);



        }

        private void LiambdaIJInitialization()
        {
            pbEvaluation.Value = 20;
            lEvaluation2.Text = "  Liambda_ij...";
            double delta = Alpha11*(Alpha22*Alpha33 - Alpha23*Alpha23) -
                           Alpha12*(Alpha12*Alpha33 - Alpha13*Alpha23) +
                           Alpha13*(Alpha12*Alpha23 - Alpha13*Alpha22);

            Liambda11 = (double)(Alpha22*Alpha33 - Alpha23*Alpha23)/(delta);
            Liambda22 = (double)(Alpha11*Alpha33 - Alpha13*Alpha13)/(delta);
            Liambda33 = (double)(Alpha11*Alpha22 - Alpha12*Alpha12)/(delta);
            Liambda12 = (double)(Alpha13*Alpha23 - Alpha12*Alpha33)/(delta);
            Liambda13 = (double)(Alpha12*Alpha23 - Alpha13*Alpha22)/(delta);
            Liambda23 = (double)(Alpha12*Alpha13 - Alpha11*Alpha23)/(delta);
            Liambda44 = (double)1/Alpha44;
            Liambda55 = (double)1/Alpha55;
            Liambda66 = (double)1/Alpha66;
        }

        private void abciInitialization()
        {
            pbEvaluation.Value = 25;
            lEvaluation2.Text = "  a_i, b_i, c_i...";

            double delta = Alpha11*(Alpha22*Alpha33 - Alpha23*Alpha23) -
                           Alpha12*(Alpha12*Alpha33 - Alpha13*Alpha23) +
                           Alpha13*(Alpha12*Alpha23 - Alpha13*Alpha22);
            a1 = (double)(-1*Alpha55*(double)((Alpha22*Alpha33 - Alpha23*Alpha23)/delta));
            b1 = (double)(-1*(double)(Alpha55/Alpha66));
            c1 = (double)(-1*Alpha55*((double)((Alpha13*Alpha23 - Alpha12*Alpha33)/delta) + (double)(1/Alpha66)));
            d1 = (double)(-1*(1 + Alpha55*((double)((Alpha12*Alpha23 - Alpha13*Alpha22)/delta))));
            
            a2 = (double)(-1*Alpha44*(double)((Alpha11*Alpha33 - Alpha13*Alpha13)/delta));
            b2 = (double)(-1*(double)(Alpha44/Alpha66));
            c2 = (double)(-1*Alpha44*((double)((Alpha13*Alpha23 - Alpha12*Alpha33)/delta) + (double)(1/Alpha66)));
            d2 = (double)(-1*(1 + Alpha44*((double)((Alpha12*Alpha13 - Alpha11*Alpha23)/delta))));
            
            a3 = (double)(-1*(double)((delta + Alpha55*Alpha12*Alpha23 - Alpha13*Alpha22*Alpha55)/(Alpha11*Alpha22 - Alpha12*Alpha12)));
            b3 = (double)(-1*(double)((delta + Alpha44*Alpha12*Alpha13 - Alpha11*Alpha23*Alpha44)/(Alpha11*Alpha22 - Alpha12*Alpha12)));
            c3 = (double)(-1*(double)((delta)/(Alpha55*(Alpha11*Alpha22 - Alpha12*Alpha12))));
            d3 = (double)(-1*(double)((delta)/(Alpha44*(Alpha11*Alpha22 - Alpha12*Alpha12))));
        }
        
        //        
        private void f0Initialization()
        {
            pbEvaluation.Value = 45;
            lEvaluation2.Text = "        z = 0";
            f0 = new double[3 * ColPointsX * ColPointsY];
            for (int i = 0; i < ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX; j++)
                {
                    f0[i * ColPointsX + j] = SigmaZZ0Matrix[j, i];
                    f0[ColPointsX * ColPointsY + i * ColPointsX + j] = SigmaZX0Matrix[j, i];
                    f0[2 * ColPointsX * ColPointsY + i * ColPointsX + j] = SigmaZY0Matrix[j, i];
                }
            }
            //double ddd = 0;
        }

        //        
        private void fcInitialization()
        {
            pbEvaluation.Value = 50;
            lEvaluation2.Text = "        z = c";
            
            fc = new double[3 * ColPointsX * ColPointsY];
            for (int i = 0; i < ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX; j++)
                {
                    fc[i * ColPointsX + j] = SigmaZZcMatrix[j, i];
                    fc[ColPointsX * ColPointsY + i * ColPointsX + j] = SigmaZXcMatrix[j, i];
                    fc[2 * ColPointsX * ColPointsY + i * ColPointsX + j] = SigmaZYcMatrix[j, i];
                }
            }
            //double ddd = 0;
        }

        //     
        private void fInitialization()
        {
            pbEvaluation.Value = 55;
            lEvaluation2.Text = "    ";

          //  double delta = Alpha11 * (Alpha22 * Alpha33 - Alpha23 * Alpha23) -
          //                 Alpha12 * (Alpha12 * Alpha33 - Alpha13 * Alpha23) +
          //                 Alpha13 * (Alpha12 * Alpha23 - Alpha13 * Alpha22);

          //  double d1 = -1 * Alpha55;
          //  double d2 = -1 * Alpha44;
          //  double d3 = (double)(-1 * delta) / (Alpha11 * Alpha22 - Alpha12 * Alpha12);

            f = new string[6 * ColPointsX * ColPointsY];
            for (int i = 0; i < ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX; j++)
                {
                    
                    f[                              i * ColPointsX + j] = "0";
                    f[    ColPointsX * ColPointsY + i * ColPointsX + j] = XMatrix[j, i];
                    f[2 * ColPointsX * ColPointsY + i * ColPointsX + j] = "0";
                    f[3 * ColPointsX * ColPointsY + i * ColPointsX + j] = YMatrix[j, i];
                    f[4 * ColPointsX * ColPointsY + i * ColPointsX + j] = "0";
                    f[5 * ColPointsX * ColPointsY + i * ColPointsX + j] = ZMatrix[j, i];
                }
            }
            //double ddd = 0;
        }

        //        
        private bool betaCoefDetecting()
        {
            pbEvaluation.Value = 60;
            lEvaluation2.Text = "      ";
            //Beta13, Beta23, Beta33
            double[,] AlphaMatrix = new double[3, 3];
            AlphaMatrix[0, 0] = Alpha11;
            AlphaMatrix[0, 1] = Alpha12;
            AlphaMatrix[0, 2] = Alpha13;
            AlphaMatrix[1, 0] = Alpha12;
            AlphaMatrix[1, 1] = Alpha22;
            AlphaMatrix[1, 2] = Alpha23;
            AlphaMatrix[2, 0] = Alpha13;
            AlphaMatrix[2, 1] = Alpha23;
            AlphaMatrix[2, 2] = Alpha33;

            double det = AlphaMatrix[0, 0] * (AlphaMatrix[1, 1] * AlphaMatrix[2, 2] - AlphaMatrix[1, 2] * AlphaMatrix[2, 1]) -
                     AlphaMatrix[0, 1] * (AlphaMatrix[1, 0] * AlphaMatrix[2, 2] - AlphaMatrix[2, 0] * AlphaMatrix[1, 2]) +
                     AlphaMatrix[0, 2] * (AlphaMatrix[1, 0] * AlphaMatrix[2, 1] - AlphaMatrix[2, 0] * AlphaMatrix[1, 1]);

            if (det == 0)
            {
                MessageBox.Show("       ",
                                "    :  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            double A13, A23, A33;
            A13 = AlphaMatrix[0, 1] * AlphaMatrix[1, 2] - AlphaMatrix[1, 1] * AlphaMatrix[0, 2];
            A23 = -1*(AlphaMatrix[0, 0] * AlphaMatrix[1, 2] - AlphaMatrix[1, 0] * AlphaMatrix[0, 2]);
            A33 = AlphaMatrix[0, 0] * AlphaMatrix[1, 1] - AlphaMatrix[1, 0] * AlphaMatrix[0, 1];

            Beta13 = (double)A13 / det;
            Beta23 = (double)A23 / det;
            Beta33 = (double)A33 / det;

            double delta = Alpha11 * (Alpha22 * Alpha33 - Alpha23 * Alpha23) -
                           Alpha12 * (Alpha12 * Alpha33 - Alpha13 * Alpha23) +
                           Alpha13 * (Alpha12 * Alpha23 - Alpha13 * Alpha22);


          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//Constants.txt"))
            {
                sw.WriteLine("Ex = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Ex), ",", "."));
                sw.WriteLine("Ey = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Ey), ",", "."));
                sw.WriteLine("Ez = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Ez), ",", "."));

                sw.WriteLine("Vxy = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Vxy), ",", "."));
                sw.WriteLine("Vzx = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Vzx), ",", "."));
                sw.WriteLine("Vyz = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Vyz), ",", "."));

                sw.WriteLine("Gyz = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Gyz), ",", "."));
                sw.WriteLine("Gxz = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Gxz), ",", "."));
                sw.WriteLine("Gxy = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Gxy), ",", "."));

                //-------------------

                sw.WriteLine("Alpha11 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha11), ",", "."));
                sw.WriteLine("Alpha22 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha22), ",", "."));
                sw.WriteLine("Alpha33 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha33), ",", "."));

                sw.WriteLine("Alpha12 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha12), ",", "."));
                sw.WriteLine("Alpha13 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha13), ",", "."));
                sw.WriteLine("Alpha23 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha23), ",", "."));

                sw.WriteLine("Alpha44 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha44), ",", "."));
                sw.WriteLine("Alpha55 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha55), ",", "."));
                sw.WriteLine("Alpha66 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Alpha66), ",", "."));



                sw.WriteLine("delta = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(delta), ",", "."));

                sw.WriteLine("a1 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(a1), ",", "."));
                sw.WriteLine("b1 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(b1), ",", "."));
                sw.WriteLine("c1 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(c1), ",", "."));
                sw.WriteLine("d1 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(d1), ",", "."));

                sw.WriteLine("a2 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(a2), ",", "."));
                sw.WriteLine("b2 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(b2), ",", "."));
                sw.WriteLine("c2 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(c2), ",", "."));
                sw.WriteLine("d2 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(d2), ",", "."));

                sw.WriteLine("a3 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(a3), ",", "."));
                sw.WriteLine("b3 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(b3), ",", "."));
                sw.WriteLine("c3 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(c3), ",", "."));
                sw.WriteLine("d3 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(d3), ",", "."));

                sw.WriteLine("Liambda44 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Liambda44), ",", "."));
                sw.WriteLine("Liambda55 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Liambda55), ",", "."));
                sw.WriteLine("Liambda66 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Liambda66), ",", "."));

                sw.WriteLine("Beta13 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Beta13), ",", "."));
                sw.WriteLine("Beta23 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Beta23), ",", "."));
                sw.WriteLine("Beta33 = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Beta33), ",", "."));

            }*/



            return true;
        }
//=====================================================================================================================
    // -------------------    -    -------------------------------------
        //====================================================================================
        // :  i, node_index = 0 ... ColPoints - 1 --------------------------------------- 
        //   B3     -----------------------------------
        // i -  , node_index -    -----------------------------
        private double B3iNet(int i, int node_index)  
        {
            
            if ( node_index <= i - 2) { return 0; }
            if ( node_index == i - 1) { return (double)1/6; }
            if ( node_index == i    ) { return (double)4/6; }
            if ( node_index == i + 1) { return (double)1/6; }
            if ( node_index >= i + 2) { return 0; }
            return 0;
        }

        //    B3    
        // i -  , node_index -   , h -   
        private double B3iShtrixNet(int i, int node_index, double h)
        {
            if (h == 0)
            {
                MessageBox.Show("    ",
                                "      B3 ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 0;
            }

            if (node_index <= i - 2) { return 0; }
            if (node_index == i - 1) { return (double)1/(2*h); }
            if (node_index == i)     { return 0; }
            if (node_index == i + 1) { return (double)(-1)/(2 * h); }
            if (node_index >= i + 2) { return 0; }
            return 0;
        }

        //     B3    
        // i -  , node_index -   , h -   
        private double B3i2ShtrixNet(int i, int node_index, double h)
        {
            if (h == 0)
            {
                MessageBox.Show("    ",
                                "       B3 ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 0;
            }

            if (node_index <= i - 2) { return 0; }
            if (node_index == i - 1) { return (double)1 / (h * h); }
            if (node_index == i)     { return (double)(-2) / (h * h); }
            if (node_index == i + 1) { return (double)1 / (h * h); }
            if (node_index >= i + 2) { return 0; }
            return 0;
        }
//=====================================================================================================================
    // -------------------    -    ---------------------------
        //====================================================================================
        // :  i, node_index = 0 ... ColPoints - 1 --------------------------------------- 
        //   B3     -----------------------------------
        // i -  , node_index -    -----------------------------
        private double B3i(int i, int node_index)
        {

            if (i % 2 == 0)
            {
                if (node_index == i - 2)
                {
                    return ((double)1 / 6) * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 3);
                }

                if (node_index == i - 1)
                {
                    return ((double)1 / 6) * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 3);
                }

                //-----------------------------------------------------------------------------------------
                if (node_index == i)
                {
                    return ((double)1 / 6) * (-3 * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 3) + 3 * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 2)
                            + 3 * (0.5 + (double)Math.Sqrt(3) / 6) + 1);
                }

                if (node_index == i + 1)
                {
                    return ((double)1 / 6) * (-3 * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 3) + 3 * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 2)
                            + 3 * (0.5 - (double)Math.Sqrt(3) / 6) + 1);
                }

            }

//========================================================================================================================

            if ((i % 2 == 1)||(i == -1))
            {
                if (node_index == i - 1)
                {
                    return ((double)1 / 6) * (-3 * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 3) + 3 * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 2)
                            + 3 * (0.5 - (double)Math.Sqrt(3) / 6) + 1);
                }

                if (node_index == i)
                {
                    return ((double)1 / 6) * (-3 * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 3) + 3 * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 2)
                            + 3 * (0.5 + (double)Math.Sqrt(3) / 6) + 1);
                }

                //-----------------------------------------------------------------------------------------
                if (node_index == i + 1)
                {
                    return ((double)1 / 6) * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 3);
                }

                if (node_index == i + 2)
                {
                    return ((double)1 / 6) * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 3);
                }

            }

            return 0;
        }

        //    B3    
        // i -  , node_index -   , h -   
        private double B3iShtrix(int i, int node_index, double h)
        {
            if (h == 0)
            {
                MessageBox.Show("    ",
                                "      B3 ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 0;
            }

            if (i % 2 == 0)
            {
                if (node_index == i - 2)
                {
                    return ((double)1 / (2 * h)) * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 2);
                }

                if (node_index == i - 1)
                {
                    return ((double)1 / (2 * h)) * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 2);
                }

                //-----------------------------------------------------------------------------------------
                if (node_index == i)
                {
                    return ((double)1 / (6 * h)) * (9 * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 2) - 12 * (0.5 - (double)Math.Sqrt(3) / 6));
                }

                if (node_index == i + 1)
                {
                    return ((double)1 / (6 * h)) * (9 * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 2) - 12 * (0.5 + (double)Math.Sqrt(3) / 6));
                }

            }

            //========================================================================================================================

            if ((i % 2 == 1) || (i == -1))
            {
                if (node_index == i - 1)
                {
                    return ((double)1 / (6 * h)) * (-9 * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 2) + 6 * (0.5 - (double)Math.Sqrt(3) / 6) + 3);
                }

                if (node_index == i)
                {
                    return ((double)1 / (6 * h)) * (-9 * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 2) + 6 * (0.5 + (double)Math.Sqrt(3) / 6) + 3);
                }

                //-----------------------------------------------------------------------------------------
                if (node_index == i + 1)
                {
                    return ((double)-1 / (2 * h)) * Math.Pow((0.5 + (double)Math.Sqrt(3) / 6), 2);
                }

                if (node_index == i + 2)
                {
                    return ((double)-1 / (2 * h)) * Math.Pow((0.5 - (double)Math.Sqrt(3) / 6), 2);
                }

            }

            return 0;
        }

        //     B3    
        // i -  , node_index -   , h -   
        private double B3i2Shtrix(int i, int node_index, double h)
        {
            if (h == 0)
            {
                MessageBox.Show("    ",
                                "       B3 ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 0;
            }

            if (i % 2 == 0)
            {
                if (node_index == i - 2)
                {
                    return ((double)1 / (h * h)) * (0.5 - (double)Math.Sqrt(3) / 6);
                }

                if (node_index == i - 1)
                {
                    return ((double)1 / (h * h)) * (0.5 + (double)Math.Sqrt(3) / 6);
                }

                //-----------------------------------------------------------------------------------------
                if (node_index == i)
                {
                    return ((double)1 / (h * h)) * (-3 * (0.5 + (double)Math.Sqrt(3) / 6) + 1);
                }

                if (node_index == i + 1)
                {
                    return ((double)1 / (h * h)) * (-3 * (0.5 - (double)Math.Sqrt(3) / 6) + 1);
                }

            }

            //========================================================================================================================

            if ((i % 2 == 1) || (i == -1))
            {
                if (node_index == i - 1)
                {
                    return ((double)1 / (h * h)) * (-3 * (0.5 - (double)Math.Sqrt(3) / 6) + 1);
                }

                if (node_index == i)
                {
                    return ((double)1 / (h * h)) * (-3 * (0.5 + (double)Math.Sqrt(3) / 6) + 1);
                }

                //-----------------------------------------------------------------------------------------
                if (node_index == i + 1)
                {
                    return ((double)1 / (h * h)) * (0.5 + (double)Math.Sqrt(3) / 6);
                }

                if (node_index == i + 2)
                {
                    return ((double)1 / (h * h)) * (0.5 - (double)Math.Sqrt(3) / 6);
                }

            }

            return 0;

        }
//=====================================================================================================================




        // fi, ksi matrix create!   <==
        private void BetaSplinesCoeffGeneration()
        {
            pbEvaluation.Value = 65;
            lEvaluation2.Text = "ϳ   B   ...";
            //double Alpha11aFi, Alpha12aFi, Alpha13aFi, Alpha21aFi, Alpha22aFi, Alpha23aFi;
            //double Beta11aFi, Beta12aFi, Beta13aFi, Beta21aFi, Beta22aFi, Beta23aFi;

            //double Alpha11aKsi, Alpha12aKsi, Alpha13aKsi, Alpha21aKsi, Alpha22aKsi, Alpha23aKsi;
            //double Beta11aKsi, Beta12aKsi, Beta13aKsi, Beta21aKsi, Beta22aKsi, Beta23aKsi;
            if (rbJostX0.Checked)
            {
                Alpha11uFi = -4;    Alpha11vFi = -4;     Alpha11wFi = -4;
                Alpha12uFi = 1;     Alpha12vFi = 1;      Alpha12wFi = 1;
                Alpha13uFi = 0;     Alpha13vFi = 0;      Alpha13wFi = 0;

                Alpha21uFi = 1;     Alpha21vFi = 1;      Alpha21wFi = 1;
                Alpha22uFi = -0.5;  Alpha22vFi = -0.5;   Alpha22wFi = -0.5;
                Alpha23uFi = 1;     Alpha23vFi = 1;      Alpha23wFi = 1;
            }
            else
            {
                Alpha11uFi = 0;  Alpha11vFi = -4; Alpha11wFi = -4;
                Alpha12uFi = 1;  Alpha12vFi = 1;  Alpha12wFi = 1;
                Alpha13uFi = 0;  Alpha13vFi = 0;  Alpha13wFi = 0;

                Alpha21uFi = 1;    Alpha21vFi = 1;    Alpha21wFi = 1;
                Alpha22uFi = -0.5; Alpha22vFi = -0.5; Alpha22wFi = -0.5;
                Alpha23uFi = 1;    Alpha23vFi = 1;    Alpha23wFi = 1;
            }

            if (rbJostXa.Checked)
            {
                Beta11uFi = 0; Beta11vFi = 0; Beta11wFi = 0;
                Beta12uFi = 1; Beta12vFi = 1; Beta12wFi = 1;
                Beta13uFi = -4; Beta13vFi = -4; Beta13wFi = -4;

                Beta21uFi = 1; Beta21vFi = 1; Beta21wFi = 1;
                Beta22uFi = -0.5; Beta22vFi = -0.5; Beta22wFi = -0.5;
                Beta23uFi = 1; Beta23vFi = 1; Beta23wFi = 1;
            }
            else
            {
                Beta11uFi = 0; Beta11vFi = 0; Beta11wFi = 0;
                Beta12uFi = 1; Beta12vFi = 1; Beta12wFi = 1;
                Beta13uFi = 0; Beta13vFi = -4; Beta13wFi = -4;

                Beta21uFi = 1; Beta21vFi = 1; Beta21wFi = 1;
                Beta22uFi = -0.5; Beta22vFi = -0.5; Beta22wFi = -0.5;
                Beta23uFi = 1; Beta23vFi = 1; Beta23wFi = 1;
            }


            if (rbJostY0.Checked)
            {
                Alpha11uKsi = -4; Alpha11vKsi = -4; Alpha11wKsi = -4;
                Alpha12uKsi = 1; Alpha12vKsi = 1; Alpha12wKsi = 1;
                Alpha13uKsi = 0; Alpha13vKsi = 0; Alpha13wKsi = 0;

                Alpha21uKsi = 1; Alpha21vKsi = 1; Alpha21wKsi = 1;
                Alpha22uKsi = -0.5; Alpha22vKsi = -0.5; Alpha22wKsi = -0.5;
                Alpha23uKsi = 1; Alpha23vKsi = 1; Alpha23wKsi = 1;
            }
            else
            {
                Alpha11uKsi = -4; Alpha11vKsi = 0; Alpha11wKsi = -4;
                Alpha12uKsi = 1; Alpha12vKsi = 1; Alpha12wKsi = 1;
                Alpha13uKsi = 0; Alpha13vKsi = 0; Alpha13wKsi = 0;

                Alpha21uKsi = 1; Alpha21vKsi = 1; Alpha21wKsi = 1;
                Alpha22uKsi = -0.5; Alpha22vKsi = -0.5; Alpha22wKsi = -0.5;
                Alpha23uKsi = 1; Alpha23vKsi = 1; Alpha23wKsi = 1;
            }

            if (rbJostYb.Checked)
            {
                Beta11uKsi = 0; Beta11vKsi = 0; Beta11wKsi = 0;
                Beta12uKsi = 1; Beta12vKsi = 1; Beta12wKsi = 1;
                Beta13uKsi = -4; Beta13vKsi = -4; Beta13wKsi = -4;

                Beta21uKsi = 1; Beta21vKsi = 1; Beta21wKsi = 1;
                Beta22uKsi = -0.5; Beta22vKsi = -0.5; Beta22wKsi = -0.5;
                Beta23uKsi = 1; Beta23vKsi = 1; Beta23wKsi = 1;
            }
            else
            {
                Beta11uKsi = 0; Beta11vKsi = 0; Beta11wKsi = 0;
                Beta12uKsi = 1; Beta12vKsi = 1; Beta12wKsi = 1;
                Beta13uKsi = -4; Beta13vKsi = 0; Beta13wKsi = -4;

                Beta21uKsi = 1; Beta21vKsi = 1; Beta21wKsi = 1;
                Beta22uKsi = -0.5; Beta22vKsi = -0.5; Beta22wKsi = -0.5;
                Beta23uKsi = 1; Beta23vKsi = 1; Beta23wKsi = 1;
            }
        }
//========================== U =============================================================
        private double FIui(int i, int node_index)
        {
            if (i == 0)
            {
                return Alpha11uFi * B3i(-1, node_index) + Alpha12uFi * B3i(0, node_index) +
                       Alpha13uFi * B3i(1, node_index);
            }
            if (i == 1)
            {
                return Alpha21uFi * B3i(-1, node_index) + Alpha22uFi * B3i(0, node_index) +
                       Alpha23uFi * B3i(1, node_index);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3i(i, node_index);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21uFi * B3i(ColPointsX - 2, node_index) + Beta22uFi * B3i(ColPointsX - 1, node_index) +
                       Beta23uFi * B3i(ColPointsX, node_index);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11uFi * B3i(ColPointsX - 2, node_index) + Beta12uFi * B3i(ColPointsX - 1, node_index) +
                       Beta13uFi * B3i(ColPointsX, node_index);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double FIuix(int i, double x)
        {
           
            if (i == 0)
            {
                double zzz = Alpha11uFi * B3ix(-1, x) + Alpha12uFi * B3ix(0, x) +
                             Alpha13uFi * B3ix(1, x);

                if (x == 0)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIui0.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz) );
                    }
                }

                if (x == 1)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIuia.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }


                                
                return Alpha11uFi * B3ix(-1, x) + Alpha12uFi * B3ix(0, x) +
                       Alpha13uFi * B3ix(1, x);
            }
            if (i == 1)
            {
                double zzz = Alpha21uFi * B3ix(-1, x) + Alpha22uFi * B3ix(0, x) +
                             Alpha23uFi * B3ix(1, x);

                if (x == 0)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIui0.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }

                if (x == 1)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIuia.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }

                return Alpha21uFi * B3ix(-1, x) + Alpha22uFi * B3ix(0, x) +
                       Alpha23uFi * B3ix(1, x);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                double zzz = B3ix(i, x);

                if (x == 0)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIui0.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }

                if (x == 1)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIuia.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }

                return B3ix(i, x);
            }

            if (i == ColPointsX - 2)
            {
                double zzz = Beta21uFi * B3ix(ColPointsX - 2, x) + Beta22uFi * B3ix(ColPointsX - 1, x) +
                             Beta23uFi * B3ix(ColPointsX, x);

                if (x == 0)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIui0.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }

                if (x == 1)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIuia.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }

                return Beta21uFi * B3ix(ColPointsX - 2, x) + Beta22uFi * B3ix(ColPointsX - 1, x) +
                       Beta23uFi * B3ix(ColPointsX, x);
            }
            if (i == ColPointsX - 1)
            {
                double zzz = Beta11uFi * B3ix(ColPointsX - 2, x) + Beta12uFi * B3ix(ColPointsX - 1, x) +
                             Beta13uFi * B3ix(ColPointsX, x);

                if (x == 0)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIui0.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }

                if (x == 1)
                {
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//TEST//FIuia.txt", true))
                    {
                        sw.WriteLine("FI[" + System.Convert.ToString(i) + "](0) == " + System.Convert.ToString(zzz));
                    }
                }

                return Beta11uFi * B3ix(ColPointsX - 2, x) + Beta12uFi * B3ix(ColPointsX - 1, x) +
                       Beta13uFi * B3ix(ColPointsX, x);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }


        private double KSIuj(int j, int node_index)
        {
            if (j == 0)
            {
                return Alpha11uKsi * B3i(-1, node_index) + Alpha12uKsi * B3i(0, node_index) +
                       Alpha13uKsi * B3i(1, node_index);
            }
            if (j == 1)
            {
                return Alpha21uKsi * B3i(-1, node_index) + Alpha22uKsi * B3i(0, node_index) +
                       Alpha23uKsi * B3i(1, node_index);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3i(j, node_index);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21uKsi * B3i(ColPointsY - 2, node_index) + Beta22uKsi * B3i(ColPointsY - 1, node_index) +
                       Beta23uKsi * B3i(ColPointsY, node_index);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11uKsi * B3i(ColPointsY - 2, node_index) + Beta12uKsi * B3i(ColPointsY - 1, node_index) +
                       Beta13uKsi * B3i(ColPointsY, node_index);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIujy(int j, double y)
        {
            if (j == 0)
            {
                return Alpha11uKsi * B3iy(-1, y) + Alpha12uKsi * B3iy(0, y) +
                       Alpha13uKsi * B3iy(1, y);
            }
            if (j == 1)
            {
                return Alpha21uKsi * B3iy(-1, y) + Alpha22uKsi * B3iy(0, y) +
                       Alpha23uKsi * B3iy(1, y);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3iy(j, y);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21uKsi * B3iy(ColPointsY - 2, y) + Beta22uKsi * B3iy(ColPointsY - 1, y) +
                       Beta23uKsi * B3iy(ColPointsY, y);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11uKsi * B3iy(ColPointsY - 2, y) + Beta12uKsi * B3iy(ColPointsY - 1, y) +
                       Beta13uKsi * B3iy(ColPointsY, y);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double FIuiShtrix(int i, int node_index, double h)
        {
            if (i == 0)
            {
                return Alpha11uFi * B3iShtrix(-1, node_index, h) + Alpha12uFi * B3iShtrix(0, node_index,h) +
                       Alpha13uFi * B3iShtrix(1, node_index,h);
            }
            if (i == 1)
            {
                return Alpha21uFi * B3iShtrix(-1, node_index, h) + Alpha22uFi * B3iShtrix(0, node_index,h) +
                       Alpha23uFi * B3iShtrix(1, node_index,h);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3iShtrix(i, node_index,h);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21uFi * B3iShtrix(ColPointsX - 2, node_index, h) + Beta22uFi * B3iShtrix(ColPointsX - 1, node_index,h) +
                       Beta23uFi * B3iShtrix(ColPointsX, node_index,h);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11uFi * B3iShtrix(ColPointsX - 2, node_index, h) + Beta12uFi * B3iShtrix(ColPointsX - 1, node_index,h) +
                       Beta13uFi * B3iShtrix(ColPointsX, node_index,h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIujShtrix(int j, int node_index,double h)
        {
            if (j == 0)
            {
                return Alpha11uKsi * B3iShtrix(-1, node_index,h) + Alpha12uKsi * B3iShtrix(0, node_index,h) +
                       Alpha13uKsi * B3iShtrix(1, node_index,h);
            }
            if (j == 1)
            {
                return Alpha21uKsi * B3iShtrix(-1, node_index,h) + Alpha22uKsi * B3iShtrix(0, node_index,h) +
                       Alpha23uKsi * B3iShtrix(1, node_index,h);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3iShtrix(j, node_index,h);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21uKsi * B3iShtrix(ColPointsY - 2, node_index,h) + Beta22uKsi * B3iShtrix(ColPointsY - 1, node_index,h) +
                       Beta23uKsi * B3iShtrix(ColPointsY, node_index,h);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11uKsi * B3iShtrix(ColPointsY - 2, node_index,h) + Beta12uKsi * B3iShtrix(ColPointsY - 1, node_index,h) +
                       Beta13uKsi * B3iShtrix(ColPointsY, node_index,h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double FIui2Shtrix(int i, int node_index, double h)
        {
            if (i == 0)
            {
                return Alpha11uFi * B3i2Shtrix(-1, node_index, h) + Alpha12uFi * B3i2Shtrix(0, node_index,h) +
                       Alpha13uFi * B3i2Shtrix(1, node_index,h);
            }
            if (i == 1)
            {
                return Alpha21uFi * B3i2Shtrix(-1, node_index, h) + Alpha22uFi * B3i2Shtrix(0, node_index,h) +
                       Alpha23uFi * B3i2Shtrix(1, node_index,h);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3i2Shtrix(i, node_index,h);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21uFi * B3i2Shtrix(ColPointsX - 2, node_index, h) + Beta22uFi * B3i2Shtrix(ColPointsX - 1, node_index,h) +
                       Beta23uFi * B3i2Shtrix(ColPointsX, node_index,h);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11uFi * B3i2Shtrix(ColPointsX - 2, node_index, h) + Beta12uFi * B3i2Shtrix(ColPointsX - 1, node_index,h) +
                       Beta13uFi * B3i2Shtrix(ColPointsX, node_index,h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIuj2Shtrix(int j, int node_index, double h)
        {
            if (j == 0)
            {
                return Alpha11uKsi * B3i2Shtrix(-1, node_index,h) + Alpha12uKsi * B3i2Shtrix(0, node_index,h) +
                       Alpha13uKsi * B3i2Shtrix(1, node_index,h);
            }
            if (j == 1)
            {
                return Alpha21uKsi * B3i2Shtrix(-1, node_index,h) + Alpha22uKsi * B3i2Shtrix(0, node_index,h) +
                       Alpha23uKsi * B3i2Shtrix(1, node_index,h);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3i2Shtrix(j, node_index,h);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21uKsi * B3i2Shtrix(ColPointsY - 2, node_index,h) + Beta22uKsi * B3i2Shtrix(ColPointsY - 1, node_index,h) +
                       Beta23uKsi * B3i2Shtrix(ColPointsY, node_index,h);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11uKsi * B3i2Shtrix(ColPointsY - 2, node_index,h) + Beta12uKsi * B3i2Shtrix(ColPointsY - 1, node_index,h) +
                       Beta13uKsi * B3i2Shtrix(ColPointsY, node_index,h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }
//========================== V =============================================================
        private double FIvi(int i, int node_index)
        {
            if (i == 0)
            {
                return Alpha11vFi * B3i(-1, node_index) + Alpha12vFi * B3i(0, node_index) +
                       Alpha13vFi * B3i(1, node_index);
            }
            if (i == 1)
            {
                return Alpha21vFi * B3i(-1, node_index) + Alpha22vFi * B3i(0, node_index) +
                       Alpha23vFi * B3i(1, node_index);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3i(i, node_index);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21vFi * B3i(ColPointsX - 2, node_index) + Beta22vFi * B3i(ColPointsX - 1, node_index) +
                       Beta23vFi * B3i(ColPointsX, node_index);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11vFi * B3i(ColPointsX - 2, node_index) + Beta12vFi * B3i(ColPointsX - 1, node_index) +
                       Beta13vFi * B3i(ColPointsX, node_index);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double FIvix(int i, double x)
        {
            if (i == 0)
            {
                return Alpha11vFi * B3ix(-1, x) + Alpha12vFi * B3ix(0, x) +
                       Alpha13vFi * B3ix(1, x);
            }
            if (i == 1)
            {
                return Alpha21vFi * B3ix(-1, x) + Alpha22vFi * B3ix(0, x) +
                       Alpha23vFi * B3ix(1, x);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3ix(i, x);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21vFi * B3ix(ColPointsX - 2, x) + Beta22vFi * B3ix(ColPointsX - 1, x) +
                       Beta23vFi * B3ix(ColPointsX, x);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11vFi * B3ix(ColPointsX - 2, x) + Beta12vFi * B3ix(ColPointsX - 1, x) +
                       Beta13vFi * B3ix(ColPointsX, x);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }


        private double KSIvj(int j, int node_index)
        {
            if (j == 0)
            {
                return Alpha11vKsi * B3i(-1, node_index) + Alpha12vKsi * B3i(0, node_index) +
                       Alpha13vKsi * B3i(1, node_index);
            }
            if (j == 1)
            {
                return Alpha21vKsi * B3i(-1, node_index) + Alpha22vKsi * B3i(0, node_index) +
                       Alpha23vKsi * B3i(1, node_index);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3i(j, node_index);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21vKsi * B3i(ColPointsY - 2, node_index) + Beta22vKsi * B3i(ColPointsY - 1, node_index) +
                       Beta23vKsi * B3i(ColPointsY, node_index);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11vKsi * B3i(ColPointsY - 2, node_index) + Beta12vKsi * B3i(ColPointsY - 1, node_index) +
                       Beta13vKsi * B3i(ColPointsY, node_index);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIvjy(int j, double y)
        {
            if (j == 0)
            {
                return Alpha11vKsi * B3iy(-1, y) + Alpha12vKsi * B3iy(0, y) +
                       Alpha13vKsi * B3iy(1, y);
            }
            if (j == 1)
            {
                return Alpha21vKsi * B3iy(-1, y) + Alpha22vKsi * B3iy(0, y) +
                       Alpha23vKsi * B3iy(1, y);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3iy(j, y);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21vKsi * B3iy(ColPointsY - 2, y) + Beta22vKsi * B3iy(ColPointsY - 1, y) +
                       Beta23vKsi * B3iy(ColPointsY, y);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11vKsi * B3iy(ColPointsY - 2, y) + Beta12vKsi * B3iy(ColPointsY - 1, y) +
                       Beta13vKsi * B3iy(ColPointsY, y);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }


        private double FIviShtrix(int i, int node_index, double h)
        {
            if (i == 0)
            {
                return Alpha11vFi * B3iShtrix(-1, node_index, h) + Alpha12vFi * B3iShtrix(0, node_index, h) +
                       Alpha13vFi * B3iShtrix(1, node_index, h);
            }
            if (i == 1)
            {
                return Alpha21vFi * B3iShtrix(-1, node_index, h) + Alpha22vFi * B3iShtrix(0, node_index, h) +
                       Alpha23vFi * B3iShtrix(1, node_index, h);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3iShtrix(i, node_index, h);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21vFi * B3iShtrix(ColPointsX - 2, node_index, h) + Beta22vFi * B3iShtrix(ColPointsX - 1, node_index, h) +
                       Beta23vFi * B3iShtrix(ColPointsX, node_index, h);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11vFi * B3iShtrix(ColPointsX - 2, node_index, h) + Beta12vFi * B3iShtrix(ColPointsX - 1, node_index, h) +
                       Beta13vFi * B3iShtrix(ColPointsX, node_index, h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIvjShtrix(int j, int node_index, double h)
        {
            if (j == 0)
            {
                return Alpha11vKsi * B3iShtrix(-1, node_index, h) + Alpha12vKsi * B3iShtrix(0, node_index, h) +
                       Alpha13vKsi * B3iShtrix(1, node_index, h);
            }
            if (j == 1)
            {
                return Alpha21vKsi * B3iShtrix(-1, node_index, h) + Alpha22vKsi * B3iShtrix(0, node_index, h) +
                       Alpha23vKsi * B3iShtrix(1, node_index, h);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3iShtrix(j, node_index, h);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21vKsi * B3iShtrix(ColPointsY - 2, node_index, h) + Beta22vKsi * B3iShtrix(ColPointsY - 1, node_index, h) +
                       Beta23vKsi * B3iShtrix(ColPointsY, node_index, h);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11vKsi * B3iShtrix(ColPointsY - 2, node_index, h) + Beta12vKsi * B3iShtrix(ColPointsY - 1, node_index, h) +
                       Beta13vKsi * B3iShtrix(ColPointsY, node_index, h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double FIvi2Shtrix(int i, int node_index, double h)
        {
            if (i == 0)
            {
                return Alpha11vFi * B3i2Shtrix(-1, node_index, h) + Alpha12vFi * B3i2Shtrix(0, node_index, h) +
                       Alpha13vFi * B3i2Shtrix(1, node_index, h);
            }
            if (i == 1)
            {
                return Alpha21vFi * B3i2Shtrix(-1, node_index, h) + Alpha22vFi * B3i2Shtrix(0, node_index, h) +
                       Alpha23vFi * B3i2Shtrix(1, node_index, h);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3i2Shtrix(i, node_index, h);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21vFi * B3i2Shtrix(ColPointsX - 2, node_index, h) + Beta22vFi * B3i2Shtrix(ColPointsX - 1, node_index, h) +
                       Beta23vFi * B3i2Shtrix(ColPointsX, node_index, h);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11vFi * B3i2Shtrix(ColPointsX - 2, node_index, h) + Beta12vFi * B3i2Shtrix(ColPointsX - 1, node_index, h) +
                       Beta13vFi * B3i2Shtrix(ColPointsX, node_index, h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIvj2Shtrix(int j, int node_index, double h)
        {
            if (j == 0)
            {
                return Alpha11vKsi * B3i2Shtrix(-1, node_index, h) + Alpha12vKsi * B3i2Shtrix(0, node_index, h) +
                       Alpha13vKsi * B3i2Shtrix(1, node_index, h);
            }
            if (j == 1)
            {
                return Alpha21vKsi * B3i2Shtrix(-1, node_index, h) + Alpha22vKsi * B3i2Shtrix(0, node_index, h) +
                       Alpha23vKsi * B3i2Shtrix(1, node_index, h);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3i2Shtrix(j, node_index, h);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21vKsi * B3i2Shtrix(ColPointsY - 2, node_index, h) + Beta22vKsi * B3i2Shtrix(ColPointsY - 1, node_index, h) +
                       Beta23vKsi * B3i2Shtrix(ColPointsY, node_index, h);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11vKsi * B3i2Shtrix(ColPointsY - 2, node_index, h) + Beta12vKsi * B3i2Shtrix(ColPointsY - 1, node_index, h) +
                       Beta13vKsi * B3i2Shtrix(ColPointsY, node_index, h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

//========================== W =============================================================
        private double FIwi(int i, int node_index)
        {
            if (i == 0)
            {
                return Alpha11wFi * B3i(-1, node_index) + Alpha12wFi * B3i(0, node_index) +
                       Alpha13wFi * B3i(1, node_index);
            }
            if (i == 1)
            {
                return Alpha21wFi * B3i(-1, node_index) + Alpha22wFi * B3i(0, node_index) +
                       Alpha23wFi * B3i(1, node_index);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3i(i, node_index);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21wFi * B3i(ColPointsX - 2, node_index) + Beta22wFi * B3i(ColPointsX - 1, node_index) +
                       Beta23wFi * B3i(ColPointsX, node_index);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11wFi * B3i(ColPointsX - 2, node_index) + Beta12wFi * B3i(ColPointsX - 1, node_index) +
                       Beta13wFi * B3i(ColPointsX, node_index);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double FIwix(int i, double x)
        {
            if (i == 0)
            {
                return Alpha11wFi * B3ix(-1, x) + Alpha12wFi * B3ix(0, x) +
                       Alpha13wFi * B3ix(1, x);
            }
            if (i == 1)
            {
                return Alpha21wFi * B3ix(-1, x) + Alpha22wFi * B3ix(0, x) +
                       Alpha23wFi * B3ix(1, x);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3ix(i, x);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21wFi * B3ix(ColPointsX - 2, x) + Beta22wFi * B3ix(ColPointsX - 1, x) +
                       Beta23wFi * B3ix(ColPointsX, x);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11wFi * B3ix(ColPointsX - 2, x) + Beta12wFi * B3ix(ColPointsX - 1, x) +
                       Beta13wFi * B3ix(ColPointsX, x);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIwj(int j, int node_index)
        {
            if (j == 0)
            {
                return Alpha11wKsi * B3i(-1, node_index) + Alpha12wKsi * B3i(0, node_index) +
                       Alpha13wKsi * B3i(1, node_index);
            }
            if (j == 1)
            {
                return Alpha21wKsi * B3i(-1, node_index) + Alpha22wKsi * B3i(0, node_index) +
                       Alpha23wKsi * B3i(1, node_index);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3i(j, node_index);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21wKsi * B3i(ColPointsY - 2, node_index) + Beta22wKsi * B3i(ColPointsY - 1, node_index) +
                       Beta23wKsi * B3i(ColPointsY, node_index);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11wKsi * B3i(ColPointsY - 2, node_index) + Beta12wKsi * B3i(ColPointsY - 1, node_index) +
                       Beta13wKsi * B3i(ColPointsY, node_index);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIwjy(int j, double y)
        {
            if (j == 0)
            {
                return Alpha11wKsi * B3iy(-1, y) + Alpha12wKsi * B3iy(0, y) +
                       Alpha13wKsi * B3iy(1, y);
            }
            if (j == 1)
            {
                return Alpha21wKsi * B3iy(-1, y) + Alpha22wKsi * B3iy(0, y) +
                       Alpha23wKsi * B3iy(1, y);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3iy(j, y);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21wKsi * B3iy(ColPointsY - 2, y) + Beta22wKsi * B3iy(ColPointsY - 1, y) +
                       Beta23wKsi * B3iy(ColPointsY, y);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11wKsi * B3iy(ColPointsY - 2, y) + Beta12wKsi * B3iy(ColPointsY - 1, y) +
                       Beta13wKsi * B3iy(ColPointsY, y);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }


        private double FIwiShtrix(int i, int node_index, double h)
        {
            if (i == 0)
            {
                return Alpha11wFi * B3iShtrix(-1, node_index, h) + Alpha12wFi * B3iShtrix(0, node_index, h) +
                       Alpha13wFi * B3iShtrix(1, node_index, h);
            }
            if (i == 1)
            {
                return Alpha21wFi * B3iShtrix(-1, node_index, h) + Alpha22wFi * B3iShtrix(0, node_index, h) +
                       Alpha23wFi * B3iShtrix(1, node_index, h);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3iShtrix(i, node_index, h);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21wFi * B3iShtrix(ColPointsX - 2, node_index, h) + Beta22wFi * B3iShtrix(ColPointsX - 1, node_index, h) +
                       Beta23wFi * B3iShtrix(ColPointsX, node_index, h);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11wFi * B3iShtrix(ColPointsX - 2, node_index, h) + Beta12wFi * B3iShtrix(ColPointsX - 1, node_index, h) +
                       Beta13wFi * B3iShtrix(ColPointsX, node_index, h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIwjShtrix(int j, int node_index, double h)
        {
            if (j == 0)
            {
                return Alpha11wKsi * B3iShtrix(-1, node_index, h) + Alpha12wKsi * B3iShtrix(0, node_index, h) +
                       Alpha13wKsi * B3iShtrix(1, node_index, h);
            }
            if (j == 1)
            {
                return Alpha21wKsi * B3iShtrix(-1, node_index, h) + Alpha22wKsi * B3iShtrix(0, node_index, h) +
                       Alpha23wKsi * B3iShtrix(1, node_index, h);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3iShtrix(j, node_index, h);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21wKsi * B3iShtrix(ColPointsY - 2, node_index, h) + Beta22wKsi * B3iShtrix(ColPointsY - 1, node_index, h) +
                       Beta23wKsi * B3iShtrix(ColPointsY, node_index, h);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11wKsi * B3iShtrix(ColPointsY - 2, node_index, h) + Beta12wKsi * B3iShtrix(ColPointsY - 1, node_index, h) +
                       Beta13wKsi * B3iShtrix(ColPointsY, node_index, h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double FIwi2Shtrix(int i, int node_index, double h)
        {
            if (i == 0)
            {
                return Alpha11wFi * B3i2Shtrix(-1, node_index, h) + Alpha12wFi * B3i2Shtrix(0, node_index, h) +
                       Alpha13wFi * B3i2Shtrix(1, node_index, h);
            }
            if (i == 1)
            {
                return Alpha21wFi * B3i2Shtrix(-1, node_index, h) + Alpha22wFi * B3i2Shtrix(0, node_index, h) +
                       Alpha23wFi * B3i2Shtrix(1, node_index, h);
            }

            if ((i >= 2) && (i <= ColPointsX - 3))
            {
                return B3i2Shtrix(i, node_index, h);
            }

            if (i == ColPointsX - 2)
            {
                return Beta21wFi * B3i2Shtrix(ColPointsX - 2, node_index, h) + Beta22wFi * B3i2Shtrix(ColPointsX - 1, node_index, h) +
                       Beta23wFi * B3i2Shtrix(ColPointsX, node_index, h);
            }
            if (i == ColPointsX - 1)
            {
                return Beta11wFi * B3i2Shtrix(ColPointsX - 2, node_index, h) + Beta12wFi * B3i2Shtrix(ColPointsX - 1, node_index, h) +
                       Beta13wFi * B3i2Shtrix(ColPointsX, node_index, h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

        private double KSIwj2Shtrix(int j, int node_index, double h)
        {
            if (j == 0)
            {
                return Alpha11wKsi * B3i2Shtrix(-1, node_index, h) + Alpha12wKsi * B3i2Shtrix(0, node_index, h) +
                       Alpha13wKsi * B3i2Shtrix(1, node_index, h);
            }
            if (j == 1)
            {
                return Alpha21wKsi * B3i2Shtrix(-1, node_index, h) + Alpha22wKsi * B3i2Shtrix(0, node_index, h) +
                       Alpha23wKsi * B3i2Shtrix(1, node_index, h);
            }

            if ((j >= 2) && (j <= ColPointsY - 3))
            {
                return B3i2Shtrix(j, node_index, h);
            }

            if (j == ColPointsY - 2)
            {
                return Beta21wKsi * B3i2Shtrix(ColPointsY - 2, node_index, h) + Beta22wKsi * B3i2Shtrix(ColPointsY - 1, node_index, h) +
                       Beta23wKsi * B3i2Shtrix(ColPointsY, node_index, h);
            }
            if (j == ColPointsY - 1)
            {
                return Beta11wKsi * B3i2Shtrix(ColPointsY - 2, node_index, h) + Beta12wKsi * B3i2Shtrix(ColPointsY - 1, node_index, h) +
                       Beta13wKsi * B3i2Shtrix(ColPointsY, node_index, h);
            }
            MessageBox.Show("   ",
                                "  ",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            return 0;
        }

//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//=========================================================================================================
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
        // ----- FIui, KSIuj, FIuiShtrix, KSIujShtrix, FIui2Shtrix, KSIuj2Shtrix ----- \\(i, node_index, h)
        // ----- FIvi, KSIvj, FIviShtrix, KSIvjShtrix, FIvi2Shtrix, KSIvj2Shtrix ----- \\(i, node_index, h)
        // ----- FIwi, KSIwj, FIwiShtrix, KSIwjShtrix, FIwi2Shtrix, KSIwj2Shtrix ----- \\(i, node_index, h)
//---------------------------------------------------------------------------------------------------------
        private void A1uCreate(double h1, double h2)
        {
            A1u = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A1u[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIui(j1, i1) * KSIuj(j2, i2);
                        }

         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A1u.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY ; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY ; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1u[i,j]), ",", "."));
                    }
                }
            } */
        }

        private void A2uCreate(double h1, double h2)
        {
            A2u = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A2u[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIui2Shtrix(j1, i1, h1) * KSIuj(j2, i2);
                        }

        /*    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A2u.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A2u[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A3uCreate(double h1, double h2)
        {
            A3u = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A3u[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIui(j1, i1) * KSIuj2Shtrix(j2, i2, h2);
                        }

         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A3u.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A3u[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A4uCreate(double h1, double h2)
        {
            A4u = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A4u[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIviShtrix(j1, i1, h1) * KSIvjShtrix(j2, i2, h2);
                        }

         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A4u.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A4u[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A5uCreate(double h1, double h2)
        {
            A5u = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A5u[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIwiShtrix(j1, i1, h1) * KSIwj(j2, i2);
                        }

          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A5u.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A5u[i, j]), ",", "."));
                    }
                }
            }*/
        }
//---------------------------------------------------------------------------------------------------------
        private void A1vCreate(double h1, double h2)
        {
            A1v = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A1v[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIvi(j1, i1) * KSIvj(j2, i2);
                        }

         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A1v.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1v[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A2vCreate(double h1, double h2)
        {
            A2v = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A2v[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIvi2Shtrix(j1, i1, h1) * KSIvj(j2, i2);
                        }

          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A2v.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A2v[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A3vCreate(double h1, double h2)
        {
            A3v = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A3v[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIvi(j1, i1) * KSIvj2Shtrix(j2, i2, h2);
                        }

          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A3v.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A3v[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A4vCreate(double h1, double h2)
        {
            A4v = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A4v[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIuiShtrix(j1, i1, h1) * KSIujShtrix(j2, i2, h2);
                        }

         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A4v.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A4v[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A5vCreate(double h1, double h2)
        {
            A5v = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A5v[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIwi(j1, i1) * KSIwjShtrix(j2, i2, h2);
                        }

          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A5v.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A5v[i, j]), ",", "."));
                    }
                }
            }*/
        }
//---------------------------------------------------------------------------------------------------------
        private void A1wCreate(double h1, double h2)
        {
            A1w = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A1w[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIwi(j1, i1) * KSIwj(j2, i2);
                        }

         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A1w.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1w[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A2wCreate(double h1, double h2)
        {
            A2w = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A2w[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIuiShtrix(j1, i1, h1) * KSIuj(j2, i2);
                        }

      /*      using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A2w.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A2w[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A3wCreate(double h1, double h2)
        {
            A3w = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i1 = 0; i1 < ColPointsX; i1++)
                for (int i2 = 0; i2 < ColPointsY; i2++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A3w[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIvi(j1, i1) * KSIvjShtrix(j2, i2, h2);
                        }

         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A3w.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A3w[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A4wCreate(double h1, double h2)
        {
            A4w = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A4w[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIwi2Shtrix(j1, i1, h1) * KSIwj(j2, i2);
                        }

          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A4w.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A4w[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private void A5wCreate(double h1, double h2)
        {
            A5w = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i2 = 0; i2 < ColPointsY; i2++)
                for (int i1 = 0; i1 < ColPointsX; i1++)
                    for (int j1 = 0; j1 < ColPointsX; j1++)
                        for (int j2 = 0; j2 < ColPointsY; j2++)
                        {
                            A5w[i1 + i2 * ColPointsX, j1 * ColPointsY + j2] = FIwi(j1, i1) * KSIwj2Shtrix(j2, i2, h2);
                        }

         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A5w.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A5w[i, j]), ",", "."));
                    }
                }
            }*/
        }

        private string MathematicaPowerTransform(string str)
        {
            int i;
            string tempStr1 = "", tempStr2 = "";
            int powSymbol = -1;
            for (i = 0; i < str.Length; i++)
            {
                if (str[i] == '^') { powSymbol = i; }
            }

            if (powSymbol == -1) { return str; }

            for (i = 0; i < powSymbol - 1; i++)
            {
                tempStr1 += str[i];
            }
            for (i = powSymbol + 1; i < str.Length; i++)
            {
                tempStr2 += str[i];
            }
            tempStr1 = DotReplace(tempStr1);
            tempStr1.Trim();
            double fvalue1 = System.Convert.ToDouble(tempStr1);

            tempStr2 = DotReplace(tempStr2);
            tempStr2.Trim();
            double fvalue2 = System.Convert.ToDouble(tempStr2);

            double fvalue3 = Math.Pow(10, fvalue2);
            double fvalue4 = fvalue1 * fvalue3;

            return System.Convert.ToString(fvalue4);
        }


        private bool A1uInverseCreate()
        {
            pbEvaluation.Value = 80;
            lEvaluation2.Text = " ,   A1u...";
            A1uInverse = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            string ls = "A = Inverse[{";
            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                ls += "{";
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    ls += System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1u[i, j]),",",".");
                    if (j < ColPointsX * ColPointsY - 1)
                    {
                        ls += ",";
                    }
                }
                ls += "}";
                if (i < ColPointsX * ColPointsY - 1)
                {
                    ls += ",";
                }
            }
            ls = ls + "}]";

            //============================================================
         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A1uForInverse.txt"))
            {
                sw.WriteLine(ls);
            }*/
            //============================================================

            //  -----------------------
            kernelLink = MathLinkFactory.CreateKernelLink();
            kernelLink.WaitAndDiscardAnswer();

            mathKernel = new MathKernel();
            mathKernel.Connect();

            StringBuilder code = new StringBuilder();
            code.AppendLine(ls);
            code.AppendLine(" finverse = OpenWrite[\"C:\\SickWallOrtotrPlate\\inverse.txt\"]" + ";");
            code.AppendLine(" For[i = 1, i <= " + System.Convert.ToString(ColPointsX * ColPointsY) + ", i++, For[j = 1, j <= " + System.Convert.ToString(ColPointsX * ColPointsY) + ", j++, Write[finverse, A[[i, j]] ]   ] ];");
            code.AppendLine(" Close[finverse]" + ";");
            mathKernel.Compute(code.ToString());


            mathKernel.Dispose();
            kernelLink.Close();

            using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//inverse.txt"))
            {
                string strvalue;
                int i = 0;
                int j = 0;
                while ((strvalue = sr.ReadLine()) != null)
                {
                    strvalue = DotReplace(strvalue);
                    strvalue.Trim();
                    double fvalue = System.Convert.ToDouble(MathematicaPowerTransform(strvalue));

                    if (i >= ColPointsX * ColPointsY)
                    {
                        MessageBox.Show("  ",
                                "    A1uInverse",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                        return false;
                    }

                    A1uInverse[i, j] = fvalue;
                    j++;
                    if (j == ColPointsX * ColPointsY)
                    {
                        i++;
                        j = 0;
                    }
                    
                }

                if (!((i == ColPointsX * ColPointsY)&&(j == 0)))
                {
                    MessageBox.Show("  ",
                            "    A1uInverse",
                            MessageBoxButtons.OK, MessageBoxIcon.Error);

                    return false;
                }
                    
            }
            //=======================================================================
       /*     double[,] TempA1u;
            TempA1u = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            double[,] TempA1uInverse;
            TempA1uInverse = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1u[i, j] = A1u[i, j];
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1uInverse[i, j] = 0;
                    if (i == j) { TempA1uInverse[i, j] = 1; }
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = i + 1; j < ColPointsX * ColPointsY; j++)
                {
                    double kk = (double)TempA1u[j, i] / TempA1u[i, i];
                    for (int k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        TempA1u[j, k] = TempA1u[j, k] - TempA1u[i, k] * kk;
                        TempA1uInverse[j, k] = TempA1uInverse[j, k] - TempA1uInverse[i, k] * kk;
                    }
                }
            }

            for (int i = ColPointsX * ColPointsY - 1; i >= 0; i--)
            {
                for (int j = i - 1; j >= 0; j--)
                {
                    double kk = (double)TempA1u[j, i] / TempA1u[i, i];
                    for (int k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        TempA1u[j, k] = TempA1u[j, k] - TempA1u[i, k] * kk;
                        TempA1uInverse[j, k] = TempA1uInverse[j, k] - TempA1uInverse[i, k] * kk;
                    }
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                double kk = TempA1u[i, i];
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1u[i, j] = (double)TempA1u[i, j] / kk;
                    TempA1uInverse[i, j] = (double)TempA1uInverse[i, j] / kk;
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    A1uInverse[i, j] = TempA1uInverse[i, j];
                }
            }

            //----------------------------
           /* using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A1uAfterChng.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(TempA1u[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

            //=======================================================================
        /*    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//A//A1uInverse_A1u.txt"))
            {
                for (int i = 0; i < ColPointsX * ColPointsY; i++)
                {
                    for (int j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        double summ = 0.0;
                        for (int k = 0; k < ColPointsX * ColPointsY; k++)
                        {
                            summ += A1uInverse[i, k] * A1u[k, j];
                        }
                           
                            sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(summ), ",", "."));
                    }
                }
            }*/
            //=======================================================================

            return true;
        }


        private bool A1vInverseCreate()
        {
            pbEvaluation.Value = 85;
            lEvaluation2.Text = " ,   A1v...";
            A1vInverse = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            string ls = "A = Inverse[{";
            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                ls += "{";
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    ls += System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1v[i, j]), ",", ".");
                    if (j < ColPointsX * ColPointsY - 1)
                    {
                        ls += ",";
                    }
                }
                ls += "}";
                if (i < ColPointsX * ColPointsY - 1)
                {
                    ls += ",";
                }
            }
            ls = ls + "}]";

            //  -----------------------
            kernelLink = MathLinkFactory.CreateKernelLink();
            kernelLink.WaitAndDiscardAnswer();

            mathKernel = new MathKernel();
            mathKernel.Connect();

            StringBuilder code = new StringBuilder();
            code.AppendLine(ls);
            code.AppendLine(" finverse = OpenWrite[\"C:\\SickWallOrtotrPlate\\inverse.txt\"]" + ";");
            code.AppendLine(" For[i = 1, i <= " + System.Convert.ToString(ColPointsX * ColPointsY) + ", i++, For[j = 1, j <= " + System.Convert.ToString(ColPointsX * ColPointsY) + ", j++, Write[finverse, A[[i, j]] ]   ] ];");
            code.AppendLine(" Close[finverse]" + ";");
            mathKernel.Compute(code.ToString());


            mathKernel.Dispose();
            kernelLink.Close();

            using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//inverse.txt"))
            {
                string strvalue;
                int i = 0;
                int j = 0;
                while ((strvalue = sr.ReadLine()) != null)
                {
                    strvalue = DotReplace(strvalue);
                    strvalue.Trim();
                    double fvalue = System.Convert.ToDouble(MathematicaPowerTransform(strvalue));

                    if (i >= ColPointsX * ColPointsY)
                    {
                        MessageBox.Show("  ",
                                "    A1uInverse",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                        return false;
                    }

                    A1vInverse[i, j] = fvalue;
                    j++;
                    if (j == ColPointsX * ColPointsY)
                    {
                        i++;
                        j = 0;
                    }

                }

            }

            //=======================================================================
        /*    double[,] TempA1v;
            TempA1v = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            double[,] TempA1vInverse;
            TempA1vInverse = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1v[i, j] = A1v[i, j];
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1vInverse[i, j] = 0;
                    if (i == j) { TempA1vInverse[i, j] = 1; }
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = i + 1; j < ColPointsX * ColPointsY; j++)
                {
                    double kk = (double)TempA1v[j, i] / TempA1v[i, i];
                    for (int k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        TempA1v[j, k] = TempA1v[j, k] - TempA1v[i, k] * kk;
                        TempA1vInverse[j, k] = TempA1vInverse[j, k] - TempA1vInverse[i, k] * kk;
                    }
                }
            }

            for (int i = ColPointsX * ColPointsY - 1; i >= 0; i--)
            {
                for (int j = i - 1; j >= 0; j--)
                {
                    double kk = (double)TempA1v[j, i] / TempA1v[i, i];
                    for (int k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        TempA1v[j, k] = TempA1v[j, k] - TempA1v[i, k] * kk;
                        TempA1vInverse[j, k] = TempA1vInverse[j, k] - TempA1vInverse[i, k] * kk;
                    }
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                double kk = TempA1v[i, i];
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1v[i, j] = (double)TempA1v[i, j] / kk;
                    TempA1vInverse[i, j] = (double)TempA1vInverse[i, j] / kk;
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    A1vInverse[i, j] = TempA1vInverse[i, j];
                }
            }

            */

            return true;

        }

        private bool A1wInverseCreate()
        {
            pbEvaluation.Value = 90;
            lEvaluation2.Text = " ,   A1w...";
            A1wInverse = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            string ls = "A = Inverse[{";
            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                ls += "{";
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    ls += System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1w[i, j]), ",", ".");
                    if (j < ColPointsX * ColPointsY - 1)
                    {
                        ls += ",";
                    }
                }
                ls += "}";
                if (i < ColPointsX * ColPointsY - 1)
                {
                    ls += ",";
                }
            }
            ls = ls + "}]";

            //  -----------------------
            kernelLink = MathLinkFactory.CreateKernelLink();
            kernelLink.WaitAndDiscardAnswer();

            mathKernel = new MathKernel();
            mathKernel.Connect();

            StringBuilder code = new StringBuilder();
            code.AppendLine(ls);
            code.AppendLine(" finverse = OpenWrite[\"C:\\SickWallOrtotrPlate\\inverse.txt\"]" + ";");
            code.AppendLine(" For[i = 1, i <= " + System.Convert.ToString(ColPointsX * ColPointsY) + ", i++, For[j = 1, j <= " + System.Convert.ToString(ColPointsX * ColPointsY) + ", j++, Write[finverse, A[[i, j]] ]   ] ];");
            code.AppendLine(" Close[finverse]" + ";");
            mathKernel.Compute(code.ToString());


            mathKernel.Dispose();
            kernelLink.Close();

            using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//inverse.txt"))
            {
                string strvalue;
                int i = 0;
                int j = 0;
                while ((strvalue = sr.ReadLine()) != null)
                {
                    strvalue = DotReplace(strvalue);
                    strvalue.Trim();
                    double fvalue = System.Convert.ToDouble(MathematicaPowerTransform(strvalue));

                    if (i >= ColPointsX * ColPointsY)
                    {
                        MessageBox.Show("  ",
                                "    A1uInverse",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                        return false;
                    }

                    A1wInverse[i, j] = fvalue;
                    j++;
                    if (j == ColPointsX * ColPointsY)
                    {
                        i++;
                        j = 0;
                    }

                }
            }
           //=======================================================================
        /*    double[,] TempA1w;
            TempA1w = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            double[,] TempA1wInverse;
            TempA1wInverse = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1w[i, j] = A1w[i, j];
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1wInverse[i, j] = 0;
                    if (i == j) { TempA1wInverse[i, j] = 1; }
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = i + 1; j < ColPointsX * ColPointsY; j++)
                {
                    double kk = (double)TempA1w[j, i] / TempA1w[i, i];
                    for (int k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        TempA1w[j, k] = TempA1w[j, k] - TempA1w[i, k] * kk;
                        TempA1wInverse[j, k] = TempA1wInverse[j, k] - TempA1wInverse[i, k] * kk;
                    }
                }
            }

            for (int i = ColPointsX * ColPointsY - 1; i >= 0; i--)
            {
                for (int j = i - 1; j >= 0; j--)
                {
                    double kk = (double)TempA1w[j, i] / TempA1w[i, i];
                    for (int k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        TempA1w[j, k] = TempA1w[j, k] - TempA1w[i, k] * kk;
                        TempA1wInverse[j, k] = TempA1wInverse[j, k] - TempA1wInverse[i, k] * kk;
                    }
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                double kk = TempA1w[i, i];
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA1w[i, j] = (double)TempA1w[i, j] / kk;
                    TempA1wInverse[i, j] = (double)TempA1wInverse[i, j] / kk;
                }
            }

            for (int i = 0; i < ColPointsX * ColPointsY; i++)
            {
                for (int j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    A1wInverse[i, j] = TempA1wInverse[i, j];
                }
            }

            */


            return true;

        }
        //---------------------------------------------------------------------------------------------------------
        // ------ Create unit-part matrix -------------------------------------------------------------------------
        private void UnitPartMartixCreate()
        {
            pbEvaluation.Value = 70;
            lEvaluation2.Text = "  ...";
            double h1 = (double)plateXsize / (ColPointsX - 1);
            double h2 = (double)plateYsize / (ColPointsY - 1);

            A1uCreate(h1, h2);
            A2uCreate(h1, h2);
            A3uCreate(h1, h2);
            A4uCreate(h1, h2);
            A5uCreate(h1, h2);

            A1vCreate(h1, h2);
            A2vCreate(h1, h2);
            A3vCreate(h1, h2);
            A4vCreate(h1, h2);
            A5vCreate(h1, h2);

            A1wCreate(h1, h2);
            A2wCreate(h1, h2);
            A3wCreate(h1, h2);
            A4wCreate(h1, h2);
            A5wCreate(h1, h2);
            //------------------------------
            //KSIwjShtrix
            //KSIwjShtrix(int j, int node_index, double h)
         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//FiKsi.txt"))
            {
                sw.WriteLine("---------  Fiui  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIui[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIui(i,j)), ",", "."));
                    }
                }

                sw.WriteLine("---------  Fivi  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIvi[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIvi(i,j)), ",", "."));
                    }
                }

                sw.WriteLine("---------  Fiwi  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIwi[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIwi(i,j)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIuj  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsY; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsY; j++)
                    {
                        sw.WriteLine("KSIuj[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIuj(i, j)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIvj  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("KSIvj[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIvj(i, j)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIwj  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("KSIwj[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIwj(i, j)), ",", "."));
                    }
                }
            }*/

/*
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//FiDifKsi.txt"))
            {
                sw.WriteLine("---------  FiuiShtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIuiShtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIuiShtrix(i,j,h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  FiviShtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIviShtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIviShtrix(i,j,h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  FiwiShtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIwiShtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIwiShtrix(i,j,h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIujShtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("KSIujShtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIujShtrix(i, j, h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIvjShtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("KSIvjShtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIvjShtrix(i, j, h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIwjShtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("KSIwjShtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIwjShtrix(i, j, h1)), ",", "."));
                    }
                }
            }*/

            /*
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//IntermediateResults//cSharp//FiDif2Ksi.txt"))
            {
                sw.WriteLine("---------  Fiui2Shtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIui2Shtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIui2Shtrix(i,j,h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  Fivi2Shtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIvi2Shtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIvi2Shtrix(i,j,h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  Fiwi2Shtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("FIwi2Shtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIwi2Shtrix(i,j,h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIuj2Shtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("KSIuj2Shtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIuj2Shtrix(i, j, h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIvj2Shtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("KSIvj2Shtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIvj2Shtrix(i, j, h1)), ",", "."));
                    }
                }

                sw.WriteLine("---------  KSIwj2Shtrix  ---------");
                sw.WriteLine("");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.WriteLine("--------------------------------");
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        sw.WriteLine("KSIwj2Shtrix[" + System.Convert.ToString(i) + ", " + System.Convert.ToString(j) + "] = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIwj2Shtrix(i, j, h1)), ",", "."));
                    }
                }
            }*/
            //------------------------------

           


            


            


        }
//---------------------------------------------------------------------------------------------------------
        //Beta13, Beta23, Beta33
        private void BqCreate() //    -------------------------------------
        {
            pbEvaluation.Value = 75;
            lEvaluation2.Text = "   ...";
            int i, j;
            Bq = new double[3 * ColPointsX * ColPointsY, 6 * ColPointsX * ColPointsY];
            for (i = 0; i < 3 * ColPointsX * ColPointsY; i++)
                for (j = 0; j < 6 * ColPointsX * ColPointsY; j++)
                {
                    Bq[i, j] = 0.0;
                }
            //----------------------------------------------------------
            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    Bq[i, j] = Beta13 * A2w[i,j];
                }


            //----------------------------
         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//B//A11b.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }*/
            //----------------------------


            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 2 * ColPointsX * ColPointsY; j < 3 * ColPointsX * ColPointsY; j++)
                {
                    Bq[i, j] = Beta23 * A3w[i, j - 2 * ColPointsX * ColPointsY];
                }

            //----------------------------
           /* using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//B//A13b.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 2 * ColPointsX * ColPointsY; j < 3 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }*/
            //----------------------------


            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 5 * ColPointsX * ColPointsY; j < 6 * ColPointsX * ColPointsY; j++)
                {
                    Bq[i, j] = Beta33 * A1w[i, j - 5 * ColPointsX * ColPointsY];
                }

            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//B//A16b.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 5 * ColPointsX * ColPointsY; j < 6 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

            //----------------------------------------------------------

            for (i = ColPointsX * ColPointsY; i < 2 * ColPointsX * ColPointsY; i++)
                for (j = 3 * ColPointsX * ColPointsY; j < 4 * ColPointsX * ColPointsY; j++)
                {
                    Bq[i, j] = Liambda44 * A1v[i - ColPointsX * ColPointsY, j - 3 * ColPointsX * ColPointsY];
                }
            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//B//A24b.txt"))
            {
                for (i = ColPointsX * ColPointsY; i < 2 * ColPointsX * ColPointsY; i++)
                    for (j = 3 * ColPointsX * ColPointsY; j < 4 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

            for (i = ColPointsX * ColPointsY; i < 2 * ColPointsX * ColPointsY; i++)
                for (j = 4 * ColPointsX * ColPointsY; j < 5 * ColPointsX * ColPointsY; j++)
                {
                    Bq[i, j] = Liambda44 * A5v[i - ColPointsX * ColPointsY, j - 4 * ColPointsX * ColPointsY];
                }
            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//B//A25b.txt"))
            {
                for (i = ColPointsX * ColPointsY; i < 2 * ColPointsX * ColPointsY; i++)
                    for (j = 4 * ColPointsX * ColPointsY; j < 5 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }*/
            //----------------------------
            //----------------------------------------------------------

            for (i = 2 * ColPointsX * ColPointsY; i < 3 * ColPointsX * ColPointsY; i++)
                for (j = 1 * ColPointsX * ColPointsY; j < 2 * ColPointsX * ColPointsY; j++)
                {
                    Bq[i, j] = Liambda55 * A1u[i - 2 * ColPointsX * ColPointsY, j - ColPointsX * ColPointsY];
                }
            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//B//A32b.txt"))
            {
                for (i = 2 * ColPointsX * ColPointsY; i < 3 * ColPointsX * ColPointsY; i++)
                    for (j = 1 * ColPointsX * ColPointsY; j < 2 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

            for (i = 2 * ColPointsX * ColPointsY; i < 3 * ColPointsX * ColPointsY; i++)
                for (j = 4 * ColPointsX * ColPointsY; j < 5 * ColPointsX * ColPointsY; j++)
                {
                    Bq[i, j] = Liambda55 * A5u[i - 2 * ColPointsX * ColPointsY, j - 4 * ColPointsX * ColPointsY];
                }
            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//B//A35b.txt"))
            {
                for (i = 2 * ColPointsX * ColPointsY; i < 3 * ColPointsX * ColPointsY; i++)
                    for (j = 4 * ColPointsX * ColPointsY; j < 5 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }*/
            //----------------------------
        }
        // 3, 4        n/2 x n/2 
        private void Bq34ColumnsChange()
        {
            double tempdbl = 0.0;
            //3-4 exchange...
            for (int i = 0; i < 3 * ColPointsX * ColPointsY; i++)
                for (int j = 2 * ColPointsX * ColPointsY; j < 3 * ColPointsX * ColPointsY; j++)
                {
                    tempdbl = Bq[i, j];
                    Bq[i, j] = Bq[i, j + ColPointsX * ColPointsY];
                    Bq[i, j + ColPointsX * ColPointsY] = tempdbl;
                }
        }

        //-------  -    ---------------------------------------------
        //------------A21, A23, A26, A41, A43, A46, A62, A64, A65--------------------------------------------------
        private void A21Create()
        {
            int i,j,k;
            A21 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            
            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = a1 * A2u[i, j] + b1 * A3u[i, j];
                }

            //----------------------------
         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//TempA21.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(TempA[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                   summ = 0;
                   for (k = 0; k < ColPointsX * ColPointsY; k++) 
                   {
                       summ += A1uInverse[i, k] * TempA[k, j];
                    
                   }
                   A21[i, j] = summ;
                }

            //----------------------------
            /*using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A1um1.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1uInverse[i, j]), ",", "."));
                    }
            }*/
            //----------------------------
            //----------------------------
           /* using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A1vm1.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1vInverse[i, j]), ",", "."));
                    }
            }*/
            //----------------------------
            //----------------------------
           /* using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A1wm1.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A1wInverse[i, j]), ",", "."));
                    }
            }*/
            //----------------------------


            //----------------------------
            /*using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A21.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A21[i, j]), ",", "."));
                    }
            }*/
            //----------------------------
        }

        private void A23Create()
        {
            int i, j, k;
            A23 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = c1 * A4u[i, j];
                }

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    summ = 0;
                    for (k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        summ += A1uInverse[i, k] * TempA[k, j];

                    }
                    A23[i, j] = summ;
                }

            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A23.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A23[i, j]), ",", "."));
                    }
            */
            //----------------------------

        }

        private void A26Create()
        {
            int i, j, k; 
            A26 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = d1 * A5u[i, j];
                }

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    summ = 0;
                    for (k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        summ += A1uInverse[i, k] * TempA[k, j];

                    }
                    A26[i, j] = summ;
                }

            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A26.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A26[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

        }

        private void A41Create()
        {
            int i, j, k; 
            A41 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = c2 * A4v[i, j];
                }

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    summ = 0;
                    for (k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        summ += A1vInverse[i, k] * TempA[k, j];

                    }
                    A41[i, j] = summ;
                }

            //----------------------------
         /*   using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A41.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A41[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

        }

        private void A43Create()
        {
            int i, j, k; 
            A43 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = a2 * A2v[i, j] + b2 * A3v[i, j];
                }

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    summ = 0;
                    for (k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        summ += A1vInverse[i, k] * TempA[k, j];

                    }
                    A43[i, j] = summ;
                }

            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A43.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A43[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

        }

        private void A46Create()
        {
            int i, j, k; 
            A46 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = d2 * A5v[i, j];
                }

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    summ = 0;
                    for (k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        summ += A1vInverse[i, k] * TempA[k, j];

                    }
                    A46[i, j] = summ;
                }

            //----------------------------
           /* using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A46.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A46[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

        }

        private void A62Create()
        {
            int i, j, k; 
            A62 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = a3 * A2w[i, j];
                }

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    summ = 0;
                    for (k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        summ += A1wInverse[i, k] * TempA[k, j];

                    }
                    A62[i, j] = summ;
                }

            //----------------------------
          /*  using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A62.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A62[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

        }

        private void A64Create()
        {
            int i, j, k; 
            A64 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = b3 * A3w[i, j];
                }

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    summ = 0;
                    for (k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        summ += A1wInverse[i, k] * TempA[k, j];

                    }
                    A64[i, j] = summ;
                }

            //----------------------------
           /* using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A64.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A64[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

        }

        private void A65Create()
        {
            int i, j, k; 
            A65 = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];
            double [,] TempA = new double[ColPointsX * ColPointsY, ColPointsX * ColPointsY];

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    TempA[i, j] = c3 * A4w[i, j] + d3 * A5w[i, j];
                }

            double summ = 0;

            for (i = 0; i < ColPointsX * ColPointsY; i++)
                for (j = 0; j < ColPointsX * ColPointsY; j++)
                {
                    summ = 0;
                    for (k = 0; k < ColPointsX * ColPointsY; k++)
                    {
                        summ += A1wInverse[i, k] * TempA[k, j];

                    }
                    A65[i, j] = summ;
                }

            //----------------------------
           /* using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//A65.txt"))
            {
                for (i = 0; i < ColPointsX * ColPointsY; i++)
                    for (j = 0; j < ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A65[i, j]), ",", "."));
                    }
            }*/
            //----------------------------

        }

        private void ABlockMatrixCreate()
        {
            A21Create();
            A23Create();
            A26Create();
            A41Create();
            A43Create();
            A46Create();
            A62Create();
            A64Create();
            A65Create();
        }

        private bool ACreate() //   --------------------------------------------------------
        {
            pbEvaluation.Value = 95;
            lEvaluation2.Text = "  ...";
            ABlockMatrixCreate();

            int i, j;
            A = new double[6 * ColPointsX * ColPointsY, 6 * ColPointsX * ColPointsY];
            for (i = 0; i < 6 * ColPointsX * ColPointsY; i++)
            for (j = 0; j < 6 * ColPointsX * ColPointsY; j++)
            {
                A[i, j] = 0.0;
            }
            //----------------------------------------------------------------------
            for (i = 0; i < ColPointsX * ColPointsY; i++)
            for (j = ColPointsX * ColPointsY; j < 2 * ColPointsX * ColPointsY; j++)
            {
                if (i + ColPointsX * ColPointsY == j)
                {
                    A[i, j] = 1;
                }
            }
            //----------------------------------------------------------------------
            for (i = ColPointsX * ColPointsY; i < 2 * ColPointsX * ColPointsY; i++)
            for (j = 0; j < ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A21[i - ColPointsX * ColPointsY, j];
            }
            //----------------------------------------------------------------------
            for (i = ColPointsX * ColPointsY; i < 2 * ColPointsX * ColPointsY; i++)
            for (j = 2 * ColPointsX * ColPointsY; j < 3 * ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A23[i - ColPointsX * ColPointsY, j - 2 * ColPointsX * ColPointsY];
            }
            //----------------------------------------------------------------------
            for (i = ColPointsX * ColPointsY; i < 2 * ColPointsX * ColPointsY; i++)
            for (j = 5 * ColPointsX * ColPointsY; j < 6 * ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A26[i - ColPointsX * ColPointsY, j - 5 * ColPointsX * ColPointsY];
                //if (i + 4 * ColPointsX * ColPointsY == j) { A[i, j] = 1; }
            }
            //----------------------------------------------------------------------
            for (i = 2 * ColPointsX * ColPointsY; i < 3 * ColPointsX * ColPointsY; i++)
            for (j = 3 * ColPointsX * ColPointsY; j < 4 * ColPointsX * ColPointsY; j++)
            {
                if (i + ColPointsX * ColPointsY == j)
                {
                    A[i, j] = 1;
                }
            }
            //----------------------------------------------------------------------
            for (i = 3 * ColPointsX * ColPointsY; i < 4 * ColPointsX * ColPointsY; i++)
            for (j = 0; j < ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A41[i - 3 * ColPointsX * ColPointsY, j];
               // A[i, j] = A21[i - 3 * ColPointsX * ColPointsY, j];

            }
            //----------------------------------------------------------------------
            for (i = 3 * ColPointsX * ColPointsY; i < 4 * ColPointsX * ColPointsY; i++)
            for (j = 2 * ColPointsX * ColPointsY; j < 3 * ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A43[i - 3 * ColPointsX * ColPointsY, j - 2 * ColPointsX * ColPointsY];
               // A[i, j] = A23[i - 3 * ColPointsX * ColPointsY, j - 2 * ColPointsX * ColPointsY];
            }
            //----------------------------------------------------------------------
            for (i = 3 * ColPointsX * ColPointsY; i < 4 * ColPointsX * ColPointsY; i++)
            for (j = 5 * ColPointsX * ColPointsY; j < 6 * ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A46[i - 3 * ColPointsX * ColPointsY, j - 5 * ColPointsX * ColPointsY];
                //A[i, j] = A26[i - 3 * ColPointsX * ColPointsY, j - 5 * ColPointsX * ColPointsY];
                //if (i + 2 * ColPointsX * ColPointsY == j) { A[i, j] = 1; }
            }
            //----------------------------------------------------------------------
            for (i = 4 * ColPointsX * ColPointsY; i < 5 * ColPointsX * ColPointsY; i++)
            for (j = 5 * ColPointsX * ColPointsY; j < 6 * ColPointsX * ColPointsY; j++)
            {
                if (i + ColPointsX * ColPointsY == j)
                {
                    A[i, j] = 1;
                }
            }
            //----------------------------------------------------------------------
            for (i = 5 * ColPointsX * ColPointsY; i < 6 * ColPointsX * ColPointsY; i++)
            for (j = 1 * ColPointsX * ColPointsY; j < 2 * ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A62[i - 5 * ColPointsX * ColPointsY, j - ColPointsX * ColPointsY];
                //if (i - 4 * ColPointsX * ColPointsY == j) { A[i, j] = 1; }
            }
            //----------------------------------------------------------------------
            for (i = 5 * ColPointsX * ColPointsY; i < 6 * ColPointsX * ColPointsY; i++)
            for (j = 3 * ColPointsX * ColPointsY; j < 4 * ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A64[i - 5 * ColPointsX * ColPointsY, j - 3 * ColPointsX * ColPointsY];
                //A[i, j] = A62[i - 5 * ColPointsX * ColPointsY, j - 3 * ColPointsX * ColPointsY];
                //if (i - 2 * ColPointsX * ColPointsY == j) { A[i, j] = 1; }
            }
            //----------------------------------------------------------------------
            for (i = 5 * ColPointsX * ColPointsY; i < 6 * ColPointsX * ColPointsY; i++)
            for (j = 4 * ColPointsX * ColPointsY; j < 5 * ColPointsX * ColPointsY; j++)
            {
                A[i, j] = A65[i - 5 * ColPointsX * ColPointsY, j - 4 * ColPointsX * ColPointsY];
            }

            return true;
        }


        // 3, 4    A   n/2 x n/2    
        private void A2324ColumnsChange()
        {
            double tempdbl = 0.0;
            //2-3 change
            for (int i = 0; i < 6 * ColPointsX * ColPointsY; i++)
                for (int j = ColPointsX * ColPointsY; j < 2 * ColPointsX * ColPointsY; j++)
                {
                    tempdbl = A[i, j];
                    A[i, j] = A[i, j + ColPointsX * ColPointsY];
                    A[i, j + ColPointsX * ColPointsY] = tempdbl;
                }
            //2-4 change
            for (int i = 0; i < 6 * ColPointsX * ColPointsY; i++)
                for (int j = ColPointsX * ColPointsY; j < 2 * ColPointsX * ColPointsY; j++)
                {
                    tempdbl = A[i, j];
                    A[i, j] = A[i, j + 2 * ColPointsX * ColPointsY];
                    A[i, j + 2 * ColPointsX * ColPointsY] = tempdbl;
                }
        }

        private void AToFile()
        {
            int i, j;
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//A.txt"))
            {
                for (i = 0; i < 6 * ColPointsX * ColPointsY; i++)
                    for (j = 0; j < 6 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(A[i, j]),",","."));
                    }
            }
        }

        private void fToFile()
        {
            int i;
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//f.txt"))
            {
                for (i = 0; i < 6 * ColPointsX * ColPointsY; i++)
                {
                    sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(f[i]), ",", "."));
                }
            }

           /* using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Maple//6x6//MyProgrammOntheSameData//f.txt"))
            {
                for (i = 0; i < 6 * ColPointsX * ColPointsY; i++)
                {
                    sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(f[i]), ",", "."));
                }
            }*/
        }

        private void f0ToFile()
        {
            int i;
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//f0.txt"))
            {
                for (i = 0; i < 3 * ColPointsX * ColPointsY; i++)
                {
                    sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(f0[i]), ",", "."));
                }
            }
        }

        private void fcToFile()
        {
            int i;
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//fc.txt"))
            {
                for (i = 0; i < 3 * ColPointsX * ColPointsY; i++)
                {
                    sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(fc[i]), ",", "."));
                }
            }
        }

        private void BqToFile()
        {
            int i, j;
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//Bq.txt"))
            {
                for (i = 0; i < 3 * ColPointsX * ColPointsY; i++)
                    for (j = 0; j < 6 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }

        }

        private void BqLeftToFile()
        {
            int i, j;
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//BqLeft.txt"))
            {
                for (i = 0; i < 3 * ColPointsX * ColPointsY; i++)
                    for (j = 0; j < 6 * ColPointsX * ColPointsY; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(Bq[i, j]), ",", "."));
                    }
            }

        }

        private void DiscrOrtogonalParametersToFile()
        {
            //DiscrOrtogonalPoints
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//DiscrOrtogonalParameters.txt"))
            {
                sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(plateZsize), ",", "."));
                sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(DiscrOrtogonalPoints), ",", "."));
                sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(6 * ColPointsX * ColPointsY), ",", "."));
                sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(3 * ColPointsX * ColPointsY), ",", "."));
            }
        }
        //=========================================================================================================
        //=========================================================================================================
        //=========================================================================================================
        private void tbExNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbExDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbEyNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbEyDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbGxyNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbGxyDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbGxzNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbGxzDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbGyzNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbGyzDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVxyNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVxyDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVxzNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVxzDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVyxNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVyxDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVyzNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVyzDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVzxNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVzxDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVzyNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbVzyDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbEzNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbEzDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void textBox6_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void textBox5_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void textBox4_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbXnum_KeyPress(object sender, KeyPressEventArgs e)
        {
        }

        private void tbXDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbYnum_KeyPress(object sender, KeyPressEventArgs e)
        {
            
        }

        private void tbYDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbZnum_KeyPress(object sender, KeyPressEventArgs e)
        {
            
        }

        private void tbZDouble_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbColPointsX_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbColPointsY_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void tbDiscrOrtogonalPoints_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            pbEvaluation.Value = 0;
            lEvaluation2.Text = "";

            this.Cursor = Cursors.WaitCursor;
            StartInitialization();              //  ,  
            bool ifInitializationOK = CheckInitializationCorrect(); //   

            if (ifInitializationOK)
            {
                AlphaIJInitialization();        //  AlphaIJ -    
                LiambdaIJInitialization();      //  LiambdaIJ -   
                abciInitialization();   //   a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3
                CreateXdimensionColPointsList(); //     
                if (CreateZborderExternalForsesMatrix()) //     , 
                                                         //   
                {
                    if (CreateXYZMatrix()) //      
                                           //  =>     z 
                    {
                      /* !!! */  f0Initialization(); //      
                      /* !!! */  fcInitialization(); //      
                      /* !!! */  fInitialization();  //   

                        if (betaCoefDetecting()) //       z = 0, c
                        {
                            BetaSplinesCoeffGeneration(); //   -  
                            UnitPartMartixCreate();       
                            BqCreate();        //   
                            
                            
                            //   -------------------------------------------------------
                            A1uInverseCreate();
                            A1vInverseCreate();
                            A1wInverseCreate();
                            //-----------------------------------------------------------------------------
                            ACreate();
                            // 3, 4    A   n/2 x n/2    
                            //A2324ColumnsChange();

                            pbEvaluation.Value = 100;
                            lEvaluation2.Text = "   ...";
                            //System.Threading.Thread.Sleep(1000);
                            AToFile();
                            BqToFile();

                            // 3, 4        n/2 x n/2 
                            Bq34ColumnsChange();
                            BqLeftToFile();

                            fToFile();
                            f0ToFile();
                            fcToFile();
                            DiscrOrtogonalParametersToFile();
                        }
                    }
                }
            }
            
            pbEvaluation.Value = 0;
            lEvaluation2.Text = "       .      .";
           // System.Threading.Thread.Sleep(1000);
            button3.Enabled = true;
            this.Cursor = Cursors.Default;
        }

        //    A, Bq,  f, f0, fc (button 1)
        //      dior.txt,
        //    (  z)   
        //S1u, S2v, S2u, S1v, S1w, S2w (   )
        //.......
        // ,       n  m ,
        //      - p,  
        //dior.txt  6 * n * m * p
        //.......
        // n * m  -  S1u(z)     
        // n * m  -  S2v(z)     
        // n * m  -  S2u(z)     
        // n * m  -  S1v(z)     
        // n * m  -  S1w(z)     
        // n * m  -  S2w(z)     
        //     ...
        private void button3_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            //!!!!!!!!!!!!!     !!!!!!!!!!!!!!!!!!!!!!!
            string s1;
            if (tbColPointsX.Text.Length == 0) { s1 = "0"; } else { s1 = tbColPointsX.Text; }
            tempSTRfordouble = s1; ColPointsX = System.Convert.ToInt32(tempSTRfordouble);

            if (tbColPointsY.Text.Length == 0) { s1 = "0"; } else { s1 = tbColPointsY.Text; }
            tempSTRfordouble = s1; ColPointsY = System.Convert.ToInt32(tempSTRfordouble);
            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

            int layerno = 0; //   
            int strno = 0;//    dior.txt
            int vectlength = ColPointsX * ColPointsY; //  
            int vectcoord = 0; //  
            int bigvectlength = 6 * ColPointsX * ColPointsY; //  - 
            int vectnumb = 0; //   6    
            int i, j;
            
            S1uTotal = new double[ColPointsX * ColPointsY, 100]; //  1
            S2uTotal = new double[ColPointsX * ColPointsY, 100]; //  2
            S1vTotal = new double[ColPointsX * ColPointsY, 100]; //  3
            S2vTotal = new double[ColPointsX * ColPointsY, 100]; //  4
            S1wTotal = new double[ColPointsX * ColPointsY, 100]; //  5
            S2wTotal = new double[ColPointsX * ColPointsY, 100]; //  6

            pbEvaluation.Value = 10;
            lEvaluation2.Text = "    dior.txt...";

            using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//classic//dior.txt"))
            {
                string strvalue;
                
                while ((strvalue = sr.ReadLine()) != null)
                {
                    strno++;
                    
                    strvalue = DotReplace(strvalue);
                    strvalue.Trim();
                    double fvalue = System.Convert.ToDouble(MathematicaPowerTransform(strvalue));

                    vectcoord = ( strno - 1 ) % vectlength;
                    vectnumb = (int)Math.Floor((decimal)((strno - 1) % bigvectlength) / vectlength) + 1;
                    layerno = (int)Math.Floor((decimal)(strno - 1) / bigvectlength);

                    if ((!((vectnumb >= 1) && (vectnumb <= 6)))
                        || (!((vectcoord >= 0) && (vectcoord < vectlength))))
                    {
                        MessageBox.Show("!!!!!",
                               "    dior.txt",
                               MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                    if (vectnumb == 1) { S1uTotal[vectcoord, layerno] = fvalue; }
                    if (vectnumb == 2) { S2uTotal[vectcoord, layerno] = fvalue; }
                    if (vectnumb == 3) { S1vTotal[vectcoord, layerno] = fvalue; }
                    if (vectnumb == 4) { S2vTotal[vectcoord, layerno] = fvalue; }
                    if (vectnumb == 5) { S1wTotal[vectcoord, layerno] = fvalue; }
                    if (vectnumb == 6) { S2wTotal[vectcoord, layerno] = fvalue; }
                }
            }
            totallayerno = layerno;
            //     ...===================================================
            pbEvaluation.Value = 20;
            lEvaluation2.Text = " S1u.txt...";
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//S1u.txt"))
            {
                for (i = 0; i <= layerno; i++)
                {
                    sw.WriteLine("----------------  " + System.Convert.ToString(i + 1) + "-----------------");
                    sw.WriteLine("");
                    for (j = 0; j < vectlength; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(S1uTotal[j,i]), ",", "."));
                    }

                }
            }
            pbEvaluation.Value = 30;
            lEvaluation2.Text = " S2u.txt...";
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//S2u.txt"))
            {
                for (i = 0; i <= layerno; i++)
                {
                    sw.WriteLine("----------------  " + System.Convert.ToString(i + 1) + "-----------------");
                    sw.WriteLine("");
                    for (j = 0; j < vectlength; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(S2uTotal[j, i]), ",", "."));
                    }

                }
            }
            pbEvaluation.Value = 40;
            lEvaluation2.Text = " S1v.txt...";
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//S1v.txt"))
            {
                for (i = 0; i <= layerno; i++)
                {
                    sw.WriteLine("----------------  " + System.Convert.ToString(i + 1) + "-----------------");
                    sw.WriteLine("");
                    for (j = 0; j < vectlength; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(S1vTotal[j, i]), ",", "."));
                    }

                }
            }
            pbEvaluation.Value = 50;
            lEvaluation2.Text = " S2v.txt...";
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//S2v.txt"))
            {
                for (i = 0; i <= layerno; i++)
                {
                    sw.WriteLine("----------------  " + System.Convert.ToString(i + 1) + "-----------------");
                    sw.WriteLine("");
                    for (j = 0; j < vectlength; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(S2vTotal[j, i]), ",", "."));
                    }

                }
            }
            pbEvaluation.Value = 60;
            lEvaluation2.Text = " S1w.txt...";
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//S1w.txt"))
            {
                for (i = 0; i <= layerno; i++)
                {
                    sw.WriteLine("----------------  " + System.Convert.ToString(i + 1) + "-----------------");
                    sw.WriteLine("");
                    for (j = 0; j < vectlength; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(S1wTotal[j, i]), ",", "."));
                    }

                }
            }
            pbEvaluation.Value = 70;
            lEvaluation2.Text = " S2w.txt...";
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//S2w.txt"))
            {
                for (i = 0; i <= layerno; i++)
                {
                    sw.WriteLine("----------------  " + System.Convert.ToString(i + 1) + "-----------------");
                    sw.WriteLine("");
                    for (j = 0; j < vectlength; j++)
                    {
                        sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(S2wTotal[j, i]), ",", "."));
                    }

                }
            }
            //===========================================================================================
            //===========    U,V,W==============================================
            int XnumberOutput = 0;
            int YnumberOutput = 0;
            if (ptsXnumberOutput.Text.Length == 0) { s1 = "0"; } else { s1 = ptsXnumberOutput.Text; }
            tempSTRfordouble = s1; XnumberOutput = System.Convert.ToInt32(tempSTRfordouble);
            
            if (ptsYnumberOutput.Text.Length == 0) { s1 = "0"; } else { s1 = ptsYnumberOutput.Text; }
            tempSTRfordouble = s1; YnumberOutput = System.Convert.ToInt32(tempSTRfordouble);

            if ((XnumberOutput < 3) || (YnumberOutput < 3))
            {
                MessageBox.Show("  ",
                               "      x  y (  3-)",
                               MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                double[] XOutputList;
                double[] YOutputList;
                double[] ZOutputList;

                XOutputList = new double[XnumberOutput];    //    
                YOutputList = new double[YnumberOutput];    //    
                ZOutputList = new double[totallayerno + 1]; //    z

                for (i = 0; i < XnumberOutput; i++)
                {
                    XOutputList[i] = i * (double) plateXsize / (XnumberOutput - 1);
                }
                for (i = 0; i < YnumberOutput; i++)
                {
                    YOutputList[i] = i * (double) plateYsize / (YnumberOutput - 1);
                }
                for (i = 0; i <= totallayerno; i++)
                {
                    ZOutputList[i] = i * (double)plateZsize / (totallayerno);
                }

                    pbEvaluation.Value = 80;
                    lEvaluation2.Text = " U.txt...";
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//U.txt"))
                    {
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("=====     U    =====");
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("=====       U      =====");
                        sw.WriteLine("=====       z (  - =====");
                        sw.WriteLine("=====  ).         - =====");
                        sw.WriteLine("=====              .    =====");
                        sw.WriteLine("=====              =====");
                        sw.WriteLine("=====          .                          =====");
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("");
                        sw.WriteLine("    ( -):");
                        for (i = 0; i < XnumberOutput; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(XOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("");

                        sw.WriteLine("    y( -):");
                        for (i = 0; i < YnumberOutput; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(YOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("");

                        sw.WriteLine("    z(  ):");
                        for (i = 0; i <= totallayerno; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(ZOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("----------------------------------------------------------------");
                        sw.WriteLine("   ,  :");
                        sw.WriteLine("");
                        int k, l, m;
                        for (k = 0; k <= totallayerno; k++)
                        {
                            for (l = 0; l < XnumberOutput; l++)
                            {
                                for (m = 0; m < YnumberOutput; m++)
                                {
                                    string llstr = CalculateU(XOutputList[l], YOutputList[m], k).ToString("\0.00000+E00");
                                    int llstrlen = llstr.Length;
                                    for (i = llstrlen; i < 30; i++) { llstr += " "; }

                                    sw.Write(System.Text.RegularExpressions.Regex.Replace(llstr, ",", "."));
                                    sw.Write("  ");
                                }
                                sw.WriteLine("");
                            }

                            sw.WriteLine("       -------------*******-------------");
                            sw.WriteLine("");
                        }
                    }

                    pbEvaluation.Value = 90;
                    lEvaluation2.Text = " V.txt...";
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//V.txt"))
                    {
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("=====     V    =====");
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("=====       V      =====");
                        sw.WriteLine("=====       z (  - =====");
                        sw.WriteLine("=====  ).         - =====");
                        sw.WriteLine("=====              .    =====");
                        sw.WriteLine("=====              =====");
                        sw.WriteLine("=====          .                          =====");
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("");
                        sw.WriteLine("    ( -):");
                        for (i = 0; i < XnumberOutput; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(XOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("");

                        sw.WriteLine("    y( -):");
                        for (i = 0; i < YnumberOutput; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(YOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("");

                        sw.WriteLine("    z(  ):");
                        for (i = 0; i <= totallayerno; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(ZOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("----------------------------------------------------------------");
                        sw.WriteLine("   ,  :");
                        sw.WriteLine("");
                        int k, l, m;
                        for (k = 0; k <= totallayerno; k++)
                        {
                            for (l = 0; l < XnumberOutput; l++)
                            {
                                for (m = 0; m < YnumberOutput; m++)
                                {
                                    string llstr = CalculateV(XOutputList[l], YOutputList[m], k).ToString("\0.00000+E00");
                                    int llstrlen = llstr.Length;
                                    for (i = llstrlen; i < 30; i++) { llstr += " "; }

                                    sw.Write(System.Text.RegularExpressions.Regex.Replace(llstr, ",", "."));
                                    sw.Write("  ");
                                }
                                sw.WriteLine("");
                            }

                            sw.WriteLine("       -------------*******-------------");
                            sw.WriteLine("");
                        }
                    }

                    pbEvaluation.Value = 100;
                    lEvaluation2.Text = " W.txt...";
                    using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//RESULT//W.txt"))
                    {
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("=====     W    =====");
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("=====       W      =====");
                        sw.WriteLine("=====       z (  - =====");
                        sw.WriteLine("=====  ).         - =====");
                        sw.WriteLine("=====              .    =====");
                        sw.WriteLine("=====              =====");
                        sw.WriteLine("=====          .                          =====");
                        sw.WriteLine("================================================================================");
                        sw.WriteLine("");
                        sw.WriteLine("    ( -):");
                        for (i = 0; i < XnumberOutput; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(XOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("");

                        sw.WriteLine("    y( -):");
                        for (i = 0; i < YnumberOutput; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(YOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("");

                        sw.WriteLine("    z(  ):");
                        for (i = 0; i <= totallayerno; i++)
                        {
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(ZOutputList[i]), ",", ".") + ", ");
                        }
                        sw.WriteLine("");
                        sw.WriteLine("----------------------------------------------------------------");
                        sw.WriteLine("   ,  :");
                        sw.WriteLine("");
                        int k, l, m;
                        for (k = 0; k <= totallayerno; k++)
                        {
                            for (l = 0; l < XnumberOutput; l++)
                            {
                                for (m = 0; m < YnumberOutput; m++)
                                {
                                    string llstr = CalculateW(XOutputList[l], YOutputList[m], k).ToString("\0.00000+E00");
                                    int llstrlen = llstr.Length;
                                    for (i = llstrlen; i < 30; i++) { llstr += " "; }

                                    sw.Write(System.Text.RegularExpressions.Regex.Replace(llstr, ",", "."));
                                    sw.Write("  ");
                                }
                                sw.WriteLine("");
                            }

                            sw.WriteLine("       -------------*******-------------");
                            sw.WriteLine("");
                        }
                    }
            }

            pbEvaluation.Value = 0;
            lEvaluation2.Text = "' .       U.txt, V.txt, W.txt.";
            
            this.Cursor = Cursors.Default;
        }

        //   U    (x,y,z[zlayerno])
        private double CalculateU(double x, double y, int zlayerno)
        {
            //--FIui(int i, int node_index) <-- x instead of node_index(?)=> KSIwjy, FIwix, .....
            int i, j;
            //double z;
            double summ = 0.0;

            if ((zlayerno < 0)||(zlayerno > totallayerno))
            {
                MessageBox.Show("!!!!!",
                               "       U",
                               MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 0;
            }

            for (i = 0; i < ColPointsX; i++)
                for (j = 0; j < ColPointsY; j++)
                {
                    summ += S1uTotal[j + i * ColPointsY, zlayerno] * FIuix(i,x) * KSIujy(j,y);
                }

            return summ;

        }

        //   V    (x,y,z[zlayerno])
        private double CalculateV(double x, double y, int zlayerno)
        {
            //--FIui(int i, int node_index) <-- x instead of node_index(?)=> KSIwjy, FIwix, .....
            int i, j;
            //double z;
            double summ = 0.0;

            if ((zlayerno < 0) || (zlayerno > totallayerno))
            {
                MessageBox.Show("!!!!!",
                               "       U",
                               MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 0;
            }

            for (i = 0; i < ColPointsX; i++)
                for (j = 0; j < ColPointsY; j++)
                {
                    summ += S1vTotal[j + i * ColPointsY, zlayerno] * FIvix(i, x) * KSIvjy(j, y);
                }

            return summ;

        }

        //   W    (x,y,z[zlayerno])
        private double CalculateW(double x, double y, int zlayerno)
        {
            //--FIui(int i, int node_index) <-- x instead of node_index(?)=> KSIwjy, FIwix, .....
            int i, j;
            //double z;
            double summ = 0.0;

            if ((zlayerno < 0) || (zlayerno > totallayerno))
            {
                MessageBox.Show("!!!!!",
                               "       U",
                               MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 0;
            }

            for (i = 0; i < ColPointsX; i++)
                for (j = 0; j < ColPointsY; j++)
                {
                    summ += S1wTotal[j + i * ColPointsY, zlayerno] * FIwix(i, x) * KSIwjy(j, y);
                }

            return summ;

        }

        private void ptsXnumberOutput_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void ptsYnumberOutput_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9]");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            /*    C:\SickWallOrtotrPlate\SLARtest\U.txt, 
             *                 C:\SickWallOrtotrPlate\SLARtest\V.txt,
             *                 C:\SickWallOrtotrPlate\SLARtest\W.txt
             *   U, V, W,      
             *    KsiKlist, TetaPlist   21    
             *  z
             */
            string s1;
            int XnumberOutput = 0;
            int YnumberOutput = 0;
            if (ptsXnumberOutput.Text.Length == 0) { s1 = "0"; } else { s1 = ptsXnumberOutput.Text; }
            tempSTRfordouble = s1; XnumberOutput = System.Convert.ToInt32(tempSTRfordouble);

            if (ptsYnumberOutput.Text.Length == 0) { s1 = "0"; } else { s1 = ptsYnumberOutput.Text; }
            tempSTRfordouble = s1; YnumberOutput = System.Convert.ToInt32(tempSTRfordouble);

            if ((XnumberOutput < 3) || (YnumberOutput < 3))
            {
                MessageBox.Show("  ",
                               "      x  y (  3-)",
                               MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {

                double[] XOutputList;
                double[] YOutputList;


                XOutputList = new double[XnumberOutput];    //    
                YOutputList = new double[YnumberOutput];    //    


                for (int i = 0; i < XnumberOutput; i++)
                {
                    XOutputList[i] = i * (double)plateXsize / (XnumberOutput - 1);
                }
                for (int  i = 0; i < YnumberOutput; i++)
                {
                    YOutputList[i] = i * (double)plateYsize / (YnumberOutput - 1);
                }


                using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//SLARtest//U.txt"))
                {
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("=====     U    =====");
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("=====       U         =====");
                    sw.WriteLine("=====       z (  - =====");
                    sw.WriteLine("=====  ).         - =====");
                    sw.WriteLine("=====              .       =====");
                    sw.WriteLine("=====              =====");
                    sw.WriteLine("=====          .                             =====");
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("");
                    sw.WriteLine("    ( -):");
                    for (int i = 0; i < XnumberOutput; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(XOutputList[i]), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("");

                    sw.WriteLine("    y( -):");
                    for (int i = 0; i < YnumberOutput; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(YOutputList[i]), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("");

                    sw.WriteLine("    z(  ):");
                    for (int i = 0; i <= 10; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(i * 0.1), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("----------------------------------------------------------------");
                    sw.WriteLine("   ,  :");
                    sw.WriteLine("");

                    for (int i = 1; i <= 11; i++)
                    {
                        for (int j = 0; j < XnumberOutput; j++)
                        {
                            for (int k = 0; k < YnumberOutput; k++)
                            {
                                double ld = 0.06882364535 * Math.Cos(Math.PI * XOutputList[j]) * Math.Sin(Math.PI * YOutputList[k]) * Math.Sin(Math.PI * (i - 1) * 0.1);
                                sw.Write(System.Text.RegularExpressions.Regex.Replace(ld.ToString("\0.00000+E00"), ",", "."));
                                sw.Write("  ");
                            }
                            sw.WriteLine("");
                        }
                        sw.WriteLine("       -------------*******-------------");
                        sw.WriteLine("");
                    }
                }

                using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//SLARtest//V.txt"))
                {
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("=====     V    =====");
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("=====       V         =====");
                    sw.WriteLine("=====       z (  - =====");
                    sw.WriteLine("=====  ).         - =====");
                    sw.WriteLine("=====              .       =====");
                    sw.WriteLine("=====              =====");
                    sw.WriteLine("=====          .                             =====");
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("");
                    sw.WriteLine("    ( -):");
                    for (int i = 0; i < XnumberOutput; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(XOutputList[i]), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("");

                    sw.WriteLine("    y( -):");
                    for (int i = 0; i < YnumberOutput; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(YOutputList[i]), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("");

                    sw.WriteLine("    z(  ):");
                    for (int i = 0; i <= 10; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(i * 0.1), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("----------------------------------------------------------------");
                    sw.WriteLine("   ,  :");
                    sw.WriteLine("");

                    for (int i = 1; i <= 11; i++)
                    {
                        for (int j = 0; j < XnumberOutput; j++)
                        {
                            for (int k = 0; k < YnumberOutput; k++)
                            {
                                double ld = 0.06882364535 * Math.Sin(Math.PI * XOutputList[j]) * Math.Cos(Math.PI * YOutputList[k]) * Math.Sin(Math.PI * (i - 1) * 0.1);
                                sw.Write(System.Text.RegularExpressions.Regex.Replace(ld.ToString("\0.00000+E00"), ",", "."));
                                sw.Write("  ");
                            }
                            sw.WriteLine("");
                        }
                        sw.WriteLine("       -------------*******-------------");
                        sw.WriteLine("");
                    }
                }

                using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//SLARtest//W.txt"))
                {
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("=====     W    =====");
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("=====       W         =====");
                    sw.WriteLine("=====       z (  - =====");
                    sw.WriteLine("=====  ).         - =====");
                    sw.WriteLine("=====              .       =====");
                    sw.WriteLine("=====              =====");
                    sw.WriteLine("=====          .                             =====");
                    sw.WriteLine("================================================================================");
                    sw.WriteLine("");
                    sw.WriteLine("    ( -):");
                    for (int i = 0; i < XnumberOutput; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(XOutputList[i]), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("");

                    sw.WriteLine("    y( -):");
                    for (int i = 0; i < YnumberOutput; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(YOutputList[i]), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("");

                    sw.WriteLine("    z(  ):");
                    for (int i = 0; i <= 10; i++)
                    {
                        sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(i * 0.1), ",", ".") + ", ");
                    }
                    sw.WriteLine("");
                    sw.WriteLine("----------------------------------------------------------------");
                    sw.WriteLine("   ,  :");
                    sw.WriteLine("");

                    for (int i = 1; i <= 11; i++)
                    {
                        for (int j = 0; j < XnumberOutput; j++)
                        {
                            for (int k = 0; k < YnumberOutput; k++)
                            {
                                double ld = -0.1148537771 * Math.Sin(Math.PI * XOutputList[j]) * Math.Sin(Math.PI * YOutputList[k]) * Math.Cos(Math.PI * (i - 1) * 0.1);
                                sw.Write(System.Text.RegularExpressions.Regex.Replace(ld.ToString("\0.00000+E00"), ",", "."));
                                sw.Write("  ");
                            }
                            sw.WriteLine("");
                        }
                        sw.WriteLine("       -------------*******-------------");
                        sw.WriteLine("");
                    }
                }

            }

        }

        private void button5_Click(object sender, EventArgs e)
        {
            double [] U1Layer = new double[21];
            double [] U2Layer = new double[21];
            double [] V1Layer = new double[21];
            double [] V2Layer = new double[21];
            double [] W1Layer = new double[21];
            double [] W2Layer = new double[21];

            int layerno = 0;
            int strno = 0;
            int vectnumb = 0;

            using (StreamReader sr = new StreamReader("C://SickWallOrtotrPlate//classic_6diffEqTest//dior.txt"))
            {
                string strvalue;

                while ((strvalue = sr.ReadLine()) != null)
                {
                    strno++;

                    strvalue = DotReplace(strvalue);
                    strvalue.Trim();
                    double fvalue = System.Convert.ToDouble(MathematicaPowerTransform(strvalue));

                    layerno = (int)Math.Floor((decimal)(strno - 1) / 6);
                    if (strno % 6 == 1) { vectnumb = 1; }
                    if (strno % 6 == 2) { vectnumb = 2; }
                    if (strno % 6 == 3) { vectnumb = 3; }
                    if (strno % 6 == 4) { vectnumb = 4; }
                    if (strno % 6 == 5) { vectnumb = 5; }
                    if (strno % 6 == 0) { vectnumb = 6; }


                    if (vectnumb == 1) { U1Layer[layerno] = fvalue; }
                    if (vectnumb == 2) { U2Layer[layerno] = fvalue; }
                    if (vectnumb == 3) { V1Layer[layerno] = fvalue; }
                    if (vectnumb == 4) { V2Layer[layerno] = fvalue; }
                    if (vectnumb == 5) { W1Layer[layerno] = fvalue; }
                    if (vectnumb == 6) { W2Layer[layerno] = fvalue; }
                }
            }

            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//6difEqTest//Usmall.txt"))
            {
                for (int i = 0; i <= layerno; i++)
                {
                    sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(U1Layer[i]), ",", "."));
                }
            }
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//6difEqTest//Vsmall.txt"))
            {
                for (int i = 0; i <= layerno; i++)
                {
                    sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(V1Layer[i]), ",", "."));
                }
            }
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//6difEqTest//Wsmall.txt"))
            {
                for (int i = 0; i <= layerno; i++)
                {
                    sw.WriteLine(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(W1Layer[i]), ",", "."));
                }
            }


            //=========================================================
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//6difEqTest//U.txt"))
            {
                sw.WriteLine("================================================================================");
                sw.WriteLine("=====     U    =====");
                sw.WriteLine("================================================================================");
                sw.WriteLine("=====       U      =====");
                sw.WriteLine("=====       z (  - =====");
                sw.WriteLine("=====  ).         - =====");
                sw.WriteLine("=====              .    =====");
                sw.WriteLine("=====              =====");
                sw.WriteLine("=====          .                          =====");
                sw.WriteLine("================================================================================");
                sw.WriteLine("");
                sw.WriteLine("    ( -):");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KsiKlist[i]), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("");

                sw.WriteLine("    y( -):");
                for (int i = 0; i < ColPointsY; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(TetaPlist[i]), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("");

                sw.WriteLine("    z(  ):");
                for (int i = 0; i <= 20; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(i * 0.05), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("----------------------------------------------------------------");
                sw.WriteLine("   ,  :");
                sw.WriteLine("");

                for (int i = 1; i <= 21; i++)
                {
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        for (int k = 0; k < ColPointsY; k++)
                        {
                            double ld = Math.Cos(Math.PI * KsiKlist[j]) * Math.Sin(Math.PI * TetaPlist[k]) * U1Layer[i - 1];
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(ld.ToString("\0.00000+E00"), ",", "."));
                            sw.Write("  ");
                        }
                        sw.WriteLine("");
                    }
                    sw.WriteLine("       -------------*******-------------");
                    sw.WriteLine("");
                }
            }

            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//6difEqTest//V.txt"))
            {
                sw.WriteLine("================================================================================");
                sw.WriteLine("=====     V    =====");
                sw.WriteLine("================================================================================");
                sw.WriteLine("=====       V      =====");
                sw.WriteLine("=====       z (  - =====");
                sw.WriteLine("=====  ).         - =====");
                sw.WriteLine("=====              .    =====");
                sw.WriteLine("=====              =====");
                sw.WriteLine("=====          .                          =====");
                sw.WriteLine("================================================================================");
                sw.WriteLine("");
                sw.WriteLine("    ( -):");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KsiKlist[i]), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("");

                sw.WriteLine("    y( -):");
                for (int i = 0; i < ColPointsY; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(TetaPlist[i]), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("");

                sw.WriteLine("    z(  ):");
                for (int i = 0; i <= 20; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(i * 0.05), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("----------------------------------------------------------------");
                sw.WriteLine("   ,  :");
                sw.WriteLine("");

                for (int i = 1; i <= 21; i++)
                {
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        for (int k = 0; k < ColPointsY; k++)
                        {
                            double ld = Math.Sin(Math.PI * KsiKlist[j]) * Math.Cos(Math.PI * TetaPlist[k]) * V1Layer[i - 1];
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(ld.ToString("\0.00000+E00"), ",", "."));
                            sw.Write("  ");
                        }
                        sw.WriteLine("");
                    }
                    sw.WriteLine("       -------------*******-------------");
                    sw.WriteLine("");
                }
            }

            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//6difEqTest//W.txt"))
            {
                sw.WriteLine("================================================================================");
                sw.WriteLine("=====     W    =====");
                sw.WriteLine("================================================================================");
                sw.WriteLine("=====       W      =====");
                sw.WriteLine("=====       z (  - =====");
                sw.WriteLine("=====  ).         - =====");
                sw.WriteLine("=====              .    =====");
                sw.WriteLine("=====              =====");
                sw.WriteLine("=====          .                          =====");
                sw.WriteLine("================================================================================");
                sw.WriteLine("");
                sw.WriteLine("    ( -):");
                for (int i = 0; i < ColPointsX; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KsiKlist[i]), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("");

                sw.WriteLine("    y( -):");
                for (int i = 0; i < ColPointsY; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(TetaPlist[i]), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("");

                sw.WriteLine("    z(  ):");
                for (int i = 0; i <= 20; i++)
                {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(i * 0.05), ",", ".") + ", ");
                }
                sw.WriteLine("");
                sw.WriteLine("----------------------------------------------------------------");
                sw.WriteLine("   ,  :");
                sw.WriteLine("");

                for (int i = 1; i <= 21; i++)
                {
                    for (int j = 0; j < ColPointsX; j++)
                    {
                        for (int k = 0; k < ColPointsY; k++)
                        {
                            double ld = Math.Sin(Math.PI * KsiKlist[j]) * Math.Sin(Math.PI * TetaPlist[k]) * W1Layer[i - 1];
                            sw.Write(System.Text.RegularExpressions.Regex.Replace(ld.ToString("\0.00000+E00"), ",", "."));
                            sw.Write("  ");
                        }
                        sw.WriteLine("");
                    }
                    sw.WriteLine("       -------------*******-------------");
                    sw.WriteLine("");
                }
            }

            //=========================================================

        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void button6_Click(object sender, EventArgs e)
        {
            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//FiixKsijtest//Fi//FiuixSharp.txt"))
            {
                for (int i = 0; i < ColPointsX; i++)
                {
                    for (int j = 1; j <= 11; j++)
                    {
                        double x = (double)(plateXsize / 10) * (j - 1);
                        sw.WriteLine("Fiuix(" + System.Convert.ToString(i) + "," + System.Convert.ToString(x) + ") = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIuix(i, x)), ",", "."));
                    }
                }
            }

            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//FiixKsijtest//Fi//FivixSharp.txt"))
            {
                for (int i = 0; i < ColPointsX; i++)
                {
                    for (int j = 1; j <= 11; j++)
                    {
                        double x = (double)(plateXsize / 10) * (j - 1);
                        sw.WriteLine("Fivix(" + System.Convert.ToString(i) + "," + System.Convert.ToString(x) + ") = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIvix(i, x)), ",", "."));
                    }
                }
            }

            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//FiixKsijtest//Fi//FiwixSharp.txt"))
            {
                for (int i = 0; i < ColPointsX; i++)
                {
                    for (int j = 1; j <= 11; j++)
                    {
                        double x = (double)(plateXsize / 10) * (j - 1);
                        sw.WriteLine("Fiwix(" + System.Convert.ToString(i) + "," + System.Convert.ToString(x) + ") = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(FIwix(i, x)), ",", "."));
                    }
                }
            }
            //================================================================================== 


            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//FiixKsijtest//Ksi//KsiujySharp.txt"))
            {
                for (int i = 0; i < ColPointsY; i++)
                {
                    for (int j = 1; j <= 11; j++)
                    {
                        double y = (double)(plateYsize / 10) * (j - 1);
                        sw.WriteLine("Ksiujy(" + System.Convert.ToString(i) + "," + System.Convert.ToString(y) + ") = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIujy(i, y)), ",", "."));
                    }
                }
            }

            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//FiixKsijtest//Ksi//KsivjySharp.txt"))
            {
                for (int i = 0; i < ColPointsY; i++)
                {
                    for (int j = 1; j <= 11; j++)
                    {
                        double y = (double)(plateYsize / 10) * (j - 1);
                        sw.WriteLine("Ksivjy(" + System.Convert.ToString(i) + "," + System.Convert.ToString(y) + ") = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIvjy(i, y)), ",", "."));
                    }
                }
            }

            using (StreamWriter sw = new StreamWriter("C://SickWallOrtotrPlate//FiixKsijtest//Ksi//KsiwjySharp.txt"))
            {
                for (int i = 0; i < ColPointsY; i++)
                {
                    for (int j = 1; j <= 11; j++)
                    {
                        double y = (double)(plateYsize / 10) * (j - 1);
                        sw.WriteLine("Ksiwjy(" + System.Convert.ToString(i) + "," + System.Convert.ToString(y) + ") = " + System.Text.RegularExpressions.Regex.Replace(System.Convert.ToString(KSIwjy(i, y)), ",", "."));
                    }
                }
            }
        }


    }
}