Im experiencing misalignment of the crests in my normalized vertical velocity profiles when plotting multiple turbulence models; any suggestions on how to fix this?

1 view (last 30 days)
Basically I had a running code for radial velocity contours which was fixed an all the crests aligned. Now i have changed the input files and associated names in the codes but the crests are not aligning, any and all help will be apreciated
  2 Comments
Image Analyst
Image Analyst on 30 Jul 2024
Why do you think that just because they aligned for one data file, that they should align for all other data files?
And you forgot to attach them so we can't even run your txt file, which is actually an m-file script.
If you have any more questions, then attach your data files with the paperclip icon after you read this:
Keith
Keith on 30 Jul 2024
Edited: Keith on 30 Jul 2024
I know that they are supposed to align and have the same starting point because thats the way they are plotted in reference papers and apologies I was not sure whether i am allowed to post my files here.
NOTE : attached files were .dat files and have been attached with the .txt extension

Sign in to comment.

Answers (1)

Sivsankar
Sivsankar on 8 Aug 2024
Hi Keith,
% Normalize radial distances and velocities
zeta_kep = v_kep / y0_5_kep;
U_Uc_kep = U_vertical_kep / max(U_vertical_kep);
zeta_sa = v_sa / y0_5_sa;
U_Uc_sa = U_vertical_sa / max(U_vertical_sa);
zeta_komega_sst = v_komega_sst / y0_5_komega_sst;
U_Uc_komega_sst = U_vertical_komega_sst / max(U_vertical_komega_sst);
zeta_komega_geko = v_komega_geko / y0_5_komega_geko;
U_Uc_komega_geko = U_vertical_komega_geko / max(U_vertical_komega_geko);
zeta_rsm_lps = v_rsm_lps / y0_5_rsm_lps;
U_Uc_rsm_lps = U_vertical_rsm_lps / max(U_vertical_rsm_lps);
From the idea of the above snippet, I assume that you want to normalise both radial distances and velocities. But from your screenshot I can see that your X axis (for r values) is not normalised. But you are trying to plot the normalised values of r.
Investigating into your ‘ensure_unique_and_sorted’ function I came across some discrepancies. Rewrite your function as follows:
function [r_unique_sorted, U_unique_sorted] = ensure_unique_and_sorted(r, U)
[U_unique_sorted, idx] = unique(U, 'stable');
r_unique_sorted = r(idx);
% Remove duplicates by averaging This code does the same as the above piece of code
% if length(U_unique) < length(U)
% [~, uniqueIdx] = unique(U, 'stable');
% U_unique = U(uniqueIdx);
% r_unique = r(uniqueIdx);
% end
% Sort the values based on r No need to sort
% [r_unique_sorted, sortIdx] = sort(r_unique);
% U_unique_sorted = U_unique(sortIdx);
end
I’ve commented out your if else case because it is redundant as it does the same thing as its above piece of code. I believe that you don’t need to sort the values in r because they are already in descending order and doing that operation would flip it and it would flip U as well. This would end up being wrong as you are using the values of U in finding the interpolation range rn. Upon running this updated code, I’ve got the result as follows:
Now I believe the crests are aligned. I hope this is your expected result. You could maybe adjust the interpolation range rn to property normalise the r values to get the X axis completely normalised.
Hope this helps. Feel free to correct me if I’m wrong. Thanks!

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!