Nonlinear finite elements/Homework 6/Solutions/Problem 1/Part 10

Problem 1: Part 10 edit

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