diff --git a/src/crop/aquacrop.jl b/src/crop/aquacrop.jl index 0e1765522896b79925a748b36f9c49496f1e89d5..7e09b2c559df0341113104487305712bde6c89d3 100644 --- a/src/crop/aquacrop.jl +++ b/src/crop/aquacrop.jl @@ -1,5 +1,28 @@ +module WrapAquaCrop + +# Persefone.jl wrapper for AquaCrop.jl +# Use different name from `AquaCrop` to avoid name clash + import AquaCrop +using Persefone: + AnnualDate, + cm, + SimulationModel + +import Persefone: + stepagent!, + croptype, + cropname, + cropheight, + cropcover, + cropyield, + sow!, + harvest!, + isharvestable + +using Unitful: @u_str + # We can't use Length{Float64} as that is a Union type const Tlength = typeof(1.0cm) @@ -68,3 +91,5 @@ function harvest!(cs::AquaCropState, model::SimulationModel) # TODO: implement this return 0.0u"g/m^2" end + +end # module WrapAquaCrop diff --git a/src/crop/cropmodels.jl b/src/crop/cropmodels.jl index dac5c8b40e9c6f9568aa417a6fd250b500f90e54..0d2a68b64693beba8f83de090a7c0f5d049f78e6 100644 --- a/src/crop/cropmodels.jl +++ b/src/crop/cropmodels.jl @@ -21,11 +21,11 @@ function initcropmodel(cropmodel::AbstractString, cropdirectory::AbstractString) crops = Dict(name => SimpleCrop.CropType(ct.name, ct.group, ct.minsowdate, ct.maxsowdate) for (name, ct) in crops_almass) elseif cropmodel == "aquacrop" - Tcroptype = AquaCropType - Tcropstate = AquaCropState + Tcroptype = WrapAquaCrop.AquaCropType + Tcropstate = WrapAquaCrop.AquaCropState # TODO: temporarily using ALMaSS crop types crops_almass = ALMaSS.readcropparameters(cropdirectory) - crops = Dict(name => AquaCropType(ct.name, ct.group, ct.minsowdate, ct.maxsowdate) + crops = Dict(name => WrapAquaCrop.AquaCropType(ct.name, ct.group, ct.minsowdate, ct.maxsowdate) for (name, ct) in crops_almass) else error("initcropmodel: no implementation for crop model '$cropmodel'") @@ -81,7 +81,7 @@ function makecropstate(model::SimulationModel) 0.0m ) elseif @param(crop.cropmodel) == "aquacrop" - cs = AquaCropState(model.crops["natural grass"], 0.0cm) + cs = WrapAquaCrop.AquaCropState(model.crops["natural grass"], 0.0cm) else Base.error("Unhandled crop model '$(@param(crop.cropmodel))' in makecropstate().") end diff --git a/test/crop_tests.jl b/test/crop_tests.jl index e97ea84f693870f4c27a055db226a22e332cbeaf..23200a7bf70dd96deb4f84ca6a9e316204b1ba8e 100644 --- a/test/crop_tests.jl +++ b/test/crop_tests.jl @@ -57,14 +57,15 @@ end end @testset "Submodule AquaCrop" begin - ct = Ps.AquaCropType("olive tree", "no_crop_group", AnnualDate(4, 1), AnnualDate(5, 1)) + PsAC = Ps.WrapAquaCrop + ct = PsAC.AquaCropType("olive tree", "no_crop_group", AnnualDate(4, 1), AnnualDate(5, 1)) id = 0 pixels = [(0, 0)] farmer = 0 - fp = FarmPlot(id, pixels, farmer, Ps.AquaCropState(ct)) + fp = FarmPlot(id, pixels, farmer, PsAC.AquaCropState(ct)) @test fp isa FarmPlot - @test fp isa FarmPlot{Ps.AquaCropState} - @test croptype(fp) isa Ps.AquaCropType + @test fp isa FarmPlot{PsAC.AquaCropState} + @test croptype(fp) isa PsAC.AquaCropType @test cropname(fp) isa String @test cropheight(fp) isa Length{Float64} @test cropcover(fp) isa Float64