public override Vector[] Calculate_DerivativesOfShapeFunctions_WRTXi(Vector Xi)
        {
            Vector[] DNDXi      = new Vector[NNPE];
            Vector   N_1D_L     = ParametricInterpolation_1D_L.CalculateShapeFunctions(Xi.Values[0]);
            Vector   N_1D_M     = ParametricInterpolation_1D_M.CalculateShapeFunctions(Xi.Values[1]);
            Vector   N_1D_N     = ParametricInterpolation_1D_N.CalculateShapeFunctions(Xi.Values[2]);
            Vector   DNDXi_1D_L = ParametricInterpolation_1D_L.CalculateDerivativesOfShapeFunctions_WRTXi(Xi.Values[0]);
            Vector   DNDXi_1D_M = ParametricInterpolation_1D_M.CalculateDerivativesOfShapeFunctions_WRTXi(Xi.Values[1]);
            Vector   DNDXi_1D_N = ParametricInterpolation_1D_N.CalculateDerivativesOfShapeFunctions_WRTXi(Xi.Values[2]);
            int      Index      = 0;

            for (int k = 0; k < NNPE_n; k++)
            {
                for (int j = 0; j < NNPE_m; j++)
                {
                    for (int i = 0; i < NNPE_l; i++)
                    {
                        DNDXi[Index]           = new Vector(3);
                        DNDXi[Index].Values[0] = N_1D_N.Values[k] * N_1D_M.Values[j] * DNDXi_1D_L.Values[i];
                        DNDXi[Index].Values[1] = N_1D_N.Values[k] * DNDXi_1D_M.Values[j] * N_1D_L.Values[i];
                        DNDXi[Index].Values[2] = DNDXi_1D_N.Values[k] * N_1D_M.Values[j] * N_1D_L.Values[i];
                        Index++;
                    }
                }
            }
            return(DNDXi);
        }
Exemple #2
0
        public override Vector Calculate_ShapeFunctions(Vector Xi)
        {
            Vector N      = new Vector(NNPE);
            Vector N_1D_M = ParametricInterpolation_1D_M.CalculateShapeFunctions(Xi.Values[0]);
            Vector N_1D_N = ParametricInterpolation_1D_N.CalculateShapeFunctions(Xi.Values[1]);
            int    Index  = 0;

            for (int j = 0; j < NNPE_n; j++)
            {
                for (int i = 0; i < NNPE_m; i++)
                {
                    N.Values[Index] = N_1D_M.Values[i] * N_1D_N.Values[j];
                    Index++;
                }
            }
            return(N);
        }
Exemple #3
0
        public override Matrix_Jagged Calculate_DerivativesOfShapeFunctions_WRTXi_Matrix_Jagged(Vector Xi)
        {
            Matrix_Jagged DNDXi      = new Matrix_Jagged(NNPE, 2);
            Vector        N_1D_M     = ParametricInterpolation_1D_M.CalculateShapeFunctions(Xi.Values[0]);
            Vector        N_1D_N     = ParametricInterpolation_1D_N.CalculateShapeFunctions(Xi.Values[1]);
            Vector        DNDXi_1D_M = ParametricInterpolation_1D_M.CalculateDerivativesOfShapeFunctions_WRTXi(Xi.Values[0]);
            Vector        DNDXi_1D_N = ParametricInterpolation_1D_N.CalculateDerivativesOfShapeFunctions_WRTXi(Xi.Values[1]);
            int           Index      = 0;

            for (int j = 0; j < NNPE_n; j++)
            {
                for (int i = 0; i < NNPE_m; i++)
                {
                    DNDXi.Values[Index][0] = DNDXi_1D_M.Values[i] * N_1D_N.Values[j];
                    DNDXi.Values[Index][1] = N_1D_M.Values[i] * DNDXi_1D_N.Values[j];
                    Index++;
                }
            }
            return(DNDXi);
        }