Skip to content

module 35: shifting-cultivation disturbance from Sims et al. (2025), replacing the Curtis table - #934

Draft
mscrawford wants to merge 11 commits into
magpiemodel:developfrom
mscrawford:fix/forest-loss-drivers
Draft

mscrawford wants to merge 11 commits into
magpiemodel:developfrom
mscrawford:fix/forest-loss-drivers

Conversation

@mscrawford

@mscrawford mscrawford commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Important

To do before this leaves draft

🐦 Description of this PR 🐦

Model side of pik-piam/mrland#78. The shifting-agriculture disturbance in module 35 (s35_forest_damage 1 and 2, default 2) came from a transcription of Curtis et al. (2018) whose Africa row read 3 Mha instead of 39, so the SSA rate was 13x too low. mrland now derives the rate from the Sims et al. (2025) driver map and writes only the column module 35 uses.

  • driver_source shrinks to shifting_cultivation, the one column mrland#78 still writes, and presolve.gms reads it. The file loses overall and the four other Curtis columns.
  • combined_loss and s35_forest_damage = 3, which summed shifting agriculture and wildfire, are removed: wildfire is already in the LPJmL carbon densities, the option was not documented, and no config uses it.
  • f35_forest_disturbance_share removed from input.gms and input/files: loaded since 2020, read nowhere.
  • Otherwise descriptions and comments only (c35_forest_damage_end corrected to s35_forest_damage_end in default.cfg and input.gms). No default changes.

Test preprocessing

