Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement different tillage levels #2216

Open
JJguri opened this issue Sep 18, 2023 · 18 comments
Open

implement different tillage levels #2216

JJguri opened this issue Sep 18, 2023 · 18 comments

Comments

@JJguri
Copy link

JJguri commented Sep 18, 2023

Hi, I need to apply different events with different levels of tillage, i.e.

(1) CONVENTIONAL: inversion tillage with a disc plow and disk harrowing to a depth of 30 cm
(2) MINIMAL: disk harrowing to a depth of 30 cm
(3) REDUCED: non-inversion tillage with a “multiplow”, a ripper equipped with sweeps to break up the soil at the operating depth, followed by harrowing to a depth of 30 cm.

In the tillage event manager I can see three parameters in order to implement them: using the tillage type, depth or fraction of surface residues to incorporate. Can I assume that increasing the last parameter, I am increasing the tillage level? i.e. conventional high fraction to incorporate and minimal low fraction to incorporate? What do you recommend to mimic these practices? Thanks

@peter-devoil
Copy link
Collaborator

Hi,

1st up - there are two modules that listen out for tillage events - soilwat will reduce CN2Bare (increase potential infiltration) if it knows about the implement being used, and surfaceom/soiln2 will incorporate residues to a depth of soil. There are a handful of tillage implements (type) that the apsim knows about and will supply default parameters for.

There is a "user_defined" type, which allows parameters to be specified - and you're interested in the f_incorp parameter which specifies the proportion of surface residues incorporated. Discs are going to incorporate more residue than tynes and would have a bigger f_incorp value - the ini file suggests 0.5 vs 0.3.

@JJguri
Copy link
Author

JJguri commented Sep 25, 2023

Hi @peter-devoil thanks for the answer. Now I have another issue. I am trying to apply the tillage event in order to remove resides from the field using the "user_defined" option active but when a given crop event happens. It is weird that it is working for sowing but not at harvesting. I am using the following code:

        <manager name="Tillage on an event_maize">
          <ui>
            <category type="category" description="When should tillage be performed" />
            <modulename type="modulename" description="The module the event come from : ">maize</modulename>
            <eventname type="text" description="On which event should tillage be done : ">harvesting</eventname>
            <category type="category" description="Tillage details" />
            <surfaceommodule type="modulename" description="Module used to apply the tillage : ">SurfaceOrganicMatter</surfaceommodule>
            <tillage_type type="list" listvalues="user_defined, chisel, disc, planter, burn, burn_90, graze, scarifier, rip, blade, tine" description="Tillage type : ">user_defined</tillage_type>
            <tillage_depth type="text" description="User_defined depth of seedbed preparation (mm) : ">0</tillage_depth>
            <tillage_f_incorp type="text" description="User_defined fraction of surface residues to incorporate (0-1): ">0.9</tillage_f_incorp>
            <crop type="crop" description="crop">maize</crop>
          </ui>
          <script>
            <text>
            if ('[tillage_type]' = 'user_defined') then
                '[surfaceommodule]' tillage type = [tillage_type], f_incorp = [tillage_f_incorp] (), tillage_depth = [tillage_depth]
            else
                '[surfaceommodule]' tillage type = [tillage_type]
            endif
    </text>
            <event>[modulename].[eventname]</event>
          </script>
        </manager>

@peter-devoil
Copy link
Collaborator

If your tillage event occurs before harvesting is complete, then there won't be much residue to remove as it hasnt been added to the residue pool yet. It might be safer for your logic to till a few days after harvesting.

On a related issue, determining the order of processing is hard in apsim - for reference, the definitive "component order" is tucked away in the .ini file, equally ranked components are processed in the order of the simulation tree (with special surprises provided by the canopy module, which jumbles them up).

@JJguri
Copy link
Author

JJguri commented Sep 25, 2023

Thanks for the explanation. The issue is that I would like to automate the tillage date based on crop phenology (e.g. maturity) or events (e.g. harvesting). Interestingly, the residue removal is done at sowing (one day before sowing) when sowing is defined as eventname but not when this parameter is defined as harvest using the code below. Is there a way to assign the date of tillage as x number of days after harvest in an automated way?

        <manager name="Residue_removal_maize">
          <ui>
            <category type="category" description="When should tillage be performed" />
            <modulename type="modulename" description="The module the event come from : ">maize</modulename>
            <eventname type="text" description="On which event should tillage be done : ">sowing</eventname>
            <category type="category" description="Tillage details" />
            <surfaceommodule type="modulename" description="Module used to apply the tillage : ">SurfaceOrganicMatter</surfaceommodule>
            <tillage_type type="list" listvalues="user_defined, chisel, disc, planter, burn, burn_90, graze, scarifier, rip, blade, tine" description="Tillage type : ">user_defined</tillage_type>
            <tillage_depth type="text" description="User_defined depth of seedbed preparation (mm) : ">0</tillage_depth>
            <tillage_f_incorp type="text" description="User_defined fraction of surface residues to incorporate (0-1): ">0.33</tillage_f_incorp>
          </ui>
          <script>
            <text>
            if ('[tillage_type]' = 'user_defined') then
                '[surfaceommodule]' tillage type = [tillage_type], f_incorp = [tillage_f_incorp] (), tillage_depth = [tillage_depth]
            else
                '[surfaceommodule]' tillage type = [tillage_type]
            endif
    </text>
            <event>[modulename].[eventname]</event>
          </script>
        </manager>

