Files
matlab-python/ATD/report_PCL_ENG.m

642 lines
28 KiB
Matlab
Executable File

function [GI_PCL_Z,GI_PCL_Date,ATTIVA,FIG] = report_PCL_ENG(DTcatena,rPCL,m,NodoPreConvLink,...
toolrif,unitrif,datarif,firstdata_num,Font_caption,Font_tools,siteID,DT,FIG,br,...
colonna2,colonna2bis,status,ATTIVA,conn,FileName)
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('Array not installed or inactive.');
add(DT,testo);
end
check = 1;
elseif status(m,1) == 3
if ATTIVA == 1
ATTIVA = 0;
testo = Paragraph(['Monitoring completed. Please log into the web-based platoform '...
'to access the complete dataset.']);
add(DT,testo);
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;
% time_PC = 0;
else
data_PC = stringa(1,1:10);
% time_PC = stringa(1,11:21);
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('Local displacements - Pre-Convergence phase');
ylabel('Displacement [mm]');
xlabel('Position [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_ENG.png'));
saveas(Disp_Loc_PC(1),TempName1);
close(figure(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 = 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_ENG.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) ' - Local differential displacements '...
'recorded in vertical direction during the pre-convergence phase and the '...
'reference time period']);
ChartPCL_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
FIG = FIG+1;
% ---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
plot([0; cell2mat(CoordY(:,1))],[0; cell2mat(CoordZ(:,1))],'-','Color','black','MarkerSize' ,7);
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','south');
elseif contaS > 1 && contaG > 1 && contaF == 1
legend('Array geometry','Upwards','Downwards','Anchor','Location','south');
elseif contaS > 1 && contaG == 1 && contaF > 1
legend('Array geometry','Upwards','Stable node','Anchor','Location','south');
elseif contaS == 1 && contaG > 1 && contaF > 1
legend('Array geometry','Downwards','Stable node','Anchor','Location','south');
elseif contaS > 1 && contaG == 1 && contaF == 1
legend('Array geometry','Upwards','Anchor','Location','south');
elseif contaS == 1 && contaG > 1 && contaF == 1
legend('Array geometry','Downwards','Stable node','Anchor','Location','south');
elseif contaS == 1 && contaG == 1 && contaF > 1
legend('Array geometry','Stable node','Anchor','Location','south');
end
title('Displacement direction - Pre-convergence phase');
xlabel('Position [m]');
ylabel('Vertical direction');
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('direzionescavoENG.png')
hold off
TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezPCL_ENG.png'));
saveas(ancora,TempName);
ChartSEZPC1 = Image(TempName);
ChartSEZPC1.Style = {Height('6.6cm')};
close(figure(3))
% ---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
plot([0; cell2mat(CoordY(:,1))],[0; cell2mat(CoordZ(:,1))],'-','Color','black','MarkerSize' ,7);
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','south');
elseif contaS_2 > 1 && contaG_2 > 1 && contaF_2 == 1
legend('Array geometry','Upwards','Downwards','Anchor','Location','south');
elseif contaS_2 > 1 && contaG_2 == 1 && contaF_2 > 1
legend('Array geometry','Upwards','Stable node','Anchor','Location','south');
elseif contaS_2 == 1 && contaG_2 > 1 && contaF_2 > 1
legend('Array geometry','Downwards','Stable node','Anchor','Location','south');
elseif contaS_2 > 1 && contaG_2 == 1 && contaF_2 == 1
legend('Array geometry','Upwards','Anchor','Location','south');
elseif contaS_2 == 1 && contaG_2 > 1 && contaF_2 == 1
legend('Array geometry','Downwards','Stable node','Anchor','Location','south');
elseif contaS_2 == 1 && contaG_2 == 1 && contaF_2 > 1
legend('Array geometry','Stable node','Anchor','Location','south');
end
title('Displacement direction - Reference time period');
xlabel('Position [m]');
ylabel('Vertical direction');
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('direzionescavoENG.png')
hold off
TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezPCL2_ENG.png'));
saveas(ancora,TempName);
ChartSEZPC2 = Image(TempName);
ChartSEZPC2.Style = {Height('6.6cm')};
ChartSEZPC2_cap = Paragraph(['Fig. ' num2str(FIG) ' - Vertical displacements direction '...
'observed during the pre-convergence phase and the reference time period']);
FIG = FIG+1;
ChartSEZPC2_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
lot2 = Table({ChartSEZPC1, ChartSEZPC2});
lot2.Style = {ResizeToFitContents(false), Width('100%')};
close(figure(4))
% --- 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('Cumulative displacements - Pre-convergence phase');
ylabel('Displacement [mm]');
xlabel('Position [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_ENG.png'));
saveas(ancora(1),TempName3);
close(figure(5))
% --- 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 = char(strcat('Report',siteID,'-', char(toolrif),'Z_Cum_PCL_ENG.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) ' - Cumulative differential displacements '...
'recorded in vertical direction during the pre-convergence phase and '...
'the reference time period']);
ChartPCL3_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
FIG = FIG+1;
% testi
sezPCL = Heading3('PreConv Link');
sezPCL.Style = {FontSize(Font_tools),Bold(1),Italic(1)};
PCL = Section();
PCL.Title = sezPCL;
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.']);
% 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(['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,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);
else
if ATTIVA == 1
testo = Paragraph('No data available for the reference time period.');
ATTIVA = 0;
check = 1;
add(DT,testo);
end
end
end
end
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'report_PCL_ENG function executed correctly';
fprintf(fileID,fmt,text);
fclose(fileID);
end