Commit 34bd0f89 authored by unknown's avatar unknown
Browse files

v1.0.5.3 DataAltiExtrapolation_Valery() and CreateInputsModel() admit a...

v1.0.5.3 DataAltiExtrapolation_Valery() and CreateInputsModel() admit a PreciScale argument which allows to rescale precipitation interpolated on the elevation layers when CemaNeige is used #4521
Showing with 509 additions and 496 deletions
+509 -496
Package: airGR Package: airGR
Type: Package Type: Package
Title: Suite of GR hydrological models for precipitation-runoff modelling Title: Suite of GR hydrological models for precipitation-runoff modelling
Version: 1.0.5.2 Version: 1.0.5.3
Date: 2017-01-19 Date: 2017-01-19
Authors@R: c( Authors@R: c(
person("Laurent", "Coron", role = c("aut", "trl")), person("Laurent", "Coron", role = c("aut", "trl")),
......
CreateInputsModel <- function(FUN_MOD,DatesR,Precip,PotEvap=NULL,TempMean=NULL,TempMin=NULL,TempMax=NULL,ZInputs=NULL,HypsoData=NULL,NLayers=5, verbose = TRUE) { CreateInputsModel <- function(FUN_MOD, DatesR, Precip, PrecipScale = TRUE, PotEvap = NULL, TempMean = NULL, TempMin = NULL, TempMax = NULL, ZInputs = NULL, HypsoData = NULL, NLayers = 5, verbose = TRUE) {
ObjectClass <- NULL ObjectClass <- NULL
...@@ -126,7 +126,7 @@ CreateInputsModel <- function(FUN_MOD,DatesR,Precip,PotEvap=NULL,TempMean=NULL,T ...@@ -126,7 +126,7 @@ CreateInputsModel <- function(FUN_MOD,DatesR,Precip,PotEvap=NULL,TempMean=NULL,T
##DataAltiExtrapolation_Valery ##DataAltiExtrapolation_Valery
if("CemaNeige" %in% ObjectClass) { if("CemaNeige" %in% ObjectClass) {
RESULT <- DataAltiExtrapolation_Valery(DatesR=DatesR,Precip=Precip,TempMean=TempMean,TempMin=TempMin,TempMax=TempMax,ZInputs=ZInputs,HypsoData=HypsoData,NLayers=NLayers, verbose = verbose); RESULT <- DataAltiExtrapolation_Valery(DatesR = DatesR, Precip = Precip, PrecipScale = PrecipScale, TempMean = TempMean, TempMin = TempMin, TempMax = TempMax, ZInputs = ZInputs, HypsoData = HypsoData, NLayers = NLayers, verbose = verbose)
if(verbose) { if(verbose) {
if(NLayers == 1) { if(NLayers == 1) {
message("\t Input series were successfully created on 1 elevation layer for use by CemaNeige") message("\t Input series were successfully created on 1 elevation layer for use by CemaNeige")
......
DataAltiExtrapolation_Valery <- function(DatesR,Precip,TempMean,TempMin=NULL,TempMax=NULL,ZInputs,HypsoData,NLayers, verbose = TRUE){ DataAltiExtrapolation_Valery <- function(DatesR, Precip, PrecipScale = TRUE, TempMean, TempMin = NULL, TempMax = NULL, ZInputs, HypsoData, NLayers, verbose = TRUE){
##Altitudinal_gradient_functions_______________________________________________________________
##unique_gradient_for_precipitation
GradP_Valery2010 <- function(){
return(0.00041); ### value from Val? PhD thesis page 126
}
##daily_gradients_for_mean_min_and_max_air_temperature
GradT_Valery2010 <- function(){
RESULT <- matrix(c(
1, 1, 0.434, 0.366, 0.498,
2, 1, 0.434, 0.366, 0.500,
3, 1, 0.435, 0.367, 0.501,
4, 1, 0.436, 0.367, 0.503,
5, 1, 0.437, 0.367, 0.504,
6, 1, 0.439, 0.367, 0.506,
7, 1, 0.440, 0.367, 0.508,
8, 1, 0.441, 0.368, 0.510,
9, 1, 0.442, 0.368, 0.512,
10, 1, 0.444, 0.368, 0.514,
11, 1, 0.445, 0.368, 0.517,
12, 1, 0.446, 0.368, 0.519,
13, 1, 0.448, 0.369, 0.522,
14, 1, 0.450, 0.369, 0.525,
15, 1, 0.451, 0.369, 0.527,
16, 1, 0.453, 0.370, 0.530,
17, 1, 0.455, 0.370, 0.533,
18, 1, 0.456, 0.370, 0.537,
19, 1, 0.458, 0.371, 0.540,
20, 1, 0.460, 0.371, 0.543,
21, 1, 0.462, 0.371, 0.547,
22, 1, 0.464, 0.372, 0.550,
23, 1, 0.466, 0.372, 0.554,
24, 1, 0.468, 0.373, 0.558,
25, 1, 0.470, 0.373, 0.561,
26, 1, 0.472, 0.374, 0.565,
27, 1, 0.474, 0.374, 0.569,
28, 1, 0.476, 0.375, 0.573,
29, 1, 0.478, 0.375, 0.577,
30, 1, 0.480, 0.376, 0.582,
31, 1, 0.483, 0.376, 0.586,
1, 2, 0.485, 0.377, 0.590,
2, 2, 0.487, 0.377, 0.594,
3, 2, 0.489, 0.378, 0.599,
4, 2, 0.492, 0.379, 0.603,
5, 2, 0.494, 0.379, 0.607,
6, 2, 0.496, 0.380, 0.612,
7, 2, 0.498, 0.381, 0.616,
8, 2, 0.501, 0.381, 0.621,
9, 2, 0.503, 0.382, 0.625,
10, 2, 0.505, 0.383, 0.630,
11, 2, 0.508, 0.384, 0.634,
12, 2, 0.510, 0.384, 0.639,
13, 2, 0.512, 0.385, 0.643,
14, 2, 0.515, 0.386, 0.648,
15, 2, 0.517, 0.387, 0.652,
16, 2, 0.519, 0.387, 0.657,
17, 2, 0.522, 0.388, 0.661,
18, 2, 0.524, 0.389, 0.666,
19, 2, 0.526, 0.390, 0.670,
20, 2, 0.528, 0.391, 0.674,
21, 2, 0.530, 0.392, 0.679,
22, 2, 0.533, 0.393, 0.683,
23, 2, 0.535, 0.393, 0.687,
24, 2, 0.537, 0.394, 0.691,
25, 2, 0.539, 0.395, 0.695,
26, 2, 0.541, 0.396, 0.699,
27, 2, 0.543, 0.397, 0.703,
28, 2, 0.545, 0.398, 0.707,
29, 2, 0.546, 0.399, 0.709,
1, 3, 0.547, 0.399, 0.711,
2, 3, 0.549, 0.400, 0.715,
3, 3, 0.551, 0.401, 0.718,
4, 3, 0.553, 0.402, 0.722,
5, 3, 0.555, 0.403, 0.726,
6, 3, 0.557, 0.404, 0.729,
7, 3, 0.559, 0.405, 0.732,
8, 3, 0.560, 0.406, 0.736,
9, 3, 0.562, 0.406, 0.739,
10, 3, 0.564, 0.407, 0.742,
11, 3, 0.566, 0.408, 0.745,
12, 3, 0.567, 0.409, 0.748,
13, 3, 0.569, 0.410, 0.750,
14, 3, 0.570, 0.411, 0.753,
15, 3, 0.572, 0.412, 0.756,
16, 3, 0.573, 0.413, 0.758,
17, 3, 0.575, 0.414, 0.761,
18, 3, 0.576, 0.415, 0.763,
19, 3, 0.577, 0.416, 0.765,
20, 3, 0.579, 0.417, 0.767,
21, 3, 0.580, 0.417, 0.769,
22, 3, 0.581, 0.418, 0.771,
23, 3, 0.582, 0.419, 0.773,
24, 3, 0.583, 0.420, 0.774,
25, 3, 0.584, 0.421, 0.776,
26, 3, 0.585, 0.422, 0.777,
27, 3, 0.586, 0.422, 0.779,
28, 3, 0.587, 0.423, 0.780,
29, 3, 0.588, 0.424, 0.781,
30, 3, 0.589, 0.425, 0.782,
31, 3, 0.590, 0.425, 0.783,
1, 4, 0.591, 0.426, 0.784,
2, 4, 0.591, 0.427, 0.785,
3, 4, 0.592, 0.427, 0.785,
4, 4, 0.593, 0.428, 0.786,
5, 4, 0.593, 0.429, 0.787,
6, 4, 0.594, 0.429, 0.787,
7, 4, 0.595, 0.430, 0.787,
8, 4, 0.595, 0.431, 0.788,
9, 4, 0.596, 0.431, 0.788,
10, 4, 0.596, 0.432, 0.788,
11, 4, 0.597, 0.432, 0.788,
12, 4, 0.597, 0.433, 0.788,
13, 4, 0.597, 0.433, 0.788,
14, 4, 0.598, 0.434, 0.788,
15, 4, 0.598, 0.434, 0.788,
16, 4, 0.598, 0.435, 0.787,
17, 4, 0.599, 0.435, 0.787,
18, 4, 0.599, 0.436, 0.787,
19, 4, 0.599, 0.436, 0.786,
20, 4, 0.599, 0.436, 0.786,
21, 4, 0.600, 0.437, 0.785,
22, 4, 0.600, 0.437, 0.785,
23, 4, 0.600, 0.437, 0.784,
24, 4, 0.600, 0.438, 0.784,
25, 4, 0.600, 0.438, 0.783,
26, 4, 0.601, 0.438, 0.783,
27, 4, 0.601, 0.438, 0.782,
28, 4, 0.601, 0.439, 0.781,
29, 4, 0.601, 0.439, 0.781,
30, 4, 0.601, 0.439, 0.780,
1, 5, 0.601, 0.439, 0.779,
2, 5, 0.601, 0.439, 0.778,
3, 5, 0.601, 0.439, 0.778,
4, 5, 0.601, 0.440, 0.777,
5, 5, 0.601, 0.440, 0.776,
6, 5, 0.601, 0.440, 0.775,
7, 5, 0.601, 0.440, 0.775,
8, 5, 0.601, 0.440, 0.774,
9, 5, 0.601, 0.440, 0.773,
10, 5, 0.602, 0.440, 0.772,
11, 5, 0.602, 0.440, 0.772,
12, 5, 0.602, 0.440, 0.771,
13, 5, 0.602, 0.440, 0.770,
14, 5, 0.602, 0.440, 0.770,
15, 5, 0.602, 0.440, 0.769,
16, 5, 0.602, 0.440, 0.768,
17, 5, 0.602, 0.440, 0.768,
18, 5, 0.602, 0.440, 0.767,
19, 5, 0.602, 0.440, 0.767,
20, 5, 0.602, 0.440, 0.766,
21, 5, 0.602, 0.440, 0.766,
22, 5, 0.602, 0.440, 0.765,
23, 5, 0.602, 0.440, 0.765,
24, 5, 0.602, 0.440, 0.764,
25, 5, 0.602, 0.440, 0.764,
26, 5, 0.602, 0.440, 0.764,
27, 5, 0.602, 0.439, 0.763,
28, 5, 0.602, 0.439, 0.763,
29, 5, 0.602, 0.439, 0.763,
30, 5, 0.602, 0.439, 0.762,
31, 5, 0.602, 0.439, 0.762,
1, 6, 0.602, 0.439, 0.762,
2, 6, 0.602, 0.439, 0.762,
3, 6, 0.602, 0.439, 0.762,
4, 6, 0.602, 0.439, 0.762,
5, 6, 0.602, 0.439, 0.762,
6, 6, 0.602, 0.438, 0.761,
7, 6, 0.602, 0.438, 0.761,
8, 6, 0.602, 0.438, 0.761,
9, 6, 0.602, 0.438, 0.761,
10, 6, 0.602, 0.438, 0.761,
11, 6, 0.602, 0.438, 0.762,
12, 6, 0.602, 0.438, 0.762,
13, 6, 0.602, 0.438, 0.762,
14, 6, 0.602, 0.438, 0.762,
15, 6, 0.602, 0.437, 0.762,
16, 6, 0.602, 0.437, 0.762,
17, 6, 0.602, 0.437, 0.762,
18, 6, 0.602, 0.437, 0.762,
19, 6, 0.602, 0.437, 0.763,
20, 6, 0.602, 0.437, 0.763,
21, 6, 0.602, 0.437, 0.763,
22, 6, 0.602, 0.436, 0.763,
23, 6, 0.602, 0.436, 0.763,
24, 6, 0.602, 0.436, 0.764,
25, 6, 0.602, 0.436, 0.764,
26, 6, 0.601, 0.436, 0.764,
27, 6, 0.601, 0.436, 0.764,
28, 6, 0.601, 0.436, 0.764,
29, 6, 0.601, 0.435, 0.765,
30, 6, 0.601, 0.435, 0.765,
1, 7, 0.601, 0.435, 0.765,
2, 7, 0.600, 0.435, 0.765,
3, 7, 0.600, 0.435, 0.765,
4, 7, 0.600, 0.434, 0.766,
5, 7, 0.600, 0.434, 0.766,
6, 7, 0.599, 0.434, 0.766,
7, 7, 0.599, 0.434, 0.766,
8, 7, 0.599, 0.434, 0.766,
9, 7, 0.598, 0.433, 0.766,
10, 7, 0.598, 0.433, 0.766,
11, 7, 0.598, 0.433, 0.766,
12, 7, 0.597, 0.433, 0.766,
13, 7, 0.597, 0.432, 0.767,
14, 7, 0.597, 0.432, 0.767,
15, 7, 0.596, 0.432, 0.767,
16, 7, 0.596, 0.432, 0.766,
17, 7, 0.595, 0.431, 0.766,
18, 7, 0.595, 0.431, 0.766,
19, 7, 0.594, 0.431, 0.766,
20, 7, 0.594, 0.430, 0.766,
21, 7, 0.593, 0.430, 0.766,
22, 7, 0.593, 0.430, 0.766,
23, 7, 0.592, 0.429, 0.765,
24, 7, 0.592, 0.429, 0.765,
25, 7, 0.591, 0.428, 0.765,
26, 7, 0.590, 0.428, 0.765,
27, 7, 0.590, 0.428, 0.764,
28, 7, 0.589, 0.427, 0.764,
29, 7, 0.588, 0.427, 0.764,
30, 7, 0.588, 0.426, 0.763,
31, 7, 0.587, 0.426, 0.763,
1, 8, 0.586, 0.425, 0.762,
2, 8, 0.586, 0.425, 0.762,
3, 8, 0.585, 0.424, 0.761,
4, 8, 0.584, 0.424, 0.761,
5, 8, 0.583, 0.423, 0.760,
6, 8, 0.583, 0.423, 0.760,
7, 8, 0.582, 0.422, 0.759,
8, 8, 0.581, 0.421, 0.758,
9, 8, 0.580, 0.421, 0.758,
10, 8, 0.579, 0.420, 0.757,
11, 8, 0.578, 0.420, 0.756,
12, 8, 0.578, 0.419, 0.755,
13, 8, 0.577, 0.418, 0.754,
14, 8, 0.576, 0.418, 0.754,
15, 8, 0.575, 0.417, 0.753,
16, 8, 0.574, 0.416, 0.752,
17, 8, 0.573, 0.415, 0.751,
18, 8, 0.572, 0.415, 0.750,
19, 8, 0.571, 0.414, 0.749,
20, 8, 0.570, 0.413, 0.748,
21, 8, 0.569, 0.413, 0.747,
22, 8, 0.569, 0.412, 0.746,
23, 8, 0.568, 0.411, 0.745,
24, 8, 0.567, 0.410, 0.744,
25, 8, 0.566, 0.409, 0.743,
26, 8, 0.565, 0.409, 0.742,
27, 8, 0.564, 0.408, 0.741,
28, 8, 0.563, 0.407, 0.740,
29, 8, 0.562, 0.406, 0.738,
30, 8, 0.561, 0.405, 0.737,
31, 8, 0.560, 0.405, 0.736,
1, 9, 0.558, 0.404, 0.735,
2, 9, 0.557, 0.403, 0.734,
3, 9, 0.556, 0.402, 0.732,
4, 9, 0.555, 0.401, 0.731,
5, 9, 0.554, 0.401, 0.730,
6, 9, 0.553, 0.400, 0.728,
7, 9, 0.552, 0.399, 0.727,
8, 9, 0.551, 0.398, 0.725,
9, 9, 0.550, 0.397, 0.724,
10, 9, 0.549, 0.396, 0.723,
11, 9, 0.548, 0.396, 0.721,
12, 9, 0.546, 0.395, 0.720,
13, 9, 0.545, 0.394, 0.718,
14, 9, 0.544, 0.393, 0.717,
15, 9, 0.543, 0.392, 0.715,
16, 9, 0.542, 0.391, 0.713,
17, 9, 0.541, 0.391, 0.712,
18, 9, 0.540, 0.390, 0.710,
19, 9, 0.538, 0.389, 0.709,
20, 9, 0.537, 0.388, 0.707,
21, 9, 0.536, 0.388, 0.705,
22, 9, 0.535, 0.387, 0.703,
23, 9, 0.533, 0.386, 0.702,
24, 9, 0.532, 0.385, 0.700,
25, 9, 0.531, 0.385, 0.698,
26, 9, 0.530, 0.384, 0.696,
27, 9, 0.528, 0.383, 0.694,
28, 9, 0.527, 0.383, 0.692,
29, 9, 0.526, 0.382, 0.690,
30, 9, 0.525, 0.381, 0.688,
1, 10, 0.523, 0.381, 0.686,
2, 10, 0.522, 0.380, 0.684,
3, 10, 0.521, 0.379, 0.682,
4, 10, 0.519, 0.379, 0.680,
5, 10, 0.518, 0.378, 0.678,
6, 10, 0.517, 0.377, 0.676,
7, 10, 0.515, 0.377, 0.674,
8, 10, 0.514, 0.376, 0.671,
9, 10, 0.512, 0.376, 0.669,
10, 10, 0.511, 0.375, 0.667,
11, 10, 0.510, 0.375, 0.664,
12, 10, 0.508, 0.374, 0.662,
13, 10, 0.507, 0.374, 0.659,
14, 10, 0.505, 0.373, 0.657,
15, 10, 0.504, 0.373, 0.654,
16, 10, 0.502, 0.372, 0.652,
17, 10, 0.501, 0.372, 0.649,
18, 10, 0.499, 0.372, 0.647,
19, 10, 0.498, 0.371, 0.644,
20, 10, 0.496, 0.371, 0.641,
21, 10, 0.495, 0.371, 0.639,
22, 10, 0.493, 0.370, 0.636,
23, 10, 0.492, 0.370, 0.633,
24, 10, 0.490, 0.370, 0.630,
25, 10, 0.489, 0.369, 0.628,
26, 10, 0.487, 0.369, 0.625,
27, 10, 0.485, 0.369, 0.622,
28, 10, 0.484, 0.368, 0.619,
29, 10, 0.482, 0.368, 0.616,
30, 10, 0.481, 0.368, 0.613,
31, 10, 0.479, 0.368, 0.610,
1, 11, 0.478, 0.368, 0.607,
2, 11, 0.476, 0.367, 0.604,
3, 11, 0.475, 0.367, 0.601,
4, 11, 0.473, 0.367, 0.598,
5, 11, 0.471, 0.367, 0.595,
6, 11, 0.470, 0.367, 0.592,
7, 11, 0.468, 0.367, 0.589,
8, 11, 0.467, 0.366, 0.586,
9, 11, 0.465, 0.366, 0.583,
10, 11, 0.464, 0.366, 0.580,
11, 11, 0.462, 0.366, 0.577,
12, 11, 0.461, 0.366, 0.574,
13, 11, 0.459, 0.366, 0.571,
14, 11, 0.458, 0.366, 0.568,
15, 11, 0.456, 0.366, 0.565,
16, 11, 0.455, 0.366, 0.562,
17, 11, 0.454, 0.366, 0.559,
18, 11, 0.452, 0.365, 0.556,
19, 11, 0.451, 0.365, 0.553,
20, 11, 0.450, 0.365, 0.550,
21, 11, 0.448, 0.365, 0.547,
22, 11, 0.447, 0.365, 0.544,
23, 11, 0.446, 0.365, 0.542,
24, 11, 0.445, 0.365, 0.539,
25, 11, 0.443, 0.365, 0.536,
26, 11, 0.442, 0.365, 0.533,
27, 11, 0.441, 0.365, 0.531,
28, 11, 0.440, 0.365, 0.528,
29, 11, 0.439, 0.365, 0.526,
30, 11, 0.438, 0.365, 0.523,
1, 12, 0.437, 0.365, 0.521,
2, 12, 0.436, 0.365, 0.519,
3, 12, 0.435, 0.365, 0.517,
4, 12, 0.434, 0.365, 0.515,
5, 12, 0.434, 0.365, 0.513,
6, 12, 0.433, 0.365, 0.511,
7, 12, 0.432, 0.365, 0.509,
8, 12, 0.431, 0.365, 0.507,
9, 12, 0.431, 0.365, 0.505,
10, 12, 0.430, 0.365, 0.504,
11, 12, 0.430, 0.365, 0.502,
12, 12, 0.429, 0.365, 0.501,
13, 12, 0.429, 0.365, 0.500,
14, 12, 0.429, 0.365, 0.498,
15, 12, 0.428, 0.365, 0.497,
16, 12, 0.428, 0.365, 0.496,
17, 12, 0.428, 0.365, 0.496,
18, 12, 0.428, 0.365, 0.495,
19, 12, 0.428, 0.365, 0.494,
20, 12, 0.428, 0.365, 0.494,
21, 12, 0.428, 0.365, 0.494,
22, 12, 0.428, 0.365, 0.493,
23, 12, 0.429, 0.365, 0.493,
24, 12, 0.429, 0.366, 0.493,
25, 12, 0.429, 0.366, 0.493,
26, 12, 0.430, 0.366, 0.494,
27, 12, 0.430, 0.366, 0.494,
28, 12, 0.431, 0.366, 0.495,
29, 12, 0.431, 0.366, 0.495,
30, 12, 0.432, 0.366, 0.496,
31, 12, 0.433, 0.366, 0.497),ncol=5,byrow=TRUE);
dimnames(RESULT) <- list(1:366,c("day","month","grad_Tmean","grad_Tmin","grad_Tmax"));
return(RESULT);
}
##Format_______________________________________________________________________________________
HypsoData <- as.double(HypsoData);
ZInputs <- as.double(ZInputs);
##ElevationLayers_Creation_____________________________________________________________________
ZLayers <- as.double(rep(NA,NLayers));
if(!identical(HypsoData,as.double(rep(NA,101)))){
nmoy <- 100 %/% NLayers;
nreste <- 100 %% NLayers;
ncont <- 0;
for(iLayer in 1:NLayers){
if(nreste > 0){ nn <- nmoy+1; nreste <- nreste-1; } else { nn <- nmoy; }
if(nn==1){ ZLayers[iLayer] <- HypsoData[ncont+1]; }
if(nn==2){ ZLayers[iLayer] <- 0.5 * (HypsoData[ncont+1] + HypsoData[ncont+2]); }
if(nn>2 ){ ZLayers[iLayer] <- HypsoData[ncont+nn/2]; }
ncont <- ncont+nn;
}
}
##Precipitation_extrapolation__________________________________________________________________ ##Altitudinal_gradient_functions_______________________________________________________________
##Initialisation ##unique_gradient_for_precipitation
LayerPrecip <- list(); GradP_Valery2010 <- function(){
if(identical(ZInputs,HypsoData[51]) & NLayers==1){ return(0.00041); ### value from Val? PhD thesis page 126
LayerPrecip[[1]] <- as.double(Precip); }
} else { ##daily_gradients_for_mean_min_and_max_air_temperature
##Elevation_gradients_for_daily_mean_precipitation GradT_Valery2010 <- function(){
GradP <- GradP_Valery2010(); ### single value RESULT <- matrix(c(
TabGradP <- rep(GradP,length(Precip)); 01, 01, 0.434, 0.366, 0.498,
##Extrapolation 02, 01, 0.434, 0.366, 0.500,
##Thresold_of_inputs_median_elevation 03, 01, 0.435, 0.367, 0.501,
Zthreshold <- 4000; 04, 01, 0.436, 0.367, 0.503,
##_On_each_elevation_layer... 05, 01, 0.437, 0.367, 0.504,
for(iLayer in 1:NLayers){ 06, 01, 0.439, 0.367, 0.506,
##If_layer_elevation_smaller_than_Zthreshold 07, 01, 0.440, 0.367, 0.508,
if(ZLayers[iLayer] <= Zthreshold){ 08, 01, 0.441, 0.368, 0.510,
LayerPrecip[[iLayer]] <- as.double(Precip*exp(TabGradP*(ZLayers[iLayer]-ZInputs))); 09, 01, 0.442, 0.368, 0.512,
##If_layer_elevation_greater_than_Zthreshold 10, 01, 0.444, 0.368, 0.514,
} else { 11, 01, 0.445, 0.368, 0.517,
##If_inputs_median_elevation_smaller_than_Zthreshold 12, 01, 0.446, 0.368, 0.519,
if(ZInputs <= Zthreshold){ LayerPrecip[[iLayer]] <- as.double(Precip*exp(TabGradP*(Zthreshold-ZInputs))); 13, 01, 0.448, 0.369, 0.522,
##If_inputs_median_elevation_greater_then_Zthreshold 14, 01, 0.450, 0.369, 0.525,
} else { LayerPrecip[[iLayer]] <- as.double(Precip); } 15, 01, 0.451, 0.369, 0.527,
} 16, 01, 0.453, 0.370, 0.530,
} 17, 01, 0.455, 0.370, 0.533,
} 18, 01, 0.456, 0.370, 0.537,
19, 01, 0.458, 0.371, 0.540,
20, 01, 0.460, 0.371, 0.543,
21, 01, 0.462, 0.371, 0.547,
##Temperature_extrapolation____________________________________________________________________ 22, 01, 0.464, 0.372, 0.550,
##Initialisation 23, 01, 0.466, 0.372, 0.554,
LayerTempMean <- list(); LayerTempMin <- list(); LayerTempMax <- list(); 24, 01, 0.468, 0.373, 0.558,
if(identical(ZInputs,HypsoData[51]) & NLayers==1) { 25, 01, 0.470, 0.373, 0.561,
LayerTempMean[[1]] <- as.double(TempMean); 26, 01, 0.472, 0.374, 0.565,
if(!is.null(TempMin) & !is.null(TempMax)){ LayerTempMin[[1]] <- as.double(TempMin); LayerTempMax[[1]] <- as.double(TempMax); } 27, 01, 0.474, 0.374, 0.569,
28, 01, 0.476, 0.375, 0.573,
29, 01, 0.478, 0.375, 0.577,
30, 01, 0.480, 0.376, 0.582,
31, 01, 0.483, 0.376, 0.586,
01, 02, 0.485, 0.377, 0.590,
02, 02, 0.487, 0.377, 0.594,
03, 02, 0.489, 0.378, 0.599,
04, 02, 0.492, 0.379, 0.603,
05, 02, 0.494, 0.379, 0.607,
06, 02, 0.496, 0.380, 0.612,
07, 02, 0.498, 0.381, 0.616,
08, 02, 0.501, 0.381, 0.621,
09, 02, 0.503, 0.382, 0.625,
10, 02, 0.505, 0.383, 0.630,
11, 02, 0.508, 0.384, 0.634,
12, 02, 0.510, 0.384, 0.639,
13, 02, 0.512, 0.385, 0.643,
14, 02, 0.515, 0.386, 0.648,
15, 02, 0.517, 0.387, 0.652,
16, 02, 0.519, 0.387, 0.657,
17, 02, 0.522, 0.388, 0.661,
18, 02, 0.524, 0.389, 0.666,
19, 02, 0.526, 0.390, 0.670,
20, 02, 0.528, 0.391, 0.674,
21, 02, 0.530, 0.392, 0.679,
22, 02, 0.533, 0.393, 0.683,
23, 02, 0.535, 0.393, 0.687,
24, 02, 0.537, 0.394, 0.691,
25, 02, 0.539, 0.395, 0.695,
26, 02, 0.541, 0.396, 0.699,
27, 02, 0.543, 0.397, 0.703,
28, 02, 0.545, 0.398, 0.707,
29, 02, 0.546, 0.399, 0.709,
01, 03, 0.547, 0.399, 0.711,
02, 03, 0.549, 0.400, 0.715,
03, 03, 0.551, 0.401, 0.718,
04, 03, 0.553, 0.402, 0.722,
05, 03, 0.555, 0.403, 0.726,
06, 03, 0.557, 0.404, 0.729,
07, 03, 0.559, 0.405, 0.732,
08, 03, 0.560, 0.406, 0.736,
09, 03, 0.562, 0.406, 0.739,
10, 03, 0.564, 0.407, 0.742,
11, 03, 0.566, 0.408, 0.745,
12, 03, 0.567, 0.409, 0.748,
13, 03, 0.569, 0.410, 0.750,
14, 03, 0.570, 0.411, 0.753,
15, 03, 0.572, 0.412, 0.756,
16, 03, 0.573, 0.413, 0.758,
17, 03, 0.575, 0.414, 0.761,
18, 03, 0.576, 0.415, 0.763,
19, 03, 0.577, 0.416, 0.765,
20, 03, 0.579, 0.417, 0.767,
21, 03, 0.580, 0.417, 0.769,
22, 03, 0.581, 0.418, 0.771,
23, 03, 0.582, 0.419, 0.773,
24, 03, 0.583, 0.420, 0.774,
25, 03, 0.584, 0.421, 0.776,
26, 03, 0.585, 0.422, 0.777,
27, 03, 0.586, 0.422, 0.779,
28, 03, 0.587, 0.423, 0.780,
29, 03, 0.588, 0.424, 0.781,
30, 03, 0.589, 0.425, 0.782,
31, 03, 0.590, 0.425, 0.783,
01, 04, 0.591, 0.426, 0.784,
02, 04, 0.591, 0.427, 0.785,
03, 04, 0.592, 0.427, 0.785,
04, 04, 0.593, 0.428, 0.786,
05, 04, 0.593, 0.429, 0.787,
06, 04, 0.594, 0.429, 0.787,
07, 04, 0.595, 0.430, 0.787,
08, 04, 0.595, 0.431, 0.788,
09, 04, 0.596, 0.431, 0.788,
10, 04, 0.596, 0.432, 0.788,
11, 04, 0.597, 0.432, 0.788,
12, 04, 0.597, 0.433, 0.788,
13, 04, 0.597, 0.433, 0.788,
14, 04, 0.598, 0.434, 0.788,
15, 04, 0.598, 0.434, 0.788,
16, 04, 0.598, 0.435, 0.787,
17, 04, 0.599, 0.435, 0.787,
18, 04, 0.599, 0.436, 0.787,
19, 04, 0.599, 0.436, 0.786,
20, 04, 0.599, 0.436, 0.786,
21, 04, 0.600, 0.437, 0.785,
22, 04, 0.600, 0.437, 0.785,
23, 04, 0.600, 0.437, 0.784,
24, 04, 0.600, 0.438, 0.784,
25, 04, 0.600, 0.438, 0.783,
26, 04, 0.601, 0.438, 0.783,
27, 04, 0.601, 0.438, 0.782,
28, 04, 0.601, 0.439, 0.781,
29, 04, 0.601, 0.439, 0.781,
30, 04, 0.601, 0.439, 0.780,
01, 05, 0.601, 0.439, 0.779,
02, 05, 0.601, 0.439, 0.778,
03, 05, 0.601, 0.439, 0.778,
04, 05, 0.601, 0.440, 0.777,
05, 05, 0.601, 0.440, 0.776,
06, 05, 0.601, 0.440, 0.775,
07, 05, 0.601, 0.440, 0.775,
08, 05, 0.601, 0.440, 0.774,
09, 05, 0.601, 0.440, 0.773,
10, 05, 0.602, 0.440, 0.772,
11, 05, 0.602, 0.440, 0.772,
12, 05, 0.602, 0.440, 0.771,
13, 05, 0.602, 0.440, 0.770,
14, 05, 0.602, 0.440, 0.770,
15, 05, 0.602, 0.440, 0.769,
16, 05, 0.602, 0.440, 0.768,
17, 05, 0.602, 0.440, 0.768,
18, 05, 0.602, 0.440, 0.767,
19, 05, 0.602, 0.440, 0.767,
20, 05, 0.602, 0.440, 0.766,
21, 05, 0.602, 0.440, 0.766,
22, 05, 0.602, 0.440, 0.765,
23, 05, 0.602, 0.440, 0.765,
24, 05, 0.602, 0.440, 0.764,
25, 05, 0.602, 0.440, 0.764,
26, 05, 0.602, 0.440, 0.764,
27, 05, 0.602, 0.439, 0.763,
28, 05, 0.602, 0.439, 0.763,
29, 05, 0.602, 0.439, 0.763,
30, 05, 0.602, 0.439, 0.762,
31, 05, 0.602, 0.439, 0.762,
01, 06, 0.602, 0.439, 0.762,
02, 06, 0.602, 0.439, 0.762,
03, 06, 0.602, 0.439, 0.762,
04, 06, 0.602, 0.439, 0.762,
05, 06, 0.602, 0.439, 0.762,
06, 06, 0.602, 0.438, 0.761,
07, 06, 0.602, 0.438, 0.761,
08, 06, 0.602, 0.438, 0.761,
09, 06, 0.602, 0.438, 0.761,
10, 06, 0.602, 0.438, 0.761,
11, 06, 0.602, 0.438, 0.762,
12, 06, 0.602, 0.438, 0.762,
13, 06, 0.602, 0.438, 0.762,
14, 06, 0.602, 0.438, 0.762,
15, 06, 0.602, 0.437, 0.762,
16, 06, 0.602, 0.437, 0.762,
17, 06, 0.602, 0.437, 0.762,
18, 06, 0.602, 0.437, 0.762,
19, 06, 0.602, 0.437, 0.763,
20, 06, 0.602, 0.437, 0.763,
21, 06, 0.602, 0.437, 0.763,
22, 06, 0.602, 0.436, 0.763,
23, 06, 0.602, 0.436, 0.763,
24, 06, 0.602, 0.436, 0.764,
25, 06, 0.602, 0.436, 0.764,
26, 06, 0.601, 0.436, 0.764,
27, 06, 0.601, 0.436, 0.764,
28, 06, 0.601, 0.436, 0.764,
29, 06, 0.601, 0.435, 0.765,
30, 06, 0.601, 0.435, 0.765,
01, 07, 0.601, 0.435, 0.765,
02, 07, 0.600, 0.435, 0.765,
03, 07, 0.600, 0.435, 0.765,
04, 07, 0.600, 0.434, 0.766,
05, 07, 0.600, 0.434, 0.766,
06, 07, 0.599, 0.434, 0.766,
07, 07, 0.599, 0.434, 0.766,
08, 07, 0.599, 0.434, 0.766,
09, 07, 0.598, 0.433, 0.766,
10, 07, 0.598, 0.433, 0.766,
11, 07, 0.598, 0.433, 0.766,
12, 07, 0.597, 0.433, 0.766,
13, 07, 0.597, 0.432, 0.767,
14, 07, 0.597, 0.432, 0.767,
15, 07, 0.596, 0.432, 0.767,
16, 07, 0.596, 0.432, 0.766,
17, 07, 0.595, 0.431, 0.766,
18, 07, 0.595, 0.431, 0.766,
19, 07, 0.594, 0.431, 0.766,
20, 07, 0.594, 0.430, 0.766,
21, 07, 0.593, 0.430, 0.766,
22, 07, 0.593, 0.430, 0.766,
23, 07, 0.592, 0.429, 0.765,
24, 07, 0.592, 0.429, 0.765,
25, 07, 0.591, 0.428, 0.765,
26, 07, 0.590, 0.428, 0.765,
27, 07, 0.590, 0.428, 0.764,
28, 07, 0.589, 0.427, 0.764,
29, 07, 0.588, 0.427, 0.764,
30, 07, 0.588, 0.426, 0.763,
31, 07, 0.587, 0.426, 0.763,
01, 08, 0.586, 0.425, 0.762,
02, 08, 0.586, 0.425, 0.762,
03, 08, 0.585, 0.424, 0.761,
04, 08, 0.584, 0.424, 0.761,
05, 08, 0.583, 0.423, 0.760,
06, 08, 0.583, 0.423, 0.760,
07, 08, 0.582, 0.422, 0.759,
08, 08, 0.581, 0.421, 0.758,
09, 08, 0.580, 0.421, 0.758,
10, 08, 0.579, 0.420, 0.757,
11, 08, 0.578, 0.420, 0.756,
12, 08, 0.578, 0.419, 0.755,
13, 08, 0.577, 0.418, 0.754,
14, 08, 0.576, 0.418, 0.754,
15, 08, 0.575, 0.417, 0.753,
16, 08, 0.574, 0.416, 0.752,
17, 08, 0.573, 0.415, 0.751,
18, 08, 0.572, 0.415, 0.750,
19, 08, 0.571, 0.414, 0.749,
20, 08, 0.570, 0.413, 0.748,
21, 08, 0.569, 0.413, 0.747,
22, 08, 0.569, 0.412, 0.746,
23, 08, 0.568, 0.411, 0.745,
24, 08, 0.567, 0.410, 0.744,
25, 08, 0.566, 0.409, 0.743,
26, 08, 0.565, 0.409, 0.742,
27, 08, 0.564, 0.408, 0.741,
28, 08, 0.563, 0.407, 0.740,
29, 08, 0.562, 0.406, 0.738,
30, 08, 0.561, 0.405, 0.737,
31, 08, 0.560, 0.405, 0.736,
01, 09, 0.558, 0.404, 0.735,
02, 09, 0.557, 0.403, 0.734,
03, 09, 0.556, 0.402, 0.732,
04, 09, 0.555, 0.401, 0.731,
05, 09, 0.554, 0.401, 0.730,
06, 09, 0.553, 0.400, 0.728,
07, 09, 0.552, 0.399, 0.727,
08, 09, 0.551, 0.398, 0.725,
09, 09, 0.550, 0.397, 0.724,
10, 09, 0.549, 0.396, 0.723,
11, 09, 0.548, 0.396, 0.721,
12, 09, 0.546, 0.395, 0.720,
13, 09, 0.545, 0.394, 0.718,
14, 09, 0.544, 0.393, 0.717,
15, 09, 0.543, 0.392, 0.715,
16, 09, 0.542, 0.391, 0.713,
17, 09, 0.541, 0.391, 0.712,
18, 09, 0.540, 0.390, 0.710,
19, 09, 0.538, 0.389, 0.709,
20, 09, 0.537, 0.388, 0.707,
21, 09, 0.536, 0.388, 0.705,
22, 09, 0.535, 0.387, 0.703,
23, 09, 0.533, 0.386, 0.702,
24, 09, 0.532, 0.385, 0.700,
25, 09, 0.531, 0.385, 0.698,
26, 09, 0.530, 0.384, 0.696,
27, 09, 0.528, 0.383, 0.694,
28, 09, 0.527, 0.383, 0.692,
29, 09, 0.526, 0.382, 0.690,
30, 09, 0.525, 0.381, 0.688,
01, 10, 0.523, 0.381, 0.686,
02, 10, 0.522, 0.380, 0.684,
03, 10, 0.521, 0.379, 0.682,
04, 10, 0.519, 0.379, 0.680,
05, 10, 0.518, 0.378, 0.678,
06, 10, 0.517, 0.377, 0.676,
07, 10, 0.515, 0.377, 0.674,
08, 10, 0.514, 0.376, 0.671,
09, 10, 0.512, 0.376, 0.669,
10, 10, 0.511, 0.375, 0.667,
11, 10, 0.510, 0.375, 0.664,
12, 10, 0.508, 0.374, 0.662,
13, 10, 0.507, 0.374, 0.659,
14, 10, 0.505, 0.373, 0.657,
15, 10, 0.504, 0.373, 0.654,
16, 10, 0.502, 0.372, 0.652,
17, 10, 0.501, 0.372, 0.649,
18, 10, 0.499, 0.372, 0.647,
19, 10, 0.498, 0.371, 0.644,
20, 10, 0.496, 0.371, 0.641,
21, 10, 0.495, 0.371, 0.639,
22, 10, 0.493, 0.370, 0.636,
23, 10, 0.492, 0.370, 0.633,
24, 10, 0.490, 0.370, 0.630,
25, 10, 0.489, 0.369, 0.628,
26, 10, 0.487, 0.369, 0.625,
27, 10, 0.485, 0.369, 0.622,
28, 10, 0.484, 0.368, 0.619,
29, 10, 0.482, 0.368, 0.616,
30, 10, 0.481, 0.368, 0.613,
31, 10, 0.479, 0.368, 0.610,
01, 11, 0.478, 0.368, 0.607,
02, 11, 0.476, 0.367, 0.604,
03, 11, 0.475, 0.367, 0.601,
04, 11, 0.473, 0.367, 0.598,
05, 11, 0.471, 0.367, 0.595,
06, 11, 0.470, 0.367, 0.592,
07, 11, 0.468, 0.367, 0.589,
08, 11, 0.467, 0.366, 0.586,
09, 11, 0.465, 0.366, 0.583,
10, 11, 0.464, 0.366, 0.580,
11, 11, 0.462, 0.366, 0.577,
12, 11, 0.461, 0.366, 0.574,
13, 11, 0.459, 0.366, 0.571,
14, 11, 0.458, 0.366, 0.568,
15, 11, 0.456, 0.366, 0.565,
16, 11, 0.455, 0.366, 0.562,
17, 11, 0.454, 0.366, 0.559,
18, 11, 0.452, 0.365, 0.556,
19, 11, 0.451, 0.365, 0.553,
20, 11, 0.450, 0.365, 0.550,
21, 11, 0.448, 0.365, 0.547,
22, 11, 0.447, 0.365, 0.544,
23, 11, 0.446, 0.365, 0.542,
24, 11, 0.445, 0.365, 0.539,
25, 11, 0.443, 0.365, 0.536,
26, 11, 0.442, 0.365, 0.533,
27, 11, 0.441, 0.365, 0.531,
28, 11, 0.440, 0.365, 0.528,
29, 11, 0.439, 0.365, 0.526,
30, 11, 0.438, 0.365, 0.523,
01, 12, 0.437, 0.365, 0.521,
02, 12, 0.436, 0.365, 0.519,
03, 12, 0.435, 0.365, 0.517,
04, 12, 0.434, 0.365, 0.515,
05, 12, 0.434, 0.365, 0.513,
06, 12, 0.433, 0.365, 0.511,
07, 12, 0.432, 0.365, 0.509,
08, 12, 0.431, 0.365, 0.507,
09, 12, 0.431, 0.365, 0.505,
10, 12, 0.430, 0.365, 0.504,
11, 12, 0.430, 0.365, 0.502,
12, 12, 0.429, 0.365, 0.501,
13, 12, 0.429, 0.365, 0.500,
14, 12, 0.429, 0.365, 0.498,
15, 12, 0.428, 0.365, 0.497,
16, 12, 0.428, 0.365, 0.496,
17, 12, 0.428, 0.365, 0.496,
18, 12, 0.428, 0.365, 0.495,
19, 12, 0.428, 0.365, 0.494,
20, 12, 0.428, 0.365, 0.494,
21, 12, 0.428, 0.365, 0.494,
22, 12, 0.428, 0.365, 0.493,
23, 12, 0.429, 0.365, 0.493,
24, 12, 0.429, 0.366, 0.493,
25, 12, 0.429, 0.366, 0.493,
26, 12, 0.430, 0.366, 0.494,
27, 12, 0.430, 0.366, 0.494,
28, 12, 0.431, 0.366, 0.495,
29, 12, 0.431, 0.366, 0.495,
30, 12, 0.432, 0.366, 0.496,
31, 12, 0.433, 0.366, 0.497),ncol=5,byrow=TRUE);
dimnames(RESULT) <- list(1:366,c("day","month","grad_Tmean","grad_Tmin","grad_Tmax"));
return(RESULT);
}
##Format_______________________________________________________________________________________
HypsoData <- as.double(HypsoData);
ZInputs <- as.double(ZInputs);
##ElevationLayers_Creation_____________________________________________________________________
ZLayers <- as.double(rep(NA,NLayers));
if(!identical(HypsoData,as.double(rep(NA,101)))){
nmoy <- 100 %/% NLayers;
nreste <- 100 %% NLayers;
ncont <- 0;
for(iLayer in 1:NLayers){
if(nreste > 0){ nn <- nmoy+1; nreste <- nreste-1; } else { nn <- nmoy; }
if(nn==1){ ZLayers[iLayer] <- HypsoData[ncont+1]; }
if(nn==2){ ZLayers[iLayer] <- 0.5 * (HypsoData[ncont+1] + HypsoData[ncont+2]); }
if(nn>2 ){ ZLayers[iLayer] <- HypsoData[ncont+nn/2]; }
ncont <- ncont+nn;
}
}
##Precipitation_extrapolation__________________________________________________________________
##Initialisation
if (identical(ZInputs, HypsoData[51]) & NLayers == 1) {
LayerPrecip <- list(as.double(Precip))
} else {
##Elevation_gradients_for_daily_mean_precipitation
GradP <- GradP_Valery2010() ### single value
TabGradP <- rep(GradP, length(Precip))
##Extrapolation
##Thresold_of_inputs_median_elevation
Zthreshold <- 4000
LayerPrecip_df <- sapply(1:NLayers, function(iLayer) {
##If_layer_elevation_smaller_than_Zthreshold
if (ZLayers[iLayer] <= Zthreshold) {
prcp <- as.double(Precip * exp(TabGradP * (ZLayers[iLayer] - ZInputs)))
##If_layer_elevation_greater_than_Zthreshold
} else { } else {
##Elevation_gradients_for_daily_mean_min_and_max_temperature ##If_inputs_median_elevation_smaller_than_Zthreshold
GradT <- as.data.frame(GradT_Valery2010()) if (ZInputs <= Zthreshold) {
iday <- match(format(DatesR,format="%d%m"), sprintf("%02i%02i", GradT[, "day"], GradT[, "month"])) prcp <- as.double(Precip * exp(TabGradP*(Zthreshold - ZInputs)))
TabGradT <- GradT[iday, c("grad_Tmean", "grad_Tmin", "grad_Tmax")] ##If_inputs_median_elevation_greater_then_Zthreshold
##Extrapolation } else {
##On_each_elevation_layer... prcp <- as.double(Precip)
for(iLayer in 1:NLayers){
LayerTempMean[[iLayer]] <- as.double(TempMean + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmean"])/100);
if(!is.null(TempMin) & !is.null(TempMax)){
LayerTempMin[[iLayer]] <- as.double(TempMin + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmin"])/100);
LayerTempMax[[iLayer]] <- as.double(TempMax + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmax"])/100);
}
} }
} }
return(prcp)
}
)
##Solid_Fraction_for_each_elevation_layer______________________________________________________ if (PrecipScale) {
LayerFracSolidPrecip <- list(); LayerPrecip_df <- LayerPrecip_df / rowMeans(LayerPrecip_df) * Precip
##Thresold_of_inputs_median_elevation LayerPrecip_df[is.nan(LayerPrecip_df)] <- 0
Zthreshold <- 1500; }
##On_each_elevation_layer... LayerPrecip <- lapply(seq_len(ncol(LayerPrecip_df)), function(x) LayerPrecip_df[, x])
for(iLayer in 1:NLayers){ }
Option <- "USACE";
if(!is.na(ZInputs)){ if(ZInputs < Zthreshold & !is.null(TempMin) & !is.null(TempMax)){ Option <- "Hydrotel"; } }
##Turcotte_formula_from_Hydrotel
if(Option=="Hydrotel"){ ##Temperature_extrapolation____________________________________________________________________
TempMin <- LayerTempMin[[iLayer]]; ##Initialisation
TempMax <- LayerTempMax[[iLayer]]; LayerTempMean <- list(); LayerTempMin <- list(); LayerTempMax <- list();
SolidFraction <- 1 - TempMax/(TempMax - TempMin); if(identical(ZInputs,HypsoData[51]) & NLayers==1) {
SolidFraction[TempMin >= 0] <- 0; LayerTempMean[[1]] <- as.double(TempMean);
SolidFraction[TempMax <= 0] <- 1; if(!is.null(TempMin) & !is.null(TempMax)){ LayerTempMin[[1]] <- as.double(TempMin); LayerTempMax[[1]] <- as.double(TempMax); }
} } else {
##USACE_formula ##Elevation_gradients_for_daily_mean_min_and_max_temperature
if(Option=="USACE"){ GradT <- as.data.frame(GradT_Valery2010())
USACE_Tmin <- -1.0; iday <- match(format(DatesR,format="%d%m"), sprintf("%02i%02i", GradT[, "day"], GradT[, "month"]))
USACE_Tmax <- 3.0; TabGradT <- GradT[iday, c("grad_Tmean", "grad_Tmin", "grad_Tmax")]
TempMean <- LayerTempMean[[iLayer]]; ##Extrapolation
SolidFraction <- 1- (TempMean - USACE_Tmin)/(USACE_Tmax - USACE_Tmin); ##On_each_elevation_layer...
SolidFraction[TempMean > USACE_Tmax] <- 0; for(iLayer in 1:NLayers){
SolidFraction[TempMean < USACE_Tmin] <- 1; LayerTempMean[[iLayer]] <- as.double(TempMean + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmean"])/100);
} if(!is.null(TempMin) & !is.null(TempMax)){
LayerFracSolidPrecip[[iLayer]] <- as.double(SolidFraction); LayerTempMin[[iLayer]] <- as.double(TempMin + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmin"])/100);
LayerTempMax[[iLayer]] <- as.double(TempMax + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmax"])/100);
} }
}
}
##END__________________________________________________________________________________________
return(list(LayerPrecip=LayerPrecip,LayerTempMean=LayerTempMean,LayerTempMin=LayerTempMin,LayerTempMax=LayerTempMax, ##Solid_Fraction_for_each_elevation_layer______________________________________________________
LayerFracSolidPrecip=LayerFracSolidPrecip,ZLayers=ZLayers)); LayerFracSolidPrecip <- list();
##Thresold_of_inputs_median_elevation
Zthreshold <- 1500;
##On_each_elevation_layer...
for(iLayer in 1:NLayers){
Option <- "USACE";
if(!is.na(ZInputs)){ if(ZInputs < Zthreshold & !is.null(TempMin) & !is.null(TempMax)){ Option <- "Hydrotel"; } }
##Turcotte_formula_from_Hydrotel
if(Option=="Hydrotel"){
TempMin <- LayerTempMin[[iLayer]];
TempMax <- LayerTempMax[[iLayer]];
SolidFraction <- 1 - TempMax/(TempMax - TempMin);
SolidFraction[TempMin >= 0] <- 0;
SolidFraction[TempMax <= 0] <- 1;
}
##USACE_formula
if(Option=="USACE"){
USACE_Tmin <- -1.0;
USACE_Tmax <- 3.0;
TempMean <- LayerTempMean[[iLayer]];
SolidFraction <- 1- (TempMean - USACE_Tmin)/(USACE_Tmax - USACE_Tmin);
SolidFraction[TempMean > USACE_Tmax] <- 0;
SolidFraction[TempMean < USACE_Tmin] <- 1;
}
LayerFracSolidPrecip[[iLayer]] <- as.double(SolidFraction);
}
##END__________________________________________________________________________________________
return(list(LayerPrecip=LayerPrecip,LayerTempMean=LayerTempMean,LayerTempMin=LayerTempMin,LayerTempMax=LayerTempMax,
LayerFracSolidPrecip=LayerFracSolidPrecip,ZLayers=ZLayers));
} }
...@@ -18,13 +18,13 @@ citEntry(entry="Manual", ...@@ -18,13 +18,13 @@ citEntry(entry="Manual",
author = personList(as.person("L. Coron"), as.person("C. Perrin"), as.person("C. Michel")), author = personList(as.person("L. Coron"), as.person("C. Perrin"), as.person("C. Michel")),
journal = "R News", journal = "R News",
year = "2017", year = "2017",
note = "R package version 1.0.5.2", note = "R package version 1.0.5.3",
url = "https://webgr.irstea.fr/airGR/?lang=en", url = "https://webgr.irstea.fr/airGR/?lang=en",
textVersion = textVersion =
paste("Coron, L., Perrin, C. and Michel, C.", paste("Coron, L., Perrin, C. and Michel, C.",
"(2017).", "(2017).",
"airGR: Suite of GR hydrological models for precipitation-runoff modelling.", "airGR: Suite of GR hydrological models for precipitation-runoff modelling.",
"R package version 1.0.5.2.", "R package version 1.0.5.3.",
"https://webgr.irstea.fr/airGR/?lang=en.", "https://webgr.irstea.fr/airGR/?lang=en.",
sep = " ") sep = " ")
) )
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
\alias{CreateInputsModel} \alias{CreateInputsModel}
\title{Creation of the InputsModel object required to the RunModel functions} \title{Creation of the InputsModel object required to the RunModel functions}
\usage{ \usage{
CreateInputsModel(FUN_MOD, DatesR, Precip, PotEvap = NULL, TempMean = NULL, CreateInputsModel(FUN_MOD, DatesR, Precip, PrecipScale = TRUE, PotEvap = NULL,
TempMin = NULL, TempMax = NULL, ZInputs = NULL, HypsoData = NULL, TempMean = NULL, TempMin = NULL, TempMax = NULL, ZInputs = NULL, HypsoData = NULL,
NLayers = 5, verbose = TRUE) NLayers = 5, verbose = TRUE)
} }
\arguments{ \arguments{
...@@ -14,6 +14,8 @@ CreateInputsModel(FUN_MOD, DatesR, Precip, PotEvap = NULL, TempMean = NULL, ...@@ -14,6 +14,8 @@ CreateInputsModel(FUN_MOD, DatesR, Precip, PotEvap = NULL, TempMean = NULL,
\item{Precip}{[numeric] time series of total precipitation (catchment average) [mm], required to create the GR model and CemaNeige module inputs} \item{Precip}{[numeric] time series of total precipitation (catchment average) [mm], required to create the GR model and CemaNeige module inputs}
\item{PrecipScale}{(optional) [boolean] indicating if the mean of the precipitation interpolated on the elevation layers must be kept or not, required to create CemaNeige module inputs, default = \code{TRUE} (the mean of the precipitation is kept to the original value)}
\item{PotEvap}{[numeric] time series of potential evapotranspiration (catchment average) [mm], required to create the GR model inputs} \item{PotEvap}{[numeric] time series of potential evapotranspiration (catchment average) [mm], required to create the GR model inputs}
\item{TempMean}{(optional) [numeric] time series of mean air temperature [°C], required to create the CemaNeige module inputs} \item{TempMean}{(optional) [numeric] time series of mean air temperature [°C], required to create the CemaNeige module inputs}
......
...@@ -3,14 +3,17 @@ ...@@ -3,14 +3,17 @@
\alias{DataAltiExtrapolation_Valery} \alias{DataAltiExtrapolation_Valery}
\title{Altitudinal extrapolation of precipitation and temperature series described by A. Valery} \title{Altitudinal extrapolation of precipitation and temperature series described by A. Valery}
\usage{ \usage{
DataAltiExtrapolation_Valery(DatesR, Precip, TempMean, TempMin = NULL, DataAltiExtrapolation_Valery(DatesR, Precip, PrecipScale = TRUE,
TempMax = NULL, ZInputs, HypsoData, NLayers, verbose = TRUE) TempMean, TempMin = NULL, TempMax = NULL,
ZInputs, HypsoData, NLayers, verbose = TRUE)
} }
\arguments{ \arguments{
\item{DatesR}{[POSIXt] vector of dates} \item{DatesR}{[POSIXt] vector of dates}
\item{Precip}{[numeric] time series of daily total precipitation (catchment average) [mm]} \item{Precip}{[numeric] time series of daily total precipitation (catchment average) [mm]}
\item{PrecipScale}{(optional) [boolean] indicating if the mean of the precipitation interpolated on the elevation layers must be kept or not, required to create CemaNeige module inputs, default = \code{TRUE} (the mean of the precipitation is kept to the original value)}
\item{TempMean}{[numeric] time series of daily mean air temperature [°C]} \item{TempMean}{[numeric] time series of daily mean air temperature [°C]}
\item{TempMin}{(optional) [numeric] time series of daily min air temperature [°C]} \item{TempMin}{(optional) [numeric] time series of daily min air temperature [°C]}
......
Supports Markdown
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