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

Peatland rewetting automatically considered during SEALS downscaling #759

Merged
merged 6 commits into from
Dec 17, 2024

Conversation

pvjeetze
Copy link
Contributor

@pvjeetze pvjeetze commented Dec 12, 2024

🐦 Description of this PR 🐦

  • Reworked extra/runSEALSallocation.R so that peatland rewetting is automatically considered during a SEALS allocation run.
  • additional data >4.60 includes a SEALS model coefficients file that is modified depending on the scenario settings.

🔧 Checklist for PR creator 🔧

  • Label pull request from the label list.

    • Low risk: Simple bugfixes (missing files, updated documentation, typos) or changes in start or output scripts
    • Medium risk: Uncritical changes in the model core (e.g. moderate modifications in non-default realizations)
    • High risk: Critical changes in model core or default settings (e.g. changing a model default or adjusting a core mechanic in the model)
  • Self-review own code

    • No hard coded numbers and cluster/country/region names.
    • The new code doesn't contain declared but unused parameters or variables.
    • magpie4 R library has been updated accordingly and backwards compatible where necessary.
    • scenario_config.csv has been updated accordingly (important if default.cfg has been updated)
  • Document changes

    • Add changes to CHANGELOG.md
    • Where relevant, put In-code documentation comments
    • Properly address updates in interfaces in the module documentations
    • run goxygen::goxygen() and verify the modified code is properly documented
  • Perform test runs

    • Low risk:
      • Run a compilation check via Rscript start.R --> "compilation check"
    • Medium risk:
      • Run test runs via Rscript start.R --> "test runs"
      • Check logs for errors/warnings
    • High risk:
      • Run test runs via Rscript start.R --> "test runs"
      • Check logs for errors/warnings
      • Default run from the PR target branch for comparison
      • Provide relevant comparison plots (land-use, emissions, food prices, land-use intensity,...)

📉 Performance changes 📈

  • Current develop branch default : ** mins
  • This PR's default : ** mins

🚨 Checklist for reviewer 🚨

  • PR is labeled correctly
  • Code changes look reasonable
    • No hard coded numbers and cluster/country/region names.
    • No unnecessary increase in module interfaces
    • model behavior/performance is satisfactory.
  • Changes are properly documented
    • CHANGELOG is updated correctly
    • Updates in interfaces have been properly addressed in the module documentations
    • In-code documentation looks appropriate
  • content review done (at least 1)
  • RSE review done (at least 1)

@pvjeetze pvjeetze added the Low risk Low risk label Dec 12, 2024
)
sealsCoeff <- suppressWarnings(sealsCoeff[min(which(file.exists(sealsCoeff)))])
Copy link
Contributor

Choose a reason for hiding this comment

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

This seems rather hacky, is there no way of knowing where the file will actually be?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This approach is pretty common in post-processing functions mostly in the magpie4 library, from which I have transferred part of the code. This makes the code more stable and less susceptible depending on which relative directory the code may be run.

Would you have an alternative suggestion?

Copy link
Contributor

Choose a reason for hiding this comment

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

My suggestion would be to not run the code from different relative directories / setup up the whole system in a way such that that is not necessary. Not something that can be solved in this script though.

Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe a bit nicer this way:

Suggested change
sealsCoeff <- suppressWarnings(sealsCoeff[min(which(file.exists(sealsCoeff)))])
sealsCoeff <- Find(file.exists, sealsCoeff)

This returns NULL if no file exists, so would need to change line 160 to !is.null

Copy link
Contributor

Choose a reason for hiding this comment

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

I'd suggest the same for seals config below as well

Copy link
Contributor

@flohump flohump left a comment

Choose a reason for hiding this comment

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

Thanks for including peatlands in SEALS!
I have one request for adjusting the criterion when peatlands are activatd in SEALS.

"WDPA", consv, sealsCoeff[consvRow, "data_location"]
)

peatlandPrice <- readGDX(file.path(dir, "fulldata.gdx"), "im_pollutant_prices")
Copy link
Contributor

Choose a reason for hiding this comment

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

I suggest to use a different criterion for activating peatlands in SEALS.
We now also have to option for external peatland rewetting scenarios.
Therefore, I suggest to use rewetted peatland area as criterion, as a share of total peatland area.
dimSums(PeatlandArea(gdx)[,,"rewet"],dim=1)/dimSums(PeatlandArea(gdx),dim=c(1,3))>0.01

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for spotting this and the suggestion! I've changed the code based on your suggestion.

Copy link
Contributor

@flohump flohump left a comment

Choose a reason for hiding this comment

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

Looks good. Thanks!

)
sealsCoeff <- suppressWarnings(sealsCoeff[min(which(file.exists(sealsCoeff)))])
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe a bit nicer this way:

Suggested change
sealsCoeff <- suppressWarnings(sealsCoeff[min(which(file.exists(sealsCoeff)))])
sealsCoeff <- Find(file.exists, sealsCoeff)

This returns NULL if no file exists, so would need to change line 160 to !is.null

Comment on lines 154 to 158
sealsCoeff <- c(
"input/seals_global_coefficients.csv",
"../input/seals_global_coefficients.csv",
"../../input/seals_global_coefficients.csv"
)
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
sealsCoeff <- c(
"input/seals_global_coefficients.csv",
"../input/seals_global_coefficients.csv",
"../../input/seals_global_coefficients.csv"
)
sealsCoeff <- paste0(c("./", "../", "../../"), "input/seals_global_coefficients.csv")

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks Pascal for these simplifications! I've reworked the parts of the code. Please double check.

)
sealsCoeff <- suppressWarnings(sealsCoeff[min(which(file.exists(sealsCoeff)))])
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd suggest the same for seals config below as well

@pvjeetze pvjeetze merged commit 9f0e4a0 into magpiemodel:develop Dec 17, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Low risk Low risk
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants