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;
Ici_EcritureEnteteDefaillances(1);
for Xi:=0 to 2 do
begin
YNbQXdefNul[Xi,1]:=0;
YQXdefmoyGlop[Xi,1]:=0;
assign(YFicQXdef[Xi,1],YRepT+YNomFicQXdef[1]+YExt[Xi]);
rewrite(YFicQXdef[Xi,1]);
......@@ -817,9 +816,7 @@ procedure C3_CalculChroniquesVolume;
{-- jour de YQXdefmoy glop pour type Xi de dfaillance de 0 2--}
for Xi:=0 to 2 do
begin
if YQXdef[Xi]<=YTouComNul then
YNbQXdefNul[Xi,1]:=YNbQXdefNul[Xi,1]+1
else
if YQXdef[Xi]>YTouComNul then
YQXdefmoyGlop[Xi,1]:=YQXdefmoyGlop[Xi,1]+exp(YPuiss*ln(YQXdef[Xi]));
write(YFicQXdef[Xi,1],YQXdef[Xi]);
end;
......@@ -955,7 +952,6 @@ procedure C3_CalculChroniquesVolume;
Ici_EcritureEnteteDefaillances(2);
for Xi:=0 to 2 do
begin
YNbQXdefNul[Xi,2]:=0;
YQXdefmoyGlop[Xi,2]:=0;
assign(YFicQXdef[Xi,2],YRepT+YNomFicQXdef[2]+YExt[Xi]);
rewrite(YFicQXdef[Xi,2]);
......@@ -1024,9 +1020,7 @@ procedure C3_CalculChroniquesVolume;
{-- jour de YQXdefmoy glop pour type Xi de dfaillance de 0 2--}
for Xi:=0 to 2 do
begin
if YQXdef[Xi]<=YTouComNul then
YNbQXdefNul[Xi,2]:=YNbQXdefNul[Xi,2]+1
else
if YQXdef[Xi]>YTouComNul then
YQXdefmoyGlop[Xi,2]:=YQXdefmoyGlop[Xi,2]+exp(YPuiss*ln(YQXdef[Xi]));
write(YFicQXdef[Xi,2],YQXdef[Xi]);
end;
......
......@@ -4,7 +4,7 @@ interface
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);
IMPLEMENTATION
......@@ -16,14 +16,10 @@ IMPLEMENTATION
{--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);
const
XNomFicTri : string = 'TRI';
XNul : double = 0;
var
XFic : YTypFod;
XRang : longint;
Xeffectif : longint;
XQ : double;
......@@ -61,8 +57,6 @@ procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZNbNul : longint; ZTouComNul :
until eof(ZFic);
close(ZFic);
seek(ZFicT,filesize(ZFicT));
for XRang:=1 to ZNbNul do
write(ZFicT,XNul);
reset(ZFicT);
read(ZFicT,ZQmax);
XEffectif:=filesize(ZFicT);
......
......@@ -295,7 +295,6 @@ VAR {tableaux d'entiers}
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}
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;
YNCodePrise : array[1..YNmaxLacs,-4..3] of longint;
YNcodeRepart : array[1..YNmaxLacs,-2..3] of longint;
......
......@@ -245,10 +245,14 @@ procedure Ici_Effacement;
procedure Ici_EditionBilan;
const
XNul : double = 0;
var
Xi : integer;
Xj : integer;
XQXdef : array[1..2,1..2] of double;
nbEof : integer;
begin
......@@ -387,7 +391,7 @@ procedure Ici_Effacement;
begin
assign(YFicQXdef [Xi,Xj],YRepT+YNomFicQXdef [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;
writeln(YFicResult4);
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;
reset(YFicQXdefT[Xi,Xj]);
writeln(YFicResult4,' QXdef1 QXdef1 QXdef2 QXdef2');
writeln(YFicResult4,' (chronologie inverse) (sens chronologique) (chronologie inverse) (sens chronologique)');
while not eof(YFicQXdefT[1,1]) do
nbEof:=0;
while nbEof < 4 do
begin
nbEof:=0;
for Xi:=1 to 2 do
for Xj:=1 to 2 do
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);
end;
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