' CLEAR
_TITLE "Calcolo dell'idrogramma di piena di progetto tramite il metodo SCS-CN"
TempiRitorno:
DATA "Definito dall'utente",2,5,10,20,50,100,200,500,1000 DATA 1,0.82,1.24,1.46,1.69,2.04,2.34,2.70,3.22,3.64 CoefficientiIdrogrammaUnitarioMockus: 'dati dell'idrogramma unitario di Mockus
DATA 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5:
't/ta DATA 0.03,0.1,0.19,0.31,0.47,0.66,0.82,0.93,0.99,1,0.99,0.93,0.86,0.78,0.68,0.56,0.46,0.39,0.33,0.28,0.244,0.207,0.177,0.147,0.127,0.107,0.092,0.077,0.066,0.055,0.048,0.04,0.035,0.029,0.025,0.021,0.018,0.015,0.013,0.011,0.009,0.008,0.007,0.006,0.006,0.005,0.004,0.003,0.001,0:
' t/tp CoefficientiDiscretizzazioneTemporale:
DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,22,24,26,28,30,32:
'N volte tc!. DATA 0.1,0.2,0.3,0.2,0.3,0.3,0.3,0.3,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,1,1,1,1,1,1,1:
'discretizzazione dei coeff. di Mockus.
TYPE CoefficientiDiscretizzazioneTemporale
mdt
AS SINGLE '[ore] conta la progessione delle ore fino al raggiungimento di "d". h1
AS SINGLE '[mm] DisegnaValore h della curva di possibilità climatica. i1
AS SINGLE '[mm/ora] intensità di pioggia. i2
AS SINGLE '[mm/ora] intensità di pioggia secondo lo ietogramma Chicago o costante. DH
AS SINGLE '[mm] pioggia in ogni istante temporale dt. H2
AS SINGLE '[mm] pioggia cumulata ad ogni istante temporale. he
AS SINGLE '[mm] piggia efficace cumulata ad ogni istante temporale. Dhe
AS SINGLE '[mm] pioggia efficace ad ogni istante temporale. qmSUqp
AS SINGLE '[-] il DisegnaValore di qm/qp corrispondente a tm/ta e' = al DisegnaValore di q/qp che corrisponde a t/ta=tm/ta.
CONST LarghezzaColonna%
= 8
DIM SHARED MassimiIdrogrammi1a24
(2, 24, 1) AS idrogramma
DIM SHARED FinePioggiaIdrogrammi1a24
(2, 24, 1) AS idrogramma
' per ogniidrogrammi1a24( trova il momento di Durata della pioggia. DIM SHARED i%
, n%
, z%
, ieto%
, VisualizzaIeto%
DIM SHARED ore!
(3), portata!
(3) 'ore e portate di picco dell'idrogramma di progetto e scelto (entrambi interpolati). DIM SHARED tipo%
'1:idrogrammi1a24( di progetto. 2: a ascelta. Entrambi interpolati. DIM SHARED IdroMaxIeto%
(2) 'memorizza l'idrogramma con la portata di picco massima (che per lo ietogramma chicago è sempre l'ultimo), in modo da definire l'idrogramma di progetto quando la soglia di progetto e' troppo bassa. DIM SHARED FinePioggiaIdrogrammi1e2
(2) AS idrogramma
'serve a memorizzare l'ora e la portata in cui termina la pioggia. DIM SHARED CoefficientiDiscretizzazioneTemporale
(24) AS CoefficientiDiscretizzazioneTemporale
REDIM SHARED idrogramma1
(1) AS idrogramma
'idrogramma di progetto.
DIM ComplessivoIeto1e2
(2) AS composizione
DIM idrogramma1e2
(2) AS composizione
DIM MatriciIeto1e2
(2, 24) DIM matrice1
(2, 24, 50, 1) AS matrice1
DIM matrice2!
(2, 24, 50, 50) DIM MinimiMatriciQuadrante1
(2, 24, 1) AS idrogramma
'riferito all'idrogramma DIM MinimiMatriciQuadrante2
(2, 24, 1) AS idrogramma
'riferito all'idrogramma unitario DIM MassimiQuadrante2
(2, 24, 1) AS idrogramma
'riferito all'idrogramma unitario DIM CoeffPerditeIniziali!
DIM S2!
'[mm] contenuto idrico massimodel terreno. DIM Ia!
'[mm] perdite iniziali. DIM tc!
'[ore] tempo di corrivazione DIM ta!
'[ore] tempo di picco. DIM qp!
'[mc/s] portata al colmo dell'idrogramma unitario. DIM k!
'[-] coeff. della curva di possibilità climatica tado dal sito della Regione. DIM a1!
'[mm/d^n] coeff. della curva di possibilità climatica. DIM n1!
'[-] coeff. della curva di possibilità climatica. DIM A2!
'[mq] superficie bacino idrografico. DIM L!
'[m] lunghezza asta principale. DIM HmaxL!
'[m] punto più alto dell'astra principale. DIM HminL!
'[m] punto più basso dell'asta principale. DIM s1!
'[-] pendenza media del bacino non espressa in percentuale ma come 0,x. DIM CNII!
'[-] Intestazioneto. DIM CNIII
'[-] discende da CNII. DIM tl!
'[ore] tempo di ritardo.
RESTORE CoefficientiIdrogrammaUnitarioMockus
L%
= _DESKTOPWIDTH - 20: H%
= L% \
1.62 'imposta la larghezza dello SCREEN in modo che L%xH% sia un rettangolo aureo. ComplessivoIeto1e2
(ieto%
).grafico
= _NEWIMAGE(L%
- (L% \
5), H%
, 32) ComplessivoIeto1e2
(ieto%
).composizione
= _NEWIMAGE(L%
, H%
, 32) idrogramma1e2
(ieto%
).grafico
= _NEWIMAGE(L%
- (L% \
4), H%
, 32) idrogramma1e2
(ieto%
).composizione
= _NEWIMAGE(L%
, H%
, 32) MatriciIeto1e2
(ieto%
, z%
) = _NEWIMAGE(L%
, H%
, 32) esci$ = "I dati forniti non determinano pioggia efficace o questa Š tale da comportare portate trascurabili."
PRINT "Questo programma serve a calcolare l'idrogramma di progetto (e relativa portata di picco) per" PRINT "un dato tempo di ritorno, utilizzando l'idrogramma unitario adimensionale di Mockus e" PRINT "Di seguito si dovranno inserire i valori della curva di possibilit… climatica ";
CHR$(34);
"h = Ktúaúd^n";
CHR$(34);
"." PRINT "Se si dispone dei valori del Centro Funzionale, digitare il valore ";
CHR$(34);
"Kt";
CHR$(34);
" relativo al tempo" PRINT "di ritorno ";
CHR$(34);
"T";
CHR$(34);
" d'interesse, con i relativi valori ";
CHR$(34);
"a";
CHR$(34);
" e ";
CHR$(34);
"n";
CHR$(34);
"." PRINT "Se invece si ha una propria curva di possibilit… climatica, quando verr… chiesto di inserire" PRINT "In tal caso ";
CHR$(34);
"Kt";
CHR$(34);
" sar… considerato pari a ";
CHR$(34);
"1";
CHR$(34);
" e ";
CHR$(34);
"T";
CHR$(34);
" come ";
CHR$(34);
"definito dall'utente";
CHR$(34);
"." PRINT "- Kt [-] (INVIO per 1) = " PRINT "- Area del bacino idrografico [mý] = " PRINT "- Lunghezza dell'asta principale del bacino idrografico [m] = " PRINT "- Altitudine s.l.m. del punto pi— alto dell'asta principale [m] = " PRINT "- Altitudine s.l.m. del punto pi— basso dell'asta principale [m] = " PRINT "- Pendenza media del bacino idrografico [%] (1ö100) = " PRINT "- CN(II) [-] (1ö100) = " PRINT "- Coefficiente delle perdite inziali [-] (0ö0.2 - INVIO per 0.1) = " CALL InserimentoDati
(k!
, a1!
, n1
, A2!
, L!
, HmaxL!
, HminL!
, s1!
, CNII!
, CoeffPerditeIniziali!
) LOCATE PosizioneCursore%
+ 10, 1 PRINT "- Visualizzare i risultati utilizzando lo ietogramma Chicago [1] o costante [2]?" VisualizzaIeto%
= VAL(KeyPress$
) CNIII! = (23 * CNII!) / (10 + 0.13 * CNII!)
tl! = 0.342 * ((L! / 1000) ^ 0.8 / s1! ^ 0.5) * (1000 / CNIII! - 9) ^ 0.7 'formula di Mockus.
S2! = 25.4 * (1000 / CNIII! - 10)
Ia! = CoeffPerditeIniziali! * S2! 'coeff.=0.03-0.2. 'perdite iniziali
tc! = tl! / 0.6
ta! = tl! / 0.9
qp! = 0.208 * ((A2! / 1000000) / ta!)
RESTORE CoefficientiDiscretizzazioneTemporale
IF i%
<= 24 THEN READ CoefficientiDiscretizzazioneTemporale
(i%
).N: CoefficientiDiscretizzazioneTemporale
(i%
).d
= CoefficientiDiscretizzazioneTemporale
(i%
).N
* tc!
IF i%
> 24 THEN READ CoefficientiDiscretizzazioneTemporale
(i%
- 24).tSUta
'FOR ieto% = 1 TO 2
' FOR z% = 1 TO 24
' GOSUB CalcolaMatriciIeto1e2
' IF esci%(ieto%) = 0 THEN GOSUB DisegnaMatriciIeto1e2
' NEXT z%
' IF esci%(ieto%) = 0 THEN GOSUB DisegnaComplessivoIeto1e2
'NEXT ieto%
'_DEST schermo&
'SELECT CASE esci%(VisualizzaIeto%)
' CASE IS = 0
' CLS
' GOSUB DisegnaUnitari
' GOSUB VisualizzaComplessivo
' SLEEP
' CALL CalcolaIdrogramma(MassimiIdrogrammi1a24(VisualizzaIeto%, 24, 1).ore, idrogrammi1a24(VisualizzaIeto%, 24, 50, 1).ore, MassimiAssolutiIeto(VisualizzaIeto%).ore, MassimiAssolutiIeto(VisualizzaIeto%).portata, ComplessivoIeto1e2(VisualizzaIeto%).grafico, ComplessivoIeto1e2(VisualizzaIeto%).composizione, graficoCOPIA&)
' SLEEP
' GOSUB DisegnaIdrogramma
' GOSUB VisualizzaIdrogramma
' SLEEP
' GOSUB VisualizzaUnitari
' GOSUB VisualizzaMatrici
' GOSUB Risultati
' CASE IS = 1
' PRINT esci$
'END SELECT
PRINT "- Riavviare il programma? [S/N]" '---------------------------------------------------------------------------------------------------------------------------------------------------
freeimage:
' IF esci%(ieto%) = 0 THEN _FREEIMAGE graficoCOPIA&
'-----------------------------------------------------------------------------------------------------------------------------------------------------------
SUB InserimentoDati
(k!
, a1!
, n1
, A2!
, L!
, HmaxL!
, HminL!
, s1!
, CNII!
, CoeffPerditeIniziali!
)
PosizioneCursore%
= CSRLIN - 10 richiesta% = 1
LOCATE PosizioneCursore%
- 1 + richiesta%
, 68 + LEN(inputs$
(richiesta%
)) punti% = 0
carattere$
= MID$(inputs$
(richiesta%
), n%
, 1) IF punti%
= 0 THEN inputs$
(richiesta%
) = inputs$
(richiesta%
) + KeyPress$
inputs$(richiesta%) = inputs$(richiesta%) + KeyPress$
IF LEN(inputs$
(richiesta%
)) > 0 THEN inputs$
(richiesta%
) = LEFT$(inputs$
(richiesta%
), LEN(inputs$
(richiesta%
)) - 1) inputs$(richiesta%) = ""
richiesta% = richiesta% - 1
IF LEN(inputs$
(richiesta%
)) = 0 THEN test%
(richiesta%
) = 0 inputs$(richiesta%) = ""
esci% = 1
richiesta% = richiesta% + 1
k!
= VAL(inputs$
(1)): a1!
= VAL(inputs$
(2)): n1!
= VAL(inputs$
(3)): A2!
= VAL(inputs$
(4)): L!
= VAL(inputs$
(5)): HmaxL!
= VAL(inputs$
(6)): HminL!
= VAL(inputs$
(7)): s1!
= VAL(inputs$
(8)): CNII!
= VAL(inputs$
(9)): CoeffPerditeIniziali!
= VAL(inputs$
(10)) '-----------------------------------------------------------------------------------------------------------------------------------------------------------
Valutavalore:
test%(richiesta%) = 0 ' se 0 rimane nella richiesta in corso, se 1, cambia.
IF inputs$
(richiesta%
) = "123" THEN 'avvia debug debug% = 1
'test:
'k! = 2.34: a1! = 1: n1! = 0.45596: A2! = 0: L! = 3300: HmaxL! = 1981: HminL! = 1062: s1! = 41.5: CNII! = 70: CoeffPerditeIniziali! = 0.1
'Cillian:
k! = 2.34: a1! = 14.6653: n1! = 0.45596: A2! = 2641902: L! = 3300: HmaxL! = 1981: HminL! = 1062: s1! = 41.5: CNII! = 70: CoeffPerditeIniziali! = 0.1
'pialong:
'k! = 2.34:'a1! = 17.097811:'n1! = 0.497753:'A2! = 2509318:'L! = 2919:'HmaxL! = 1654:'HminL! = 388:'s1! = 0.663:'CNII! = 66:CoeffPerditeIniziali!=0.1
IF KeyPress$
= CHR$(13) THEN inputs$
(richiesta%
) = "1" IF LEN(inputs$
(richiesta%
)) = 0 THEN test%
(richiesta%
) = 0 test%(richiesta%) = 1
test%(richiesta%) = 1
test%(richiesta%) = 0
IF VAL(inputs$
(richiesta%
)) <= 100 THEN test%
(richiesta%
) = 1 ELSEIF inputs$
(richiesta%
) = "" THEN test%
(richiesta%
) = 1 test%(richiesta%) = 0
IF KeyPress$
= CHR$(13) THEN inputs$
(richiesta%
) = "0.1" test%(richiesta%) = 1
test%(richiesta%) = 1
test%(richiesta%) = 1
test%(richiesta%) = 0
'-----------------------------------------------------------------------------------------------------------------------------------------------------------
TrovaT:
i% = 1
' IF debug% <> 1 THEN k! = VAL(inputs$(1))
T$ = TempiRitorno(i%).T
test%(richiesta%) = 1
T$ = TempiRitorno(i%).T + " anni"
test%(richiesta%) = 1
test%(richiesta%) = 0