17
1 Universidad de Concepción Facultad de Ingeniería Agrícola Departamento de Recursos Hídricos PROGRAMACIÓN DE UNA INTERFAZ GRÁFICA EN MATLAB PARA EL DISEÑO DE SISTEMAS DE DRENAJE AGRÍCOLA SUBSUPERFICIAL Carlos F. Quintana Sotomayor [email protected] Agosto, 2008 RESUMEN Los procedimientos de cálculo de para el diseño de sistemas de drenaje subsuperficial pueden ser mú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 de Glover&Domm y Boussinesq, para determinar espaciamientos mínimos entre drenes laterales. El objetivo de este trabajo fue desarrollar una interfaz gráfica en Matlab que facilitara la rápida evaluación de diferentes características de drenaje previamente analizadas, arrojando como resultados el espaciamiento 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 limitante para el desarrollo económico de agricultores y pequeños campesinos, a lo que históricamente han respondido 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 suelo al estar permanentemente ocupado por agua, disminuyendo el oxígeno disponible y limitando la respiració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.450 fomenta la inversión privada en obras de drenaje, permitiendo evacuar el exceso de agua del suelo ante problemas de drenaje que se clasifican en dos tipos: Superficial y Subsuperficial. En el drenaje superficial el problema consiste en la acumulación de agua sobre la superficie del suelo, la que no es eliminada naturalmente. En el caso del drenaje subsuperficial, el exceso de agua se debe a la presencia de una napa freática ubicada sobre una estrata impermeable, lo que provoca saturació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 de sistemas de drenaje subsuperficial en condición de régimen impermanente, tal que esta interfaz determine el espaciamiento entre drenes, caudal de salida y diámetro mínimo de los drenes en condiciones particulares definidas por el usuario. Se utilizará como referencia el Manual de Estándares Técnicos y Económicos para Obras de Drenaje de la CNR (Salgado, 2000).

Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

Embed Size (px)

Citation preview

Page 1: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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).

Page 2: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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)

Page 3: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 4: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 5: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 6: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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)

Page 7: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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)

Page 8: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 9: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 10: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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');

Page 11: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 12: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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]';

Page 13: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 14: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 15: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 16: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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

Page 17: Programming in Matlab of a Graphical Interface for System Design Subsurface Agricultural Drainage

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.