@peter-devoil
Copy link
Collaborator

'harvesting' is the event sent out by the maize module when it is harvesting the crop - it's a "last chance" to grab detail about the plant before it is dispersed into the ether..

Consider whether your report is occurring on the harvesting event (usually triggered by tests occuring end_of day), process (middle of day), or even start_of day. Each event will report different system states.

You could consider logic something like

// Init
hasHarvested = -1

// harvesting
hasHarvested = 0

// process
if (hasHarvested >= 0) then
  hasHarvested = hasHarvested + 1
endif

if (hasHarvested > 5) then
  'surfaceOrganicMatter' tillage depth = 0 ...
  hasHarvested = -1
endif

@JJguri
Copy link
Author

JJguri commented Oct 4, 2023

Hi @peter-devoil @sarchontoulis , How does APSIM Classic model tillage affect on C02 respiration from the soil? I can see the main inputs for the tillage events are tillage_f_incorp and tillage_depth but how they affects the organic carbon dynamics when a conventional tillage vs a zero tillage system are compared? Are there changes in the organic carbon losses when several tillage events are applied? What's the connection between the tillage event and the decomposition rates that results in loss of some carbon as CO2?

I am comparing zero tillage and conventional tillage treatments with different levels of residue removal and, for specific locations and high intensity residue removal, I cannot see considerably reductions of organic carbon in the long term when tillage and residue removal are applied.

@peter-devoil
Copy link
Collaborator

It doesn't. :)

You will change the pool composition, and the rates of change are affected by the new compostion. But that's it..

@JJguri
Copy link
Author

JJguri commented Oct 4, 2023

so that means APSIM is able to reduce organic matter pools (FOM,HUM, and BIOM) due to tillage? If so, it seems I need to check the change in the pools after tillage events. Are the outputs described below the right outputs to check in order to see if the tillage is having an effect on soil oc? Where are these outputs generated:

dlt_fom_c_atm
dlt_hum_c_biom
dlt_hum_c_atm
dlt_biom_c_hum

When you talk about rates are you talking about these params? ('cnrf_coeff', 'cnrf_optcn', 'ef_biom', 'ef_biom', 'ef_fom', 'ef_hum', 'ef_res','mcn', 'rd_biom', 'rd_carb', 'rd_cell', 'rd_lign', 'rd_hum'). Where I can find the relation between the pool composition and the rate of change?

@peter-devoil
Copy link
Collaborator

You'll be adding to FOM. That's where I'd start reading the ceres book, or worse, the code.

@JJguri
Copy link
Author

JJguri commented Oct 4, 2023

will start reading the code. Could you please point me a starting point where the tillage affects the FOM pool and then the rates, etc... thanks

@JJguri
Copy link
Author

JJguri commented Oct 4, 2023

thanks Pete!

@JJguri
Copy link
Author

JJguri commented Oct 4, 2023

@peter-devoil I checked the 3 shared routines and I cannot find where the CO2 loss through (dlt_fom_c_atm) after the surface om is incorporated?

@peter-devoil
Copy link
Collaborator

Nothing will happen until the next day when the usual processing occurs with the updated pool sizes.

@JJguri
Copy link
Author

JJguri commented Oct 18, 2023

Hi @peter-devoil @sarchontoulis, I am trying to create apsim configuration files for treatments were residue removal and tillage happens at the same time, i.e. in a long term trial there was a tillage event around 3 weeks before sowing of the summer crop and then, after the grain harvest, the remaining stover was removed at different levels from 100 to 0%. I am implementing the tillage module based on the tillage_f_incorp and tillage_depth for residue removal right after harvest (using the user_defined option) and for tillage before sowing. I developed a sensitivity analysis and I found interesting results applying different combination of tillage_f_incorp at 30 cm for both purposes (residue removal and tillage in different times of the year). Interestingly, I found that when all residues are removed from the surface_wt pool, the tillage events do not have any effect on the organic carbon changes (from 0 to 15 cm) as it is shown in the following figure. The actual data from fields demonstrated that removing all residues from the field and adding tillage events the organic carbon is reduced and seems the model is not catching this (pink, magenta and brown lines)? Do you know why?
image

@peter-devoil
Copy link
Collaborator

So, the FOM/BIOM/HUM pools are unaffected by a tillage event when no SOM is added. You're expecting some change in their composition?

This isnt the first time that the model doesnt reflect what happens in the field.. Sounds like you've found a subject for a lit review to find a implementation method..

@JJguri
Copy link
Author

JJguri commented Oct 18, 2023

@peter-devoil thanks for the reply. Is NG able to model these combined practices? i.e. is the tillage module the same than Classic or it was improved?

@peter-devoil
Copy link
Collaborator

NG usually has less functionality than classic. In this case, It appears to be much the same as classic (in that tillage only affects SOM and CN) but I have been known to be wrong.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants