c_GR4J - Function permitting to simulate runoff series from rainfall and evapotranspiration with GR4J model
CAUTION : DURING THE FIRST YEAR OF SIMULATION (365*24 / TimeSteps), THE EFFECT OF THE INITIAL CONDITION (initial filling of soil moisture accounting and routing store reservoirs) IS NON NEGLIGEABLE. IT IS RECOMMENDED TO START EVALUATION OF MODEL RESULT AFTER ONE YEAR OF SIMULATION.
WARNING : This function is written in C language and interfaced with SCILAB (HYDROGR.dll).
The GR4J model (which stands for modele du Genie Rural a 4 parametres Journalier) is a daily lumped four-parameter rainfall-runoff model. It belongs to the family of soil moisture accounting models. The GR4J model is the last modified version of the GR3J model originally proposed by Edijatno and Michel (1989).
Important features of the GR4J implementation in SCILAB :
(1) The calculated discharges are expressed in mm ! To get values expressed in m3/s, one has to multiply this time-series by S/[3.6xTimeSteps] (S = Catchment surface in km2).
(3) All values of rainfall or evopotranspiration inferior to 0 will be considered by the model as missing data.
(4) 5 consecutive missing data are tolerated. The model affects 0 to the missing data.
(5) With more than 5 consecutive missing data, the 2 internal variables (soil moisture accounting and routing store) are reinitialised.
(6) The percolation factor used in the percolation formula is 2.25 if 'TimeSteps' is greater or equal to 12 and 4 if 'TimeSteps' is lower than 12. This improves the model performance for short time steps.
To calibrate GR4J, the usual procedure is to use a "Pas à Pas" routine (cf function PasaPas).
P =[0.04;0.59;0.03;0.01;0.16;0.37;8.76;2.65;0.05;0.02;0.02;0.38;0.00;0.02;0.46;4.46;7.71;5.71;0.79;1.33]; ETP =[0.24;0.24;0.24;0.24;0.24;0.25;0.25;0.26;0.27;0.28;0.32;0.33;0.34;0.35;0.36;0.36;0.37;0.37;0.38;0.38]; X =[665;1.18;90;3.8]; [Qsim,Ssim,Rsim]=c_GR4J(24,X,P,ETP,[0.6;0.7]); subplot(3,1,1),plot2d(1:20,Qsim,style=2); // Calculated discharge plot2d2(1:20,10-P,style=4); // Rainfall subplot(3,1,2),plot2d(1:20,Ssim) subplot(3,1,3),plot2d(1:20,Rsim)
PasaPas ,