Files
matlab-python/ATD/tipologiaNodi.m

506 lines
18 KiB
Matlab
Executable File

% Funzione che ricostruisce la tipologia di nodi presenti
% NodoTiltLink ad esempio contiene numero del nodo e profondità per tutti i
% nodi di questo tipo
% idTool rappresenta l'identificativo con cui sono definite le
% installazioni su DB, serve più avanti nell'elaborazione
% idNode scrive gli identificativi dei nodi del DB. E' un output di
% controllo
function [idTool,NodoTunnelLink,NodoRadialLink,NodoTiltLinkH,...
NodoTiltLinkHRH,NodoPreConvLink,NodoPreConvLinkHR,NodoDistoMTLink,NodoPressureLink,...
NodoLoadLink,NodoExtensometerLink,Nodo3DExtensometerLink,NodoWireExtensometerLink,...
NodoMultiPointRodExtensometer,NodoTiltLinkHR3DH,NodoPreConvLinkHR3D,...
NodoAnalogLink,NodoCrackLink,Nodo3DCrackLink,Nodo2DCrackLink,NodoStressMeter,...
rTuL,rRL,rTLH,rTLHRH,rPCL,rPCLHR,rPrL,rLL,rEL,r3DEL,rWEL,rMPBEL,rAL,rCrL,r3DCrL,...
r2DCrL,rSM,rTLHR3DH,rPCLHR3D,rDM] = tipologiaNodi(DTcatena,unitID,conn,FileName)
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'tipologiaNodi function started';
fprintf(fileID,fmt,text);
%% A partire dal nome della catena, risalgo all'identificativo con cui è
% definita nel Database (mi serve successivamente)
comando = ['select id from tools where name = ''' DTcatena ''' and unit_id = ''' unitID ''' '];
idTool = num2str(cell2mat(fetch(conn,comando))); % leggo e converto in stringa
%% Tunnel Link
% carico le informazioni relative al numero e alla posizione (rispetto all'ancora
% considerando la circonferenza come una retta verticale) per Tunnel LINK
comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 17 order by num'];
Leggo = fetch(conn,comando);
[rTuL,cL] = size(Leggo);
if rTuL <= 1 && cL <= 1
textTuL = 'There are not Tunnel Link;';
NodoTunnelLink = [];
rTuL = 0;
else
% depth è la posizione del nodo (considerando una verticale progressiva)
depth = cell2mat(Leggo(:,2));
depth = num2cell(depth);
nome = cell(rTuL,1);
for i=1:rTuL
nome(i,1) = cellstr('Tunnel Link');
end
NodoTunnelLink = [nome Leggo(:,1) depth Leggo(:,3)];
textTuL = ['There are ',num2str(rTuL),' Tunnel Link;'];
end
fprintf(fileID,fmt,textTuL);
%% Radial Link
% carico le informazioni relative al numero e alla posizione (rispetto all'ancora
% considerando la circonferenza come una retta verticale) per Radial LINK
comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 18 order by num'];
Leggo = fetch(conn,comando);
[rRL,cL] = size(Leggo);
if rRL <= 1 && cL <= 1
textRL = 'There are not Radial Link;';
NodoRadialLink = [];
rRL = 0;
else
% depth è la posizione del nodo (considerando una verticale progressiva)
depth = cell2mat(Leggo(:,2));
depth = num2cell(depth);
nome = cell(rRL,1);
for i=1:rRL
nome(i,1) = cellstr('Radial Link');
end
NodoRadialLink = [nome Leggo(:,1) depth Leggo(:,3)];
textRL = ['There are ',num2str(rRL),' Radial Link;'];
end
fprintf(fileID,fmt,textRL);
%% Tilt Link H
% carico le informazioni relative al numero e alla lunghezza per TILT LINK
% H (nodo orizzontale)
comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 11 order by num'];
Leggo = fetch(conn,comando);
[rTLH,cL] = size(Leggo);
if rTLH <= 1 && cL <= 1
textTLH = 'There are not Tilt Link H;';
NodoTiltLinkH = [];
nodoTLH = 0; % mi serve nei Tilt Link H HR3D
rTLH = 0;
else
nodoTLH = 1; % mi serve nei Tilt Link H HR3D
% depth in questo caso è la lunghezza in orizzontale
depth = Leggo(:,2);
nome = cell(rTLH,1);
for i=1:rTLH
nome(i,1) = cellstr('Tilt Link H');
end
NodoTiltLinkH = [nome Leggo(:,1) depth Leggo(:,3)];
textTLH = ['There are ',num2str(rTLH),' Tilt Link H;'];
end
fprintf(fileID,fmt,textTLH);
%% Tilt Link HR H
% carico le informazioni relative al numero e alla lunghezza per TILT LINK
% HR H (ampolla orizzontale)
comando = ['select num, depth from nodes where tool_id = ''' idTool ''' and nodetype_id = 12 order by num'];
Leggo = fetch(conn,comando);
[rTLHRH,cL] = size(Leggo);
if rTLHRH <= 1 && cL <= 1
textTLHRH = 'There are not Tilt Link HR H;';
NodoTiltLinkHRH = [];
nodoTLHRH = 0; % mi serve a riconoscere i Tilt Link HR3D H
rTLHRH = 0;
else
nodoTLHRH = 1; % mi serve a riconoscere i Tilt Link HR3D H
% la profondità in realtà indica la lunghezza in orizzontale
depth = Leggo(:,2);
nome = cell(rTLHRH,1);
for i=1:rTLHRH
nome(i,1) = cellstr('Tilt Link HR H');
end
NodoTiltLinkHRH = [nome Leggo(:,1) depth];
textTLHRH = ['There are ',num2str(rTLHRH),' Tilt Link HR H;'];
end
fprintf(fileID,fmt,textTLHRH);
% confrontando le profondità (in realtà lunghezze in orizzontale) di Tilt
% Link H e Tilt Link HR H riconosco i TILT LINK HR 3D H
if nodoTLH == 1 && nodoTLHRH == 1
NodoTiltLinkHR3Dwork = cell(rTLH,4); % creo matrice di zeri
p=1;
Control = 0;
for i=1:rTLH
for j=1:rTLHRH
if cell2mat(NodoTiltLinkH(i,3)) == cell2mat(NodoTiltLinkHRH(j,3))
prof = NodoTiltLinkH(i,3);
nome = cellstr('Tilt Link HR 3D H');
% il numero nodo del Tilt Link H lo faccio diventare il
% numero nodo del Tilt Link HR3D H
num = NodoTiltLinkH(i,2);
num2 = NodoTiltLinkHRH(i,2);
Leggo = [nome,num,num2,prof];
NodoTiltLinkHR3Dwork(p,:) = Leggo;
p = p+1;
Control = 1;
end
end
end
% elimino gli zeri in più
q = 1;
r = 0;
while strcmp(NodoTiltLinkHR3Dwork(q,1),'Tilt Link HR 3D H')
q = q+1;
r = 1+r; % ultima riga con dati che non siano celle vuote
if q > rTLH || q > rTLHRH
break % esco dal ciclo while
end
end
if Control == 1
NodoTiltLinkHR3DH = NodoTiltLinkHR3Dwork(1:r,:);
elseif Control == 0
NodoTiltLinkHR3DH = [];
end
textTLHR3DH = ['There are ',num2str(r),' Tilt Link HR 3D H;'];
else
textTLHR3DH = 'There are not Tilt Link HR 3D H;';
NodoTiltLinkHR3DH = [];
r = 0;
end
fprintf(fileID,fmt,textTLHR3DH);
rTLHR3DH = r;
%% PreConv Link
% carico le informazioni relative al numero e alla lunghezza per PreConv
% Link (nodo per la misura di PRE-Convergenza)
comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 23 order by num'];
Leggo = fetch(conn,comando);
[rPCL,cL] = size(Leggo);
if rPCL <= 1 && cL <= 1
textPCL = 'There are not PreConv Link; ';
NodoPreConvLink = [];
nodoPCL = 0; % mi serve nei Pre Conv Link HR 3D
rPCL = 0;
else
nodoPCL = 1; % mi serve nei Pre Conv Link HR 3D
% depth in questo caso è la lunghezza in orizzontale
depth = Leggo(:,2);
nome = cell(rPCL,1);
for i=1:rPCL
nome(i,1) = cellstr('PreConv Link');
end
NodoPreConvLink = [nome Leggo(:,1) depth Leggo(:,3)];
textPCL = ['There are ',num2str(rPCL),' PreConv Link;'];
end
fprintf(fileID,fmt,textPCL);
%% PreConv Link HR
% carico le informazioni relative al numero e alla lunghezza per TILT LINK
% HR H (ampolla orizzontale)
comando = ['select num, depth from nodes where tool_id = ''' idTool ''' and nodetype_id = 24 order by num'];
Leggo = fetch(conn,comando);
[rPCLHR,cL] = size(Leggo);
if rPCLHR <= 1 && cL <= 1
textPCLHR = 'There are not PreConv Link HR; ';
NodoPreConvLinkHR = [];
nodoPCLHR = 0; % mi serve a riconoscere i PreConv Link HR 3D
rPCLHR = 0;
else
nodoPCLHR = 1; % mi serve a riconoscere i PreConv Link HR 3D
% la profondità in realtà indica la lunghezza in orizzontale
depth = Leggo(:,2);
nome = cell(rPCLHR,1);
for i=1:rPCLHR
nome(i,1) = cellstr('Pre Conv Link HR');
end
NodoPreConvLinkHR = [nome Leggo(:,1) depth];
textPCLHR = ['There are ',num2str(rPCLHR),' PreConv Link HR;'];
end
fprintf(fileID,fmt,textPCLHR);
% confrontando le profondità (in realtà lunghezze in orizzontale) di PreConv Link
% e PreConv Link HR riconosco i PreConv Link HR 3D
if nodoPCL == 1 && nodoPCLHR == 1
NodoPreConvLinkHR3Dwork = cell(rPCL,4); % creo matrice di zeri
p=1;
Control = 0;
for i=1:rPCL
for j=1:rPCLHR
if cell2mat(NodoPreConvLink(i,3)) == cell2mat(NodoPreConvLink(j,3))
prof = NodoPreConvLink(i,3);
nome = cellstr('PreConv Link HR 3D');
% il numero nodo del PreConv Link lo faccio diventare il
% numero nodo del PreConv Link HR 3D
num = NodoPreConvLink(i,2);
num2 = NodoPreConvLinkHR(i,2);
Leggo = [nome,num,num2,prof];
NodoPreConvLinkHR3Dwork(p,:) = Leggo;
p = p+1;
Control = 1;
end
end
end
% elimino gli zeri in più
q = 1;
r = 0;
while strcmp(NodoPreConvLinkHR3Dwork(q,1),'PreConv Link HR 3D')
q = q+1;
r = 1+r; % ultima riga con dati che non siano celle vuote
if q > rPCL || q > rPCLHR
break % esco dal ciclo while
end
end
if Control == 1
NodoPreConvLinkHR3D = NodoPreConvLinkHR3Dwork(1:r,:);
elseif Control == 0
NodoPreConvLinkHR3D = [];
end
textPCLHR3D = ['There are ',num2str(r),' PreConv Link HR 3D; '];
else
textPCLHR3D = 'There are not PreConv Link HR 3D; ';
NodoPreConvLinkHR3D = [];
r = 0;
end
rPCLHR3D = r;
fprintf(fileID,fmt,textPCLHR3D);
%% DistoMT Link
% carico le informazioni relative al numero e alla posizione (rispetto all'ancora
% considerando la circonferenza come una retta verticale) per Tunnel LINK
comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 56 order by num'];
Leggo = fetch(conn,comando);
[rDM,cL] = size(Leggo);
if rDM <= 1 && cL <= 1
textDM = 'There are not DistoMT Link;';
NodoDistoMTLink = [];
rDM = 0;
else
% depth è la posizione del nodo (considerando una verticale progressiva)
depth = cell2mat(Leggo(:,2));
depth = num2cell(depth);
nome = cell(rDM,1);
for i=1:rDM
nome(i,1) = cellstr('DistoMT Link');
end
NodoDistoMTLink = [nome Leggo(:,1) depth Leggo(:,3)];
textDM = ['There are ',num2str(rDM),' DistoMT Link;'];
end
fprintf(fileID,fmt,textDM);
%% Pressure Link
% carico le informazioni relative al numero per Pressure LINK
comando = ['select num, depth, channels, measurment, therm from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 21 order by num'];
Leggo = fetch(conn,comando);
[rPrL,cL] = size(Leggo);
if rPrL <= 1 && cL <= 1
textPrL = 'There are not Pressure Link; ';
NodoPressureLink = [];
rPrL = 0;
else
% cambio il segno della profondità (nel DB è positivo)
nome = cell(rPrL,1);
for i=1:rPrL
nome(i,1) = cellstr('Pressure Link');
end
NodoPressureLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5)];
textPrL = ['There are ',num2str(rPrL),' Pressure Link; '];
end
fprintf(fileID,fmt,textPrL);
%% Load Link
% carico le informazioni relative al numero per LOAD LINK
comando = ['select num, depth, channels, measurment, therm from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 15 order by num'];
Leggo = fetch(conn,comando);
[rLL,cL] = size(Leggo);
if rLL <= 1 && cL <= 1
textLL = 'There are not Load Link; ';
NodoLoadLink = [];
rLL = 0;
else
nome = cell(r,1);
for i=1:rLL
nome(i,1) = cellstr('Load Link');
end
NodoLoadLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5)];
textLL = ['There are ',num2str(rLL),' Load Link; '];
end
fprintf(fileID,fmt,textLL);
%% Extensometer Link
% carico le informazioni relative al numero per EXTENSOMETER LINK
comando = ['select num, depth, channels, measurment, therm from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 16 order by num'];
Leggo = fetch(conn,comando);
[rEL,cL] = size(Leggo);
if rEL <= 1 && cL <= 1
textEL = 'There are not Extensometer Link; ';
NodoExtensometerLink = [];
rEL = 0;
else
nome = cell(rEL,1);
for i=1:rEL
nome(i,1) = cellstr('Extensometer Link');
end
NodoExtensometerLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5)];
textEL = ['There are ',num2str(rEL),' Extensometer Link; '];
end
fprintf(fileID,fmt,textEL);
%% 3D Extensometer Link
% carico le informazioni relative al numero per 3D EXTENSOMETER LINK
comando = ['select num, depth, channels, measurment, therm, orientation from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 19 order by num'];
Leggo = fetch(conn,comando);
[r3DEL,cL] = size(Leggo);
if r3DEL <= 1 && cL <= 1
text3DEL = 'There are not 3D Extensometer Link; ';
Nodo3DExtensometerLink = [];
r3DEL = 0;
else
nome = cell(r3DEL,1);
for i=1:r3DEL
nome(i,1) = cellstr('3D Extensometer Link');
end
Nodo3DExtensometerLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5) Leggo(:,6)];
text3DEL = ['There are ',num2str(r3DEL),' 3D Extensometer Link; '];
end
fprintf(fileID,fmt,text3DEL);
%% Wire Extensometer Link
% carico le informazioni relative al numero per Wire EXTENSOMETER LINK
comando = ['select num, depth, channels, measurment, therm from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 22 order by num'];
Leggo = fetch(conn,comando);
[rWEL,cL] = size(Leggo);
if rWEL <= 1 && cL <= 1
textWEL = 'There are not Wire Extensometer Link; ';
NodoWireExtensometerLink = [];
rWEL = 0;
else
nome = cell(rWEL,1);
for i=1:rWEL
nome(i,1) = cellstr('Wire Extensometer Link');
end
NodoWireExtensometerLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5)];
textWEL = ['There are ',num2str(rWEL),' Wire Extensometer Link; '];
end
fprintf(fileID,fmt,textWEL);
%% Multi Point Borehole Rod Extensometer
% carico le informazioni relative al numero per Multi Point Borehole Rod Extensometer
comando = ['select num, depth, channels, measurment, therm from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 25 order by num'];
Leggo = fetch(conn,comando);
[rMPBEL,cL] = size(Leggo);
if rMPBEL <= 1 && cL <= 1
textMPBEL = 'There are not Multi Point Borehole Rod Extensometer Link; ';
NodoMultiPointRodExtensometer = [];
rMPBEL = 0;
else
nome = cell(rMPBEL,1);
for i=1:rMPBEL
nome(i,1) = cellstr('Multi Point Borehole Rod Extensometer Link');
end
NodoMultiPointRodExtensometer = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5)];
textMPBEL = ['There are ',num2str(rMPBEL),' Multi Point Borehole Rod Extensometer Link; '];
end
fprintf(fileID,fmt,textMPBEL);
%% Crack Link
comando = ['select num, depth, channels, measurment, therm from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 36 order by num'];
Leggo = fetch(conn,comando);
[rCrL,cL] = size(Leggo);
if rCrL <= 1 && cL <= 1
textCrL = 'There are not Crack Link; ';
NodoCrackLink = [];
rCrL = 0;
else
nome = cell(rCrL,1);
for i=1:rCrL
nome(i,1) = cellstr('Crack Link');
end
NodoCrackLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5)];
textCrL = ['There are ',num2str(rCrL),' Crack Link; '];
end
fprintf(fileID,fmt,textCrL);
%% 3D Crack Link
comando = ['select num, depth, channels, measurment, therm, orientation from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 37 order by num'];
Leggo = fetch(conn,comando);
[r3DCrL,cL] = size(Leggo);
if r3DCrL <= 1 && cL <= 1
text3DCrL = 'There are not 3D Crack Link; ';
Nodo3DCrackLink = [];
r3DCrL = 0;
else
nome = cell(r3DCrL,1);
for i=1:r3DCrL
nome(i,1) = cellstr('3D Crack Link');
end
Nodo3DCrackLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5) Leggo(:,6)];
text3DCrL = ['There are ',num2str(r3DCrL),' 3D Crack Link; '];
end
fprintf(fileID,fmt,text3DCrL);
%% 2D Crack Link
comando = ['select num, depth, channels, measurment, therm, orientation from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 51 order by num'];
Leggo = fetch(conn,comando);
[r2DCrL,cL] = size(Leggo);
if r2DCrL <= 1 && cL <= 1
text2DCrL = 'There are not 2D Crack Link; ';
Nodo2DCrackLink = [];
r2DCrL = 0;
else
nome = cell(r2DCrL,1);
for i=1:r2DCrL
nome(i,1) = cellstr('2D Crack Link');
end
Nodo2DCrackLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5) Leggo(:,6)];
text2DCrL = ['There are ',num2str(r3DCrL),' 2D Crack Link; '];
end
fprintf(fileID,fmt,text2DCrL);
%% Analog Link
% carico le informazioni relative al numero per Analog Link
comando = ['select num, depth, channels, measurment, therm from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 8 order by num'];
Leggo = fetch(conn,comando);
[rAL,cL] = size(Leggo);
if rAL <= 1 && cL <= 1
textAL = 'There are not Analog Link; ';
NodoAnalogLink = [];
rAL = 0;
else
nome = cell(rAL,1);
for i=1:rAL
nome(i,1) = cellstr('Analog Link');
end
NodoAnalogLink = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5)];
textAL = ['There are ',num2str(rAL),' Analog Link;'];
end
fprintf(fileID,fmt,textAL);
%% Stress Meter
comando = ['select num, depth, channels, measurment, therm from nodes where tool_id = ''' ...
idTool ''' and nodetype_id = 47 order by num'];
Leggo = fetch(conn,comando);
[rSM,cL] = size(Leggo);
if rSM <= 1 && cL <= 1
textSM = 'There are not Stress Meter; ';
NodoStressMeter = [];
rSM = 0;
else
nome = cell(rSM,1);
for i=1:rSM
nome(i,1) = cellstr('Stress Meter');
end
NodoStressMeter = [nome Leggo(:,1) Leggo(:,4) Leggo(:,3) Leggo(:,5)];
textSM = ['There are ',num2str(r3DCrL),' Stress Meter; '];
end
fprintf(fileID,fmt,textSM);
text = 'tipologiaNodi function ended';
fprintf(fileID,fmt,text);
fclose(fileID);
end