Assume that the velocities at nodes 5 and 6 are and , respectively. Compute the velocity gradient at the blue point.
To compute the velocity gradient, we have to find the velocities at the slave nodes using the relation
For node 1 of the element (global node 5), the matrix is
Therefore, the velocities of the slave nodes are
For node 2 of the element (global node 6), the matrix is
Therefore, the velocities of the slave nodes are
The interpolated velocity within the element is given by
Plugging in the values of the nodal velocities and the shape functions,
we get
The velocity gradient is given by
The velocities are given in terms of the parent element coordinates (). We have to convert them to the () system in order to compute the velocity gradient. To do that we recall that
In matrix form
and
Therefore,
The isoparametric map is
The derivatives with respect to and are
Therefore,
Since we are only interested in the point () = (0,0), we
can compute at this point
The inverse is
The derivatives of with respect to and are
At () = (0,0), we get
Therefore,
Therefore, the velocity gradient at the blue point is
The Maple code for doing the above calculations is shown below.
> #
> # Compute velocity gradient
> #
> # Map from master to slave nodes
> #
> T1 := linalg[matrix](4,3,[1,0,y1-y1m,
> 0,1,x1m-x1,
> 1,0,y1-y1p,
> 0,1,x1p-x1]);
> T2 := linalg[matrix](4,3,[1,0,y2-y2m,
> 0,1,x2m-x2,
> 1,0,y2-y2p,
> 0,1,x2p-x2]);
> v1slave := evalm(T1&*v1master);
> v2slave := evalm(T2&*v2master);
> #
> # Velocity interpolation within element
> #
> vx := v1slave[1,1]*N[1,1] + v2slave[1,1]*N[1,2] +
> v1slave[3,1]*N[1,3] + v2slave[3,1]*N[1,4];
> vy := v1slave[2,1]*N[1,1] + v2slave[2,1]*N[1,2] +
> v1slave[4,1]*N[1,3] + v2slave[4,1]*N[1,4];
> #
> # Derivatives of velocity within element (at the blue point)
> #
> dvx_dxi := subs(xi=0,eta=0,diff(vx, xi));
> dvy_dxi := subs(xi=0,eta=0,diff(vy, xi));
> dvx_deta := subs(xi=0,eta=0,diff(vx, eta));
> dvy_deta := subs(xi=0,eta=0,diff(vy, eta));
> #
> # Jacobian of the isoparametric map and its inverse
> # (at the blue point)
> #
> dx_dxi := subs(xi=0,eta=0,diff(x, xi));
> dy_dxi := subs(xi=0,eta=0,diff(y, xi));
> dx_deta := subs(xi=0,eta=0,diff(x, eta));
> dy_deta := subs(xi=0,eta=0,diff(y, eta));
> J := linalg[matrix](2,2,[dx_dxi,dy_dxi,dx_deta,dy_deta]);
> Jinv := inverse(J);
> #
> # Compute velocity gradient (at the blue point)
> #
> dVx_dxi := linalg[matrix](2,1,[dvx_dxi,dvx_deta]);
> dVy_dxi := linalg[matrix](2,1,[dvy_dxi,dvy_deta]);
> dVxdx := evalm(Jinv&*dVx_dxi);
> dVydx := evalm(Jinv&*dVy_dxi);
> GradV := linalg[matrix](2,2,[dVxdx[1,1],dVxdx[2,1],
>dVydx[1,1],dVydx[2,1]]);