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

From Wikiversity
Jump to navigation Jump to search

Problem 1: Part 10[edit | edit source]

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