From 6b0bb42a79903eff2267e9797ea87a1fcb55a573 Mon Sep 17 00:00:00 2001 From: Marco Matthies <71844+marcom@users.noreply.github.com> Date: Mon, 2 Dec 2024 11:51:34 +0100 Subject: [PATCH] ALMaSS: properly get biomass_scale factor for each crop --- data/crops/almass/crop_data_general.csv | 56 ++++++++++---------- src/crop/almass.jl | 8 +-- test/crop_tests.jl | 2 +- test/cropparams-almass/crop_data_general.csv | 56 ++++++++++---------- 4 files changed, 61 insertions(+), 61 deletions(-) diff --git a/data/crops/almass/crop_data_general.csv b/data/crops/almass/crop_data_general.csv index c779dec..edf3da7 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 8c215c9..243f10b 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 38ae55a..028a4cf 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 c779dec..edf3da7 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 -- GitLab