Aplicació del mètode hidrometeorològic per càlcul de cabals en conques. Adaptat a la instrucció espanyola de drenatge de carreteres 5.2-IC de 2016 (pdf)
#############################################################
Aplicació del mètode racional segons 5.2-IC (2016)
Pere Hernàndez i Casellas
versió 0.3
30 d'abril de 2019
GNU General Public License 3.0
http://www.gnu.org
#############################################################
Fitxers:
gnu52IC.m > fitxer de codi font
data.txt > fitxer de dades
results.txt > fitxer de resultats
El programa gnuIC52 està escrit en el llenguatge de càlcul numèric octave i ha de ser executat amb l'intèrpret GNU Octave que es pot descarregar a:
https://www.gnu.org/software/octave/download.html o instal·lar directament en sistemes GNU/Linux amb el comandament:
sudo apt-get install octave
Per veure el codi font i el detall de la formulació emprada obrir el codi gnu52IC.m amb un editor de textos. Les dades d'entrada s'han d'escriure al fitxer de dades 'data.txt' tal com s'explica al mateix fitxer. A l'executar el programa, es llegeix el fitxer de dades i es genera el fitxer de resultats 'results.txt' amb un informe detallat dels resultats.
Codi font:
###################################################### # Aplicacio del metode racional segons 5.2-IC (2016) # Pere Hernandez i Casellas # perehc@geocities.com # Data 20190429 # Versio 0.3 # GNU General Public License 3.0 ###################################################### ###################################################### # Obre fitxers ###################################################### fid = fopen ("data.txt"); fid2 = fopen ("results.txt",'w'); ###################################################### # Funcions de lectura de dades. Component 2. ###################################################### function read1lines(fid) txt = fgetl (fid); line000 = strsplit (txt); endfunction function read3lines(fid) for i=1:3; txt = fgetl (fid); line000 = strsplit (txt); endfor; endfunction function read7lines(fid) for i=1:7; txt = fgetl (fid); line000 = strsplit (txt); endfor; endfunction function nint8=readint8(fid) txt = fgetl (fid); line000 = strsplit (txt,":"); nint8=(str2double((line000(2)))); endfunction function double=readdouble(fid) txt = fgetl (fid); line000 = strsplit (txt,":"); double=str2double(line000(2)); endfunction function tchar=readchar(fid) txt = fgetl (fid); line000 = strsplit (txt,":"); tchar=char(line000(2)); endfunction ###################################################### # Funcions de lectura de dades. Component 1. # OPCIONAL ###################################################### function tchart=readchart(fid) txt = fgetl (fid); line000 = strsplit (txt,":"); tchart=char(line000(1)); endfunction ###################################################### # Lectura de dades ###################################################### read7lines(fid); Nom_projecte=readchar(fid); Data_calcul=readchar(fid); Nom_conca=readchar(fid); Nom_OD=readchar(fid); Area_conca=readdouble(fid); Lon_llera=readdouble(fid); Des_llera=readdouble(fid); Per_retorn=readint8(fid); read3lines(fid); Pd=readdouble(fid); I1_Id=readdouble(fid); #IDFtc=readdouble(fid); #IDF24=readdouble(fid); kb=readdouble(fid); read3lines(fid); Poi=readdouble(fid); betam=readdouble(fid); delta50=readdouble(fid); FT=readdouble(fid); Tip_OD=readchar(fid); ###################################################### # tc = temps de concentracio (h) (segons 2.2.2.5) ###################################################### pen_m=0.001*Des_llera/Lon_llera; tc=0.3*realpow(Lon_llera,0.76)*realpow(pen_m,-0.19); ###################################################### # Càlcul de I(T,t)=Id*Fint (segons 2.2.2) ###################################################### # KA = factor reductor de la precipitació per àrea de la conca if (Area_conca < 1) KA=1; else KA=1-((log10(Area_conca))/15); endif # Id = intensitat mitjana de precipitació corregida mm/h Id=Pd*KA/24; ###################################################### # Fint = max(Fa,Fb) factor d'intensitat (segons 2.2.2.4) ###################################################### # Fa = factor obtingut de l'index de torrent Fa=realpow(I1_Id,3.5287-2.5287*realpow(tc,0.1)); # Fb = factor obtingut a partir de les corves IDF IDFtc=realpow(I1_Id,(realpow(28,0.1)-realpow(tc,0.1))/(realpow(28,0.1)-1)); IDF24=realpow(I1_Id,(realpow(28,0.1)-realpow(24,0.1))/(realpow(28,0.1)-1)); Fb=kb*IDFtc/IDF24; Fint=max(Fa,Fb); ITt=Id*Fint; ###################################################### # Po = Llindar d'escorrentiu (segons 2.2.3.2) ###################################################### betaPM=betam*FT; betaDT=(betam-delta50)*FT; if (Tip_OD==' PM') Po=Poi*betaPM; else Po=Poi*betaDT; endif ###################################################### # Coe = coeficient d'escorrentiu (segons 2.2.3) ###################################################### if (Pd*KA > Po) Coe=(((Pd*KA/Po)-1)*((Pd*KA/Po)+23))/realpow((Pd*KA/Po)+11,2); else Coe=0.0; endif ###################################################### # Kt = coeficient d'uniformitat (segons 2.2.5) ###################################################### Kt=1+((realpow(tc,1.25))/(realpow(tc,1.25)+14)); ###################################################### # QT = cabal màxim anual per a T (segons 2.2.1) ###################################################### QT=ITt*Coe*Area_conca*Kt/3.6; ###################################################### # Escritura de les variables (verifica correcta lectura) ###################################################### Nom_projecte; Data_calcul; Nom_conca; Nom_OD; Area_conca; Lon_llera; Des_llera; Per_retorn; Pd; I1_Id; IDFtc; IDF24; kb; Poi; betam; delta50; FT; Tip_OD; pen_m; tc; KA; Id; Fa; Fb; Fint; ITt; betaPM; betaDT; Po; Coe; Kt; QT; ###################################################### # Escriptura del fitxer de resultats ###################################################### fprintf(fid2,"######################################################\n"); fprintf(fid2,"gnu5.2-IC \n"); fprintf(fid2,"Aplicacio del metode racional segons 5.2-IC (2016)\n"); fprintf(fid2,"######################################################\n"); fprintf(fid2,"\n") fprintf(fid2,"1. Dades generals:\n") fprintf(fid2,"Projecte: %s\n",Nom_projecte); fprintf(fid2,"Data del calcul: %s\n",Data_calcul); fprintf(fid2,"Nom de la conca: %s\n",Nom_conca); fprintf(fid2,"Nom de la OD: %s\n",Nom_OD); fprintf(fid2,"\n") fprintf(fid2,"2. Dades geometriques:\n") fprintf(fid2,"Area de la conca %6.3f km2 \n",Area_conca); fprintf(fid2,"Longitud de la llera %5.3f km \n",Lon_llera); fprintf(fid2,"Desnivell mig de la llera %4.0f m \n",Des_llera); fprintf(fid2,"Periode de retorn %5.0f anys \n",Per_retorn); fprintf(fid2,"Pendent mig de la llera %5.3f \n",pen_m); fprintf(fid2,"\n") fprintf(fid2,"3. Temps de concentracio: \n") fprintf(fid2,"tc Temps de concentracio %4.2f hores\n",tc); fprintf(fid2,"\n") fprintf(fid2,"4. Intensitat de precipitacio corregida: \n") fprintf(fid2,"Pd precipitacio diaria corresponent a T %7.2f mm \n",Pd); fprintf(fid2,"KA factor reductor de precipitacio %5.3f \n",KA); fprintf(fid2,"Id=Pd*KA/24 intensitat mitjana de precipitacio corregida %5.1f mm \n", Id); fprintf(fid2,"\n") fprintf(fid2,"5. Intensitat de precipitacio per a T i tc: \n") fprintf(fid2,"I1/Id index d'aiguat %4.1f \n", I1_Id); fprintf(fid2,"Fa factor depenent de corves IDF %5.2f \n", Fa); fprintf(fid2,"Fb factor depenent de corves IDF %5.2f \n", Fb); fprintf(fid2,"IDF(T,tc) %5.2f \n", IDFtc); fprintf(fid2,"IDF(T,24) %5.2f \n", IDF24); fprintf(fid2,"Fint=max(Fa,Fb) %5.2f \n", Fint); fprintf(fid2,"I(T,tc)=Id*Fint intensitat de precipitacio %5.1f mm/h \n", ITt); fprintf(fid2,"\n") fprintf(fid2,"6. Llindar d'escorrentiu corregit: \n") fprintf(fid2,"betam %4.2f \n", betam); fprintf(fid2,"betaPM %4.2f \n", betaPM); fprintf(fid2,"betaDT %4.2f \n", betaDT); fprintf(fid2,"Poi llindar d'escorrentiu inicial %5.2f \n", Poi); fprintf(fid2,"Po llindar d'escorrentiu %5.2f \n", Po); fprintf(fid2,"\n") fprintf(fid2,"7. Aplicacio de la formula racional: \n"); fprintf(fid2,"QT=I(T,tc)*C*A*Kt/3.6 \n"); fprintf(fid2,"C coeficient d'escorrentiu %5.3f \n", Coe); fprintf(fid2,"Kt coeficient d'uniformitat %5.3f \n", Kt); fprintf(fid2,"QT cabal maxim anual per a T %6.2f m3/s \n", QT); ###################################################### # Tancament de fitxers ###################################################### fclose (fid); fclose (fid2);