private void Make_GraphicsAreas(Node_ND[] Side_Nodes, ref Side TheSide, int Resolution)
        {
            ParametricInterpolation_ND_Triangle Node_Interpolator = new ParametricInterpolation_ND_Triangle(NNPE_m);
            int Res_NNPE_m = Resolution * (NNPE_m - 1) + 1;
            ParametricInterpolation_ND_Triangle Resolution_Interpolaor = new ParametricInterpolation_ND_Triangle(Res_NNPE_m);
            Vector Area_DisplayValues = Calculate_Area_DisplayValues(Side_Nodes, Node_Interpolator, Resolution_Interpolaor);

            Vector[] Area_X = Calculate_Area_Locations(Side_Nodes, Node_Interpolator, Resolution_Interpolaor);
            int      NA     = Resolution * (NNPE_m - 1) * Resolution * (NNPE_m - 1);

            TheSide.Areas      = new Vector[NA][];
            TheSide.AreaValues = new Vector[NA];
            int index_1 = 0;
            int index_2 = Resolution * (NNPE_m - 1) + 1;
            int index   = 0;

            for (int i = 0; i < Resolution * (NNPE_m - 1); i++)
            {
                int N = Resolution * (NNPE_m - 1) + 1 - i;
                for (int j = 0; j < N - 2; j++)
                {
                    TheSide.Areas[index]      = new Vector[3];
                    TheSide.AreaValues[index] = new Vector(3);
                    TheSide.Areas[index][0]   = Area_X[index_1 + j];
                    TheSide.Areas[index][1]   = Area_X[index_1 + j + 1];
                    TheSide.Areas[index][2]   = Area_X[index_2 + j];
                    //TheSide.Areas[index][3] = TheSide.Areas[index][0];
                    TheSide.AreaValues[index].Values[0] = Area_DisplayValues.Values[index_1 + j];
                    TheSide.AreaValues[index].Values[1] = Area_DisplayValues.Values[index_1 + j + 1];
                    TheSide.AreaValues[index].Values[2] = Area_DisplayValues.Values[index_2 + j];
                    //TheSide.AreaValues[index].Values[3] = TheSide.AreaValues[index].Values[0];
                    index++;
                    TheSide.Areas[index]      = new Vector[3];
                    TheSide.AreaValues[index] = new Vector(3);
                    TheSide.Areas[index][0]   = Area_X[index_1 + j + 1];
                    TheSide.Areas[index][1]   = Area_X[index_2 + j + 1];
                    TheSide.Areas[index][2]   = Area_X[index_2 + j];
                    //TheSide.Areas[index][3] = TheSide.Areas[index][0];
                    TheSide.AreaValues[index].Values[0] = Area_DisplayValues.Values[index_1 + j + 1];
                    TheSide.AreaValues[index].Values[1] = Area_DisplayValues.Values[index_2 + j + 1];
                    TheSide.AreaValues[index].Values[2] = Area_DisplayValues.Values[index_2 + j];
                    //TheSide.AreaValues[index].Values[3] = TheSide.AreaValues[index].Values[0];
                    index++;
                }
                TheSide.Areas[index]      = new Vector[3];
                TheSide.AreaValues[index] = new Vector(3);
                TheSide.Areas[index][0]   = Area_X[index_1 + N - 2];
                TheSide.Areas[index][1]   = Area_X[index_1 + N - 1];
                TheSide.Areas[index][2]   = Area_X[index_2 + N - 2];
                //TheSide.Areas[index][3] = TheSide.Areas[index][0];
                TheSide.AreaValues[index].Values[0] = Area_DisplayValues.Values[index_1 + N - 2];
                TheSide.AreaValues[index].Values[1] = Area_DisplayValues.Values[index_1 + N - 1];
                TheSide.AreaValues[index].Values[2] = Area_DisplayValues.Values[index_2 + N - 2];
                //TheSide.AreaValues[index].Values[3] = TheSide.AreaValues[index].Values[0];
                index++;

                index_1  = index_2;
                index_2 += N - 1;
            }
        }
        private Vector[] Calculate_Area_Locations(Node_ND[] ElementNodes, ParametricInterpolation_ND_Triangle TheResInterpolation)
        {
            int NNPE = TheResInterpolation.NNPE;

            Vector[] X       = new Vector[NNPE];
            Vector[] Nodal_X = Get_ElementNodal_X(ElementNodes);
            for (int i = 0; i < NNPE; i++)
            {
                X[i] = Interpolate_Variable(TheResInterpolation.NodeXi[i], Nodal_X);
            }
            return(X);
        }
        private Vector Calculate_Area_DisplayValues(Node_ND[] ElementNodes, ParametricInterpolation_ND_Triangle TheResInterpolation)
        {
            int    NNPE               = TheResInterpolation.NNPE;
            Vector DisplayValues      = new Vector(NNPE);
            Vector NodalDisplayValues = Get_Nodal_DisplayValues(ElementNodes);

            for (int i = 0; i < NNPE; i++)
            {
                DisplayValues.Values[i] = Interpolate_Variable(TheResInterpolation.NodeXi[i], NodalDisplayValues.Values);
            }
            return(DisplayValues);
        }
        private void Chage_GraphicsAreas_Values(Node_ND[] ElementNodes, ref Side TheSide, int Resolution)
        {
            int Res_NNPE_m = Resolution * (NNPE_m - 1) + 1;
            ParametricInterpolation_ND_Triangle TempInter = new ParametricInterpolation_ND_Triangle(Res_NNPE_m);
            Vector Area_DisplayValues = Calculate_Area_DisplayValues(ElementNodes, TempInter);
            int    NA = Resolution * (NNPE_m - 1) * Resolution * (NNPE_m - 1);

            TheSide.AreaValues = new Vector[NA];
            int index_1 = 0;
            int index_2 = Resolution * (NNPE_m - 1) + 1;
            int index   = 0;

            for (int i = 0; i < Resolution * (NNPE_m - 1); i++)
            {
                int N = Resolution * (NNPE_m - 1) + 1 - i;
                for (int j = 0; j < N - 2; j++)
                {
                    TheSide.AreaValues[index]           = new Vector(3);
                    TheSide.AreaValues[index].Values[0] = Area_DisplayValues.Values[index_1 + j];
                    TheSide.AreaValues[index].Values[1] = Area_DisplayValues.Values[index_1 + j + 1];
                    TheSide.AreaValues[index].Values[2] = Area_DisplayValues.Values[index_2 + j];
                    //TheSide.AreaValues[index].Values[3] = TheSide.AreaValues[index].Values[0];
                    index++;
                    TheSide.AreaValues[index]           = new Vector(3);
                    TheSide.AreaValues[index].Values[0] = Area_DisplayValues.Values[index_1 + j + 1];
                    TheSide.AreaValues[index].Values[1] = Area_DisplayValues.Values[index_2 + j + 1];
                    TheSide.AreaValues[index].Values[2] = Area_DisplayValues.Values[index_2 + j];
                    //TheSide.AreaValues[index].Values[3] = TheSide.AreaValues[index].Values[0];
                    index++;
                }
                TheSide.AreaValues[index]           = new Vector(3);
                TheSide.AreaValues[index].Values[0] = Area_DisplayValues.Values[index_1 + N - 2];
                TheSide.AreaValues[index].Values[1] = Area_DisplayValues.Values[index_1 + N - 1];
                TheSide.AreaValues[index].Values[2] = Area_DisplayValues.Values[index_2 + N - 2];
                //TheSide.AreaValues[index].Values[3] = TheSide.AreaValues[index].Values[0];
                index++;

                index_1  = index_2;
                index_2 += N - 1;
            }
        }