diff --git a/data/crops/almass/crop_data_general.csv b/data/crops/almass/crop_data_general.csv index c779dec5fa35c5777bb5363b88a81dbd8556bddc..edf3da75296119a9595dbac420b9e019f5fad4b3 100644 --- a/data/crops/almass/crop_data_general.csv +++ b/data/crops/almass/crop_data_general.csv @@ -1,28 +1,28 @@ -name,minsowdate,maxsowdate,minharvestdate,maxharvestdate,mingrowthtemp,group -"spring rape",NA,NA,NA,NA,NA,"grain" -"winter rape","20 August","25 August",NA,NA,NA,"grain" -"winter wheat","15 October","31 October",NA,NA,0,"grain" -"spring wheat",NA,NA,NA,NA,NA,"grain" -"winter barley","15 September","30 September",NA,NA,0,"grain" -"spring barley","1 March","10 April",NA,NA,0,"grain" -"undersown spring barley",NA,NA,NA,NA,0,"grain" -"winter rye","23 September","15 October",NA,NA,NA,"grain" -"triticale","25 September","10 October",NA,NA,NA,"grain" -"oats",NA,NA,NA,NA,NA,"grain" -"maize","15 April","30 April",NA,NA,8,"grain" -"potatoes",NA,NA,NA,NA,4,"root" -"carrots",NA,NA,NA,NA,NA,"root" -"beet","15 March","10 May",NA,NA,NA,"root" -"sunflower","25 March","15 April",NA,NA,NA,"other" -"lucerne",NA,NA,NA,NA,NA,"legumes" -"peas/beans","15 February","15 March",NA,NA,5,"legumes" -"silage clover/grass",NA,NA,NA,NA,NA,"legumes" -"fodder/clover",NA,NA,NA,NA,NA,"legumes" -"lawn",NA,NA,NA,NA,NA,"grass" -"permanent grassland (grazed)",NA,NA,NA,NA,NA,"grass" -"permanent grassland (seeded)",NA,NA,NA,NA,NA,"grass" -"permanent grassland (low yield)",NA,NA,NA,NA,NA,"grass" -"permanent set-aside",NA,NA,NA,NA,NA,"semi-natural" -"natural grass",NA,NA,NA,NA,NA,"semi-natural" -"no growth",NA,NA,NA,NA,NA,"semi-natural" -"heath",NA,NA,NA,NA,NA,"semi-natural" +name,minsowdate,maxsowdate,minharvestdate,maxharvestdate,mingrowthtemp,group,biomass_scale +"spring rape",NA,NA,NA,NA,NA,"grain",1.071 +"winter rape","20 August","25 August",NA,NA,NA,"grain",1.071 +"winter wheat","15 October","31 October",NA,NA,0,"grain",1.0 +"spring wheat",NA,NA,NA,NA,NA,"grain",1.0 +"winter barley","15 September","30 September",NA,NA,0,"grain",0.857 +"spring barley","1 March","10 April",NA,NA,0,"grain",0.857 +"undersown spring barley",NA,NA,NA,NA,0,"grain",0.857 +"winter rye","23 September","15 October",NA,NA,NA,"grain",0.857 +"triticale","25 September","10 October",NA,NA,NA,"grain",1.0 +"oats",NA,NA,NA,NA,NA,"grain",0.857 +"maize","15 April","30 April",NA,NA,8,"grain",1.0 +"potatoes",NA,NA,NA,NA,4,"root",0.857 +"carrots",NA,NA,NA,NA,NA,"root",0.7857 +"beet","15 March","10 May",NA,NA,NA,"root",0.857 +"sunflower","25 March","15 April",NA,NA,NA,"other",1.0 +"lucerne",NA,NA,NA,NA,NA,"legumes",1.2 +"peas/beans","15 February","15 March",NA,NA,5,"legumes",0.857 +"silage clover/grass",NA,NA,NA,NA,NA,"legumes",1.1 +"fodder/clover",NA,NA,NA,NA,NA,"legumes",1.2 +"lawn",NA,NA,NA,NA,NA,"grass",0.5 +"permanent grassland (grazed)",NA,NA,NA,NA,NA,"grass",1.1 +"permanent grassland (seeded)",NA,NA,NA,NA,NA,"grass",1.1 +"permanent grassland (low yield)",NA,NA,NA,NA,NA,"grass",1.0 +"permanent set-aside",NA,NA,NA,NA,NA,"semi-natural",0.7857 +"natural grass",NA,NA,NA,NA,NA,"semi-natural",0.567 +"no growth",NA,NA,NA,NA,NA,"semi-natural",0.0 +"heath",NA,NA,NA,NA,NA,"semi-natural",0.567 diff --git a/src/crop/almass.jl b/src/crop/almass.jl index 8c215c9e564b4b1fab9c9ae6355b77919886e55c..243f10b285ff45f5acd8441fd749d814138549e1 100644 --- a/src/crop/almass.jl +++ b/src/crop/almass.jl @@ -114,6 +114,7 @@ struct CropType mingrowthtemp::Union{Missing,Float64} highnutrientgrowth::Union{Missing,CropCurveParams} lownutrientgrowth::Union{Missing,CropCurveParams} + biomass_scale::Float64 end cropname(ct::CropType) = ct.name @@ -366,7 +367,7 @@ Parse a CSV file containing the required parameter values for each crop function readcropparameters(cropdirectory::String) @debug "Reading crop parameters" cropdata = CSV.File(joinpath(cropdirectory, CROPFILE), missingstring="NA", - types=[String,AnnualDate,AnnualDate,AnnualDate,AnnualDate,Float64,String]) + types=[String,AnnualDate,AnnualDate,AnnualDate,AnnualDate,Float64,String,Float64]) growthdata = CSV.File(joinpath(cropdirectory, GROWTHFILE), missingstring="NA", types=[Int,String,String,GrowthPhase,String, Float64,Float64,Float64,Float64]) @@ -387,7 +388,7 @@ function readcropparameters(cropdirectory::String) is_c4_plant = occursin("maize", lowercase(crop.name)) croptypes[crop.name] = CropType(crop.name, crop_group, is_c4_plant, crop.minsowdate, crop.maxsowdate, crop.minharvestdate, crop.maxharvestdate, - crop.mingrowthtemp, highnuts, lownuts) + crop.mingrowthtemp, highnuts, lownuts, crop.biomass_scale) end croptypes end @@ -761,8 +762,7 @@ function recalculate_bugs_n_stuff!(cs::CropState, model::SimulationModel) if cs.LAtotal >= cs.oldLAtotal # we are in positive growth so grow depending on our equation - # TODO: biomass_scale - biomass_scale = 1.0 + biomass_scale = cs.croptype.biomass_scale cs.newgrowth = useful_veg_cover * glrad * radconv * biomass_scale # TODO: ignoring farm intensity diff --git a/test/crop_tests.jl b/test/crop_tests.jl index 38ae55af1b869d0b237b138f91a908590fa5b294..028a4cfb239c41eac312f9135fecd43f9d2a40a8 100644 --- a/test/crop_tests.jl +++ b/test/crop_tests.jl @@ -20,7 +20,7 @@ end @testset "Submodule ALMaSS" begin ct = Ps.ALMaSS.CropType("olive tree", "no_crop_group", false, - missing, missing, missing, missing, missing, missing, missing) + missing, missing, missing, missing, missing, missing, missing, 1.0) id = 0 pixels = [(0, 0)] farmer = 0 diff --git a/test/cropparams-almass/crop_data_general.csv b/test/cropparams-almass/crop_data_general.csv index c779dec5fa35c5777bb5363b88a81dbd8556bddc..edf3da75296119a9595dbac420b9e019f5fad4b3 100644 --- a/test/cropparams-almass/crop_data_general.csv +++ b/test/cropparams-almass/crop_data_general.csv @@ -1,28 +1,28 @@ -name,minsowdate,maxsowdate,minharvestdate,maxharvestdate,mingrowthtemp,group -"spring rape",NA,NA,NA,NA,NA,"grain" -"winter rape","20 August","25 August",NA,NA,NA,"grain" -"winter wheat","15 October","31 October",NA,NA,0,"grain" -"spring wheat",NA,NA,NA,NA,NA,"grain" -"winter barley","15 September","30 September",NA,NA,0,"grain" -"spring barley","1 March","10 April",NA,NA,0,"grain" -"undersown spring barley",NA,NA,NA,NA,0,"grain" -"winter rye","23 September","15 October",NA,NA,NA,"grain" -"triticale","25 September","10 October",NA,NA,NA,"grain" -"oats",NA,NA,NA,NA,NA,"grain" -"maize","15 April","30 April",NA,NA,8,"grain" -"potatoes",NA,NA,NA,NA,4,"root" -"carrots",NA,NA,NA,NA,NA,"root" -"beet","15 March","10 May",NA,NA,NA,"root" -"sunflower","25 March","15 April",NA,NA,NA,"other" -"lucerne",NA,NA,NA,NA,NA,"legumes" -"peas/beans","15 February","15 March",NA,NA,5,"legumes" -"silage clover/grass",NA,NA,NA,NA,NA,"legumes" -"fodder/clover",NA,NA,NA,NA,NA,"legumes" -"lawn",NA,NA,NA,NA,NA,"grass" -"permanent grassland (grazed)",NA,NA,NA,NA,NA,"grass" -"permanent grassland (seeded)",NA,NA,NA,NA,NA,"grass" -"permanent grassland (low yield)",NA,NA,NA,NA,NA,"grass" -"permanent set-aside",NA,NA,NA,NA,NA,"semi-natural" -"natural grass",NA,NA,NA,NA,NA,"semi-natural" -"no growth",NA,NA,NA,NA,NA,"semi-natural" -"heath",NA,NA,NA,NA,NA,"semi-natural" +name,minsowdate,maxsowdate,minharvestdate,maxharvestdate,mingrowthtemp,group,biomass_scale +"spring rape",NA,NA,NA,NA,NA,"grain",1.071 +"winter rape","20 August","25 August",NA,NA,NA,"grain",1.071 +"winter wheat","15 October","31 October",NA,NA,0,"grain",1.0 +"spring wheat",NA,NA,NA,NA,NA,"grain",1.0 +"winter barley","15 September","30 September",NA,NA,0,"grain",0.857 +"spring barley","1 March","10 April",NA,NA,0,"grain",0.857 +"undersown spring barley",NA,NA,NA,NA,0,"grain",0.857 +"winter rye","23 September","15 October",NA,NA,NA,"grain",0.857 +"triticale","25 September","10 October",NA,NA,NA,"grain",1.0 +"oats",NA,NA,NA,NA,NA,"grain",0.857 +"maize","15 April","30 April",NA,NA,8,"grain",1.0 +"potatoes",NA,NA,NA,NA,4,"root",0.857 +"carrots",NA,NA,NA,NA,NA,"root",0.7857 +"beet","15 March","10 May",NA,NA,NA,"root",0.857 +"sunflower","25 March","15 April",NA,NA,NA,"other",1.0 +"lucerne",NA,NA,NA,NA,NA,"legumes",1.2 +"peas/beans","15 February","15 March",NA,NA,5,"legumes",0.857 +"silage clover/grass",NA,NA,NA,NA,NA,"legumes",1.1 +"fodder/clover",NA,NA,NA,NA,NA,"legumes",1.2 +"lawn",NA,NA,NA,NA,NA,"grass",0.5 +"permanent grassland (grazed)",NA,NA,NA,NA,NA,"grass",1.1 +"permanent grassland (seeded)",NA,NA,NA,NA,NA,"grass",1.1 +"permanent grassland (low yield)",NA,NA,NA,NA,NA,"grass",1.0 +"permanent set-aside",NA,NA,NA,NA,NA,"semi-natural",0.7857 +"natural grass",NA,NA,NA,NA,NA,"semi-natural",0.567 +"no growth",NA,NA,NA,NA,NA,"semi-natural",0.0 +"heath",NA,NA,NA,NA,NA,"semi-natural",0.567