quefts: QUEFTS model

Description Usage Arguments Details Value References Examples

Description

Create a QUEFTS model, set parameters, and run it to compute nutrient requirements and nutrient limited yield.

A number of default crop parameter sets are provided, as well as one example soil. You need to provide attainable (that is, yield without nutrient limitation), or target dry-matter biomass for leaves, stems and the storage organ (e.g. grain, root or tuber). Some crops are grown for the stems/leaves, in which case there is no relevant storage organ (e.g. sugarcane, jute). Attanable yield estimates can be obtained with a crop growht model.

Usage

1
2
3
4
5
6
7
8
9
quefts(soil, crop, fert, biom)
quefts_soil()
quefts_fert()
quefts_crop(name="")
quefts_biom()
crop(x) <- value
soil(x) <- value
fert(x) <- value
biom(x) <- value

Arguments

soil

list with named soil parameters. See Details. An example is returned by quefts_soil()

crop

list with named crop parameters. See Details. An example is returned by quefts_crop()

fert

list with named fertilizer parameters (N, P and K). An example is returned by quefts_fert()

biom

list with named biomass and growing season length parameters. An example is returned by quefts_biom()

name

character. crop name

x

QueftsModel object

value

a list with soil, crop, fertlizer, or yield parameters as above

Details

Input Parameters Explanation
Soil .
N_base_supply, P_base_supply, K_base_supply Potential supply (kg/ha) of N, P and K of the (unfertilzed) soil in a growing season of standard length (default is 120 days). See soilNutrientSupply to estimate that.
N_recovery, P_recovery, K_recovery Fertilzer recovey, that is, the fraction of applied fertilizer that can be taken up by the plant.
UptakeAdjust Two-colum matrix to compute the fraction uptake from soil supply as function of length of season. The default standard season length is 120 days. The first column is the length of the growing season, the second column is the fraction uptake. Intermediate values are computed by linear interpolation.
Crop .
_minVeg, _maxVeg, _minStore, _maxStore minimum and maximum concentration of "_" (N, P, or K) in vegetative organs and in storage organs (kg/kg)
Yzero the maximum biomass of vegetative organs at zero yield of storage organs (kg/ha)
Nfix the fraction of a crop's nitrogen uptake supplied by biological fixation
Managment .
N, P, K N, P, and K fertilzer applied.
Crop yield .
leaf_att, stem_att, store_att Attainable (in the absence of nutirent limitation), or target crop biomass (dry-matter, kg/ha) for leaves, stems and storage organs.
SeasonLength Length of the growing season (days)
.
.
Output Variables Explanation
N_actual_supply, P_actual_supply, K_actual_supply nutrient uptake from soil (not fertilzer) (kg/ha)
leaf_lim, stem_lim, store_lim nutrient limited biomass of leaves, stems, and storage organ (kg/ha)
N_gap, P_gap, K_gap fertilizer required to reach the specified biomass (kg/ha)

Value

vector with output variables as described in the Details

References

Janssen et al., 1990. A system for the quantitative evaluation of tropical soils. Geoderma 46: 299-318

Sattari et al., 2014. Crop yield response to soil fertility and N, P, K inputs in different environments: Testing and improving the QUEFTS model. Field Crops Research 157:35-46

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
library(Rquefts)

# create a QUEFTS model
# 1 get parameters
soiltype <- quefts_soil()
barley <- quefts_crop('Barley')
fertilizer <- list(N=0, P=0, K=0)
yld <- list(leaf_att=2200, stem_att=2700, store_att=4800, SeasonLength=110)

# create model
q <- quefts(soiltype, barley, fertilizer, yld)

# run the model
q$run()

# change some parameters
q$SeasonLength <- 162
q$leaf_att <- 2651
q$stem_att <- 5053
q$store_att <- 8208

q$N <- 100
q$P <- 50
q$K <- 50

q$run()


fert(q) <- list(N=0, P=0, K=0)
N <- 1:20*10

results <- matrix(nrow=length(N), ncol=12)
colnames(results) <- names(q$run())
for (i in 1:length(N)) {
	q$N <- N[i]
	results[i,] <- q$run()
}

yield <- results[,'store_lim']

par(mfrow=c(1,2))
plot(N, yield, type='l', lwd=2)
Efficiency = yield / N
plot(N, Efficiency, type='l', lwd=2)

f <- expand.grid(N=seq(0,400,10), P=seq(0,400,10), K=c(0,200))
x <- rep(NA, nrow(f))
for (i in 1:nrow(f)) {0
	q$N <- f$N[i] 
	q$P <- f$P[i] 
	q$K <- f$K[i] 
	x[i] <- q$run()['store_lim']
}
x <- cbind(f, x)

## Not run: 

library(raster  )
r0 <- rasterFromXYZ(x[x$K==0, -3])
r200 <- rasterFromXYZ(x[x$K==200, -3])

par(mfrow=c(1,2))
plot(r0, xlab='N fertilizer', ylab='P fertilizer', las=1, main="K=0")
contour(r0, add=TRUE)
plot(r200, xlab='N fertilizer', ylab='P fertilizer', las=1, main="K=200")
contour(r200, add=TRUE)
plot(stack(r0, r200))

## End(Not run)

Rquefts documentation built on May 2, 2019, 4:53 p.m.