Message Boards Message Boards

0
|
6328 Views
|
13 Replies
|
4 Total Likes
View groups...
Share
Share this post:

Finding the inverse of a mapping of a disk onto an airfoil

Posted 9 years ago
POSTED BY: SALIOU TELLY
13 Replies

I wonder if you can interpolate the derivatives, instead of derivating the interpolation.

POSTED BY: Gianluca Gorni

If a numerical inverse is enough for you, you can compute the direct transformation in the points in a grid, reverse the order and then use something like ListInterpolation.

POSTED BY: Gianluca Gorni
Posted 9 years ago

Thanks Gianluca for the suggestion!

I was trying to first take the route of finding an expression for the inverse, but I may have to look at the numerical inverse or just formulate a transformation from scratch to map interior points of an airfoil onto interior points of a circle.

The issue with the numerical inverse is that I plan to next find the deformation gradient matrix and its Jacobian from this map, which involves finding derivatives with respect to variables. That task would be "easier" if I could find an explicit expression ....

Thanks again,

Saliou

POSTED BY: SALIOU TELLY
Posted 9 years ago

Daniel,

Thanks for the suggestion.

Attached is the simplified notebook that I am using....

Regards,

Saliou Telly

Attachments:
POSTED BY: SALIOU TELLY

I made a few small modifications. I did not check which, if any, make a difference to the outcome.

(1) I made all numbers exact. This could be an issue, for example, in "symbolic" handling of square roots.

(2) I converted the equations to expressions.

(3) I did not define x and y to be functions of r and theta. I expect that this makes the reverse solving problem easier. In particular we can now solve for those rather than for the {r,theta} pair.

Ro = 2;
Ri = 1;
\[Rho] = 2;
\[Alpha] = -1/4;
\[Beta] = 0;
\[Lambda] = 7/4;

exprs = {-xd + (Ri*x)/(x^2 + y^2)^(1/2) + ((Ro - Ri)/Ro)*x, 
      -yd + (Ri*y)/(x^2 + y^2)^(1/2) + ((Ro - Ri)/Ro)*y};

Timing[solns = Simplify[Solve[exprs == 0, {x, y}]]]

(* Out[156]= {0.546003, {{x -> (
    2 (xd^3 + xd yd^2 - Sqrt[xd^2 (xd^2 + yd^2)]))/(xd^2 + yd^2), 
   y -> (2 yd (xd^3 + xd yd^2 - Sqrt[xd^2 (xd^2 + yd^2)]))/(
    xd (xd^2 + yd^2))}, {x -> (
    2 (xd^3 + xd yd^2 + Sqrt[xd^2 (xd^2 + yd^2)]))/(xd^2 + yd^2), 
   y -> (2 yd (xd^3 + xd yd^2 + Sqrt[xd^2 (xd^2 + yd^2)]))/(
    xd (xd^2 + yd^2))}}} *)

It might be overwhelming in terms of complexity to do a full symbolic solution of the original pair of equations. Specializing the parameters makes it viable. So you might want to consider having a function that just inverts when given specific values of those parameters.

POSTED BY: Daniel Lichtblau
Posted 9 years ago

Thanks Daniel!

I am actually interested in the inverse of the last map in the notebook ((xd, yd) ---> (xa, ya)), which maps the circular annulus to the airfoil annulus. So I would like to find an expression for the inverse map ((xa, ya) ---> (xd, yd)).

What you have solved is the inverse mapping of a circular disk to a circular annulus, which was just a step that I use to generate a circular annulus before mapping it to an airfoil annulus.

I will try your approach to see if it helps in finding the inverse map of interest.....

Thanks again,

Saliou

POSTED BY: SALIOU TELLY
POSTED BY: Daniel Lichtblau

I think it would be much easier to keep the map w=f[z] in the complex plane. If you want to invert the map you need to solve for z=f^-1[z] . Mathematica usually can handle it, for example:

In[1]:= Solve[a z + b/z == w, z]

In[2]:= Solve[a (z - z0) + b/(z - z0) == w, z]

Out[2]= {{z -> (w - Sqrt[-4 a b + w^2] + 2 a z0)/(2 a)}, {z -> (
   w + Sqrt[-4 a b + w^2] + 2 a z0)/(2 a)}}
POSTED BY: Kay Herbert
Posted 9 years ago

Thanks Kay!

I will give it a try in the complex domain where it was first derived. However, the map in the complex form (w = f(z)) involved magnitude of z ( |z| ), which you can see in the algebraic form as sqrt (xd^2 + yd^2)... I was not sure would be easily inverted by Mathematica or any other tool.

But it is worth a try and thanks for the suggestion....

Regards,

Saliou

POSTED BY: SALIOU TELLY

All depends, but usually you get an answer if it exists. Example:

In[9]:= Solve[w == (z - z0)/Abs[z] + 1/(z Abs[z]), z]

Out[9]= {{z -> (z0 - Sqrt[-4 - 4 w + z0^2])/(2 (1 + w))}, {z -> (
   z0 + Sqrt[-4 - 4 w + z0^2])/(
   2 (1 + w))}, {z -> (-z0 - Sqrt[-4 + 4 w + z0^2])/(
   2 (-1 + w))}, {z -> (-z0 + Sqrt[-4 + 4 w + z0^2])/(2 (-1 + w))}}

You can also try Reduce

POSTED BY: Kay Herbert
Posted 9 years ago

Thanks Kay!

This seems promising as it does appear to be able to solve in the complex form. I will look into the solution in more detail for correctness and also see if I can re-express it in Cartesian form, which is really the ideal form that I would need to work with.

I am more of a Matlab person but I am amazed by the power of Mathematica when it comes to symbolic calculations.....

Thanks again for your time,

Saliou

POSTED BY: SALIOU TELLY
Posted 9 years ago
POSTED BY: SALIOU TELLY

It would be more easy to test this if Mathematica code were provided.

POSTED BY: Daniel Lichtblau
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract