From 8eb14f355273ae05a27b1b52f5c54f71c69e863a Mon Sep 17 00:00:00 2001 From: Dorchies David <david.dorchies@irstea.fr> Date: Fri, 25 Jan 2019 16:28:46 +0100 Subject: [PATCH] #22 Validation des tests scilab / code matlab --- doc/matlab_macro_rugo/data_precalcul_nat.mat | Bin 0 -> 805 bytes doc/matlab_macro_rugo/find_Q_nat.m | 115 ++ doc/matlab_macro_rugo/resolve_alpha.m | 47 + doc/matlab_macro_rugo/warning_4a1_1.fig | Bin 0 -> 1825 bytes doc/matlab_macro_rugo/warning_4a1_1.m | 81 ++ doc/matlab_macro_rugo/window_4a1.fig | Bin 0 -> 37512 bytes doc/matlab_macro_rugo/window_4a1.m | 1028 +++++++++++++++++ doc/scilab_tests/macrorugo_find_Q_nat.sci | 116 ++ doc/scilab_tests/macrorugo_find_Q_nat2.sci | 118 -- doc/scilab_tests/macrorugo_resolve_alpha.sci | 7 +- .../macrorugo_resultats_complementaires.sci | 23 +- doc/scilab_tests/macrorugo_searchQ.sci | 26 + doc/scilab_tests/main_macrorugo.sce | 55 +- doc/scilab_tests/print_r.sci | 2 +- 14 files changed, 1452 insertions(+), 166 deletions(-) create mode 100644 doc/matlab_macro_rugo/data_precalcul_nat.mat create mode 100644 doc/matlab_macro_rugo/find_Q_nat.m create mode 100644 doc/matlab_macro_rugo/resolve_alpha.m create mode 100644 doc/matlab_macro_rugo/warning_4a1_1.fig create mode 100644 doc/matlab_macro_rugo/warning_4a1_1.m create mode 100644 doc/matlab_macro_rugo/window_4a1.fig create mode 100644 doc/matlab_macro_rugo/window_4a1.m create mode 100644 doc/scilab_tests/macrorugo_find_Q_nat.sci delete mode 100644 doc/scilab_tests/macrorugo_find_Q_nat2.sci create mode 100644 doc/scilab_tests/macrorugo_searchQ.sci diff --git a/doc/matlab_macro_rugo/data_precalcul_nat.mat b/doc/matlab_macro_rugo/data_precalcul_nat.mat new file mode 100644 index 0000000000000000000000000000000000000000..1ef3449b26ff6916bb0d7644387664902b40cb79 GIT binary patch literal 805 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w+L}(NS<NN=+<DO;O0t zvr=#?%2e=5%u_HjRWLNOGBU6-wNNlJFtk)45-`93qo*%FkgW~G6>}aZCnOXwB$+8Z zYq+Fvfa|HTQev6Hx-S1SXU}UVK4>}R+^~$9Ay$L=4M>YBT#Es+mP3Zz&VF@qR>Bil zgP0jqqL>s=&EJ5kSlGGDkeOLMWKUGe+~0>+iB&ULI<ovjH6Kljax?dYXDwaM2bilF z<Qo|ufE2629fPjenGK|PdE-IjY6ksgmOPMZ6}W0Nrwcb1b1_d~*(f2wAbF2b5TsTe zt`@^&1CYt*XK^xVzhyLGVD$$nSB5J`Gg`Tse?l75W}wNUZy2_Klxo10qM0o0>?j2a zlRFYTa<`co42_sqfYfW@Qm@=>404IS=7y)c_WfwEWzchCnS$Rj&I&-sd<Hs3Ood?w zNT~tb@B-ur0wn-F4;`;FXU`-96F_+Pn&SG1t4aI}+4=0EMCjA;&`E>qGd(KDklo9! a3eu-Tz&_tK2|#_)%?DGf8Is?#?gRi0>;a_! literal 0 HcmV?d00001 diff --git a/doc/matlab_macro_rugo/find_Q_nat.m b/doc/matlab_macro_rugo/find_Q_nat.m new file mode 100644 index 00000000..57eb3f73 --- /dev/null +++ b/doc/matlab_macro_rugo/find_Q_nat.m @@ -0,0 +1,115 @@ +function [res]=find_Q_nat(cote_bas,ks,D,h,Cd0,S,L,pf,C,Q,sigma) +fprintf('*************************************\n') +fprintf('find_Q_nat Q=%f\n',Q) + +maxfun=5000; +maxiter=5000; +tolfun=1e-16; +tolx=1e-16; +g=9.81; +kappa=0.41; +U0=Q./L./pf; + +Fr=U0./(9.81*pf).^0.5; +Frg=Fr/(1-C^0.5); + + +if ks==0;ks=1e-34;end + + +coeff_contraction=0.4*Cd0+0.7; + +%if Cd0==2 + % fFr=(min(2.5,Frg^(-4/3)));% +%else + fFr=(min(coeff_contraction./(1-(Frg.^2)/4),Frg.^(-2/3))).^2; +%end + +if Frg>1.5 + fFr=(Frg.^(-2/3)).^2; +end + + + +alpha=1-(1.*C).^0.5-1/2*sigma.*C; +Cd=Cd0.*(1+1./(pf./D).^2).*fFr; + +%Cd=Cd0.*(0.8-2*C).*(1+0.4./(pf./D).^2).*fFr; +R=(1-sigma*C);%.*(1-C.^0.5).^2; + + +if pf/h>1.1; %fFr=1; + + choixturb=1; + htilde=h./D; + hstar=pf./h; + Rh=h.*(hstar-1); + ustar=(g.*S.*Rh).^0.5; + fprintf('ustar=%f\n',ustar) + + Cd1=Cd0.*(1+0.4./(pf./D).^2).*fFr; + CdCh=Cd1.*C.*htilde; + fprintf('CdCh=%f\n',CdCh) + + Cf=2./(5.1.*log10(h./ks)+6).^2; + + U0b=(2*g.*S.*R./(Cd1.*C.*h./D+Cf.*R).*h).^0.5; + fprintf('U0b=%f\n',U0b) + + % U0=(2*g.*S.*D.*R./(Cd1.*C)).^0.5; + + [P]=fminbnd(@(alphai) resolve_alpha(alphai,CdCh,R,U0b,hstar,h,C,D,Cd1,ustar,choixturb),1e-5*h,h,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)); + + alpha=P(1); + fprintf('alpha=%f\n',alpha) + + beta2=h.*CdCh./alpha./R; + beta=(beta2).^0.5; + a1=beta*(hstar-1)/(cosh(beta)); + c=1; + + UhU0=(a1*sinh(beta)+c)^0.5; + Uh=UhU0*U0b; + fprintf('Uh=%f\n',Uh) + + dhp=1-1/kappa*alpha./h.*Uh./ustar; + z0hp=(1-dhp).*exp(-1*(kappa*Uh./ustar)); + + qsup=ustar./kappa.*h.*((hstar-dhp).*(log((hstar-dhp)./z0hp) - 1)-((1-dhp).*(log((1-dhp)./z0hp) - 1))); + fprintf('qsup=%f\n',qsup) + %calcul intégrale dans la canopée---- + dzinf=0.01; + Zinf=(0:dzinf:1); + Uinf=U0b .*(beta.*Rh./h.*sinh(beta*Zinf)./cosh(beta)+1).^0.5; + Ub=zeros(size(Uinf)); + Ub(1:end-1)=Uinf(2:end); + qinf=sum((Uinf(1:end-1)+Ub(1:end-1))/2*dzinf.*h); + fprintf('qinf=%f\n',qinf) + qtot=qinf+qsup; + + PI=0; + delta=1; + + Umoy=qtot./pf; + res=abs(U0-Umoy); + +else + + hstar=pf/D; + Re=U0.*pf/1e-6; + + if ks==0 + Cf=0.3164/4.*Re.^(-0.25); + else + Cf=2/(5.1*log10(pf/ks-1)+6)^2; + end + + N= (alpha.*Cf)./(pf./D.*Cd.*C); + + res=abs(U0-(2*g.*S.*D.*(R)./(Cd.*C.*(1+N))).^0.5); + + + +end + +fprintf('res=%f\n',res) diff --git a/doc/matlab_macro_rugo/resolve_alpha.m b/doc/matlab_macro_rugo/resolve_alpha.m new file mode 100644 index 00000000..d78606a9 --- /dev/null +++ b/doc/matlab_macro_rugo/resolve_alpha.m @@ -0,0 +1,47 @@ +function [res]= resolve_alpha(alpha,CdCh,R,U0,hstar,hp,C,D,Cd,ustar,choixturb) + if 1==1 + fprintf('resolve_alpha(alpha=%f,CdCh=%f,R=%f,U0=%f,hstar=%f,hp=%f,C=%f,D=%f,Cd=%f,ustar=%f)\n',alpha,CdCh,R,U0,hstar,hp,C,D,Cd,ustar) + end + +g=9.81; +kappa=0.41; + +L=D*(1/C^0.5-1); +beta2=hp.*CdCh./alpha./R; + +beta=(beta2).^0.5; +a1=beta*(hstar-1)/(cosh(beta)); + +c=1; +UhU0=(a1*sinh(beta)+c)^0.5; +Uh=UhU0*U0; + +%choix du modele de turbulence + +switch choixturb + + case 1 + + L1=min(L,0.15*hp); + %L1=L;%0.15*hp; + +% case 2 +% +% L1=L.*hp./(1/0.41*L+hp); +% +% case 3 +% L1=0.15*min(hp,D./C./Cd);%; +% case 4 +% if L/hp<1 +% L1=(1-L/hp).*L; +% if L1<0.05*hp && L/hp>0.8;L1=0.05*hp;end +% else +% L1=0.41*((1-hp./L))*hp; +% if L1<0.05*hp && L/hp<1.2;L1=0.05*hp;end +% end +end + + +res=abs(alpha*Uh-L1*ustar); +fprintf('resolve_alpha res=%f\n',res) +end \ No newline at end of file diff --git a/doc/matlab_macro_rugo/warning_4a1_1.fig b/doc/matlab_macro_rugo/warning_4a1_1.fig new file mode 100644 index 0000000000000000000000000000000000000000..379e63bc1434dd009798f5a9050ef0ae5656d5ad GIT binary patch literal 1825 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 P<nX5?zkvV%mJcU|TJ3(^ literal 0 HcmV?d00001 diff --git a/doc/matlab_macro_rugo/warning_4a1_1.m b/doc/matlab_macro_rugo/warning_4a1_1.m new file mode 100644 index 00000000..8058dc88 --- /dev/null +++ b/doc/matlab_macro_rugo/warning_4a1_1.m @@ -0,0 +1,81 @@ +function varargout = warning_4a1_1(varargin) +% WARNING_4A1_1 MATLAB code for warning_4a1_1.fig +% WARNING_4A1_1, by itself, creates a new WARNING_4A1_1 or raises the existing +% singleton*. +% +% H = WARNING_4A1_1 returns the handle to a new WARNING_4A1_1 or the handle to +% the existing singleton*. +% +% WARNING_4A1_1('CALLBACK',hObject,eventData,handles,...) calls the local +% function named CALLBACK in WARNING_4A1_1.M with the given input arguments. +% +% WARNING_4A1_1('Property','Value',...) creates a new WARNING_4A1_1 or raises the +% existing singleton*. Starting from the left, property value pairs are +% applied to the GUI before warning_4a1_1_OpeningFcn gets called. An +% unrecognized property name or invalid value makes property application +% stop. All inputs are passed to warning_4a1_1_OpeningFcn via varargin. +% +% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one +% instance to run (singleton)". +% +% See also: GUIDE, GUIDATA, GUIHANDLES + +% Edit the above text to modify the response to help warning_4a1_1 + +% Last Modified by GUIDE v2.5 08-Oct-2014 13:48:09 + +% Begin initialization code - DO NOT EDIT +gui_Singleton = 1; +gui_State = struct('gui_Name', mfilename, ... + 'gui_Singleton', gui_Singleton, ... + 'gui_OpeningFcn', @warning_4a1_1_OpeningFcn, ... + 'gui_OutputFcn', @warning_4a1_1_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 warning_4a1_1 is made visible. +function warning_4a1_1_OpeningFcn(hObject, eventdata, handles, varargin) +% This function has no output args, see OutputFcn. +% hObject handle to figure +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) +% varargin command line arguments to warning_4a1_1 (see VARARGIN) + +% Choose default command line output for warning_4a1_1 +handles.output = hObject; + +% Update handles structure +guidata(hObject, handles); + +% UIWAIT makes warning_4a1_1 wait for user response (see UIRESUME) +% uiwait(handles.figure1); + + +% --- Outputs from this function are returned to the command line. +function varargout = warning_4a1_1_OutputFcn(hObject, eventdata, handles) +% varargout cell array for returning output args (see VARARGOUT); +% hObject handle to figure +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Get default command line output from handles structure +varargout{1} = handles.output; + + +% --- Executes on button press in pushbutton1. +function pushbutton1_Callback(hObject, eventdata, handles) +% hObject handle to pushbutton1 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) +close diff --git a/doc/matlab_macro_rugo/window_4a1.fig b/doc/matlab_macro_rugo/window_4a1.fig new file mode 100644 index 0000000000000000000000000000000000000000..b60b5f6315d11fe6de64ed54fda307ee070f53d2 GIT binary patch literal 37512 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 AjsO4v literal 0 HcmV?d00001 diff --git a/doc/matlab_macro_rugo/window_4a1.m b/doc/matlab_macro_rugo/window_4a1.m new file mode 100644 index 00000000..4cb4c6d0 --- /dev/null +++ b/doc/matlab_macro_rugo/window_4a1.m @@ -0,0 +1,1028 @@ +function varargout = window_4a1(varargin) +% WINDOW_4A1 MATLAB code for window_4a1.fig +% WINDOW_4A1, by itself, creates a new WINDOW_4A1 or raises the existing +% singleton*. +% +% H = WINDOW_4A1 returns the handle to a new WINDOW_4A1 or the handle to +% the existing singleton*. +% +% WINDOW_4A1('CALLBACK',hObject,eventData,handles,...) calls the local +% function named CALLBACK in WINDOW_4A1.M with the given input arguments. +% +% WINDOW_4A1('Property','Value',...) creates a new WINDOW_4A1 or raises the +% existing singleton*. Starting from the left, property value pairs are +% applied to the GUI before window_4a1_OpeningFcn gets called. An +% unrecognized property name or invalid value makes property application +% stop. All inputs are passed to window_4a1_OpeningFcn via varargin. +% +% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one +% instance to run (singleton)". +% +% See also: GUIDE, GUIDATA, GUIHANDLES + +% Edit the above text to modify the response to help window_4a1 + +% Last Modified by GUIDE v2.5 04-Nov-2016 14:59:17 + +% Begin initialization code - DO NOT EDIT +gui_Singleton = 1; +gui_State = struct('gui_Name', mfilename, ... + 'gui_Singleton', gui_Singleton, ... + 'gui_OpeningFcn', @window_4a1_OpeningFcn, ... + 'gui_OutputFcn', @window_4a1_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 window_4a1 is made visible. +function window_4a1_OpeningFcn(hObject, eventdata, handles, varargin) +% This function has no output args, see OutputFcn. +% hObject handle to figure +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) +% varargin command line arguments to window_4a1 (see VARARGIN) + +% Choose default command line output for window_4a1 +handles.output = hObject; + +% Update handles structure +guidata(hObject, handles); + +%cd('E:\lcassan\Mes documents\macro_rugosite\cassiopee\gui_matlab') +%cd('D:\macrorugosite\cassiopee\gui_matlab') +load data_precalcul_nat + + + +set(handles.edit1,'string',z_amont); +set(handles.edit17,'string',long); +set(handles.edit2,'string',ks); +set(handles.edit3,'string',D); +set(handles.edit4,'string',h); +set(handles.edit5,'string',Cd); +set(handles.edit6,'string',S); +set(handles.edit7,'string',L); +set(handles.edit8,'string',pf); +set(handles.edit9,'string',C); +set(handles.edit10,'string',Q); +set(handles.edit20,'string',paramin); +set(handles.edit21,'string',parapas); +set(handles.edit22,'string',paramax); + + +% UIWAIT makes window_4a1 wait for user response (see UIRESUME) +% uiwait(handles.figure1); + + +% --- Outputs from this function are returned to the command line. +function varargout = window_4a1_OutputFcn(hObject, eventdata, handles) +% varargout cell array for returning output args (see VARARGOUT); +% hObject handle to figure +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Get default command line output from handles structure +varargout{1} = handles.output; + + + +function edit1_Callback(hObject, eventdata, handles) +% hObject handle to edit3 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit3 as text +% str2double(get(hObject,'String')) returns contents of edit3 as a double + + + +% --- Executes during object creation, after setting all properties. +function edit1_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit3 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit2_Callback(hObject, eventdata, handles) +% hObject handle to edit2 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit3 as text +% str2double(get(hObject,'String')) returns contents of edit3 as a double + + + +% --- Executes during object creation, after setting all properties. +function edit2_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit2 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + + +function edit3_Callback(hObject, eventdata, handles) +% hObject handle to edit3 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit3 as text +% str2double(get(hObject,'String')) returns contents of edit3 as a double + + +% --- Executes during object creation, after setting all properties. +function edit3_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit3 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit4_Callback(hObject, eventdata, handles) +% hObject handle to edit4 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit4 as text +% str2double(get(hObject,'String')) returns contents of edit4 as a double + + +% --- Executes during object creation, after setting all properties. +function edit4_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit4 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit5_Callback(hObject, eventdata, handles) +% hObject handle to edit5 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit5 as text +% str2double(get(hObject,'String')) returns contents of edit5 as a double + + +% --- Executes during object creation, after setting all properties. +function edit5_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit5 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + +function edit6_Callback(hObject, eventdata, handles) +% hObject handle to edit6 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit6 as text +% str2double(get(hObject,'String')) returns contents of edit6 as a double + + +% --- Executes during object creation, after setting all properties. +function edit6_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit6 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + +function edit7_Callback(hObject, eventdata, handles) +% hObject handle to edit7 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit7 as text +% str2double(get(hObject,'String')) returns contents of edit7 as a double + + +% --- Executes during object creation, after setting all properties. +function edit7_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit7 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + +function edit8_Callback(hObject, eventdata, handles) +% hObject handle to edit8 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit8 as text +% str2double(get(hObject,'String')) returns contents of edit8 as a double + + + +% --- Executes during object creation, after setting all properties. +function edit8_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit8 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit9_Callback(hObject, eventdata, handles) +% hObject handle to edit9 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit9 as text +% str2double(get(hObject,'String')) returns contents of edit9 as a double + + +% --- Executes during object creation, after setting all properties. +function edit9_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit9 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit10_Callback(hObject, eventdata, handles) +% hObject handle to edit10 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit10 as text +% str2double(get(hObject,'String')) returns contents of edit10 as a double + + +% --- Executes during object creation, after setting all properties. +function edit10_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit10 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit13_Callback(hObject, eventdata, handles) +% hObject handle to edit13 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit13 as text +% str2double(get(hObject,'String')) returns contents of edit13 as a double + + +% --- Executes during object creation, after setting all properties. +function edit13_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit13 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit14_Callback(hObject, eventdata, handles) +% hObject handle to edit14 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit14 as text +% str2double(get(hObject,'String')) returns contents of edit14 as a double + + +% --- Executes during object creation, after setting all properties. +function edit14_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit14 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit15_Callback(hObject, eventdata, handles) +% hObject handle to edit15 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit15 as text +% str2double(get(hObject,'String')) returns contents of edit15 as a double + + +% --- Executes during object creation, after setting all properties. +function edit15_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit15 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit11_Callback(hObject, eventdata, handles) +% hObject handle to edit11 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit11 as text +% str2double(get(hObject,'String')) returns contents of edit11 as a double + + +% --- Executes during object creation, after setting all properties. +function edit11_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit11 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit12_Callback(hObject, eventdata, handles) +% hObject handle to edit12 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit12 as text +% str2double(get(hObject,'String')) returns contents of edit12 as a double + + +% --- Executes during object creation, after setting all properties. +function edit12_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit12 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit16_Callback(hObject, eventdata, handles) +% hObject handle to edit16 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit16 as text +% str2double(get(hObject,'String')) returns contents of edit16 as a double + + +% --- Executes during object creation, after setting all properties. +function edit16_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit16 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + + + + + + +% --- Executes on button press in pushbutton1. +function pushbutton1_Callback(hObject, eventdata, handles) +% hObject handle to pushbutton1 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + + +maxfun=5000; +maxiter=5000; +tolfun=1e-24; +tolx=1e-24; + +% DEBUG +%maxiter=2; + +z_amont=get(handles.edit1,'string'); +z_amont=str2num(z_amont); + +long=get(handles.edit17,'string'); +long=str2num(long); + +%setappdata(gcf,'z_amont',z_amont); +ks=get(handles.edit2,'string'); +ks=str2num(ks); +setappdata(gcf,'ks',ks); +D=get(handles.edit3,'string'); +D=str2num(D); +%setappdata(gcf,'D',D); +h=get(handles.edit4,'string'); +h=str2num(h); +%setappdata(gcf,'h',h); +Cd=get(handles.edit5,'string'); +Cd=str2num(Cd); +%setappdata(gcf,'Cd',Cd); +S=get(handles.edit6,'string'); +S=str2num(S); +%setappdata(gcf,'S',S); +L=get(handles.edit7,'string'); +L=str2num(L); +%setappdata(gcf,'L',L); +pf=get(handles.edit8,'string'); +pf=str2num(pf); +%setappdata(gcf,'pf',pf); +C=get(handles.edit9,'string'); +C=str2num(C); +%setappdata(gcf,'C',C); +Q=get(handles.edit10,'string'); +Q=str2num(Q); +%setappdata(gcf,'Q',Q); + + +paramin=str2num(get(handles.edit20,'string')); +parapas=str2num(get(handles.edit21,'string')); +paramax=str2num(get(handles.edit22,'string')); +para=(paramin:parapas:paramax); + +save data_precalcul_nat z_amont long ks D h Cd S L pf C Q paramin parapas paramax + +% +% z_amont=getappdata(gcf,'z_amont'); +% ks=getappdata(gcf,'ks'); +% D=getappdata(gcf,'D'); +% h=getappdata(gcf,'h'); +% Cd=getappdata(gcf,'Cd'); +% S=getappdata(gcf,'S'); +% L=getappdata(gcf,'L'); +% pf=getappdata(gcf,'pf'); +% C=getappdata(gcf,'C'); +% Q=getappdata(gcf,'Q'); + +f=1; + + + +if Cd==2 ;sigma=1;else sigma=pi/4; end +alpha=1-(f.*C).^0.5-1/2*sigma.*C; +g=9.81; + +if Q~=0 & pf~=0 & L~=0 & S~=0 & C~=0 + warning_4a1_1 +end + + +if Q==0 + N=0; + q0=(2*g.*S.*D.*(1-(sigma*C))./(Cd.*C.*(1+N))).^0.5*pf*L; + + [Q res]=fminsearch(@(Qi) find_Q_nat(z_amont,ks,D,h,Cd,S,L,pf,C,Qi,sigma),q0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)) + set(handles.edit10,'string',num2str(Q)) + +elseif pf==0 + [pf res]=fminsearch(@(pfi) find_Q_nat(z_amont,ks,D,h,Cd,S,L,pfi,C,Q,sigma),h*1.1,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)) + set(handles.edit8,'string',num2str(pf)) + +elseif L==0 + [L res]=fminsearch(@(Li) find_Q_nat(z_amont,ks,D,h,Cd,S,Li,pf,C,Q,sigma),10,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)) + set(handles.edit7,'string',num2str(L)) + +elseif S==0 + S0=0.1; + [S res]=fminsearch(@(Si) find_Q_nat(z_amont,ks,D,h,Cd,Si,L,pf,C,Q,sigma),S0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)) + set(handles.edit6,'string',num2str(S)) + +elseif C==0 + C0=0.1; + [C res]=fminsearch(@(Ci) find_Q_nat(z_amont,ks,D,h,Cd,S,L,pf,Ci,Q,sigma),C0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)) + set(handles.edit9,'string',num2str(C)) + +end + + + + +cote_bas=z_amont-S*long; +set(handles.edit11,'string',num2str(cote_bas)) + +Vdeb=Q/L/pf; +set(handles.edit12,'string',num2str(Vdeb)) +coeff_contraction=0.4*Cd+0.7; +Vg=Q/L/pf/(1-C^0.5); +Fr=Vg./(g.*pf).^0.5; +if Cd==2 + Vmax=Vg.*(min(coeff_contraction./(1-(Fr.^2)/4),Fr.^(-2/3)));% +else + Vmax=Vg.*(min(coeff_contraction./(1-(Fr.^2)/4),Fr.^(-2/3))); +end + +set(handles.edit16,'string',num2str(Vmax)) + +P=1000*g*Q/L*S; +set(handles.edit13,'string',num2str(P)) + + +set(handles.edit14,'string',num2str(Fr)) + +if pf/h<1 + set(handles.edit15,'string','emergent') +elseif pf/h<1.1 && pf/h>=1 + set(handles.edit15,'string','quasi emergent') +else + set(handles.edit15,'string','immerge') +end + + + +if pf/h>1.1 + + q_technique=0.955*(pf/h)^2.282*S^0.466*C^(-0.23)*(9.81*h)^0.5.*h*L; + set(handles.edit19,'string','NC') + set(handles.edit16,'string','NC') +else + if Cd==2 + + q_technique= 0.648*(pf/D)^1.084*S^0.56*C^(-0.456)*(9.81*D)^0.5.*D*L; + V_technique=3.35*(pf/D)^0.27*S^0.53*(9.81*D)^0.5; + else + q_technique=0.815*(pf/D)^1.45*S^0.557*C^(-0.456)*(9.81*D)^0.5.*D*L; + V_technique=4.54*(pf/D)^0.32*S^0.56*(9.81*D)^0.5; + + end + + set(handles.edit19,'string',num2str(V_technique)) ; +end +set(handles.edit18,'string',num2str(q_technique)) ; + + + +function edit17_Callback(hObject, eventdata, handles) +% hObject handle to edit17 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit17 as text +% str2double(get(hObject,'String')) returns contents of edit17 as a double + + +% --- Executes during object creation, after setting all properties. +function edit17_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit17 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit19_Callback(hObject, eventdata, handles) +% hObject handle to edit19 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit19 as text +% str2double(get(hObject,'String')) returns contents of edit19 as a double + + +% --- Executes during object creation, after setting all properties. +function edit19_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit19 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit18_Callback(hObject, eventdata, handles) +% hObject handle to edit18 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit18 as text +% str2double(get(hObject,'String')) returns contents of edit18 as a double + + +% --- Executes during object creation, after setting all properties. +function edit18_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit18 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edi5_Callback(hObject, eventdata, handles) +% hObject handle to edi5 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edi5 as text +% str2double(get(hObject,'String')) returns contents of edi5 as a double + + +% --- Executes during object creation, after setting all properties. +function edi5_CreateFcn(hObject, eventdata, handles) +% hObject handle to edi5 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + +% --- Executes on button press in pushbutton2. +function pushbutton2_Callback(hObject, eventdata, handles) +% hObject handle to pushbutton2 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + + + +maxfun=5000; +maxiter=5000; +tolfun=1e-24; +tolx=1e-24; + + +z_amont=get(handles.edit1,'string'); +z_amont=str2num(z_amont); + +long=get(handles.edit17,'string'); +long=str2num(long); + +%setappdata(gcf,'z_amont',z_amont); +ks=get(handles.edit2,'string'); +ks=str2num(ks); +%setappdata(gcf,'ks',ks); +D=get(handles.edit3,'string'); +D=str2num(D); +%setappdata(gcf,'D',D); +h=get(handles.edit4,'string'); +h=str2num(h); +%setappdata(gcf,'h',h); +Cd=get(handles.edit5,'string'); +Cd=str2num(Cd); +%setappdata(gcf,'Cd',Cd); +S=get(handles.edit6,'string'); +S=str2num(S); +%setappdata(gcf,'S',S); +L=get(handles.edit7,'string'); +L=str2num(L); +%setappdata(gcf,'L',L); +pf=get(handles.edit8,'string'); +pf=str2num(pf); +%setappdata(gcf,'pf',pf); +C=get(handles.edit9,'string'); +C=str2num(C); +%setappdata(gcf,'C',C); +Q=get(handles.edit10,'string'); +Q=str2num(Q); +%setappdata(gcf,'Q',Q); + + +paramin=str2num(get(handles.edit20,'string')); +parapas=str2num(get(handles.edit21,'string')); +paramax=str2num(get(handles.edit22,'string')); +para=(paramin:parapas:paramax); + +save data_precalcul_nat z_amont long ks D h Cd S L pf C Q paramin parapas paramax + + +% +% z_amont=getappdata(gcf,'z_amont'); +% ks=getappdata(gcf,'ks'); +% D=getappdata(gcf,'D'); +% h=getappdata(gcf,'h'); +% Cd=getappdata(gcf,'Cd'); +% S=getappdata(gcf,'S'); +% L=getappdata(gcf,'L'); +% pf=getappdata(gcf,'pf'); +% C=getappdata(gcf,'C'); +% Q=getappdata(gcf,'Q'); + +f=1; + + + +if Cd==2 ;sigma=1;else sigma=pi/4; end +alpha=1-(f.*C).^0.5-1/2*sigma.*C; +g=9.81; + +if Q~=0 & pf~=0 & L~=0 & S~=0 & C~=0 + warning_4a1_1 +end + +for tt=1:length(para) + + if D==0 + + N=0; + q0=(2*g.*S.*para(tt).*(1-(sigma*C))./(Cd.*C.*(1+N))).^0.5*pf*L; + [Qr(tt) res]=fminsearch(@(Qi) find_Q_nat(z_amont,ks,para(tt),h,Cd,S,L,pf,C,Qi,sigma),q0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)) ; + + Vdeb(tt)=Qr(tt)/L/pf; + Vg(tt)=Qr(tt)/L/pf/(1-C^0.5); + Fr(tt)=Vg(tt)./(g.*pf).^0.5; + + + elseif Q==0 + + N=0; + + + [pf2(tt) res]=fminsearch(@(pfi) find_Q_nat(z_amont,ks,D,h,Cd,S,L,pfi,C,para(tt),sigma),pf,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)); + + Vdeb(tt)=para(tt)/L/pf2(tt); + Vg(tt)=para(tt)/L/pf2(tt)/(1-C^0.5); + Fr(tt)=Vg(tt)./(g.*pf2(tt)).^0.5; + + + elseif pf==0 + + N=0; + q0=(2*g.*S.*D.*(1-(sigma*C))./(Cd.*C.*(1+N))).^0.5*para(tt)*L; + + [Qr(tt) res]=fminsearch(@(Qi) find_Q_nat(z_amont,ks,D,h,Cd,S,L,para(tt),C,Qi,sigma),q0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)); + + Vdeb(tt)=Qr(tt)/L/para(tt); + Vg(tt)=Qr(tt)/L/para(tt)/(1-C^0.5); + Fr(tt)=Vg(tt)./(g.*para(tt)).^0.5; + + + elseif L==0 + + N=0; + q0=(2*g.*S.*D.*(1-(sigma*C))./(Cd.*C.*(1+N))).^0.5*pf*para(tt); + [Qr(tt) res]=fminsearch(@(Qi) find_Q_nat(z_amont,ks,D,h,Cd,S,para(tt),pf,C,Qi,sigma),q0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)); + + Vdeb(tt)=Qr(tt)/para(tt)/pf; + Vg(tt)=Qr(tt)/para(tt)/pf/(1-C^0.5); + Fr(tt)=Vg(tt)./(g.*pf).^0.5; + + + elseif S==0 + S0=0.1; + + N=0; + q0=(2*g.*para(tt).*D.*(1-(sigma*C))./(Cd.*C.*(1+N))).^0.5*pf*L; + [Qr(tt) res]=fminsearch(@(Qi) find_Q_nat(z_amont,ks,D,h,Cd,para(tt),L,pf,C,Qi,sigma),q0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)); + + Vdeb(tt)=Qr(tt)/L/pf; + Vg(tt)=Qr(tt)/L/pf/(1-C^0.5); + Fr(tt)=Vg(tt)./(g.*pf).^0.5; + + + + elseif C==0 + + N=0; + q0=(2*g.*S.*D.*(1-(sigma*para(tt)))./(Cd.*para(tt).*(1+N))).^0.5*pf*L; + [Qr(tt) res]=fminsearch(@(Qi) find_Q_nat(z_amont,ks,D,h,Cd,S,L,pf,para(tt),Qi,sigma),q0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)) ; + + Vdeb(tt)=Qr(tt)/L/pf; + Vg(tt)=Qr(tt)/L/pf/(1-para(tt)^0.5); + Fr(tt)=Vg(tt)./(g.*pf).^0.5; + + + end + + + if Cd==2 + Vmax(tt)=Vg(tt).*(min(1.6./(1-(Fr(tt).^2)/4),Fr(tt).^(-2/3)));% + else + Vmax(tt)=Vg(tt).*(min(1.2./(1-(Fr(tt).^2)/4),Fr(tt).^(-2/3))); + end + + +end + + + +figure(1) +subplot(2,1,1) +hold on +plot(para,Vg,'k','LineWidth',2) +plot(para,Vmax,'k:','LineWidth',2) +plot(para,Vdeb,'k-.','LineWidth',2) + + if D==0 + xlabel('Diametre (m)','Interpreter','Latex','FontSize',24) + elseif Q==0 + xlabel('Débit (m2/s)','Interpreter','Latex','FontSize',24) + elseif pf==0 + xlabel('Profondeur','Interpreter','Latex','FontSize',24) + elseif L==0 + xlabel('Largeur','Interpreter','Latex','FontSize',24) + elseif S==0 + xlabel('Pente','Interpreter','Latex','FontSize',24) + + elseif C==0 + xlabel('Concentration','Interpreter','Latex','FontSize',24) + end + + ylabel('Vitesse (m/s)','Interpreter','Latex','FontSize',24) +hleng=legend('Vg','V_{max}','V_{debitant}'); +set(hleng, 'FontName','Times New Roman','FontSize',20) +set(gca, 'FontSize', 20, 'fontName','Times'); + +% +figure(1) +subplot(2,1,2) +hold on +if Q==0 + plot(para,pf2,'k','LineWidth',2) +else +plot(para,Qr,'k','LineWidth',2) +end + if D==0 + xlabel('Diametre (m)','Interpreter','Latex','FontSize',24) + elseif Q==0 + xlabel('Débit (m3/s)','Interpreter','Latex','FontSize',24) + elseif pf==0 + xlabel('profondeur','Interpreter','Latex','FontSize',24) + elseif L==0 + xlabel('Largeur','Interpreter','Latex','FontSize',24) + elseif S==0 + xlabel('Pente','Interpreter','Latex','FontSize',24) + + elseif C==0 + xlabel('Concentration','Interpreter','Latex','FontSize',24) + end + + + if Q==0 +ylabel('Profondeur (m)','Interpreter','Latex','FontSize',24) +else +ylabel('Débit (m3/s)','Interpreter','Latex','FontSize',24) + end + +%hleng=legend('Débit (m^2/s)'); +%set(hleng, 'FontName','Times New Roman','FontSize',20) +set(gca, 'FontSize', 20, 'fontName','Times'); + + + +function edit20_Callback(hObject, eventdata, handles) +% hObject handle to edit20 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit20 as text +% str2double(get(hObject,'String')) returns contents of edit20 as a double + + +% --- Executes during object creation, after setting all properties. +function edit20_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit20 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit21_Callback(hObject, eventdata, handles) +% hObject handle to edit21 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit21 as text +% str2double(get(hObject,'String')) returns contents of edit21 as a double + + +% --- Executes during object creation, after setting all properties. +function edit21_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit21 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end + + + +function edit22_Callback(hObject, eventdata, handles) +% hObject handle to edit22 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of edit22 as text +% str2double(get(hObject,'String')) returns contents of edit22 as a double + + +% --- Executes during object creation, after setting all properties. +function edit22_CreateFcn(hObject, eventdata, handles) +% hObject handle to edit22 (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% 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'); +end diff --git a/doc/scilab_tests/macrorugo_find_Q_nat.sci b/doc/scilab_tests/macrorugo_find_Q_nat.sci new file mode 100644 index 00000000..b5492633 --- /dev/null +++ b/doc/scilab_tests/macrorugo_find_Q_nat.sci @@ -0,0 +1,116 @@ +function [res]=find_Q_nat(Q,ks,D,h,Cd0,S,L,pf,C,sigma,bDbg) + if bDbg then + printf('*************************************\n') + print_r('Q') + end + //fonction pour ax=ay + + maxfun=5000; + maxiter=5000; + tolfun=1e-16; + tolx=1e-16; + opt = optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'TolFun',tolfun,'TolX',tolx) + g=9.81; + kappa=0.41; + U0=Q./L./pf; + if(bDbg) then print_r("U0"); end; + + Fr=U0./(9.81*pf).^0.5; + Frg=Fr/(1-C^0.5); + + if ks==0;ks=1e-34;end + + coeff_contraction=0.4*Cd0+0.7; + + //if Cd0==2 + // fFr=(min(2.5,Frg^(-4/3)));// + //else + fFr=(min(coeff_contraction./(1-(Frg.^2)/4),Frg.^(-2/3))).^2; + //end + + if Frg>1.5 + fFr=(Frg.^(-2/3)).^2; + end + + if(bDbg) then print_r("fFr"); end; + + alpha=1-(1.*C).^0.5-1/2*sigma.*C; + Cd=Cd0.*(1+1./(pf./D).^2).*fFr; + + //Cd=Cd0.*(0.8-2*C).*(1+0.4./(pf./D).^2).*fFr; + R=(1-sigma*C);//%.*(1-C.^0.5).^2; + + + if pf/h>1.1; //fFr=1; + + choixturb=1; + htilde=h./D; + hstar=pf./h; + Rh=h.*(hstar-1); + ustar=(g.*S.*Rh).^0.5; + if bDbg then print_r('ustar'); end; + + Cd1=Cd0.*(1+0.4./(pf./D).^2).*fFr; + CdCh=Cd1.*C.*htilde; + if bDbg then print_r('CdCh'); end; + + Cf=2./(5.1.*log10(h./ks)+6).^2; + U0b=(2*g.*S.*R./(Cd1.*C.*h./D+Cf.*R).*h).^0.5; + if bDbg then print_r('U0b'); end; + + // U0=(2*g.*S.*D.*R./(Cd1.*C)).^0.5; + + //[P]=fminbnd(@(alphai) resolve_alpha(alphai,CdCh,R,U0b,hstar,h,C,D,Cd1,ustar,choixturb),1e-5*h,h,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)); + //alpha=P(1); + [alpha fval] = fminsearch(list(resolve_alpha, CdCh,R,U0b,hstar,h,C,D,Cd1,ustar), h/10, opt) + if bDbg then print_r('alpha'); end; + beta2=h.*CdCh./alpha./R; + beta=(beta2).^0.5; + a1=beta*(hstar-1)/(cosh(beta)); + c=1; + + UhU0=(a1*sinh(beta)+c)^0.5; + Uh=UhU0*U0b; + if bDbg then print_r('Uh'); end; + + dhp=1-1/kappa*alpha./h.*Uh./ustar; + z0hp=(1-dhp).*exp(-1*(kappa*Uh./ustar)); + + qsup=ustar./kappa.*h.*((hstar-dhp).*(log((hstar-dhp)./z0hp) - 1)-((1-dhp).*(log((1-dhp)./z0hp) - 1))); + if bDbg then print_r('qsup'); end; + //calcul intégrale dans la canopée---- + dzinf=0.01; + Zinf=(0:dzinf:1); + Uinf = U0b.*(beta.*Rh./h.*sinh(beta*Zinf)./cosh(beta)+1).^0.5; + Ub=zeros(Uinf); + Ub(1:$-1)=Uinf(2:$); + qinf=sum((Uinf(1:$-1)+Ub(1:$-1))/2*dzinf.*h); + if bDbg then print_r('qinf'); end; + qtot=qinf+qsup; + + PI=0; + delta=1; + + Umoy=qtot./pf; + res=abs(U0-Umoy); + + else + + hstar=pf/D; + Re=U0.*pf/1e-6; + + if ks==0 + Cf=0.3164/4.*Re.^(-0.25); + else + Cf=2/(5.1*log10(pf/ks-1)+6)^2; + end + + N= (alpha.*Cf)./(pf./D.*Cd.*C); + + res=abs(U0-(2*g.*S.*D.*(R)./(Cd.*C.*(1+N))).^0.5); + + + + end + +endfunction diff --git a/doc/scilab_tests/macrorugo_find_Q_nat2.sci b/doc/scilab_tests/macrorugo_find_Q_nat2.sci deleted file mode 100644 index 04275b15..00000000 --- a/doc/scilab_tests/macrorugo_find_Q_nat2.sci +++ /dev/null @@ -1,118 +0,0 @@ -function [res]=find_Q_nat2(Q,ks,D,h,Cd0,S,L,pf,C,sigma,bDbg) - -//fonctin pour ax=ay - - -maxfun=5000; -maxiter=5000; -tolfun=1e-16; -tolx=1e-16; -g=9.81; -kappa=0.41; -U0=Q./L./pf; -if(bDbg) then print_r("U0"); end; - -Fr=U0./(9.81*pf).^0.5; -Frg=Fr/(1-C^0.5); - - -coeff_contraction=0.4*Cd0+0.7; - -//if Cd0==2 - // fFr=(min(2.5,Frg^(-4/3)));// -//else - fFr=(min(coeff_contraction./(1-(Frg.^2)/4),Frg.^(-2/3))).^2; -//end - -if Frg>1.5 - fFr=(Frg.^(-2/3)).^2; -end - -if(bDbg) then print_r("fFr"); end; - -alpha=1-(1.*C).^0.5-1/2*sigma.*C; -//Cd=Cd0.*(1+1./(pf./D).^2).*fFr; - -Cd=Cd0.*(0.8-2*C).*(1+0.4./(pf./D).^2).*fFr; -R=(1-sigma*C).*(1-C.^0.5).^2; - - -if pf/h>1.1; fFr=1; - - choixturb=1; - htilde=h./D; - hstar=pf./h; - Rh=h.*(hstar-1); - ustar=(g.*S.*Rh).^0.5; - CdCh=Cd0.*(1+0.4./(pf./D).^2).*C.*htilde; - u0=(2*g.*S.*D.*R./(Cd0.*C)).^0.5; - // [P]=fminbnd(@(alphai) resolve_alpha(alphai,CdCh,R,u0,hstar,h,C,D,Cd0,ustar,choixturb),1e-5*h,h,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)); - - - //[P]=fminbnd(@(alphai) resolve_alpha(alphai,CdCh,R,u0,hstar,h,C,D,Cd0,ustar,choixturb),1e-5*h,h); - [alpha fval] = fminsearch(list(resolve_alpha, CdCh,R,u0,hstar,h,C,D,Cd0,ustar), 1e-5*h) - - beta2=h.*CdCh./alpha./R; - beta2=(beta2).^0.5; - a1=beta2*(hstar-1)/(cosh(beta2)); - c=1; - UhU0=(a1*sinh(beta2)+c)^0.5; - Uh=UhU0*u0; - dhp=1-1/kappa*alpha./h.*Uh./ustar; - z0hp=(1-dhp).*exp(-1*(kappa*Uh./ustar)); - qsup=ustar./kappa.*h.*((hstar-dhp).*(log((hstar-dhp)./z0hp) - 1)-((1-dhp).*(log((1-dhp)./z0hp) - 1))); - - //calcul intégrale dans la canopée---- - - U(1)=u0; - U(2)=u0.*(beta2.*Rh./h.*sinh(beta2*0.1)./cosh(beta2)+c).^0.5; - U(3)=u0.*(beta2.*Rh./h.*sinh(beta2*0.2)./cosh(beta2)+c).^0.5; - U(4)=u0.*(beta2.*Rh./h.*sinh(beta2*0.3)./cosh(beta2)+c).^0.5; - U(5)=u0.*(beta2.*Rh./h.*sinh(beta2*0.4)./cosh(beta2)+c).^0.5; - U(6)=u0.*(beta2.*Rh./h.*sinh(beta2*0.5)./cosh(beta2)+c).^0.5; - U(7)=u0.*(beta2.*Rh./h.*sinh(beta2*0.6)./cosh(beta2)+c).^0.5; - U(8)=u0.*(beta2.*Rh./h.*sinh(beta2*0.7)./cosh(beta2)+c).^0.5; - U(9)=u0.*(beta2.*Rh./h.*sinh(beta2*0.8)./cosh(beta2)+c).^0.5; - U(10)=u0.*(beta2.*Rh./h.*sinh(beta2*0.9)./cosh(beta2)+c).^0.5; - U(11)=Uh; - - Ub=zeros(U); - Ub(1:$-1)=U(2:$); - qinf=sum((U(1:$-1)+Ub(1:$-1))/2*0.1.*h); - qtot=qinf+qsup; - PI=0.2; - delta=1; - Umax=ustar./kappa*(log((delta*(h-h)-dhp*h)/(z0hp*h))+2*PI); - Umoy=qtot./pf; - res=abs(U0-Umoy); - -else - - hstar=pf/D; - Re=U0.*pf/1e-6; - - if ks==0 - Cf=0.3164/4.*Re.^(-0.25); - else - Cf=2/(5.1*log10(pf/ks-1)+6)^2; - end - - if(bDbg) then print_r("Cf"); end; - - -//[u res]=fminsearch(@(U0i) find_U0_complet(U0i,pf,C,D,sigma,Cd0,Cf,coeff_contraction,S),U0,optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'Tolfun',tolfun,'TolX',tolx)); -[u res] = fminsearch ( list(find_U0_R0,pf,C,D,sigma,Cd0,Cf,coeff_contraction,S) , U0 ) - - - // N= (alpha.*Cf)./(pf./D.*Cd.*C); - - // res=abs(U0-(2*g.*S.*D.*(R)./(Cd.*C.*(1+N))).^0.5); - - - res=abs(U0-u); - - - -end - -endfunction diff --git a/doc/scilab_tests/macrorugo_resolve_alpha.sci b/doc/scilab_tests/macrorugo_resolve_alpha.sci index 3c68729b..877ee789 100644 --- a/doc/scilab_tests/macrorugo_resolve_alpha.sci +++ b/doc/scilab_tests/macrorugo_resolve_alpha.sci @@ -1,6 +1,8 @@ function [res]= resolve_alpha(alpha,CdCh,R,U0,hstar,hp,C,D,Cd,ustar) - +if bDbg then + printf('resolve_alpha(alpha=%f,CdCh=%f,R=%f,U0=%f,hstar=%f,hp=%f,C=%f,D=%f,Cd=%f,ustar=%f)\n',alpha,CdCh,R,U0,hstar,hp,C,D,Cd,ustar) +end g=9.81; kappa=0.41; @@ -41,5 +43,8 @@ Uh=UhU0*U0; res=abs(alpha*Uh-L1*ustar); +if bDbg then + printf('resolve_alpha res=%f\n',res) +end endfunction diff --git a/doc/scilab_tests/macrorugo_resultats_complementaires.sci b/doc/scilab_tests/macrorugo_resultats_complementaires.sci index 6a9f5c25..b9b27753 100644 --- a/doc/scilab_tests/macrorugo_resultats_complementaires.sci +++ b/doc/scilab_tests/macrorugo_resultats_complementaires.sci @@ -11,40 +11,33 @@ function macrorugo_resultComp(z_amont, S, long, Q, L, pf, C, Cd, h, D) Vg=Q/L/pf/(1-C^0.5); Fr=Vg./(g.*pf).^0.5; print_r("Fr"); - if Cd==2 - Vmax=Vg.*(min(1.6./(1-(Fr.^2)/4),Fr.^(-2/3)));% - else - Vmax=Vg.*(min(1.2./(1-(Fr.^2)/4),Fr.^(-2/3))); - end - - print_r("Vmax"); P=1000*g*Q/L*S; print_r("P"); if pf/h<1 flowcond = 'emergent' - elseif pf/h<1.1 & pf/h>=1 + elseif pf/h<1.1 && pf/h>=1 flowcond = 'quasi emergent' - elseif pf/h>1.2 + else flowcond = 'immerge' end print_r("flowcond"); - + if pf/h>1.1 - - q_technique=0.955*(pf/h)^2.282*S^0.466*C^(-0.23)*(9.81*D)^0.5.*h*L; + q_technique=0.955*(pf/h)^2.282*S^0.466*C^(-0.23)*(9.81*h)^0.5.*h*L; else + coeff_contraction=0.4*Cd+0.7; if Cd==2 - q_technique= 0.648*(pf/D)^1.084*S^0.56*C^(-0.456)*(9.81*D)^0.5.*D*L; V_technique=3.35*(pf/D)^0.27*S^0.53*(9.81*D)^0.5; + Vmax=Vg.*(min(coeff_contraction/(1-(Fr.^2)/4),Fr.^(-2/3))); else q_technique=0.815*(pf/D)^1.45*S^0.557*C^(-0.456)*(9.81*D)^0.5.*D*L; V_technique=4.54*(pf/D)^0.32*S^0.56*(9.81*D)^0.5; - + Vmax=Vg.*(min(coeff_contraction/(1-(Fr.^2)/4),Fr.^(-2/3))); end - + print_r("Vmax"); print_r("V_technique"); end print_r("q_technique"); diff --git a/doc/scilab_tests/macrorugo_searchQ.sci b/doc/scilab_tests/macrorugo_searchQ.sci new file mode 100644 index 00000000..e9c3656c --- /dev/null +++ b/doc/scilab_tests/macrorugo_searchQ.sci @@ -0,0 +1,26 @@ +function macrorugo_searchQ(ks, D, k, Cd0, S, B, h, C, z_amont, long, bDbg) + printf("ks=%f\n", ks) + printf("D=%f\n", D) + printf("k=%f\n", k) + printf("Cd0=%f\n", Cd0) + printf("S=%f\n", S) + printf("B=%f\n", B) + printf("h=%f\n", h) + printf("C=%f\n", C) + + maxfun=5000; + maxiter=5000; + tolfun=1e-24; + tolx=1e-24; + if bDbg then + maxiter=1 + end + opt = optimset('MaxIter',maxiter,'MaxFunEvals',maxfun,'TolFun',tolfun,'TolX',tolx) + if Cd0==2; sigma=1; else sigma=%pi/4; end + g=9.81 + N=0; + q0=(2*g.*S.*D.*(1-(sigma*C))/(Cd0.*C.*(1+N))).^0.5*h*B; + [Q fVal, exitflag, outputs] = fminsearch(list(find_Q_nat, ks,D,k,Cd0,S,B,h,C,sigma,bDbg), q0, opt); + printf("Q=%f fVal=%f\n",Q, fVal); + macrorugo_resultComp(z_amont, S, long, Q, B, h, C, Cd0, k, D) +endfunction diff --git a/doc/scilab_tests/main_macrorugo.sce b/doc/scilab_tests/main_macrorugo.sce index 29ca61fb..b14271cd 100644 --- a/doc/scilab_tests/main_macrorugo.sce +++ b/doc/scilab_tests/main_macrorugo.sce @@ -3,46 +3,39 @@ clear sCurrentPath = get_absolute_file_path("main_macrorugo.sce"); getd(sCurrentPath); +bDbg = %f; + // Tests parameters -ks = 0.01 -Cd0=1.5 -S = 0.05 -C = 0.05; -D = 0.5; -sigma = 1; -B = 1 -z_amont = 12.5; -long = 6; +ks = 0.01 // Rugosité de fond (m) +Cd0=1.5 // Forme +S = 0.05 // Pente +C = 0.13; // Concentration +D = 0.5; // Diamètre +B = 1 // Largeur +z_amont = 12.5; // Cote amont (m) +long = 6; // Longueur rampe (m) // ***************************************************************************** -printf("\n*** Emergent conditions ***\n") +printf("\n*** Emergent conditions Cd=1.5***\n") // ***************************************************************************** h = 0.6 -k = 0.8 - -// Test de find_U0_R0 -Cf=2/(5.1*log10(h/ks-1)+6)^2 -coeff_contraction=0.4*Cd0+0.7 -res = find_U0_R0(2.58, h, C, D, sigma, Cd0, Cf, coeff_contraction, S) -printf("find_U0_R0=%f\n",res); - -// Test de find_Q_nat2 -[Q fVal] = fminsearch(list(find_Q_nat2, ks,D,k,Cd0,S,B,h,C,sigma,%f), 0.1); -printf("Qemerg=%f fVal=%f\n",Q, fVal); -res = find_Q_nat2(Q,ks,D,k,Cd0,S,B,h,C,sigma,%t) -printf("find_Q_nat2=%f\n",res); -macrorugo_resultComp(z_amont, S, long, Q, B, h, C, Cd0, k, D) +k = 0.7 +Cd0 = 1.5 +macrorugo_searchQ(ks, D, k, Cd0, S, B, h, C, z_amont, long, bDbg) +// ***************************************************************************** +printf("\n*** Emergent conditions Cd=2***\n") +// ***************************************************************************** +h = 0.6 +k = 0.7 +Cd0 = 2 +macrorugo_searchQ(ks, D, k, Cd0, S, B, h, C, z_amont, long, bDbg) // ***************************************************************************** printf("\n*** Submerged conditions ***\n") // ***************************************************************************** -k = 0.6 +k = 0.7 h = 0.8 - -[Q fVal] = fminsearch(list(find_Q_nat2, ks,D,k,Cd0,S,B,h,C,sigma,%f), 0.1); -printf("Qsubmerg=%f fVal=%f\n",Q, fVal); -res = find_Q_nat2(Q,ks,D,k,Cd0,S,B,h,C,sigma,%t) -printf("find_Q_nat2=%f\n",res); -macrorugo_resultComp(z_amont, S, long, Q, B, h, C, Cd0, k, D) +Cd0 = 1.5 +macrorugo_searchQ(ks, D, k, Cd0, S, B, h, C, z_amont, long, bDbg) diff --git a/doc/scilab_tests/print_r.sci b/doc/scilab_tests/print_r.sci index 918fceb2..0c333643 100644 --- a/doc/scilab_tests/print_r.sci +++ b/doc/scilab_tests/print_r.sci @@ -1,5 +1,5 @@ function print_r(s) - e = eval(s) + e = evstr(s) if typeof(e) == "string" then pat = "s" else -- GitLab