Date post: | 03-Aug-2015 |
Category: |
Documents |
Upload: | marco-aurelio-alanoca-choque |
View: | 22 times |
Download: | 3 times |
1
Universidad de ConcepciónFacultad de Ingeniería Agrícola
Departamento de Recursos Hídricos
PROGRAMACIÓN DE UNA INTERFAZ GRÁFICA EN MATLAB PARA EL DISEÑO DESISTEMAS DE DRENAJE AGRÍCOLA SUBSUPERFICIAL
Carlos F. Quintana [email protected]
Agosto, 2008
RESUMEN
Los procedimientos de cálculo de para el diseño de sistemas de drenaje subsuperficial pueden sermúltiples de acuerdo a las condiciones que se presenten en campo. El presente trabajo consideróel diseño de sistemas de drenaje con regimen impermanente utilizando las ecuaciones deGlover&Domm y Boussinesq, para determinar espaciamientos mínimos entre drenes laterales. El objetivode este trabajo fue desarrollar una interfaz gráfica en Matlab que facilitara la rápida evaluación dediferentes características de drenaje previamente analizadas, arrojando como resultados elespaciamiento entre drenes, el caudal total de salida y el diámetro mínimo de tuberías laterales.
INTRODUCCIÓN
En Chile, los problemas de drenaje presentes en suelos de uso agrícola han sido una limitantepara el desarrollo económico de agricultores y pequeños campesinos, a lo que históricamente hanrespondido cultivando sus suelos con especies más resistentes al déficit de drenaje o bien,cultivando durante temporadas que resultan menos críticas.
El gran problema radica en que un suelo con drenaje deficiente limita el espacio poroso del sueloal estar permanentemente ocupado por agua, disminuyendo el oxígeno disponible y limitando larespiración y expansión del sistema radicular de los cultivos, provocando menores rendimientos.
Con el objetivo de aumentar la superficie cultivada y los rendimientos esperados, la Ley 18.450fomenta la inversión privada en obras de drenaje, permitiendo evacuar el exceso de agua delsuelo ante problemas de drenaje que se clasifican en dos tipos: Superficial y Subsuperficial. En eldrenaje superficial el problema consiste en la acumulación de agua sobre la superficie del suelo, laque no es eliminada naturalmente. En el caso del drenaje subsuperficial, el exceso de agua sedebe a la presencia de una napa freática ubicada sobre una estrata impermeable, lo que provocasaturación en el interior del suelo, afectando severamente las raíces (INIA - CNR, 2001).
El objetivo de este trabajo es programar una interfaz gráfica en Matlab, que facilite el diseño desistemas de drenaje subsuperficial en condición de régimen impermanente, tal que esta interfazdetermine el espaciamiento entre drenes, caudal de salida y diámetro mínimo de los drenes encondiciones particulares definidas por el usuario. Se utilizará como referencia el Manual deEstándares Técnicos y Económicos para Obras de Drenaje de la CNR (Salgado, 2000).
2
DESARROLLO
Para Salgado (2000), una condición de régimen impermanente se caracteriza por una recarga alsistema diferente a la descarga, generando que el nivel freático varíe en función del tiempo. Enagricultura, usualmente esta condición se presenta en zonas regadas, donde los excesos de riegopercolan y generan una elevación instantánea del nivel freático. Para el estudio de esta condiciónse considera un suelo homogéneo y profundidad a la napa freática tal que el espesor de la regiónde flujo pueda considerarse constante. Bajo esta condición, los dos casos a resolver son: (1)Diseño de un dren sobre la estrata impermeable y (2) Diseño de un dren en la estrataimpermeable.
Las ecuaciones que definen los casos a resolver fueron tomadas del Manual de EstándaresTécnicos y Económicos para Obras de Drenaje (Salgado, 2000).
1.1 Dren SOBRE estrata impermeable
La figura siguiente muestra la primera condición de drenaje a resolver:
El espaciamiento entre drenes está calculado por
Donde, si
O si
(Ec. Glover y Domm)
3
1.2 Dren EN estrata impermeable
La figura siguiente representa la situación que el dren coincide con el estrato impermeable.
Para este caso es posible utilizar las ecuaciones de Glover y Dumm o Boussinessq para calcularel espaciamiento entre drenes.
2. Cálculos Hidráulicos
2.1 Caudales de diseño para laterales y colectoresEn drenaje agrícola los laterales y colectores pueden ser tubos y/o zanjas. Por lo general loslaterales son tubos y los colectores zanjas facilitando la manutención de la red y la continuidad delpotrero al tener la red de laterales cubiertos. Cuando el suelo tiene una conductividad baja y larecarga es alta, se hace necesario una gran profundidad del nivel freático; bajo estas condicionesen la literatura consultada se recomienda el uso de tubos para construir los laterales por lo que elcálculo hidráulico se centró en determinar el diámetro del lateral y el caudal total de salida quedeterminará la sección del colector.
Donde,
Ec. Glover y Domm Ec. Boussinesq
4
Los laterales de drenaje se diseñaron para conducir el máximo caudal esperado (Qmax) bajo lascondiciones establecidas.
donde
Dependiendo con qué ecuación se calculó el espaciamiento entre laterales, el caudal drenado porlateral se calcula de acuerdo a las siguientes ecuaciones:
Finalmente, el caudal total a evacuar por el colector (Qt) es proporcional al número de laterales (n):
2.2 Diámetros para laterales
El diámetro mínimo de las tuberías se obtiene de las ecuaciones siguientes, dependiendo si seutilizará un tubo de PVC liso o corrugado.
Tubo liso: Con
Tubo corrugado:
RESULTADOS
La interfaz gráfica se divide en tres etapas:1. Presentación2. Ingreso de datos preliminares3. Resultados preliminares y selección de posición del dren.
1. Código de la Interfaz de Presentación
function varargout = DRENAJE1(varargin)% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
Ec. Glover y Domm Ec. Boussinesq
5
'gui_OpeningFcn', @DRENAJE1_OpeningFcn, ...'gui_OutputFcn', @DRENAJE1_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);
if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end
if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT
% --- Executes just before DRENAJE1 is made visible.function DRENAJE1_OpeningFcn(hObject, eventdata, handles, varargin)
%Código imagen portadaA=imread('portada','jpg');A=uint8(A);Img=image(A,'Parent',handles.axes1);set(handles.axes1,'Visible','off','YDir','reverse','XLim',get(Img,'XData'),'YLim',get(Img,'YData'));%Fin código imagen portada
%Código imagen UdecB=imread('UdeC','jpg');B=uint8(B);Img=image(B,'Parent',handles.axes2);set(handles.axes2,'Visible','off','YDir','reverse','XLim',get(Img,'XData'),'YLim',get(Img,'YData'));%Fin código imagen Udec
% Choose default command line output for DRENAJE1handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes DRENAJE1 wait for user response (see UIRESUME)% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.function varargout = DRENAJE1_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;
% --- Executes on button press in continuar.function continuar_Callback(hObject, eventdata, handles)close DRENAJE1 %Cierra el GUI actualDRENAJE2 %Abre el siguiente GUI llamado seguir
% --- Executes on button press in salir.function salir_Callback(hObject, eventdata, handles)opc=questdlg('¿Desea salir del programa?','SALIR','Si','No','No');if strcmp(opc,'No')return;endclear,clc,close all
6
INTERFAZ GRÁFICA: Presentación del programa:
2. Código de interfaz de Ingreso de datos preliminares
function varargout = DRENAJE2(varargin)
% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @DRENAJE2_OpeningFcn, ...'gui_OutputFcn', @DRENAJE2_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);
if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end
if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT
% --- Executes just before DRENAJE2 is made visible.function DRENAJE2_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;% Update handles structureguidata(hObject, handles);% --- Outputs from this function are returned to the command line.function varargout = DRENAJE2_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;
function k_Callback(hObject, eventdata, handles)% --- Executes during object creation, after setting all properties.function k_CreateFcn(hObject, eventdata, handles)
7
if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction v_Callback(hObject, eventdata, handles)function t_Callback(hObject, eventdata, handles)% --- Executes during object creation, after setting all properties.function t_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
function Ri_Callback(hObject, eventdata, handles)% --- Executes during object creation, after setting all properties.function Ri_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
function edit6_Callback(hObject, eventdata, handles)function edit6_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
function Pe_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties.function Pe_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
function K_Callback(hObject, eventdata, handles)% --- Executes during object creation, after setting all properties.function K_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
% --- Executes on button press in nopermanente.function nopermanente_Callback(hObject, eventdata, handles)function permanente_Callback(hObject, eventdata, handles)function Ht_Callback(hObject, eventdata, handles)function Ps_Callback(hObject, eventdata, handles)
% --- Executes on button press in ayuda.function ayuda_Callback(hObject, eventdata, handles)
% --- Executes on button press in continuar.function continuar_Callback(hObject, eventdata, handles)
8
K=str2double(get(handles.K,'string'));Ri=str2double(get(handles.Ri,'string'));t=str2double(get(handles.t,'string'));Ps=str2double(get(handles.Ps,'string'));Pe=str2double(get(handles.Pe,'string'));Pd=str2double(get(handles.Pd,'string'));
b=.4; %valor de referencia, ancho de zanja de escavaciónv=sqrt(K); %porosidad drenable (k en cm/día)--> v %)dh=(Ri/100)/(v/100); %carga hidráulica (m)h0=Pd-Pe; %carga hidráulica inicialht=h0-dh; %profundidad del agua al tiempo tu=b+sqrt(2)*(b/2); %estimación perímetro mojadohmed=sqrt(h0*ht); %altura media del nivel freáticoD=Ps-Pd; %espesor región de flujo bajo el drenajePd_min=Pe+dh; %recomendación mínima profundidad estrata
variables=[K t Ri Ps Pe Pd v dh h0 ht hmed D u Pd]';save variableles.txt variables /ascii
if Pd_min>Pd warndlg('Aumente la profundidad del Dren','DRENAJE ABRÍCOLA');else
set(handles.K,'style','text')set(handles.t,'style','text')set(handles.Ri,'style','text')set(handles.Ps,'style','text')set(handles.Pe,'style','text')set(handles.Pd,'style','text')
NO_PERMANENTE3end
% --- Executes on button press in salir.function salir_Callback(hObject, eventdata, handles)opc=questdlg('¿Desea salir del programa?','SALIR','Si','No','No');if strcmp(opc,'No')return;endclear,clc,close all
% --- Executes on button press in NOhomogeneo.function NOhomogeneo_Callback(hObject, eventdata, handles)function uipanel1_CreateFcn(hObject, eventdata, handles)function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)switch get(hObject,'tag')
case 'permanente'case 'nopermanente'
end
function Pd_Callback(hObject, eventdata, handles)% --- Executes during object creation, after setting all properties.function Pd_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
9
function numestratas_ButtonDownFcn(hObject, eventdata, handles)
function editardatos_Callback(hObject, eventdata, handles)
set(handles.K,'style','edit')set(handles.t,'style','edit')set(handles.Ri,'style','edit')set(handles.Ps,'style','edit')set(handles.Pe,'style','edit')set(handles.Pd,'style','edit')
NO_PERMANENTE3 %si la gui no está abierta, la abre y cierraclose NO_PERMANENTE3
El botón “Editar” se utilizará en caso que haya pasado a la ventana siguiente y quiera modificar los“Antecedentes Preliminares” que condicionan el problema.
3. Código de Interfaz Resultados preliminares y selección de posición del dren.
function varargout = NO_PERMANENTE3(varargin)% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @NO_PERMANENTE3_OpeningFcn, ...'gui_OutputFcn', @NO_PERMANENTE3_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);
if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end
if nargout
10
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before NO_PERMANENTE3 is made visible.function NO_PERMANENTE3_OpeningFcn(hObject, eventdata, handles, varargin)global vglobal dhglobal h0global htglobal hmedset(handles.text3,'string',num2str(v));set(handles.text4,'string',num2str(dh));set(handles.text5,'string',num2str(h0));set(handles.text6,'string',num2str(ht));set(handles.text7,'string',num2str(hmed));% Choose default command line output for NO_PERMANENTE3handles.output = hObject;% Update handles structureguidata(hObject, handles);% --- Outputs from this function are returned to the command line.function varargout = NO_PERMANENTE3_OutputFcn(hObject, eventdata, handles)% Get default command line output from handles structurevarargout{1} = handles.output;
function l_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties.function l_CreateFcn(hObject, eventdata, handles)% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction n_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties.function n_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
function S_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties.function S_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
% --- Executes on selection change in popupmenu1.function popupmenu1_Callback(hObject, eventdata, handles)var=get(handles.posiciondren,'value');
11
switch varcase 1
%limpiar imagen set(handles.axes2,'visible','on'); axes(handles.axes2) background = imread('vacio.jpg'); axis off; imshow(background);
case 2%mostrar imagen de ejemplo
set(handles.axes2,'visible','on'); axes(handles.axes2) background = imread('dren_sobre_estrata.jpg'); axis off; imshow(background);
case 3%mostrar imagen de ejemplo
set(handles.axes2,'visible','on'); axes(handles.axes2) background = imread('dren_en_estrata.jpg'); axis off; imshow(background);end% --- Executes during object creation, after setting all properties.function popupmenu1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on button press in calcular.function calcular_Callback(hObject, eventdata, handles)
variables=load('variableles.txt');% variables=[K t Ri Ps Pe Pd v dh h0 ht hmed D u Pd]';
K=variables(1,1)/100;t=variables(2,1);Ri=variables(3,1);Ps=variables(4,1);Pe=variables(5,1);Pd=variables(6,1);v=variables(7,1)/100;dh=variables(8,1);h0=variables(9,1);ht=variables(10,1);hmed=variables(11,1);D=variables(12,1);u=variables(13,1);Pd=variables(14,1);
var=get(handles.posiciondren,'value');%CASOS DE CÁLCULO ESPACIAMIENTO Lswitch varcase 1 warndlg('seleccione posición del dren respecto a estrata impermeable','DRENAJEABRÍCOLA');
case 2 %Drenes ubicados por sobre estrata impermeable
12
e=1e-5; %rango de error i=1; %contador inicial L(i)=10*Pd; %valor inicial para distancia entre drenes
while 1 d(i)=D/(1+(8*D/(pi*L(i)))*log(D/u)); %se considera generalmente D<.25L (condición aconfirmar al final)
D0(i)=d(i)+hmed; %región de flujo considerando resistencia radial (caso aparte) i=i+1; L(i)=sqrt(pi^2*K*D0(i-1)*t/(v*log(1.16*h0/ht))); dL=abs(L(i)-L(i-1)); %diferencia entre valor inicial y final
if dL<e L=L'; L_sobreestrata=((L(i)));
set(handles.uipanel3,'visible','on') set(handles.L,'string',L_sobreestrata); set(handles.ecuacion,'String','(Ec. de Glover&Dumn');
breakendend
d=d';d=d(end);L_sobreestrata;dyL=[d L_sobreestrata]';save dyL.txt dyL /ascii
case 3 %Drenes ubicados en estrata impermeable L_glover=sqrt(0.22*K*h0*t/(v*(h0/ht-1))) %según Glover y Dumn L_bouss=sqrt(4.46*K*h0*ht*t/(v*(h0-ht))) % según Boussinessq
dh2=(ht+h0)/2; %redefino L_ref=4*(K*100)*dh2^2/Ri
dL_glover=abs(L_glover-L_ref); dL_bouss=abs(L_bouss-L_ref);
if dL_glover<dL_bouss
L_enestrata=(L_glover)
set(handles.uipanel3,'visible','on'); set(handles.L,'string',L_enestrata); set(handles.ecuacion,'String','(Ec. de Glover&Dumn');
else L_enestrata=L_bouss set(handles.uipanel3,'visible','on'); set(handles.L,'string',L_enestrata); set(handles.ecuacion,'String','(Ec. de Boussinessq');
endend
% --- Executes on button press in tuberia.function tuberia_Callback(hObject, eventdata, handles)
variables=load('variableles.txt');% variables=[K t Ri Ps Pe Pd v dh h0 ht hmed D u Pd]';
13
K=variables(1,1)/100; % m/díat=variables(2,1); % díaRi=variables(3,1)/100;% m/díaPs=variables(4,1); %mPe=variables(5,1); %mPd=variables(6,1); %mv=variables(7,1)/100; %fraccióndh=variables(8,1); %mh0=variables(9,1); %mht=variables(10,1); %mhmed=variables(11,1); %mD=variables(12,1); %mu=variables(13,1); %mPd=variables(14,1); %m
lecturadyL=load('dyL.txt');% dyL=[d L_sobreestrata]';d=lecturadyL(1,1); %mL_sobreestrata=lecturadyL(2,1); %m
%INGRESO DE NUEVOS DATOSl=str2double(get(handles.l,'string')); %m largo de lateraln=str2double(get(handles.n,'string')); %# número de lateralesS=str2double(get(handles.S,'string'))/100; % pendiente de laterales m/m
var=get(handles.posiciondren,'value');if isnan(l)
warndlg('Complete largo del lateral "l"')elseif isnan(n) warndlg('Complete número de laterales "n"')elseif var==1 errordlg('Calcule antes la distancia entre DRENES ','DRENAJE ABRÍCOLA');end
switch varcase 2 %Drenes ubicados por sobre estrata impermeableq0=6.84*K*d*h0/(L_sobreestrata)^2; %m/díaQmax=q0*l*L_sobreestrata/(86400); %m3/sQtotal=Qmax*n; %m3/sdiam_liso=0.192*Qmax^(0.375)*S^(-0.211)diam_corr=0.303*Qmax^(0.375)*S^(-0.1875)
%RESULTADOSset(handles.uipanel2,'visible','on')set(handles.q,'string',q0*100) % cm/díaset(handles.caudalmax,'string',Qmax) %m3/sset(handles.liso,'string',diam_liso*1000) %mmset(handles.corrugado,'string',diam_corr*1000) %mmset(handles.caudaltotal,'string',Qtotal*(86400)) %m3/día
case 3L_enestrata=str2double(get(handles.L,'string'));q0=3.46*K*h0^2/(L_enestrata)^2; %m/díaQmax=q0*l*L_enestrata; %m3/sQtotal=Qmax*n/(86400); %m3/sdiam_liso=0.192*Qmax^(0.375)*S^(-0.211); %mdiam_corr=0.303*Qmax^(0.375)*S^(-0.1875); %m
14
%RESULTADOSset(handles.uipanel2,'visible','on')set(handles.q,'string',q0*100)set(handles.caudalmax,'string',Qmax)set(handles.liso,'string',diam_liso*1000)set(handles.corrugado,'string',diam_corr*1000)set(handles.caudaltotal,'string',Qtotal*(86400))end
% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)
% --- Executes on button press in atras.function atras_Callback(hObject, eventdata, handles)close NO_PERMANENTE3DRENAJE2
% --- Executes on button press in salir.function salir_Callback(hObject, eventdata, handles)opc=questdlg('¿Desea salir del programa?','SALIR','Si','No','No');if strcmp(opc,'No')return;endclear,clc,close all
% --- Executes on selection change in posiciondren.function posiciondren_Callback(hObject, eventdata, handles)var=get(handles.posiciondren,'value');
switch varcase 1
%ocultar imágenes set(handles.axes1,'visible','on'); axes(handles.axes1) background = imread('vacio.jpg'); axis off; imshow(background);
%ocultar visor de resultados set(handles.uipanel2,'visible','off') set(handles.uipanel3,'visible','off')
case 2
%mostrar imagen set(handles.axes1,'visible','on'); axes(handles.axes1) background = imread('dren_sobre_estrata.jpg'); axis off; imshow(background);
%ocultar visor de resultados set(handles.uipanel2,'visible','off') set(handles.uipanel3,'visible','off')
case 3
%mostrar imagen set(handles.axes1,'visible','on'); axes(handles.axes1) background = imread('dren_en_estrata.jpg');
axis off; imshow(background);
%ocultar visor de resultados
15
set(handles.uipanel2,'visible','off') set(handles.uipanel3,'visible','off')end
function edit4_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties.function edit4_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end
La construcción de interfaz gráfica es la siguiente
|
Resultados deparámetrospreliminares
Datos para calculardiámetro de laterales ycaudal total delcolector
16
Mensajes de alerta si faltan pasos previos y aviso de salida del programa:
Una vez resuelto el caso de estudio, la interfaz GUI muestra los resultados activando elpanel “RESULTADOS”, como se ve en figura siguiente.
Opcionesposición de dren
17
REFERENCIAS CONSULTADAS
1. Salgado, Luis. 2000. “Manual de Estándares Técnicos y Económicos para Obras de Drenaje”.INIA – CNR.
2. Maldonado, Isaac. 2001. “Riego y Drenaje”. INIA Quilamapu.3. Barragán, Diego. 2008. Manual de Interfaz Gráfica de Usuario en Matlab, Parte I.