public void Calculate_X_DNDX_DetJacobian(Vector Xi, Node_ND[] ElementNodes, out Vector X, out Matrix_Jagged DNDX, out double Det_Jac) { Vector[] Xp = Get_ElementNodal_X(ElementNodes); Vector N; Vector[] dNdXi = Calculate_DerivativesOfShapeFunctions_WRTXi(Xi, out N); X = Interpolate_Variable(Xp, N); Matrix_Jagged DNDXi = new Matrix_Jagged(dNdXi).Transpose(); Matrix_Jagged DXDXi = Interpolate_DerivativeOfVariable_WRTXi(Xp, dNdXi); Matrix_Jagged DXiDX = DXDXi.Invert(out Det_Jac); DNDX = DNDXi * DXiDX; }
public virtual Matrix_Jagged Calculate_InverseJacobian_DXiDX(Vector Xi, Node_ND[] ElementNodes) { Matrix_Jagged DXDXi = Calculate_Jacobian_DXDXi(Xi, ElementNodes); return(DXDXi.Invert()); }
public virtual Matrix_Jagged Calculate_InverseJacobian_DXiDX(Vector Xi, Node_ND[] ElementNodes, out Matrix_Jagged DXDXi, out double Det_Jacobian) { DXDXi = Calculate_Jacobian_DXDXi(Xi, ElementNodes); return(DXDXi.Invert(out Det_Jacobian)); }
public virtual void Calculate_dNdXi_DXDXi_DXiDX_DetJac(Vector Xi, Node_ND[] ElementNodes, out Vector[] dNdXi, out Matrix_Jagged DXDXi, out Matrix_Jagged DXiDX, out double DetJac) { Calculate_dNdXi_DXDXi(Xi, ElementNodes, out dNdXi, out DXDXi); DXiDX = DXDXi.Invert(out DetJac); }