-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Changed jumbled up rhoA and rhoB assignment for output, added Matlab …
…datamining and consistency scripts
- Loading branch information
Markus Kühbach
committed
Jan 4, 2018
1 parent
0588f7c
commit 544b6bd
Showing
5 changed files
with
529 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
%% DRXNUC read in track csv data batch and extract in which case a reduction in migration speed was detected | ||
clear; | ||
clc; | ||
digits(32); | ||
format long; | ||
|
||
%get folder content | ||
dbl.prefix = 'H:/Paper/Paper11_BambachDislDensModel/bb_simulation/DRXNUC/build/mpi20/run/'; | ||
dbl.fns = dir([dbl.prefix '*.csv']); %'*.RA.12.RB.16.*.bin']); | ||
dbl.n = length(dbl.fns); | ||
|
||
for f=1:dbl.n | ||
%% read DRXNUC ascii dump file | ||
filename = [dbl.prefix dbl.fns(f).name]; | ||
delimiter = ';'; | ||
startRow = 3; | ||
formatSpec = '%f%f%f%f%f%f%f%[^\n\r]'; | ||
fileID = fopen(filename,'r'); | ||
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'TextType', 'string', 'HeaderLines' ,startRow-1, 'ReturnOnError', false, 'EndOfLine', '\r\n'); | ||
fclose(fileID); | ||
t = dataArray{:, 1}; | ||
x = dataArray{:, 2}; | ||
v = dataArray{:, 3}; | ||
p = dataArray{:, 4}; | ||
rhoA = dataArray{:, 5}; | ||
rhoB = dataArray{:,6}; | ||
rhoBA = dataArray{:, 7}; | ||
|
||
%at least there are data logged additional to header | ||
nv = length(v(:,1)); | ||
if nv > 1 | ||
%get evolution GB time-speed profile by piecewise difference values | ||
dv(1,1) = nan; %error flag | ||
dv(2:nv,1) = diff(v(:,1)); %v_ti+1 - v_ti | ||
|
||
%which values are negative indicating the sought after reduction of velocity? | ||
where = find(dv(:,1) < eps); %eps numerically zero | ||
|
||
%where is somewhere along the profile, even small dips... | ||
|
||
%what is the absolute minimal difference? | ||
minn = min(dv(:,1)); | ||
|
||
%if any reasonable where is given to me, otherwise add dummy | ||
if ~isempty(where) | ||
RES(f,1) = v(where(1),1); %the velocity at which acceleration firstly (in time) becomes negative | ||
RES(f,2) = where(1)/nv; %when is this | ||
else | ||
RES(f,2) = nan; | ||
end | ||
%plot(t,x,'.') | ||
%plot(t,v,'.') | ||
%plot(t,dv,'.') | ||
% figure | ||
% hold on | ||
% plot(log10(t),log10(rhoA)) | ||
% hold on | ||
% plot(log10(t),log10(rhoB)) | ||
% hold on | ||
% plot(log10(t),log10(rhoBA)) | ||
% legend('rA','rB','{\Delta BA}') | ||
% ylim([17 19]) | ||
% rr = rhoB-rhoA; | ||
% rrr = rr-rhoBA; | ||
% rrr = rrr ./ rhoB; | ||
% min(rrr) | ||
%plot(t,rhoBA,'.') | ||
%RES(f,1) = min(diff(v)); | ||
else | ||
%no data at all, add dummies | ||
RES(f,1) = nan; %error value | ||
RES(f,2) = nan; | ||
end | ||
%how many logs in total? (at most 1401 expected...) | ||
RES(f,3) = nv; | ||
clearvars -except dbl f RES; | ||
disp(['Processing ' num2str(f) '---> ' dbl.fns(f).name]) | ||
end | ||
disp('Batch processed') | ||
|
||
% f = 460; | ||
% filename = [prefix fns(f).name]; | ||
% delimiter = ';'; | ||
% startRow = 3; | ||
% formatSpec = '%f%f%f%f%f%f%f%[^\n\r]'; | ||
% fileID = fopen(filename,'r'); | ||
% dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'TextType', 'string', 'HeaderLines' ,startRow-1, 'ReturnOnError', false, 'EndOfLine', '\r\n'); | ||
% fclose(fileID); | ||
% t = dataArray{:, 1}; | ||
% %x = dataArray{:, 2}; | ||
% v = dataArray{:, 3}; | ||
% plot(t,v); | ||
% legend(fns(f).name); | ||
|
||
%% filter interesting cases | ||
targ = find(RES(:,2) > 0.01 & RES(:,2) < 0.99); %those with intermediate reduction or constancy in velocity | ||
%targ = find(RES(:,2) > 0.00 & RES(:,2) < 1.00); %almost all | ||
scaler = 1.0; | ||
figure('Position',[100 100 scaler*1920 scaler*1080]); | ||
colormap('jet'); | ||
fontszcap = 26; | ||
fontszax = 26; | ||
fontszlg = 20; | ||
fontnm = 'Calibri'; | ||
set(gca,'FontSize',fontszcap,'FontName',fontnm,'LineWidth',2); | ||
set(gcf,'PaperUnits','Inches'); | ||
set(gcf,'PaperSize',[19.2 10.8]); | ||
set(gcf,'color','w','visible','on'); | ||
xlabel({'log_{10} t (s)'},'FontSize',fontszax,'FontName',fontnm); | ||
ylabel({'log_{10} v (m/s)'},'FontSize',fontszax,'FontName',fontnm); | ||
hold on | ||
%'.','MarkerSize',45,'color',[255/255 201/255 14/255]); %log(max(rho(1,1:rangelimit)))./log(10),'.','MarkerSize',20,'color',[1 0 0]) | ||
%xlim([0 15]); xt = [0:1:15]; xticks(xt); | ||
%ylim([13 18.0]); | ||
%yt = [13:1:18]; | ||
%yticks(yt); | ||
pbaspect([1.92 1.08 1.08]); box on; grid on; | ||
|
||
|
||
%get colormap | ||
cmap = jet; | ||
i = 1; | ||
for T = 800:50:1200 | ||
temp = ((T-800)/(1200-800)*64)+1; | ||
disp(temp) | ||
if temp == 65 | ||
temp = 64; | ||
end | ||
T2COLOR(i,1) = T+273; | ||
T2COLOR(i,2:4) = cmap(temp,1:3); | ||
disp(T) | ||
i = i+1; | ||
end | ||
|
||
for trg=1:length(targ(:,1)) | ||
%trg=19; | ||
%if int32(targ(trg,1)) ~= 460 | ||
% continue; | ||
%end | ||
hold on | ||
filename = [prefix fns(int32(targ(trg))).name]; | ||
%get properties from filename | ||
fn.EPSA = str2double(extractBetween(filename,'EPSA.','.EPSB')); | ||
fn.EPSB = str2double(extractBetween(filename,'EPSB.','.T')); | ||
fn.T = str2double(extractBetween(filename,'T.','.RA')); | ||
fn.rhoA = str2double(extractBetween(filename,'RA.','.RB')); | ||
fn.rhoB = str2double(extractBetween(filename,'RA.','.RB')); | ||
|
||
delimiter = ';'; | ||
startRow = 3; | ||
formatSpec = '%f%f%f%f%f%f%f%[^\n\r]'; | ||
fileID = fopen(filename,'r'); | ||
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'TextType', 'string', 'HeaderLines' ,startRow-1, 'ReturnOnError', false, 'EndOfLine', '\r\n'); | ||
fclose(fileID); | ||
t = dataArray{:, 1}; | ||
x = dataArray{:, 2}; | ||
v = dataArray{:, 3}; | ||
hold on | ||
plot(log10(t),log10(v),'LineWidth',2,'Color',T2COLOR(find(T2COLOR(:,1)==fn.T),2:4)); | ||
%plot(x,log10(v),'LineWidth',1,'Color',T2COLOR(find(T2COLOR(:,1)==fn.T),2:4)); | ||
disp([num2str(trg) ' ---> ' num2str(targ(trg,1)) ' ---> ' fns(int32(targ(trg,1))).name]) | ||
clearvars filename delimiter startRow formatSpec fileID dataArray t v fn; | ||
end | ||
colorbar | ||
legend(num2str(targ)) | ||
|
||
for trg=1:length(targ(:,1)) | ||
disp([num2str(trg) ' ---> ' num2str(targ(trg,1)) ' ---> ' fns(int32(targ(trg,1))).name]) | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
%% DRXNUC comparing predictions from simulation with double against single precision | ||
clear; | ||
clc; | ||
digits(32); | ||
format long; | ||
|
||
%% get folder contents | ||
sgl.prefix = 'H:/Paper/Paper11_BambachDislDensModel/bb_simulation/DRXNUC/build/mpi01/Track/SinglePrecision/'; | ||
dbl.prefix = 'H:/Paper/Paper11_BambachDislDensModel/bb_simulation/DRXNUC/build/mpi01/Track/DoublePrecision/'; | ||
sgl.fns = dir([sgl.prefix '*.csv']); | ||
dbl.fns = dir([dbl.prefix '*.csv']); | ||
|
||
%% compare results case by case | ||
sgl.n = length(sgl.fns(:,1)); | ||
dbl.n = length(dbl.fns(:,1)); | ||
if sgl.n ~= dbl.n | ||
disp('Different number of files'); | ||
end | ||
|
||
for f=1:sgl.n | ||
%% read DRXNUC ascii results file from single precision simulation | ||
filename = [sgl.prefix sgl.fns(f).name]; | ||
delimiter = ';'; | ||
startRow = 3; | ||
formatSpec = '%f%f%f%f%f%f%f%[^\n\r]'; | ||
fileID = fopen(filename,'r'); | ||
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'TextType', 'string', 'HeaderLines' ,startRow-1, 'ReturnOnError', false, 'EndOfLine', '\r\n'); | ||
fclose(fileID); | ||
s.t = dataArray{:, 1}; | ||
s.x = dataArray{:, 2}; | ||
s.v = dataArray{:, 3}; | ||
%at least one data log additional to header? | ||
s.n = length(s.t(:,1)); | ||
if s.n > 1 | ||
s.p = dataArray{:, 4}; | ||
s.rhoA = dataArray{:, 5}; %%6 for rhoA and col 5 for rhoB -->UNFORTUNATELY RHOA AND RHOB IN OUTPUT JUMBLED UP... has been correct in code 2018/01/03 | ||
s.rhoB = dataArray{:,6}; | ||
s.rhoBA = dataArray{:, 7}; | ||
end | ||
clearvars -except sgl dbl f s RES; | ||
|
||
%% read DRXNUC ascii results file from double precision simulation | ||
filename = [dbl.prefix dbl.fns(f).name]; | ||
delimiter = ';'; | ||
startRow = 3; | ||
formatSpec = '%f%f%f%f%f%f%f%[^\n\r]'; | ||
fileID = fopen(filename,'r'); | ||
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'TextType', 'string', 'HeaderLines' ,startRow-1, 'ReturnOnError', false, 'EndOfLine', '\r\n'); | ||
fclose(fileID); | ||
d.t = dataArray{:, 1}; | ||
d.x = dataArray{:, 2}; | ||
d.v = dataArray{:, 3}; | ||
%at least one data log additional to header? | ||
d.n = length(d.t(:,1)); | ||
if d.n > 1 | ||
d.p = dataArray{:, 4}; | ||
d.rhoA = dataArray{:, 5}; | ||
d.rhoB = dataArray{:,6}; | ||
d.rhoBA = dataArray{:, 7}; | ||
end | ||
clearvars -except sgl dbl f s d RES; | ||
|
||
%% two files the same? | ||
|
||
|
||
% yi = interp1(x,Y,xi) returns vector yi containing elements corresponding to the elements of | ||
% xi and determined by interpolation within vectors x and Y. The vector x specifies the | ||
% points at which the data Y is given. If Y is a matrix, then the interpolation | ||
% is performed for each column of Y and yi is length(xi)-by-size(Y,2). | ||
|
||
if s.n > 1 & d.n > 1 | ||
%% interpolation | ||
s.xi = interp1(d.t,d.x,s.t); | ||
s.xdff = s.x - s.xi; | ||
RES(f).sxerr = max(abs(s.xdff)); | ||
|
||
s.vi = interp1(d.t,d.v,s.t); | ||
s.vdff = s.v - s.vi; | ||
RES(f).sverr = max(abs(s.vdff)); | ||
|
||
s.pi = interp1(d.t,d.p,s.t); | ||
s.pdff = s.p - s.pi; | ||
RES(f).perr = max(abs(s.pdff)); | ||
|
||
s.ra = interp1(d.t,d.rhoA,s.t); | ||
s.radff = s.rhoA - s.ra; | ||
RES(f).raerr = max(abs(s.radff)); | ||
|
||
s.rb = interp1(d.t,d.rhoB,s.t); | ||
s.rbdff = s.rhoB - s.rb; | ||
RES(f).rberr = max(abs(s.rbdff)); | ||
|
||
s.rba = interp1(d.t,d.rhoBA,s.t); | ||
s.rbadff = s.rhoBA - s.rba; | ||
RES(f).rbaerr = max(abs(s.rbadff)); | ||
% figure | ||
% hold on | ||
% plot(s.t,s.rhoBA,'.','MarkerSize',4) | ||
% hold on | ||
% plot(d.t,d.rhoBA) | ||
end | ||
clearvars -except sgl dbl f RES; | ||
disp(f); | ||
end | ||
|
||
tmp = nan(1,sgl.n); | ||
for f=1:sgl.n | ||
if ~isempty(RES(f).raerr) | ||
tmp(1,f) = RES(f).raerr; | ||
end | ||
end | ||
plot(1:1:sgl.n,log10(tmp)) |
Oops, something went wrong.