En raison du déménagement des baies serveurs, les services gitlab.irstea.fr et mattermost.irstea.fr seront interrompus le samedi 2 octobre 2021 au matin. Ils devraient revenir à la normale dans la journée.

Commit 5d5f1a64 authored by Dorchies David's avatar Dorchies David
Browse files

Merge branch '6-vgest-crashes-for-time-series-longer-than-5000-years' into 'master'

Resolve "VGEST crashes for time series longer than 5000 years"

Closes #6

See merge request !2
parents 5f6fdd14 58f9ac1e
...@@ -753,7 +753,6 @@ procedure C3_CalculChroniquesVolume; ...@@ -753,7 +753,6 @@ procedure C3_CalculChroniquesVolume;
Ici_EcritureEnteteDefaillances(1); Ici_EcritureEnteteDefaillances(1);
for Xi:=0 to 2 do for Xi:=0 to 2 do
begin begin
YNbQXdefNul[Xi,1]:=0;
YQXdefmoyGlop[Xi,1]:=0; YQXdefmoyGlop[Xi,1]:=0;
assign(YFicQXdef[Xi,1],YRepT+YNomFicQXdef[1]+YExt[Xi]); assign(YFicQXdef[Xi,1],YRepT+YNomFicQXdef[1]+YExt[Xi]);
rewrite(YFicQXdef[Xi,1]); rewrite(YFicQXdef[Xi,1]);
...@@ -817,10 +816,8 @@ procedure C3_CalculChroniquesVolume; ...@@ -817,10 +816,8 @@ procedure C3_CalculChroniquesVolume;
{-- jour de YQXdefmoy glop pour type Xi de dfaillance de 0 2--} {-- jour de YQXdefmoy glop pour type Xi de dfaillance de 0 2--}
for Xi:=0 to 2 do for Xi:=0 to 2 do
begin begin
if YQXdef[Xi]<=YTouComNul then if YQXdef[Xi]>YTouComNul then
YNbQXdefNul[Xi,1]:=YNbQXdefNul[Xi,1]+1 YQXdefmoyGlop[Xi,1]:=YQXdefmoyGlop[Xi,1]+exp(YPuiss*ln(YQXdef[Xi]));
else
YQXdefmoyGlop[Xi,1]:=YQXdefmoyGlop[Xi,1]+exp(YPuiss*ln(YQXdef[Xi]));
write(YFicQXdef[Xi,1],YQXdef[Xi]); write(YFicQXdef[Xi,1],YQXdef[Xi]);
end; end;
writeln(YFicResult4,B_Date(Yi),' ',YQXdef[0]:23:3,' ',YQXdef[2]:23:3,' ',YQXdef[1]:23:3); writeln(YFicResult4,B_Date(Yi),' ',YQXdef[0]:23:3,' ',YQXdef[2]:23:3,' ',YQXdef[1]:23:3);
...@@ -955,7 +952,6 @@ procedure C3_CalculChroniquesVolume; ...@@ -955,7 +952,6 @@ procedure C3_CalculChroniquesVolume;
Ici_EcritureEnteteDefaillances(2); Ici_EcritureEnteteDefaillances(2);
for Xi:=0 to 2 do for Xi:=0 to 2 do
begin begin
YNbQXdefNul[Xi,2]:=0;
YQXdefmoyGlop[Xi,2]:=0; YQXdefmoyGlop[Xi,2]:=0;
assign(YFicQXdef[Xi,2],YRepT+YNomFicQXdef[2]+YExt[Xi]); assign(YFicQXdef[Xi,2],YRepT+YNomFicQXdef[2]+YExt[Xi]);
rewrite(YFicQXdef[Xi,2]); rewrite(YFicQXdef[Xi,2]);
...@@ -1024,10 +1020,8 @@ procedure C3_CalculChroniquesVolume; ...@@ -1024,10 +1020,8 @@ procedure C3_CalculChroniquesVolume;
{-- jour de YQXdefmoy glop pour type Xi de dfaillance de 0 2--} {-- jour de YQXdefmoy glop pour type Xi de dfaillance de 0 2--}
for Xi:=0 to 2 do for Xi:=0 to 2 do
begin begin
if YQXdef[Xi]<=YTouComNul then if YQXdef[Xi]>YTouComNul then
YNbQXdefNul[Xi,2]:=YNbQXdefNul[Xi,2]+1 YQXdefmoyGlop[Xi,2]:=YQXdefmoyGlop[Xi,2]+exp(YPuiss*ln(YQXdef[Xi]));
else
YQXdefmoyGlop[Xi,2]:=YQXdefmoyGlop[Xi,2]+exp(YPuiss*ln(YQXdef[Xi]));
write(YFicQXdef[Xi,2],YQXdef[Xi]); write(YFicQXdef[Xi,2],YQXdef[Xi]);
end; end;
writeln(YFicResult4,B_Date(Yi),' ',YQXdef[0]:23:3,' ',YQXdef[2]:23:3,' ',YQXdef[1]:23:3); writeln(YFicResult4,B_Date(Yi),' ',YQXdef[0]:23:3,' ',YQXdef[2]:23:3,' ',YQXdef[1]:23:3);
......
...@@ -4,7 +4,7 @@ interface ...@@ -4,7 +4,7 @@ interface
uses Utilit,DECLARA; uses Utilit,DECLARA;
procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZNbNul : longint; ZTouComNul : double; procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZTouComNul : double;
var ZQmoy,ZQmed,ZQmax,ZQmin : double; var ZQRare,ZQfrequent : YtypFreq); var ZQmoy,ZQmed,ZQmax,ZQmin : double; var ZQRare,ZQfrequent : YtypFreq);
IMPLEMENTATION IMPLEMENTATION
...@@ -16,14 +16,10 @@ IMPLEMENTATION ...@@ -16,14 +16,10 @@ IMPLEMENTATION
{--prdfinies ainsi que min, max, mdiane et moyenne --} {--prdfinies ainsi que min, max, mdiane et moyenne --}
{=======================================================================} {=======================================================================}
procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZNbNul : longint; ZTouComNul : double; procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZTouComNul : double;
var ZQmoy,ZQmed,ZQmax,ZQmin : double; var ZQRare,ZQfrequent : YtypFreq); var ZQmoy,ZQmed,ZQmax,ZQmin : double; var ZQRare,ZQfrequent : YtypFreq);
const
XNomFicTri : string = 'TRI';
XNul : double = 0;
var var
XFic : YTypFod;
XRang : longint; XRang : longint;
Xeffectif : longint; Xeffectif : longint;
XQ : double; XQ : double;
...@@ -61,8 +57,6 @@ procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZNbNul : longint; ZTouComNul : ...@@ -61,8 +57,6 @@ procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZNbNul : longint; ZTouComNul :
until eof(ZFic); until eof(ZFic);
close(ZFic); close(ZFic);
seek(ZFicT,filesize(ZFicT)); seek(ZFicT,filesize(ZFicT));
for XRang:=1 to ZNbNul do
write(ZFicT,XNul);
reset(ZFicT); reset(ZFicT);
read(ZFicT,ZQmax); read(ZFicT,ZQmax);
XEffectif:=filesize(ZFicT); XEffectif:=filesize(ZFicT);
......
...@@ -295,7 +295,6 @@ VAR {tableaux d'entiers} ...@@ -295,7 +295,6 @@ VAR {tableaux d'entiers}
YRangStatAv : YTabInt1; {rang de station aval dans fichier des d‚bits de base} YRangStatAv : YTabInt1; {rang de station aval dans fichier des d‚bits de base}
YRangStatInt : YTabInt1; {rang de station interm‚diaire dans fichier des d‚bits de base} YRangStatInt : YTabInt1; {rang de station interm‚diaire dans fichier des d‚bits de base}
YNbQXdefNul : array[0..2,1..2] of longint; {nombre d'‚checs nuls,pour QXdef0, QXdef1 ou QXdef2, et pour sens inverse chrono ou sens chrono}
YNCodeAval : array[1..YNmaxLacs,-2..2] of longint; YNCodeAval : array[1..YNmaxLacs,-2..2] of longint;
YNCodePrise : array[1..YNmaxLacs,-4..3] of longint; YNCodePrise : array[1..YNmaxLacs,-4..3] of longint;
YNcodeRepart : array[1..YNmaxLacs,-2..3] of longint; YNcodeRepart : array[1..YNmaxLacs,-2..3] of longint;
......
...@@ -245,10 +245,14 @@ procedure Ici_Effacement; ...@@ -245,10 +245,14 @@ procedure Ici_Effacement;
procedure Ici_EditionBilan; procedure Ici_EditionBilan;
const
XNul : double = 0;
var var
Xi : integer; Xi : integer;
Xj : integer; Xj : integer;
XQXdef : array[1..2,1..2] of double; XQXdef : array[1..2,1..2] of double;
nbEof : integer;
begin begin
...@@ -387,7 +391,7 @@ procedure Ici_Effacement; ...@@ -387,7 +391,7 @@ procedure Ici_Effacement;
begin begin
assign(YFicQXdef [Xi,Xj],YRepT+YNomFicQXdef [Xj]+YExt[Xi]); assign(YFicQXdef [Xi,Xj],YRepT+YNomFicQXdef [Xj]+YExt[Xi]);
assign(YFicQXdefT[Xi,Xj],YRepT+YNomFicQXdefT[Xj]+YExt[Xi]); assign(YFicQXdefT[Xi,Xj],YRepT+YNomFicQXdefT[Xj]+YExt[Xi]);
C4_TriChronique(YFicQXdef[Xi,Xj],YFicQXdefT[Xi,Xj],YNbQXdefNul[Xi,Xj],YTouComNul,YQXdefmoy[Xi,Xj],YQXdefmed[Xi,Xj],YQXdefmax[Xi,Xj],YQXdefmin[Xi,Xj],YQXdefrare[Xi,Xj],YQXdeffrequent[Xi,Xj]); C4_TriChronique(YFicQXdef[Xi,Xj],YFicQXdefT[Xi,Xj],YTouComNul,YQXdefmoy[Xi,Xj],YQXdefmed[Xi,Xj],YQXdefmax[Xi,Xj],YQXdefmin[Xi,Xj],YQXdefrare[Xi,Xj],YQXdeffrequent[Xi,Xj]);
end; end;
writeln(YFicResult4); writeln(YFicResult4);
writeln(YFicResult4,'Fonctions de repartition (frequence = (n-YA)/(Effectif+YB) avec n=rang, YA=',YA,' et YB=',YB,') :'); writeln(YFicResult4,'Fonctions de repartition (frequence = (n-YA)/(Effectif+YB) avec n=rang, YA=',YA,' et YB=',YB,') :');
...@@ -430,12 +434,21 @@ procedure Ici_Effacement; ...@@ -430,12 +434,21 @@ procedure Ici_Effacement;
reset(YFicQXdefT[Xi,Xj]); reset(YFicQXdefT[Xi,Xj]);
writeln(YFicResult4,' QXdef1 QXdef1 QXdef2 QXdef2'); writeln(YFicResult4,' QXdef1 QXdef1 QXdef2 QXdef2');
writeln(YFicResult4,' (chronologie inverse) (sens chronologique) (chronologie inverse) (sens chronologique)'); writeln(YFicResult4,' (chronologie inverse) (sens chronologique) (chronologie inverse) (sens chronologique)');
while not eof(YFicQXdefT[1,1]) do nbEof:=0;
while nbEof < 4 do
begin begin
nbEof:=0;
for Xi:=1 to 2 do for Xi:=1 to 2 do
for Xj:=1 to 2 do for Xj:=1 to 2 do
begin begin
read(YFicQXdefT[Xi,Xj],XQXdef[Xi,Xj]); if not eof(YFicQXdefT[Xi,Xj]) Then
read(YFicQXdefT[Xi,Xj],XQXdef[Xi,Xj])
else
begin
XQXdef[Xi,Xj]:=XNul;
nbEof:=nbEof+1;
end;
write(YFicResult4,' ',XQXdef[Xi,Xj]:22); write(YFicResult4,' ',XQXdef[Xi,Xj]:22);
end; end;
writeln(YFicResult4); writeln(YFicResult4);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment