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); }
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); }
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); }