Regional and validation data preprocessed with the heads of the three package PRs (pik-piam/mrland#78 at 410607a, pik-piam/mrvalidation#45 at d1f454b, pik-piam/magpiesets#10 at c85ad58; revision 4.136, dev flag crawfordPRBUILD), no warnings.

  • Regional data against the released rev4.136: f35_forest_lost_share.cs3 holds the one shifting_cultivation column and f35_forest_disturbance_share.cs4 is gone. Two other files differ through mrland commits already on master: f20_processing_balanceflow.cs3 (six decimals instead of four) and the f15_intake_NIN files (extended; read only with s15_exo_diet = 2).
  • Validation data: Resources|Tree Cover Loss by driver is new (117 rows); nothing else changes in size.

Effect on a default run

Six SSP2 runs on this branch with develop of 8 October merged (66aa2bc, which includes #942 and #943), identical except the twelve shifting_cultivation values of f35_forest_lost_share:

  • Current: the Curtis values of rev4.136,
  • Curtis corrected: the Curtis table as mrland#78 corrects it (src = "Curtis"),
  • Sims: the values this PR makes the input (src = "GFW"),

each at the default s35_forest_damage = 2 (full rate to 2025, faded out by 2050). All six use the test preprocessing. All time steps locally optimal.

magpie934_r6_1_fade_forest_by_region magpie934_r6_2_fade_luc_co2_by_region

Against historical data

The three default-setting runs against the historical series of the validation data, 1995 to 2030.

magpie934_r6_3_fade_valid_forest_by_region magpie934_r6_4_fade_valid_forest_change_by_region magpie934_r6_5_fade_valid_luc_co2_by_region

🔧 Checklist for PR creator 🔧

  • Label: High risk (default results change through the input data)
  • Self-review own code (scenario_config.csv: non-applicable, no default changed; magpie4: no change needed)
  • Document changes: CHANGELOG.md with the input revision; in-code descriptions updated; goxygen not run
  • Perform test runs: the six runs above on the test preprocessing
  • Reporting produces no errors and no new warnings (same reporting functions and statuses in all six runs)

📉 Performance 📈

  • This PR's default: 32 mins GAMS (as shipped: 36 mins)

mscrawford and others added 4 commits September 12, 2026 22:10
driver_source becomes the seven Sims et al. (2025) classes plus unknown and overall,
matching the nine columns mrland now writes. A .cs3 column without a set element is a
compile-time domain violation, so this moves with the mrland change. The operative
element renames shifting_agriculture -> shifting_cultivation in the four presolve
branches. combined_loss stays shifting cultivation plus wildfire.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FQU9MetaTSbqRJVrCypV9n
driver_source drops to overall, shifting_cultivation, wildfire and
other_natural_disturbances; combined_loss becomes all three. The removed classes are
the observational counterpart of vm_lu_transitions, v35_hvarea_* and the module 34
urban pool and now travel through mrvalidation. The f35_forest_lost_share description
no longer says "damaged by forest fires".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FQU9MetaTSbqRJVrCypV9n
driver_source is now overall and shifting_cultivation; combined_loss holds
shifting_cultivation alone, so s35_forest_damage = 3 equals 1 (stated at both sites,
subset kept so re-admitting a class is one line). Wildfire and other natural
disturbances are booked as land-use-change CO2 by module 52 and drive DEFO_largeFires
in magpie4, and wildfire is already in the fire-enabled LPJmL run behind the carbon
densities. No run changes: the shifting_cultivation and overall columns are
bit-identical, and gams action=c compiles clean (the old four-column input fails with
a domain violation). Errata: option (3) added to the s35_forest_damage description,
c35_forest_damage_end -> s35_forest_damage_end.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014XmKyZUQSGPk6rJna5eD62
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QBJaUn8DLgzgyZUc8CRunM
Declared and included since December 2020 (55785b7), read by no equation in any
revision; preprocessing generated it on every input build. Removed from input.gms
and the input file list. mrland stops writing the .cs4 in the same change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GaYsqSd2gZdixtjH8XWu2k
mrland's calcForestFireLoss is now calcForestLossByDriver (pik-piam/mrland#78).
Comment only.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QBJaUn8DLgzgyZUc8CRunM
@mscrawford

Copy link
Copy Markdown
Contributor Author

To @flohump, I'd like to also suggest that we take this opportunity to switch from automatically fading shifting cultivation out in the default run. I could see an argument that under SSP2 urbanization assumptions, e.g., there will be a decrease in subsistence farming, but I wouldn't say that's necessarily more likely than not, and a more parsimonious treatment of the "default" future would be to leave baseline emissions at today's level. I could of course see SSP1 gradually transitioning to have none (though even so, as you can see this fade is abrupt!). But SSP2, much less SSP3, I'm skeptical.

@mscrawford

mscrawford commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor Author

Edit, 6 Oct: combined_loss and option 3 are now removed rather than kept with shifting cultivation alone, where they would only duplicate option 1. The reason is unchanged: wildfires and other natural disturbances, the only sources that aren't endogenously modelled in MAgPIE, are included in our LPJmL carbon densities, so turning them on would be double accounting. I'm still interested in eventually integrating fire and drought endogenously into MAgPIE as degradation sources, which would mean either asking LPJmL to run no-fire simulations, or figuring out a solution with the new SPITFIRE LPJmL.

@mscrawford mscrawford added bugfix AI An AI model was used for this modification labels Sep 15, 2026
$offdelim
;

parameter f35_forest_disturbance_share(i) Share of area damaged by forest disturbances (1)

@mscrawford mscrawford Sep 15, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correction: this is f35_forest_disturbance_share (FRA-based disturbance shares, added in December 2020), which was loaded but never read. Michael Windisch's forest shock table (f35_forest_shock.csv, s35_forest_damage = 4) is not touched.

mscrawford and others added 4 commits September 22, 2026 13:34
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@mscrawford mscrawford added the enhancement New feature or request label Oct 6, 2026

@flohump flohump left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for catchting the Africa transcription error, and for adding the Sims et al data.
The code looks good to me.

Just one request and a question:

  • Could you add validation to the figures (forest, LUC CO2 emissions) so that we can see if we move closer to validation data or away.
  • Are your model runs from the current develop?

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@mscrawford

Copy link
Copy Markdown
Contributor Author

Thanks for catchting the Africa transcription error, and for adding the Sims et al data. The code looks good to me.

Just one request and a question:

* Could you add validation to the figures (forest, LUC CO2 emissions) so that we can see if we move closer to validation data or away.

* Are your model runs from the current develop?

Hey Florian, the newest plots are from a merge with the current develop. I added the validation plots as well. It's a mixed picture -- the LAM values, strictly speaking, move farther away from the validation data (primary forest area, emissions) while the rest improve. The prediction error for Sims was highest in LAM, so to some degree it might be missing shifting cultivation emissions there, arguing for Curtis-corrected. But my feeling is that if the emissions were "better" in LAM before, it was just happy coincidence, and this newer dataset is more robust.

@flohump

flohump commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Thanks for the update. The validation figures are helpful. It seems that we are missing permanent deforestation in LAM. This is an issue independent from this PR.

@flohump flohump left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. The changes looks fine to me.
With the Sims data, the LAM CO2 LUC emissions are below the validation data. This should be investigated independently from this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI An AI model was used for this modification bugfix enhancement New feature or request High risk Higher risk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants