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!