How to transform a nonlinear velocity field to a new frame of reference?
2 次查看(过去 30 天)
显示 更早的评论
Example:
Velocity Field:
v =
- x*sin(C*t) - y*(w/2 - cos(C*t))
y*sin(C*t) + x*(w/2 + cos(C*t))
0
The linear velocity field can be written as:
X = [x,y,z];
A = [-sin(C*t), cos(C*t) - w/2,0; cos(C*t) + w/2 , sin(C*t),0;0,0,0;];
v = A*transpose(X);
Transformation (Observer change):
where ![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292426/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292425/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292426/image.png)
Q = [cos(C/2*t),sin(C/2*t),0;-sin(C/2*t),cos(C/2*t),0;0,0,1];
Based on continuum mechanics, velocity field transforms as
. Applying this formula as:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292427/image.png)
vy = diff(Q,t,1)*transpose(X) + Q*v;
I do not get the correct answer. I believe that is because v
and
are still in the old frame. If I change them to the new frame it works. The procedure I used is as follows:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292428/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292406/image.png)
If
is also linear, then it can be written as:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292429/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292407/image.png)
Then B is computed as:
Qtr = transpose(Q); assume(Qtr,'real')';
Q*(A*Qtr - diff(Qtr,t,1))
and it works. However, now the problem is that, I can not define A and B for nonlinear velocity fields, for numerical velocity fields not possible at all, so what do I do? How do I transform a velocity field with a given observer change?
0 个评论
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!