Files
matlab-python/ATD/report_PCL.m

1038 lines
49 KiB
Matlab
Executable File

function [GI_PCL_Z,GI_PCL_Date,ATTIVA,FIG,FIG_ENG] = report_PCL(DTcatena,rPCL,m,NodoPreConvLink,...
toolrif,unitrif,datarif,firstdata_num,Font_caption,Font_tools,siteID,DT,DT_ENG,FIG,FIG_ENG,br,...
colonna2,colonna2bis,status,ATTIVA,activeEN,conn,FileName)
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'report_PCL function started';
fprintf(fileID,fmt,text);
import mlreportgen.dom.*
import mlreportgen.report.*
% Make sure DOM is compilable
makeDOMCompilable()
check = 0;
while check == 0
if status(m,1) == 1
if ATTIVA == 1
ATTIVA = 0;
testo = Paragraph('Catena non ancora installata o inattiva.');
add(DT,testo);
if activeEN == 1
testo = Paragraph('Array not installed or inactive.');
add(DT_ENG,testo);
end
end
check = 1;
elseif status(m,1) == 3
if ATTIVA == 1
ATTIVA = 0;
testo = Paragraph(['Monitoraggio completato. Invitiamo a visitare la '...
'piattaforma web per la visione dei dati storici.']);
add(DT,testo);
if activeEN == 1
testo = Paragraph(['Monitoring completed. Please log into the web-based platoform '...
'to access the complete dataset.']);
add(DT_ENG,testo);
end
end
check = 1;
else
NODATAPCL(m,1) = 0;
date = datestr(datenum(colonna2{m+1,1},'dd-mm-yyyy'),'yyyy-mm-dd'); % data riferimento definita sul sito
% posizione di progetto dei nodi
comando = ['select EventDate, EventTime, Y, Z from ElabDataView where EventDate = ''' ...
date ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
SezioneYZ = curs.Data;
Datasez = SezioneYZ(1,1);
Orasez = SezioneYZ(1,2);
[ry,~] = size(SezioneYZ);
scrivi = 1;
% ho scaricato tutti i dati del giorno di installazione, prendo
% i primi in ordine temporale per ciascun nodo
for cc = 1:ry
if strcmp(SezioneYZ(cc,1),Datasez)==1 && strcmp(SezioneYZ(cc,2),Orasez) ==1
CoordY(scrivi,1) = SezioneYZ(cc,3);
CoordZ(scrivi,1) = SezioneYZ(cc,4);
scrivi = scrivi+1;
end
end
comando = ['select id from units where name like ''' char(unitrif) ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
unitID = curs.Data;
% Data di fine PreConvergenza
comando = ['select prod_date_node from tools where unit_ID like ''' ...
num2str(cell2mat(unitID)) ''' and name like ''' DTcatena ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
dati = curs.Data;
stringa = cell2mat(dati(1,1));
if strcmp(stringa,'null') || strcmp(stringa,'No Data')
data_PC = 0;
else
data_PC = stringa(1,1:10);
end
if data_PC ~= 0
% Scarico dati di Fine PreConvergenza
Num = zeros(rPCL(m,1),1);
for p = 1:rPCL(m,1)
NodeNum = num2str(NodoPreConvLink(p,m));
comando = ['select EventDate, EventTime, ZShift, Z, Y from ElabDataView where EventDate < ''' ...
data_PC ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ...
''' and NodeNum = ''' NodeNum ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
Dati_PC = curs.Data;
Num(p,1) = NodoPreConvLink(p,m);
[rD,rC] = size(Dati_PC);
if rC ~= 1
T = [cell2mat(Dati_PC(:,1)) repmat(' ', [rD,1]) cell2mat(Dati_PC(:,2))];
Date = datenum(T); % Data
% Fine Pre-Convergenza
asseZ_PC(:,p) = 1000*cell2mat(Dati_PC(:,3));
asseZ_Cum_PC(:,p) = 1000*cell2mat(Dati_PC(:,4));
diffZ_PC(:,p) = asseZ_PC(:,p)-asseZ_PC(1,p); % mm
Z_Loc_PC(1,p) = asseZ_PC(end,p)-asseZ_PC(1,p);
Z_Cum_PC(1,p) = asseZ_Cum_PC(end,p)-asseZ_Cum_PC(1,p);
Y_PC(1,p) = cell2mat(Dati_PC(end,5));
end
end
end
% Scarico dati odierni
Num = zeros(rPCL(m,1),1);
for p = 1:rPCL(m,1)
NodeNum = num2str(NodoPreConvLink(p,m));
comando = ['select EventDate, EventTime, ZShift, Z, Y from ElabDataView where EventDate >= ''' ...
datarif ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ...
''' and NodeNum = ''' NodeNum ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
Dati = curs.Data;
Num(p,1) = NodoPreConvLink(p,m);
[rD,rC] = size(Dati);
if rC ~= 1
T = [cell2mat(Dati(:,1)) repmat(' ', [rD,1]) cell2mat(Dati(:,2))];
Date = datenum(T); % Data
if p == 1 % Il primo lo scrivo e creo la variabile di controllo
else
[rS,~] = size(asseZ);
if rD ~= rS
NODATA(m,1) = 1;
check = 0;
break
else
check = 1;
end
end
% Ultimo mese
asseZ(:,p) = 1000*cell2mat(Dati(:,3));
asseZ_Cum(:,p) = 1000*cell2mat(Dati(:,4));
diffZ(:,p) = asseZ(:,p)-asseZ(1,p); % mm
Z_Loc(1,p) = asseZ(end,p)-asseZ(1,p);
Z_Cum(1,p) = asseZ_Cum(end,p)-asseZ_Cum(1,p);
Z_Loc_Tot(1,p) = asseZ(end,p);
Z_Cum_Tot(1,p) = asseZ_Cum(end,p);
Y(1,p) = cell2mat(Dati(end,5));
else
NODATAPCL(m,1) = 1;
check = 1;
end
end
if NODATAPCL(m,1) == 0
if strcmp(colonna2bis(m+1,1),colonna2(m+1,1)) == 0 % data zero diversa data riferimento
datarifNEW = datestr(firstdata_num{m+1,1},'yyyy-mm-dd'); % data riferimento definita sul sito
for nw = 1:rPCL(m,1)
NodeNum = num2str(NodoPreConvLink(nw,m));
comando = ['select EventDate, EventTime, ZShift, Z, Y from ElabDataView where EventDate >= ''' ...
datarifNEW ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ...
''' and NodeNum = ''' NodeNum ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
DatiNEW = curs.Data;
Num(nw,1) = NodoPreConvLink(nw,m);
[~,rC] = size(DatiNEW);
if rC ~= 1
% dalla data di riferimento
% divergenza/convergenza dei singoli nodi dall'inizio
Z_Loc_Tot(1,nw) = asseZ(end,nw)-1000*cell2mat(DatiNEW(1,3));
Z_Cum_Tot(1,nw) = asseZ_Cum(end,nw)-1000*cell2mat(DatiNEW(1,4));
if data_PC ~= 0
% Solo periodo di PreConvergenza
Z_Loc_PC(1,nw) = asseZ_PC(end,nw)-1000*cell2mat(DatiNEW(1,3));
Z_Cum_PC(1,nw) = asseZ_Cum_PC(end,nw)-1000*cell2mat(DatiNEW(1,4));
end
else
NODATAPCL(m,1) = 1;
end
end
end
GI_PCL_Date = Date;
% Cerco eventuali correlazioni con Cir Array
NomeFile = strcat('Report',siteID,'-PCLvsTuL.txt');
Filetesto = importdata(NomeFile);
[rF,~] = size(Filetesto);
AAA = 1;
Var = 0;
while AAA < rF % A un PreConv possono competere più Cir
check1 = Filetesto(AAA,1);
if check1 == 99999 % Non ci sono PreConv Array o non ci sono Cir
AAA = 2;
else
check2 = Filetesto(AAA+1,1);
if check1 == str2num(DTcatena(end-2:end)) % Il PreConv è da prendere in considerazione ed è riportato nella prima riga del file
Nodo = Filetesto(AAA+2,1);
Var = 1;
elseif check2 == str2num(DTcatena(end-2:end)) % Il PreConv è da prendere in considerazione ed è riportato nella seconda riga del file
Nodo = Filetesto(AAA+3,1);
Var = 1;
end
AAA = AAA+4;
end
end
if Var == 1
GI_PCL_Z = diffZ(:,Nodo);
else
GI_PCL_Z = [];
end
% --- grafico spostamenti locali - Periodi di PreConvergenza ---
figure(1)
Y = round(Y);
if data_PC ~= 0
Disp_Loc_PC = bar(Y_PC,Z_Loc_PC');
Z = Z_Loc_PC;
else
Disp_Loc_PC = bar(Y,Z_Loc');
Z = Z_Loc;
end
title('Spostamenti locali - Periodo di Pre-Convergenza');
ylabel('Spostamento [mm]');
xlabel('Progressiva [m]');
maxY = max(Y);
if maxY > 0
xticks(0:1:maxY)
else
xticks(Y(end):1:0);
end
h = gca;
h.YAxis.MinorTick = 'on';
grid on
if maxY < 0 % mm
xlim([Y_PC(end)-1 0]);
else
xlim([0 maxY+1])
end
grid on
iniY = min(min(Z',Z_Loc'));
endY = max(max(Z',Z_Loc'));
MAX = max(abs(iniY),endY);
if MAX > 2.5 % Limiti Asse Y
ylim([-MAX-1 MAX+1])
else
ylim([-2.5 +2.5]);
end
TempName1 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Loc_PC_PCL.png'));
saveas(Disp_Loc_PC(1),TempName1);
close(figure(1))
% ENG
figure(1)
if data_PC ~= 0
Disp_Loc_PC = bar(Y_PC,Z_Loc_PC');
else
Disp_Loc_PC = bar(Y,Z_Loc');
end
title('Local displacements - Pre-Convergence phase');
ylabel('Displacement [mm]');
xlabel('Position [m]');
if maxY > 0
xticks(0:1:maxY)
else
xticks(Y(end):1:0);
end
h = gca;
h.YAxis.MinorTick = 'on';
grid on
if maxY < 0 % mm
xlim([Y_PC(end)-1 0]);
else
xlim([0 maxY+1])
end
grid on
if MAX > 2.5 % Limiti Asse Y
ylim([-MAX-1 MAX+1])
else
ylim([-2.5 +2.5]);
end
TempName1_ENG = char(strcat('Report',siteID,'-', char(toolrif),'Z_Loc_PC_PCL_ENG.png'));
saveas(Disp_Loc_PC(1),TempName1_ENG);
close(figure(1))
% --- grafico spostamenti locali - Periodi di riferimento ---
figure(2)
Y = round(Y);
Disp_Loc_PCL = bar(Y,Z_Loc');
title('Spostamenti locali - Periodo di riferimento');
ylabel('Spostamento [mm]');
xlabel('Progressiva [m]');
maxY = max(Y);
minY = min(Y);
MAXY = max(abs(minY),maxY);
IY = find(max(abs(minY),maxY) == MAXY);
maxY = Y(IY);
if maxY > 0
xticks(0:1:maxY)
else
xticks(Y(end):1:0);
end
h = gca;
h.YAxis.MinorTick = 'on';
grid on
if MAX > 2.5 % Limiti Asse Y
ylim([-MAX-1 MAX+1])
else
ylim([-2.5 +2.5]);
end
grid on
if iniY < 2.5 && endY > 2.5 % Limiti Asse Y
elseif iniY < 2.5
ylim([iniY-1 2.5]);
elseif endY < 2.5
ylim([-2.5 endY+1]);
end
TempName2 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Loc_PCL.png'));
saveas(Disp_Loc_PCL(1),TempName2);
close(figure(2))
ChartPCL = Image(TempName1);
ChartPCL2 = Image(TempName2);
lot1 = Table({ChartPCL, ChartPCL2});
lot1.Style = {ResizeToFitContents(false), Width('100%')};
ChartPCL.Style = {Height('6.6cm'),HAlign('center')};
ChartPCL2.Style = {Height('6.6cm'),HAlign('center')};
ChartPCL_cap = Paragraph(['Fig. ' num2str(FIG) ' - Spostamenti '...
'differenziali locali in direzione verticale registrati durante '...
'il periodo di pre-convergenza e il periodo di riferimento']);
ChartPCL_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
FIG = FIG+1;
if activeEN == 1
figure(2)
Y = round(Y);
Disp_Loc_PCL = bar(Y,Z_Loc');
title('Local displacements - Reference time period');
ylabel('Displacement [mm]');
xlabel('Position [m]');
maxY = Y(IY);
if maxY > 0
xticks(0:1:maxY)
else
xticks(Y(end):1:0);
end
h = gca;
h.YAxis.MinorTick = 'on';
grid on
if MAX > 2.5 % Limiti Asse Y
ylim([-MAX-1 MAX+1])
else
ylim([-2.5 +2.5]);
end
grid on
if iniY < 2.5 && endY > 2.5 % Limiti Asse Y
elseif iniY < 2.5
ylim([iniY-1 2.5]);
elseif endY < 2.5
ylim([-2.5 endY+1]);
end
TempName2_ENG = char(strcat('Report',siteID,'-', char(toolrif),'Z_Loc_PCL_ENG.png'));
saveas(Disp_Loc_PCL(1),TempName2_ENG);
close(figure(2))
ChartPCL_ENG = Image(TempName1_ENG);
ChartPCL2_ENG = Image(TempName2_ENG);
lot1_ENG = Table({ChartPCL_ENG, ChartPCL2_ENG});
lot1_ENG.Style = {ResizeToFitContents(false), Width('100%')};
ChartPCL_ENG.Style = {Height('6.6cm'),HAlign('center')};
ChartPCL2_ENG.Style = {Height('6.6cm'),HAlign('center')};
ChartPCL_ENG_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - Local differential displacements '...
'recorded in vertical direction during the pre-convergence phase and the '...
'reference time period']);
ChartPCL_ENG_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
FIG_ENG = FIG_ENG+1;
end
% ---Grafico Sezione Periodo PreConvergenza---
figure(3)
contaS = 1;
contaG = 1;
contaF = 1;
for disp = 1:rPCL(m,1)
if diffZ_PC(end,disp)>0.5
nodisuZ(contaS,1)=CoordZ(disp,1);
nodisuY(contaS,1)=CoordY(disp,1);
contaS = contaS + 1;
elseif diffZ_PC(end,disp)< -0.5
nodigiuZ(contaG,1)=CoordZ(disp,1);
nodigiuY(contaG,1)=CoordY(disp,1);
contaG = contaG + 1;
else
nodistabZ(contaF,1)=CoordZ(disp,1);
nodistabY(contaF,1)=CoordY(disp,1);
contaF = contaF + 1;
end
end
%aggiungo coordinate ancora
if cell2mat(CoordY(1,1)) > cell2mat(CoordY(end,1))
plot([cell2mat(CoordY(:,1)); 0],[cell2mat(CoordZ(:,1)); 0],'-','Color','black','MarkerSize' ,7);
else
plot([0; cell2mat(CoordY(:,1))],[0; cell2mat(CoordZ(:,1))],'-','Color','black','MarkerSize' ,7)
end
hold on
if contaS > 1
sezS = plot(cell2mat(nodisuY(:,1)),cell2mat(nodisuZ(:,1)),'^','Color','red','MarkerSize' ,7);
set(sezS, 'markerfacecolor', get(sezS, 'color'));
end
if contaG > 1
sezG = plot(cell2mat(nodigiuY(:,1)),cell2mat(nodigiuZ(:,1)),'v','Color',[0.4660 0.6740 0.1880],'MarkerSize' ,7);
set(sezG, 'markerfacecolor', get(sezG, 'color'));
end
if contaF > 1
sezN = plot(cell2mat(nodistabY(:,1)),cell2mat(nodistabZ(:,1)),'o','Color','black');
set(sezN, 'markerfacecolor', get(sezN, 'color'));
end
ancora = plot(0,0,'s','Color','black','MarkerSize' ,13);
set(ancora, 'markerfacecolor', get(ancora, 'color'));
if contaS > 1 && contaG > 1 && contaF > 1
legend('Geometria dello strumento','Innalzamento','Abbassamento','Nodi stabili','Ancora','Location','southoutside');
elseif contaS > 1 && contaG > 1 && contaF == 1
legend('Geometria dello strumento','Innalzamento','Abbassamento','Ancora','Location','southoutside');
elseif contaS > 1 && contaG == 1 && contaF > 1
legend('Geometria dello strumento','Innalzamento','Nodi stabili','Ancora','Location','southoutside');
elseif contaS == 1 && contaG > 1 && contaF > 1
legend('Geometria dello strumento','Abbassamento','Nodi stabili','Ancora','Location','southoutside');
elseif contaS > 1 && contaG == 1 && contaF == 1
legend('Geometria dello strumento','Innalzamento','Ancora','Location','southoutside');
elseif contaS == 1 && contaG > 1 && contaF == 1
legend('Geometria dello strumento','Abbassamento','Nodi stabili','Ancora','Location','southoutside');
elseif contaS == 1 && contaG == 1 && contaF > 1
legend('Geometria dello strumento','Nodi stabili','Ancora','Location','southoutside');
end
title('Direzione degli spostamenti - periodo di pre-convergenza');
xlabel('Progressiva [m]');
ylabel('Direzione verticale');
set(gca,'YTickLabel',[]);
set(gca,'YTick',[]);
ini = min([0; cell2mat(CoordY)]);
End = max([0; cell2mat(CoordY)]);
h = gca;
if ini >= -15 || End <= 15
if ini == 0
xticks(ini:1:End+1);
xlim([ini,End+1]);
elseif End == 0
xticks(ini-1:1:End);
xlim([ini-1,End]);
end
else
h.XAxis.MinorTick = 'on';
end
grid off
axes('pos',[0.1 0.8 .3 .1])
imshow('direzionescavo.png')
hold off
TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezPCL.png'));
saveas(ancora,TempName);
ChartSEZPC1 = Image(TempName);
ChartSEZPC1.Style = {Height('6.6cm')};
close(figure(3))
% ENG
if activeEN == 1
% ---Grafico Sezione Periodo PreConvergenza---
figure(3)
%aggiungo coordinate ancora
if cell2mat(CoordY(1,1)) > cell2mat(CoordY(end,1))
plot([cell2mat(CoordY(:,1)); 0],[cell2mat(CoordZ(:,1)); 0],'-','Color','black','MarkerSize' ,7);
else
plot([0; cell2mat(CoordY(:,1))],[0; cell2mat(CoordZ(:,1))],'-','Color','black','MarkerSize' ,7)
end
hold on
if contaS > 1
sezS = plot(cell2mat(nodisuY(:,1)),cell2mat(nodisuZ(:,1)),'^','Color','red','MarkerSize' ,7);
set(sezS, 'markerfacecolor', get(sezS, 'color'));
end
if contaG > 1
sezG = plot(cell2mat(nodigiuY(:,1)),cell2mat(nodigiuZ(:,1)),'v','Color',[0.4660 0.6740 0.1880],'MarkerSize' ,7);
set(sezG, 'markerfacecolor', get(sezG, 'color'));
end
if contaF > 1
sezN = plot(cell2mat(nodistabY(:,1)),cell2mat(nodistabZ(:,1)),'o','Color','black');
set(sezN, 'markerfacecolor', get(sezN, 'color'));
end
ancora = plot(0,0,'s','Color','black','MarkerSize' ,13);
set(ancora, 'markerfacecolor', get(ancora, 'color'));
if contaS > 1 && contaG > 1 && contaF > 1
legend('Array geometry','Upwards','Downwards','Stable node','Anchor','Location','southoutside');
elseif contaS > 1 && contaG > 1 && contaF == 1
legend('Array geometry','Upwards','Downwards','Anchor','Location','southoutside');
elseif contaS > 1 && contaG == 1 && contaF > 1
legend('Array geometry','Upwards','Stable node','Anchor','Location','southoutside');
elseif contaS == 1 && contaG > 1 && contaF > 1
legend('Array geometry','Downwards','Stable node','Anchor','Location','southoutside');
elseif contaS > 1 && contaG == 1 && contaF == 1
legend('Array geometry','Upwards','Anchor','Location','southoutside');
elseif contaS == 1 && contaG > 1 && contaF == 1
legend('Array geometry','Downwards','Stable node','Anchor','Location','southoutside');
elseif contaS == 1 && contaG == 1 && contaF > 1
legend('Array geometry','Stable node','Anchor','Location','southoutside');
end
title('Displacement direction - Pre-convergence phase');
xlabel('Position [m]');
ylabel('Vertical direction');
set(gca,'YTickLabel',[]);
set(gca,'YTick',[]);
h = gca;
if ini >= -15 || End <= 15
if ini == 0
xticks(ini:1:End+1);
xlim([ini,End+1]);
elseif End == 0
xticks(ini-1:1:End);
xlim([ini-1,End]);
end
else
h.XAxis.MinorTick = 'on';
end
grid off
axes('pos',[0.1 0.8 .3 .1])
imshow('direzionescavoENG.png')
hold off
TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezPCL_ENG.png'));
saveas(ancora,TempName);
ChartSEZPC1_ENG = Image(TempName);
ChartSEZPC1_ENG.Style = {Height('6.6cm')};
close(figure(3))
end
% ---Grafico Sezione Ultimo Mese---
figure(4)
clear nodisuZ
clear nodisuY
clear nodigiuZ
clear nodigiuY
clear nodistabZ
clear nodistabY
contaS_2 = 1;
contaG_2 = 1;
contaF_2 = 1;
for disp = 1:rPCL(m,1)
if diffZ(end,disp) > 0.5 % mm
nodisuZ(contaS_2,1) = CoordZ(disp,1); % il +1 salta l'ancora introdotta dopo l'esecuzione della funzione gemella
nodisuY(contaS_2,1) = CoordY(disp,1);
contaS_2 = contaS_2 + 1;
elseif diffZ(end,disp) < -0.5
nodigiuZ(contaG_2,1) = CoordZ(disp,1);
nodigiuY(contaG_2,1) = CoordY(disp,1);
contaG_2 = contaG_2 + 1;
else
nodistabZ(contaF_2,1) = CoordZ(disp,1);
nodistabY(contaF_2,1) = CoordY(disp,1);
contaF_2 = contaF_2 + 1;
end
end
if cell2mat(CoordY(1,1)) > cell2mat(CoordY(end,1))
plot([cell2mat(CoordY(:,1)); 0],[cell2mat(CoordZ(:,1)); 0],'-','Color','black','MarkerSize' ,7);
else
plot([0; cell2mat(CoordY(:,1))],[0; cell2mat(CoordZ(:,1))],'-','Color','black','MarkerSize' ,7)
end
hold on
if contaS_2 > 1
sezS = plot(cell2mat(nodisuY(:,1)),cell2mat(nodisuZ(:,1)),'^','Color','red','MarkerSize' ,7);
set(sezS, 'markerfacecolor', get(sezS, 'color'));
end
if contaG_2 > 1
sezG = plot(cell2mat(nodigiuY(:,1)),cell2mat(nodigiuZ(:,1)),'v','Color',[0.4660 0.6740 0.1880],'MarkerSize' ,7);
set(sezG, 'markerfacecolor', get(sezG, 'color'));
end
if contaF_2 > 1
sezN = plot(cell2mat(nodistabY(:,1)),cell2mat(nodistabZ(:,1)),'o','Color','black');
set(sezN, 'markerfacecolor', get(sezN, 'color'));
end
ancora = plot(0,0,'s','Color','black','MarkerSize' ,13);
set(ancora, 'markerfacecolor', get(ancora, 'color'));
if contaS_2 > 1 && contaG_2 > 1 && contaF_2 > 1
legend('Geometria dello strumento','Innalzamento','Abbassamento','Nodi stabili','Ancora','Location','southoutside');
elseif contaS_2 > 1 && contaG_2 > 1 && contaF_2 == 1
legend('Geometria dello strumento','Innalzamento','Abbassamento','Ancora','Location','southoutside');
elseif contaS_2 > 1 && contaG_2 == 1 && contaF_2 > 1
legend('Geometria dello strumento','Innalzamento','Nodi stabili','Ancora','Location','southoutside');
elseif contaS_2 == 1 && contaG_2 > 1 && contaF_2 > 1
legend('Geometria dello strumento','Abbassamento','Nodi stabili','Ancora','Location','southoutside');
elseif contaS_2 > 1 && contaG_2 == 1 && contaF_2 == 1
legend('Geometria dello strumento','Innalzamento','Ancora','Location','southoutside');
elseif contaS_2 == 1 && contaG_2 > 1 && contaF_2 == 1
legend('Geometria dello strumento','Abbassamentoi','Nodi stabili','Ancora','Location','southoutside');
elseif contaS_2 == 1 && contaG_2 == 1 && contaF_2 > 1
legend('Geometria dello strumento','Nodi stabili','Ancora','Location','southoutside');
end
title('Direzione degli spostamenti - periodo di riferimento');
xlabel('Progressiva [m]');
ylabel('Direzione verticale');
set(gca,'YTickLabel',[]);
set(gca,'YTick',[]);
ini = min([0; cell2mat(CoordY)]);
End = max([0; cell2mat(CoordY)]);
h = gca;
if ini >= -15 || End <= 15
if ini == 0
xticks(ini:1:End+1);
xlim([ini,End+1]);
elseif End == 0
xticks(ini-1:1:End);
xlim([ini-1,End]);
end
else
h.XAxis.MinorTick = 'on';
end
grid off
axes('pos',[0.1 0.8 .3 .1])
imshow('direzionescavo.png')
hold off
TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezPCL2.png'));
saveas(ancora,TempName);
ChartSEZPC2 = Image(TempName);
ChartSEZPC2.Style = {Height('6.6cm')};
ChartSEZPC2_cap = Paragraph(['Fig. ' num2str(FIG) ' - Direzione degli spostamenti verticali '...
'registrati durante il periodo di pre-convergenza e l''intervallo temporale di riferimento']);
FIG = FIG+1;
ChartSEZPC2_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
lot2 = Table({ChartSEZPC1, ChartSEZPC2});
lot2.Style = {ResizeToFitContents(false), Width('100%')};
close(figure(4))
if activeEN == 1
% ---Grafico Sezione Ultimo Mese---
figure(4)
if cell2mat(CoordY(1,1)) > cell2mat(CoordY(end,1))
plot([cell2mat(CoordY(:,1)); 0],[cell2mat(CoordZ(:,1)); 0],'-','Color','black','MarkerSize' ,7);
else
plot([0; cell2mat(CoordY(:,1))],[0; cell2mat(CoordZ(:,1))],'-','Color','black','MarkerSize' ,7)
end
hold on
if contaS_2 > 1
sezS = plot(cell2mat(nodisuY(:,1)),cell2mat(nodisuZ(:,1)),'^','Color','red','MarkerSize' ,7);
set(sezS, 'markerfacecolor', get(sezS, 'color'));
end
if contaG_2 > 1
sezG = plot(cell2mat(nodigiuY(:,1)),cell2mat(nodigiuZ(:,1)),'v','Color',[0.4660 0.6740 0.1880],'MarkerSize' ,7);
set(sezG, 'markerfacecolor', get(sezG, 'color'));
end
if contaF_2 > 1
sezN = plot(cell2mat(nodistabY(:,1)),cell2mat(nodistabZ(:,1)),'o','Color','black');
set(sezN, 'markerfacecolor', get(sezN, 'color'));
end
ancora = plot(0,0,'s','Color','black','MarkerSize' ,13);
set(ancora, 'markerfacecolor', get(ancora, 'color'));
if contaS_2 > 1 && contaG_2 > 1 && contaF_2 > 1
legend('Array geometry','Upwards','Downwards','Stable node','Anchor','Location','southoutside');
elseif contaS_2 > 1 && contaG_2 > 1 && contaF_2 == 1
legend('Array geometry','Upwards','Downwards','Anchor','Location','southoutside');
elseif contaS_2 > 1 && contaG_2 == 1 && contaF_2 > 1
legend('Array geometry','Upwards','Stable node','Anchor','Location','southoutside');
elseif contaS_2 == 1 && contaG_2 > 1 && contaF_2 > 1
legend('Array geometry','Downwards','Stable node','Anchor','Location','southoutside');
elseif contaS_2 > 1 && contaG_2 == 1 && contaF_2 == 1
legend('Array geometry','Upwards','Anchor','Location','southoutside');
elseif contaS_2 == 1 && contaG_2 > 1 && contaF_2 == 1
legend('Array geometry','Downwards','Stable node','Anchor','Location','southoutside');
elseif contaS_2 == 1 && contaG_2 == 1 && contaF_2 > 1
legend('Array geometry','Stable node','Anchor','Location','southoutside');
end
title('Displacement direction - Reference time period');
xlabel('Position [m]');
ylabel('Vertical direction');
set(gca,'YTickLabel',[]);
set(gca,'YTick',[]);
h = gca;
if ini >= -15 || End <= 15
if ini == 0
xticks(ini:1:End+1);
xlim([ini,End+1]);
elseif End == 0
xticks(ini-1:1:End);
xlim([ini-1,End]);
end
else
h.XAxis.MinorTick = 'on';
end
grid off
axes('pos',[0.1 0.8 .3 .1])
imshow('direzionescavoENG.png')
hold off
TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezPCL2_ENG.png'));
saveas(ancora,TempName);
ChartSEZPC2_ENG = Image(TempName);
ChartSEZPC2_ENG.Style = {Height('6.6cm')};
ChartSEZPC2_ENG_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - Vertical displacements direction '...
'observed during the pre-convergence phase and the reference time period']);
FIG_ENG = FIG_ENG+1;
ChartSEZPC2_ENG_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
lot2_ENG = Table({ChartSEZPC1_ENG, ChartSEZPC2_ENG});
lot2_ENG.Style = {ResizeToFitContents(false), Width('100%')};
close(figure(4))
end
% --- grafico spostamenti cumulati - periodo di preconvergenza ---
figure(5)
if maxY < 0
plot([0 Y],[0 Z_Cum_PC],'-','LineWidth',1,'Marker','.',...
'MarkerSize',15,'MarkerEdgeColor',[0.6350 0.0780 0.1840],'MarkerFaceColor',[0.6350 0.0780 0.1840]);
else
plot([Y 0],[Z_Cum_PC 0],'-','LineWidth',1,'Marker','.',...
'MarkerSize',15,'MarkerEdgeColor',[0.6350 0.0780 0.1840],'MarkerFaceColor',[0.6350 0.0780 0.1840]);
end
hold on
ancora = plot(0,0,'s','Color','black','MarkerSize' ,13);
set(ancora, 'markerfacecolor', get(ancora, 'color'));
title('Spostamenti cumulati - Periodo di pre-convergenza');
ylabel('Spostamento [mm]');
xlabel('Progressiva [m]');
h = gca;
h.YAxis.MinorTick = 'on';
grid on
if maxY > 0 % mm
xlim([0 maxY+1]);
else
xlim([Y(end)-1 0])
end
grid on
iniY = min(min(Z_Cum_PC',Z_Cum'));
endY = max(max(Z_Cum_PC',Z_Cum'));
MAX = max(abs(iniY),endY);
if MAX > 2.5 % Limiti Asse Y
ylim([-MAX-1 MAX+1])
else
ylim([-2.5 +2.5]);
end
if ini >= -15 || End <= 15
xticks(ini:1:End);
else
h.XAxis.MinorTick = 'on';
end
TempName3 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Cum_PC.png'));
saveas(ancora(1),TempName3);
close(figure(5))
% ENG
% --- grafico spostamenti cumulati - periodo di preconvergenza ---
if activeEN == 1
figure(5)
if maxY < 0
plot([0 Y],[0 Z_Cum_PC],'-','LineWidth',1,'Marker','.',...
'MarkerSize',15,'MarkerEdgeColor',[0.6350 0.0780 0.1840],'MarkerFaceColor',[0.6350 0.0780 0.1840]);
else
plot([Y 0],[Z_Cum_PC 0],'-','LineWidth',1,'Marker','.',...
'MarkerSize',15,'MarkerEdgeColor',[0.6350 0.0780 0.1840],'MarkerFaceColor',[0.6350 0.0780 0.1840]);
end
hold on
ancora = plot(0,0,'s','Color','black','MarkerSize' ,13);
set(ancora, 'markerfacecolor', get(ancora, 'color'));
title('Cumulative displacements - Pre-convergence phase');
ylabel('Displacement [mm]');
xlabel('Position [m]');
h = gca;
h.YAxis.MinorTick = 'on';
grid on
if MAX > 2.5 % Limiti Asse Y
ylim([-MAX-1 MAX+1])
else
ylim([-2.5 +2.5]);
end
if ini >= -15 || End <= 15
xticks(ini:1:End);
else
h.XAxis.MinorTick = 'on';
end
TempName3_ENG = char(strcat('Report',siteID,'-', char(toolrif),'Z_Cum_PC_ENG.png'));
saveas(ancora(1),TempName3_ENG);
close(figure(5))
end
% --- grafico spostamenti cumulati - Periodo di riferimento ---
figure(6)
if maxY < 0
plot([0 Y],[0 Z_Cum],'-','LineWidth',1,'Marker','.',...
'MarkerSize',15,'MarkerEdgeColor','b','MarkerFaceColor',[0.5,0.5,0.5]);
else
plot([Y 0],[Z_Cum 0],'-','LineWidth',1,'Marker','.',...
'MarkerSize',15,'MarkerEdgeColor','b','MarkerFaceColor',[0.5,0.5,0.5]);
end
hold on
ancora = plot(0,0,'s','Color','black','MarkerSize' ,13);
set(ancora, 'markerfacecolor', get(ancora, 'color'));
title('Spostamenti cumulati - periodo di riferimento');
ylabel('Spostamento [mm]');
xlabel('Progressiva [m]');
h = gca;
h.YAxis.MinorTick = 'on';
grid on
if MAX > 2.5 % Limiti Asse Y
ylim([-MAX-1 MAX+1])
else
ylim([-2.5 +2.5]);
end
if ini >= -15 || End <= 15
xticks(ini:1:End);
else
h.XAxis.MinorTick = 'on';
end
TempName4 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Cum_PCL.png'));
saveas(ancora(1),TempName4);
close(figure(6))
ChartPCL3 = Image(TempName3);
ChartPCL4 = Image(TempName4);
lot3 = Table({ChartPCL3, ChartPCL4});
lot3.Style = {ResizeToFitContents(false), Width('100%')};
ChartPCL3.Style = {Height('6.6cm'),HAlign('center')};
ChartPCL4.Style = {Height('6.6cm'),HAlign('center')};
ChartPCL3_cap = Paragraph(['Fig. ' num2str(FIG) ' - Spostamenti '...
'differenziali cumulati in direzione verticale registrati durante '...
'il periodo di pre-convergenza e il periodo di riferimento']);
ChartPCL3_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
FIG = FIG+1;
% ENG
if activeEN == 1
% --- grafico spostamenti cumulati - Periodo di riferimento ---
figure(6)
if maxY < 0
plot([0 Y],[0 Z_Cum],'-','LineWidth',1,'Marker','.',...
'MarkerSize',15,'MarkerEdgeColor','b','MarkerFaceColor',[0.5,0.5,0.5]);
else
plot([Y 0],[Z_Cum 0],'-','LineWidth',1,'Marker','.',...
'MarkerSize',15,'MarkerEdgeColor','b','MarkerFaceColor',[0.5,0.5,0.5]);
end
hold on
ancora = plot(0,0,'s','Color','black','MarkerSize' ,13);
set(ancora, 'markerfacecolor', get(ancora, 'color'));
title('Cumulative displacements - Reference time period');
ylabel('Displacement [mm]');
xlabel('Position [m]');
h = gca;
h.YAxis.MinorTick = 'on';
grid on
if MAX > 2.5 % Limiti Asse Y
ylim([-MAX-1 MAX+1])
else
ylim([-2.5 +2.5]);
end
if ini >= -15 || End <= 15
xticks(ini:1:End);
else
h.XAxis.MinorTick = 'on';
end
TempName4_ENG = char(strcat('Report',siteID,'-', char(toolrif),'Z_Cum_PCL_ENG.png'));
saveas(ancora(1),TempName4_ENG);
close(figure(6))
ChartPCL3_ENG = Image(TempName3_ENG);
ChartPCL4_ENG = Image(TempName4_ENG);
lot3_ENG = Table({ChartPCL3_ENG, ChartPCL4_ENG});
lot3_ENG.Style = {ResizeToFitContents(false), Width('100%')};
ChartPCL3_ENG.Style = {Height('6.6cm'),HAlign('center')};
ChartPCL4_ENG.Style = {Height('6.6cm'),HAlign('center')};
ChartPCL3_ENG_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - Cumulative differential displacements '...
'recorded in vertical direction during the pre-convergence phase and '...
'the reference time period']);
ChartPCL3_ENG_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
FIG_ENG = FIG_ENG+1;
end
% testi
sezPCL = Heading3('PreConv Link');
sezPCL.Style = {FontSize(Font_tools),Bold(1),Italic(1)};
PCL = Section();
PCL.Title = sezPCL;
testo1 = Paragraph(['I grafici riportati di seguito mostrano l''entit' char(224) ' e il verso degli spostamenti '...
'locali e cumulati in direzione verticale, misurati dal sensore MEMS 3D nel periodo di pre-convergenza '...
'(ovvero considerando l''intervallo temporale fra la data di riferimento indicata in Tab. 1 '...
'e il ' datestr(datenum(data_PC),'dd-mm-yyyy') ') e di riferimento. In particolare, valori negativi '...
'indicano un abbassamento del nodo, mentre spostamenti '...
'positivi caratterizzano un movimento verso l''alto del sensore in oggetto durante '...
'l''intervallo di tempo considerato.']);
% Locale ultimo mese
progZ = max(abs(Z_Loc));
prY = find(abs(Z_Loc)==progZ);
progY = Y(prY(1));
% Locale da sempre
progZ_Tot = max(abs(Z_Loc_Tot));
prY_Tot = find(abs(Z_Loc_Tot)==progZ_Tot);
progY_Tot = Y(prY_Tot(1));
% locale periodo pre-convergenza
progZ_PC = max(abs(Z_Loc_PC));
prY_PC = find(abs(Z_Loc_PC)==progZ_PC);
progY_PC = Y(prY_PC(1));
testo2 = Paragraph(['Il massimo valore di spostamento differenziale locale registrato durante il periodo temporale '...
'di riferimento ' char(232) ' pari a ' num2str(max(abs(round(Z_Loc,1)))) ' mm, rilevato dal nodo '...
'alla progressiva di ' num2str(progY) ' m. La stessa analisi, condotta relativamente al periodo di pre-convergenza '...
'e all''intera durata del monitoraggio, evidenzia movimenti differenziali locali pari a ' num2str(max(abs(round(Z_Loc_PC,1)))) ...
' e ' num2str(max(abs(round(Z_Loc_Tot,1)))) ' mm, registrati rispettivamente dai nodi alla progressiva di ' num2str(progY_PC) ...
' e ' num2str(progY_Tot) ' m.']);
parte1 = ['La figura associata riassume la direzione di movimento verticale dei singoli nodi '...
'posizionati secondo la geometria dello strumento. Si noti che, in questa rappresentazione '...
'vengono considerati stabili i sensori caratterizzati da uno spostamento '...
'inferiore a 0.5 mm. Nel periodo di pre-convergenza, '...
'l''analisi ha evidenziato ' num2str(contaS-1) ' '];
if contaS-1 == 1
parte2 = 'nodo caratterizzato ';
else
parte2 = 'nodi caratterizzati ';
end
parte3 = ['da movimenti verso l''alto, ' num2str(contaG-1) ' verso il basso e ' num2str(contaF-1) ];
if contaF-1 == 1
parte4 = ' nodo stabile. ';
else
parte4 = ' nodi stabili. ';
end
parte5 = ['Le corrispondenti informazioni relative all''intervallo di '...
'riferimento forniscono ' num2str(contaS_2-1) ];
if contaS_2-1 == 1
parte6 = ' sensore che si sposta ';
else
parte6 = ' sensori che si spostano ';
end
parte7 = ['verso l''alto, ' num2str(contaG_2-1) ' verso il basso e ' num2str(contaF_2-1) ];
if contaF_2-1 == 1
parte8 = ' stabile.';
else
parte8 = ' stabili.';
end
testo3 = Paragraph([parte1 parte2 parte3 parte4 parte5 parte6 parte7 parte8]);
spazio = Paragraph('');
testo1.HAlign = 'justify';
testo2.HAlign = 'justify';
testo3.HAlign = 'justify';
add(DT,sezPCL);
add(DT,testo1);
add(DT,spazio);
add(DT,testo2);
add(DT,lot1);
add(DT,ChartPCL_cap);
add(DT,testo3);
add(DT,lot2);
add(DT,ChartSEZPC2_cap);
add(DT,lot3);
add(DT,ChartPCL3_cap);
add(DT,br);
% ENG
if activeEN == 1
% testi
sezPCL_ENG = Heading3('PreConv Link');
sezPCL_ENG.Style = {FontSize(Font_tools),Bold(1),Italic(1)};
PCL_ENG = Section();
PCL_ENG.Title = sezPCL_ENG;
testo1 = Paragraph(['Following graphs display the magnitude and direction '...
'of local and cumulative displacements '...
'measured along the vertical direction by the 3D MEMS sensor during the pre-convergence phase '...
'(referring to the time interval between the reference date reported in Tab. 1 '...
'and the following date: ' datestr(datenum(data_PC),'dd-mm-yyyy') ') and the reference time period. '...
'In particular, negative values correspond to downwards movements of the node, '...
'while positive ones represent an upward displacement.']);
testo2 = Paragraph(['The maximum local differential displacement value recorded during the reference time period is '...
num2str(max(abs(round(Z_Loc,1)))) ' mm, measured by the node '...
'located at ' num2str(progY) ' m from the fixed point. The same analysis performed on the pre-convergence phase '...
'and on the complete monitoring period highlights local differential displacement values of ' num2str(max(abs(round(Z_Loc_PC,1)))) ...
' and ' num2str(max(abs(round(Z_Loc_Tot,1)))) ' mm, recorded by nodes located respectively at ' num2str(progY_PC) ...
' m and ' num2str(progY_Tot) ' m from the fixed point.']);
parte1 = ['The corresponding figure summarizes the vertical displacement direction of each single node, according '...
'to their position along the Array. In this specific representation, sensors featuring displacement values less than 0.5 mm '...
'are assumed as stable. During the pre-convergence phase, the analysis evidenced ' num2str(contaS-1) ' '];
if contaS-1 == 1
parte2 = 'node featuring ';
else
parte2 = 'nodes featuring ';
end
parte3 = ['upward movement, ' num2str(contaG-1) ' in downward direction, and ' num2str(contaF-1) ];
if contaF-1 == 1
parte4 = ' stable sensor. ';
else
parte4 = ' stable sensors. ';
end
parte5 = ['By taking into account the reference time period, the '...
'results show ' num2str(contaS_2-1) ];
if contaS_2-1 == 1
parte6 = ' sensor moving ';
else
parte6 = ' sensors moving ';
end
parte7 = ['upwards, ' num2str(contaG_2-1) ' in downward direction, and ' num2str(contaF_2-1) ];
if contaF_2-1 == 1
parte8 = ' stable node.';
else
parte8 = ' stable nodes.';
end
testo3 = Paragraph([parte1 parte2 parte3 parte4 parte5 parte6 parte7 parte8]);
spazio = Paragraph('');
testo1.HAlign = 'justify';
testo2.HAlign = 'justify';
testo3.HAlign = 'justify';
add(DT_ENG,sezPCL_ENG);
add(DT_ENG,testo1);
add(DT_ENG,spazio);
add(DT_ENG,testo2);
add(DT_ENG,lot1_ENG);
add(DT_ENG,ChartPCL_ENG_cap);
add(DT_ENG,testo3);
add(DT_ENG,lot2_ENG);
add(DT_ENG,ChartSEZPC2_ENG_cap);
add(DT_ENG,lot3_ENG);
add(DT_ENG,ChartPCL3_ENG_cap);
add(DT_ENG,br);
end
else
if ATTIVA == 1
testo = Paragraph('Non sono presenti dati relativi al periodo temporale considerato.');
ATTIVA = 0;
check = 1;
add(DT,testo);
if activeEN == 1
testo = Paragraph('No data available for the reference time period.');
add(DT_ENG,testo);
end
end
end
end
end
text = 'report_PCL function executed correctly';
fprintf(fileID,fmt,text);
fclose(fileID);
end