Commit aec28418 authored by Dorchies David's avatar Dorchies David
Browse files

feat: add option to run only backward simulation

Refs #7
parent 5d5f1a64
......@@ -9,6 +9,7 @@ BATCH
1
4
1
0
......@@ -30,4 +31,7 @@ ligne 10 : code indiquant le mode de r
5=visant à équilibrer en fin de pas de temps les durées Tpot d'évolution de réservoir vers état extrême (voir ligne 11) avec quantile donné des apports de chaque quantième
ligne 11 (utilisée seulement si 4 ou 5 en ligne 10) : code indiquant la nature de Tpot :
1 : Tpot est la durée potentielle minimale Tpot1 de reconstitution du volume utilisable maximal (obtention de V=Vtot ou V=0, selon la nature de l'objectif (soutien ou laminage) et le sens des calculs)
2 : Tpot est la durée potentielle minimale Tpot2 d'épuisement du volume utilisable (obtention de V=Vtot ou V=0, selon la nature de l'objectif (soutien ou laminage) et le sens des calculs)
\ No newline at end of file
2 : Tpot est la durée potentielle minimale Tpot2 d'épuisement du volume utilisable (obtention de V=Vtot ou V=0, selon la nature de l'objectif (soutien ou laminage) et le sens des calculs)
ligne 12 : code indiquant les sous-programmes à lancer:
0 : tous les sous-programmes
1 : uniquement la simulation en chronologie inverse
......@@ -853,6 +853,7 @@ procedure C3_CalculChroniquesVolume;
gotoxy(Ax-36,Ay);
clreol;
writeln(' : termin ');
if YChoixSubProg=1 then exit;
write(' calcul de Vges en sens chrono (iter. en cours sur Vges initial : ');
A_lecture_xy;
......
......@@ -182,6 +182,7 @@ VAR {entiers}
YAnFinV : integer;
YAnPremier : integer;
YChoix : integer; {0 pour saisie clavier et autre pour lecture sur fichier (options de calcul)}
YChoixSubProg : integer; {0 pour tout le programme, 1 pour backward simulation uniquement}
YCode : integer; {code de bonne traduction de chaŒne en num‚rique}
YComplet : integer; {1 si d‚bit aval et d‚bits d‚cal‚s aux prises et restit. existent, 0 sinon}
YCompteur : integer; {rang du calcul}
......
......@@ -102,6 +102,7 @@ procedure P_ChoixEntreeOptions;
else
YCodeTpot:=false;
end;
readln(YFitext,YChoixSubProg);
close(YFitext);
end
else
......
......@@ -854,299 +854,301 @@ BEGIN
C3_CalculChroniquesVolume;
close(YFicSortie);
{--CALCUL DE LA PARTIE FRACTIONNAIRE DES DATES DE VOLUME, pour chaque--}
{--lac. Par rapport aux dates des dbits aval, ces dates de volume --}
{--dcales de YdecalDateQ+0.5. A cet instant dans le programme, les --}
{--volumes prsents dans les fichiers typs de rsultats (stocks --}
{--juste avant, par C3_CalculChroniquesVolume), correspondent ces --}
{--dates fractionnaires allant de YDateDebut+0.5+YdecalDateQ+0.5 --}
{--YdateFin+0.5+YdecalDateQ+0.5. --}
for YRangLac:=1 to YNbLacs do
begin
YDecalDateQ[YRanglac]:=YDecalDateQ[YrangLac]+0.5;
if YdecalDateQ[YrangLac] >=1 then
if YChoixSubProg=0 then begin
{--CALCUL DE LA PARTIE FRACTIONNAIRE DES DATES DE VOLUME, pour chaque--}
{--lac. Par rapport aux dates des dbits aval, ces dates de volume --}
{--dcales de YdecalDateQ+0.5. A cet instant dans le programme, les --}
{--volumes prsents dans les fichiers typs de rsultats (stocks --}
{--juste avant, par C3_CalculChroniquesVolume), correspondent ces --}
{--dates fractionnaires allant de YDateDebut+0.5+YdecalDateQ+0.5 --}
{--YdateFin+0.5+YdecalDateQ+0.5. --}
for YRangLac:=1 to YNbLacs do
begin
YdateFinLac[YRangLac]:=YdateFinLac[YRanglac]+1;
YDecalDateQ[YRanglac]:=YDecaldateQ[YRangLac]-1;
YDecalDateQ[YRanglac]:=YDecalDateQ[YrangLac]+0.5;
if YdecalDateQ[YrangLac] >=1 then
begin
YdateFinLac[YRangLac]:=YdateFinLac[YRanglac]+1;
YDecalDateQ[YRanglac]:=YDecaldateQ[YRangLac]-1;
end;
end;
end;
{==A PARTIR DES FICHIERS TYPES DE VOLUME A DATE FRACTIONNAIRE, CALCUL==}
{==DES VOLUMES A 24H ET ECRITURE DE CEUX-CI SUR LES MEMES FICHIERS ==}
{==TYPES, ET ECRITURE DES RESULTATS SUR FICHIER TEXTE DES VOLUMES ==}
{--criture d'en-tte sur fichier texte de rsultats des chroniques --}
{--de volume --}
Ici_EcritureEntete_Volumes;
{--ouverture des fichiers typs de volume et de manque de capacit pour --}
{--chaque lac, et premire lecture de volume Vobj date fractionnaire --}
for YRangLac:=1 to YNbLacs do
begin
reset(YFicVobj[YRangLac]);
reset(YFicVges[YRangLac]);
reset(YFicVop[YRangLac]);
read(YFicVobj[YRanglac],YVobjAnt[YrangLac]);
YVobjMoyrel[1,YRangLac]:=0;
YVobjMoyrel[2,YRangLac]:=0;
end;
{--boucle sur les temps, sur la priode choisie--}
for Yi:=YDateDebut+1 to YDateFin+1 do
{==A PARTIR DES FICHIERS TYPES DE VOLUME A DATE FRACTIONNAIRE, CALCUL==}
{==DES VOLUMES A 24H ET ECRITURE DE CEUX-CI SUR LES MEMES FICHIERS ==}
{==TYPES, ET ECRITURE DES RESULTATS SUR FICHIER TEXTE DES VOLUMES ==}
begin
{--criture d'en-tte sur fichier texte de rsultats des chroniques --}
{--de volume --}
Ici_EcritureEntete_Volumes;
{--criture sur fichier texte de date la station aval--}
write(YFicResult4,B_Date(Yi-1),' ');
{--ouverture des fichiers typs de volume et de manque de capacit pour --}
{--chaque lac, et premire lecture de volume Vobj date fractionnaire --}
for YRangLac:=1 to YNbLacs do
begin
reset(YFicVobj[YRangLac]);
reset(YFicVges[YRangLac]);
reset(YFicVop[YRangLac]);
read(YFicVobj[YRanglac],YVobjAnt[YrangLac]);
YVobjMoyrel[1,YRangLac]:=0;
YVobjMoyrel[2,YRangLac]:=0;
end;
{--boucle sur les lacs--}
for YRangLac:=1 to YNbLacs do
{--boucle sur les temps, sur la priode choisie--}
for Yi:=YDateDebut+1 to YDateFin+1 do
begin
{--cas o on n'est pas arriv la fin du fichier typ de volume--}
if Yi<=YdateFin then
{--criture sur fichier texte de date la station aval--}
write(YFicResult4,B_Date(Yi-1),' ');
begin
{--lecture de volume heure fractionnaire sur fichier typ, --}
{--CALCUL DU VOLUME A 24h par interpolation linaire et --}
{--criture de celui-ci sur mme fichier typ --}
read(YFicVobj[YRangLac],YVobjNouv[Yranglac]);
YVobj[YRangLac]:=YVobjAnt[YrangLac]+(YVobjNouv[YRanglac]-YVobjAnt[Yranglac])*(1-YDecalDateQ[YRangLac]);
seek(YFicVobj[YRangLac],filepos(YFicVobj[YRangLac])-2);
write(YFicVobj[YRanglac],YVobj[YRangLac]);
seek(YficVobj[YRangLac],filepos(YficVobj[Yranglac])+1);
YVobjMoyRel[1,YRangLac]:=YVobjMoyRel[1,YRangLac]+YVobj[YRangLac];
end
{--boucle sur les lacs--}
for YRangLac:=1 to YNbLacs do
{--cas o on est arriv la fin du fichier typ de volume--}
else
begin
YVobjNouv[YRanglac]:=Ylacune;
YVobj[YRangLac]:=YLacune;
end;
{--lecture de volume de gestion Vobj sur fichier typ--}
read(YFicVges[YRangLac],YVges[YRangLac]);
read(YFicVop[YRangLac],YVop[YRangLac]);
YVobjMoyRel[2,YRangLac]:=YVobjMoyRel[2,YRangLac]+YVges[YRangLac];
{--criture sur fichier texte de la date lac, du volume Vobj date--}
{--fractionnaire et 24h, des volumes Vges et Vop date --}
{--fractionnaire --}
if YAbsRel=1 then
begin
write(YFicResult4,B_Date(Yi-1+YDateFinLac[YRanglac]-YDateFin),' ',
YVobjAnt[YRanglac]:15:2,' ');
if YVobj[YRangLac]<>YLacune then
write(YFicResult4,YVobj[YRangLac]:15:2)
else
write(YFicResult4,' ');
write(YFicResult4,' ',YVges[YRangLac]:15:2,' ',YVop[YRangLac]:15:2,' ');
end
else
begin
write(YFicResult4,B_Date(Yi-1+YDateFinLac[YRanglac]-YDateFin),' ',
(YVobjAnt[YRanglac]/YVtot[YRangLac]):15:13,' ');
if YVobj[YRangLac]<>YLacune then
write(YficResult4,(YVobj[YRangLac]/YVtot[YRangLac]):15:13)
else
write(YFicResult4,' ');
write(YFicResult4,' ',(YVges[YRangLac]/YVtot[YRangLac]):15:13,' ',(YVop[YRangLac]/YVtot[YRangLac]):15:13,' ');
end;
{--incrmentation du volume date fractionnaire--}
YVobjAnt[YRanglac]:=YVobjNouv[YRangLac];
{--cas o on n'est pas arriv la fin du fichier typ de volume--}
if Yi<=YdateFin then
begin
{--lecture de volume heure fractionnaire sur fichier typ, --}
{--CALCUL DU VOLUME A 24h par interpolation linaire et --}
{--criture de celui-ci sur mme fichier typ --}
read(YFicVobj[YRangLac],YVobjNouv[Yranglac]);
YVobj[YRangLac]:=YVobjAnt[YrangLac]+(YVobjNouv[YRanglac]-YVobjAnt[Yranglac])*(1-YDecalDateQ[YRangLac]);
seek(YFicVobj[YRangLac],filepos(YFicVobj[YRangLac])-2);
write(YFicVobj[YRanglac],YVobj[YRangLac]);
seek(YficVobj[YRangLac],filepos(YficVobj[Yranglac])+1);
YVobjMoyRel[1,YRangLac]:=YVobjMoyRel[1,YRangLac]+YVobj[YRangLac];
end
{--cas o on est arriv la fin du fichier typ de volume--}
else
begin
YVobjNouv[YRanglac]:=Ylacune;
YVobj[YRangLac]:=YLacune;
end;
{--lecture de volume de gestion Vobj sur fichier typ--}
read(YFicVges[YRangLac],YVges[YRangLac]);
read(YFicVop[YRangLac],YVop[YRangLac]);
YVobjMoyRel[2,YRangLac]:=YVobjMoyRel[2,YRangLac]+YVges[YRangLac];
{--criture sur fichier texte de la date lac, du volume Vobj date--}
{--fractionnaire et 24h, des volumes Vges et Vop date --}
{--fractionnaire --}
if YAbsRel=1 then
begin
write(YFicResult4,B_Date(Yi-1+YDateFinLac[YRanglac]-YDateFin),' ',
YVobjAnt[YRanglac]:15:2,' ');
if YVobj[YRangLac]<>YLacune then
write(YFicResult4,YVobj[YRangLac]:15:2)
else
write(YFicResult4,' ');
write(YFicResult4,' ',YVges[YRangLac]:15:2,' ',YVop[YRangLac]:15:2,' ');
end
else
begin
write(YFicResult4,B_Date(Yi-1+YDateFinLac[YRanglac]-YDateFin),' ',
(YVobjAnt[YRanglac]/YVtot[YRangLac]):15:13,' ');
if YVobj[YRangLac]<>YLacune then
write(YficResult4,(YVobj[YRangLac]/YVtot[YRangLac]):15:13)
else
write(YFicResult4,' ');
write(YFicResult4,' ',(YVges[YRangLac]/YVtot[YRangLac]):15:13,' ',(YVop[YRangLac]/YVtot[YRangLac]):15:13,' ');
end;
{--incrmentation du volume date fractionnaire--}
YVobjAnt[YRanglac]:=YVobjNouv[YRangLac];
end; {fin de boucle sur les lacs--}
end; {fin de boucle sur les lacs--}
{--passage la ligne suivante dans le fichier texte de rsultats--}
writeln(YFicResult4);
{--passage la ligne suivante dans le fichier texte de rsultats--}
writeln(YFicResult4);
end; {fin de boucle sur les temps}
end; {fin de boucle sur les temps}
{--fermeture des fichiers typs de volume et de manque de capacit, --}
{--ainsi que du fichier texte de rsultats de chronique de volume --}
for Yranglac:=1 to yNbLacs do
begin
close(YFicVobj[YRangLac]);
close(YFicVges[YRanglac]);
YVobjMoyRel[1,YRangLac]:=YVobjMoyRel[1,YRangLac]/(YVtot[YrangLac]*(YdateFin-YDateDebut));
YVobjMoyRel[2,YRangLac]:=YVobjMoyRel[2,YRangLac]/(YVtot[YrangLac]*(YdateFin-YDateDebut+1));
end;
close(YFicResult4);
{--fermeture des fichiers typs de volume et de manque de capacit, --}
{--ainsi que du fichier texte de rsultats de chronique de volume --}
for Yranglac:=1 to yNbLacs do
begin
close(YFicVobj[YRangLac]);
close(YFicVges[YRanglac]);
YVobjMoyRel[1,YRangLac]:=YVobjMoyRel[1,YRangLac]/(YVtot[YrangLac]*(YdateFin-YDateDebut));
YVobjMoyRel[2,YRangLac]:=YVobjMoyRel[2,YRangLac]/(YVtot[YrangLac]*(YdateFin-YDateDebut+1));
end;
close(YFicResult4);
{--remplacement des valeurs date fractionnaire par les valeurs 24H--}
{--dans le fichier typ des volumes Vop --}
for YRanglac:=1 to YNbLacs do
begin
reset(YficVop[YRangLac]);
read(YFicVop[YRanglac],YVopAnt);
for Yi:=YDateDebut+1 to YDateFin do
{--remplacement des valeurs date fractionnaire par les valeurs 24H--}
{--dans le fichier typ des volumes Vop --}
for YRanglac:=1 to YNbLacs do
begin
read(YFicVop[YRangLac],YVopNouv);
YVop[YRangLac]:=YVopAnt+(YVopNouv-YVopAnt)*(1-YDecalDateQ[YRangLac]);
seek(YFicVop[YRangLac],filepos(YFicVop[YRangLac])-2);
write(YFicVop[YRanglac],YVop[YRangLac]);
seek(YficVop[YRangLac],filepos(YficVop[Yranglac])+1);
YVopAnt:=YVopNouv;
reset(YficVop[YRangLac]);
read(YFicVop[YRanglac],YVopAnt);
for Yi:=YDateDebut+1 to YDateFin do
begin
read(YFicVop[YRangLac],YVopNouv);
YVop[YRangLac]:=YVopAnt+(YVopNouv-YVopAnt)*(1-YDecalDateQ[YRangLac]);
seek(YFicVop[YRangLac],filepos(YFicVop[YRangLac])-2);
write(YFicVop[YRanglac],YVop[YRangLac]);
seek(YficVop[YRangLac],filepos(YficVop[Yranglac])+1);
YVopAnt:=YVopNouv;
end;
close(YFicVop[Yranglac]);
end;
close(YFicVop[Yranglac]);
end;
{Ecriture sur fichier texte de rsultats concernant les dfaillances de }
{gestion (volumes manquants Vdef dans les rservoirs et dfaut de dbit }
{ la station objectif aval) pour une exploitation visant optimiser la}
{rpartition des taches entre rservoirs }
E_Message12;
Ici_EditionBilan;
{Ecriture sur fichier texte de rsultats concernant les dfaillances de }
{gestion (volumes manquants Vdef dans les rservoirs et dfaut de dbit }
{ la station objectif aval) pour une exploitation visant optimiser la}
{rpartition des taches entre rservoirs }
E_Message12;
Ici_EditionBilan;
{--message cran--}
E_Message9;
{--message cran--}
E_Message9;
{==EDITION DES RESULTATS CLASSES ET ISOFREQUENCE DE VOLUME ET DE ==}
{==DEBIT DEFAILLANT ==}
{==EDITION DES RESULTATS CLASSES ET ISOFREQUENCE DE VOLUME ET DE ==}
{==DEBIT DEFAILLANT ==}
{--boucle sur les rservoirs--}
for YrangLac:=1 to YNbLacs do
begin
{--boucle sur les rservoirs--}
for YrangLac:=1 to YNbLacs do
begin
{--calcul de la date de dbut de srie des volumes 24h--}
YDateDebutV:=YDateDebut+YDateFinLac[YRanglac]-YDateFin;
{--calcul de la date de dbut de srie des volumes 24h--}
YDateDebutV:=YDateDebut+YDateFinLac[YRanglac]-YDateFin;
{--date de fin de srie des volumes 24h : on perd une valeur par --}
{--rapport la srie des volumes aux heures brutes du rservoir, --}
{-- cause des interpolations linaires --}
YDateFinV:=YDateFinLac[YRangLac]-1;
{--date de fin de srie des volumes 24h : on perd une valeur par --}
{--rapport la srie des volumes aux heures brutes du rservoir, --}
{-- cause des interpolations linaires --}
YDateFinV:=YDateFinLac[YRangLac]-1;
{--extension destine au nom des fichiers texte de rsultats--}
str(YRangLac,Yextension);
{--extension destine au nom des fichiers texte de rsultats--}
str(YRangLac,Yextension);
{--calcul et criture sur fichier texte des rsultats isofrquence --}
{--des volumes limites Vobj ( 24 H) respecter dans le rservoir --}
assign(YFicResult4,YRepR+YNomFicResultVobj+YExtension+YExIsofreq);
if YTypeObjectif=0 then
begin
YChaine:='Volume d''eau minimal Vobj';
if YAbsRel=1 then
YChaine:=YChaine+' (m3)'
else
YChaine:=YChaine+'/Vtot';
YChaine:=YChaine+' en dessous duquel il ne faut pas descendre'
end
else
begin
YChaine:='Volume d''eau maximal Vobj';
if YAbsRel=1 then
{--calcul et criture sur fichier texte des rsultats isofrquence --}
{--des volumes limites Vobj ( 24 H) respecter dans le rservoir --}
assign(YFicResult4,YRepR+YNomFicResultVobj+YExtension+YExIsofreq);
if YTypeObjectif=0 then
begin
YChaine:='Volume d''eau minimal Vobj';
if YAbsRel=1 then
YChaine:=YChaine+' (m3)'
else
YChaine:=YChaine+'/Vtot';
YChaine:=YChaine+' en dessous duquel il ne faut pas descendre'
end
else
begin
YChaine:='Volume d''eau maximal Vobj';
if YAbsRel=1 then
YChaine:=YChaine+' (m3)'
else
YChaine:=YChaine+'/Vtot';
YChaine:=YChaine+' qu''il ne faut pas depasser';
end;
YChaine:=YChaine+' (a 24h) dans le reservoir '+YNomLac[YRangLac]
+' pour pouvoir satisfaire du mieux possible l''objectif aval par la suite'
+' (en evitant au maximum les defaillances causees par un stock ';
if YTypeObjectif=0 then
YChaine:=YChaine+'trop vide)'
else
YChaine:=YChaine+'trop plein)';
C2_ISOFREQ(YdateDebutV,YDateDebutV,YDateFinV,YFicVobj[YRangLac],Ychaine,YNorme[YRangLac],YAbsRel);
{--calcul et criture sur fichier texte des rsultats isofrquence --}
{--des volumes limites Vop ( 24H) respecter dans le rservoir --}
assign(YFicResult4,YRepR+YNomFicResultVop+YExtension+YExIsofreq);
if YTypeObjectif=0 then
YChaine:='minimale'
else
YChaine:='maximale';
YChaine:='Valeur '+YChaine+' Vop';
if YAbsRel=1 then
YChaine:=YChaine+' (m3)'
else
else
YChaine:=YChaine+'/Vtot';
YChaine:=YChaine+' qu''il ne faut pas depasser';
end;
YChaine:=YChaine+' (a 24h) dans le reservoir '+YNomLac[YRangLac]
+' pour pouvoir satisfaire du mieux possible l''objectif aval par la suite'
+' (en evitant au maximum les defaillances causees par un stock ';
if YTypeObjectif=0 then
YChaine:=YChaine+'trop vide)'
else
YChaine:=YChaine+'trop plein)';
C2_ISOFREQ(YdateDebutV,YDateDebutV,YDateFinV,YFicVobj[YRangLac],Ychaine,YNorme[YRangLac],YAbsRel);
{--calcul et criture sur fichier texte des rsultats isofrquence --}
{--des volumes limites Vop ( 24H) respecter dans le rservoir --}
assign(YFicResult4,YRepR+YNomFicResultVop+YExtension+YExIsofreq);
if YTypeObjectif=0 then
YChaine:='minimale'
else
YChaine:='maximale';
YChaine:='Valeur '+YChaine+' Vop';
if YAbsRel=1 then
YChaine:=YChaine+' (m3)'
else
YChaine:=YChaine+'/Vtot';
YChaine:=YChaine+' du volume dans le reservoir '+YNomLac[YRangLac]+' (a 24h), '
+'pouvant etre produit quand on vise d''abord la meilleure satisfaction possible de '
+'l''objectif commun dans l''immediat, puis sa meilleure satisfaction possible '
+'par la suite';
C2_ISOFREQ(YdateDebutV,YDateDebutV,YDateFinV,YFicVop[YRangLac],Ychaine,YNorme[YRangLac],YAbsRel);
end; {fin de boucle sur les rservoirs}
{--calcul et criture sur fichier texte des rsultats isofrquence --}
{--des manques globaux de capacit dans les rservoirs, calculs en --}
{--chrono inverse --}
assign(YFicResult4,YRepR+YNomFicResultM+'A'+YExIsofreq);
YChaine:='Manque global Vdef';
if YAbsRel=2 then
YChaine:=YChaine+'/somme(Vtot)';
YChaine:=YChaine+' de capacite des reservoirs (';
if YabsRel=1 then
YChaine:=YChaine+'m3, ';
yChaine:=YChaine+'date aval, calcul en chronologie inverse), responsable '
+'de defaillances QXdef2 futures s''ajoutant aux inevitables absolues QXdef0 : capacite supplementaire necessaire ';
if YTypeObjectif=0 then
YChaine:=YChaine+'au dessus de la crete'
else
YChaine:=YChaine+'en dessous du fond';
if YAbsRel=1 then
C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[1],YChaine,YNorme[0],1)
else
C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[1],YChaine,YNorme[0],4);
{--calcul et criture sur fichier texte des rsultats isofrquence --}
{--des manques globaux de capacit dans les rservoirs, calculs en --}
{--sens chronologique --}
assign(YFicResult4,YRepR+YNomFicResultM+'B'+YExIsofreq);
YChaine:='Manque global Vdef';
if YAbsRel=2 then
YChaine:=YChaine+'/somme(Vtot)';
YChaine:=YChaine+'de capacite des reservoirs (';
if YAbsRel=1 then
YChaine:=YChaine+'m3, ';
YChaine:=YChaine+'date aval, calcul en sens chronologique), responsable '
+'de defaillances QXdef2 passees s''ajoutant aux inevitables absolues QXdef0 : capacite supplementaire necessaire ';
if YTypeObjectif=0 then
YChaine:=YChaine+'en dessous du fond'
else
YChaine:=YChaine+'au dessus de la crete';
if YAbsRel=1 then
C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[2],YChaine,YNorme[0],1)
else
C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[2],YChaine,YNorme[0],4);
YChaine:=YChaine+' du volume dans le reservoir '+YNomLac[YRangLac]+' (a 24h), '
+'pouvant etre produit quand on vise d''abord la meilleure satisfaction possible de '
+'l''objectif commun dans l''immediat, puis sa meilleure satisfaction possible '
+'par la suite';
C2_ISOFREQ(YdateDebutV,YDateDebutV,YDateFinV,YFicVop[YRangLac],Ychaine,YNorme[YRangLac],YAbsRel);
end; {fin de boucle sur les rservoirs}
{--calcul et criture sur fichier texte des rsultats isofrquence --}
{--des manques globaux de capacit dans les rservoirs, calculs en --}
{--chrono inverse --}
assign(YFicResult4,YRepR+YNomFicResultM+'A'+YExIsofreq);
YChaine:='Manque global Vdef';
if YAbsRel=2 then
YChaine:=YChaine+'/somme(Vtot)';
YChaine:=YChaine+' de capacite des reservoirs (';
if YabsRel=1 then
YChaine:=YChaine+'m3, ';
yChaine:=YChaine+'date aval, calcul en chronologie inverse), responsable '
+'de defaillances QXdef2 futures s''ajoutant aux inevitables absolues QXdef0 : capacite supplementaire necessaire ';
if YTypeObjectif=0 then
YChaine:=YChaine+'au dessus de la crete'
else
YChaine:=YChaine+'en dessous du fond';
if YAbsRel=1 then
C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[1],YChaine,YNorme[0],1)
else
C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[1],YChaine,YNorme[0],4);
{--calcul et criture sur fichier texte des rsultats isofrquence --}
{--des manques globaux de capacit dans les rservoirs, calculs en --}
{--sens chronologique --}
assign(YFicResult4,YRepR+YNomFicResultM+'B'+YExIsofreq);
YChaine:='Manque global Vdef';
if YAbsRel=2 then
YChaine:=YChaine+'/somme(Vtot)';
YChaine:=YChaine+'de capacite des reservoirs (';
if YAbsRel=1 then
YChaine:=YChaine+'m3, ';
YChaine:=YChaine+'date aval, calcul en sens chronologique), responsable '
+'de defaillances QXdef2 passees s''ajoutant aux inevitables absolues QXdef0 : capacite supplementaire necessaire ';
if YTypeObjectif=0 then
YChaine:=YChaine+'en dessous du fond'
else
YChaine:=YChaine+'au dessus de la crete';
if YAbsRel=1 then
C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[2],YChaine,YNorme[0],1)
else
C2_ISOFREQ(YdateDebut,YDateDebut,YDateFin,YFicVdef[2],YChaine,YNorme[0],4);
{--rsultats de dfaillances de dbit invitables absolus (mme avec des--}
{--capacits de rservoirs sans limite --}
assign(YFicResult4,YRepR+YNomFicResDef+'0B'+YExIsofreq);
if YTypeObjectif=0 then
YChaine:='Manque'
else
YChaine:='Exces';
YChaine:=YChaine+' de debit inevitable absolu QXdef0 a la station aval du systeme (m3/s, date aval, calcul en sens chronologique) par rapport a '
+'l''hydrogramme objectif (du aux contraintes physiques et '
+'consignes de gestion aux prises et restitutions des reservoirs)';
C2_ISOFREQ(YDateDebut,YDateDebut,YDateFin,YficQXdef[0,2],YChaine,1,3);
{--rsultats de dfaillances de dbit invitables --}
assign(YFicResult4,YRepR+YNomFicResDef+'1B'+YExIsofreq);
if YTypeObjectif=0 then
YChaine:='Manque'
else
YChaine:='Exces';
YChaine:=YChaine+' de debit QXdef1 a la station aval du systeme (m3/s, date aval, calcul en sens chronologique) par rapport a l''objectif '
+'(du a la fois aux contraintes physiques et consignes aux prises et restitutions, et au manque de capacite des reservoir)';
C2_ISOFREQ(YDateDebut,YDateDebut,YDateFin,YficQXdef[1,2],YChaine,1,3);
{--message cran et stat du calcul--}
assign(YFicSortie, YRepR+YNomFicSortie);
append(YFicSortie);
writeln(YFicSortie);
P_EcritureSeparation;
writeln(YFicSortie,'FIN DU CALCUL (LES ETAPES SUCCESSIVES SE SONT DEROULEES NORMALEMENT)');
close(YFicSortie);
E_Message10;
{--rsultats de dfaillances de dbit invitables absolus (mme avec des--}
{--capacits de rservoirs sans limite --}
assign(YFicResult4,YRepR+YNomFicResDef+'0B'+YExIsofreq);
if YTypeObjectif=0 then
YChaine:='Manque'
else
YChaine:='Exces';
YChaine:=YChaine+' de debit inevitable absolu QXdef0 a la station aval du systeme (m3/s, date aval, calcul en sens chronologique) par rapport a '
+'l''hydrogramme objectif (du aux contraintes physiques et '
+'consignes de gestion aux prises et restitutions des reservoirs)';
C2_ISOFREQ(YDateDebut,YDateDebut,YDateFin,YficQXdef[0,2],YChaine,1,3);
{--rsultats de dfaillances de dbit invitables --}
assign(YFicResult4,YRepR+YNomFicResDef+'1B'+YExIsofreq);
if YTypeObjectif=0 then
YChaine:='Manque'
else
YChaine:='Exces';
YChaine:=YChaine+' de debit QXdef1 a la station aval du systeme (m3/s, date aval, calcul en sens chronologique) par rapport a l''objectif '
+'(du a la fois aux contraintes physiques et consignes aux prises et restitutions, et au manque de capacite des reservoir)';
C2_ISOFREQ(YDateDebut,YDateDebut,YDateFin,YficQXdef[1,2],YChaine,1,3);
{--message cran et stat du calcul--}
assign(YFicSortie, YRepR+YNomFicSortie);
append(YFicSortie);
writeln(YFicSortie);
P_EcritureSeparation;
writeln(YFicSortie,'FIN DU CALCUL (LES ETAPES SUCCESSIVES SE SONT DEROULEES NORMALEMENT)');
close(YFicSortie);
E_Message10;
end {if YChoixSubProg=0}
end {fin du cas o on fait les calculs}
else {cas o les calculs n'ont pas pu tre faits}
if YSaisie then
E_Message11;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please