ClimaLand.jl icon indicating copy to clipboard operation
ClimaLand.jl copied to clipboard

Add standalone snow model

Open kmdeck opened this issue 2 years ago • 2 comments

Purpose

Implement the standalone snow model, documented in the Clima Design Docs Land Model chapter. This is distinct from the simple version we have baked into the bucket model. That version (v0) can only be run with the bucket model, does not treat snow temperature as distinct from the surface temperature of the ground, and only solves an equation for snow water equivalent. The more complex model introduces the snow energy as an additional prognostic equation. The goal will be a standalone snow model which can be driven with prescribed atmospheric variables.

In the first version v1:

  • snow surface temperature = bulk temperature
  • albedo = constant
  • density = constant
  • no snow cover fraction taken into account
  • no ground fluxes exchanged at the bottom of the snowpack with the ground, but water exchanges occur.

After validation and testing of this model, including integrating with the soil model, we will begin adding in complexity in the form of:

  • nonconstant albedo (TBD)
  • snow cover fraction (TBD)
  • snow depth prognostic equation inlieu of a prescribed density (density becomes a diagnostic variable) (Andy's project, @a-charbon )
  • snow surface temperature model. (documented in the Design Docs).

Cost/benefits/risks

Benefits: a more realistic snow model, ability to run a snow model outside of the bucket model, ability to run snow model with our soil model (Richards equation/soil energy/phase change). Costs: developer time Risks: not very high, as most of what we are implementing is consistent with other snow models, like UEB.

Producers

@shuangma1990 led the development of the model, including literature review, @kmdeck as developer, @a-charbon for snow depth model & other aid as interest allows, @juliasloan25 for code review

Components

  1. A snow module with snow model, tendency function, update aux function, prognostic variable definitions, auxiliary variable definitions, parameter struct, parameterization functions, and surface flux computations.
  2. Units tests
  3. Docs, including a tutorial

Inputs

All equations are in the design docs, and we will be following the ClimaLSM API for defining models, variables, domains, etc, and the ClimaLSM bucket model for computing surface fluxes.

Results and deliverables

The key deliverable is a Snow module, which enables simulating a snowpack given prescribed atmospheric variables, using the ClimaLSM framework. Code will be tested and documented in the form of a tutorial and doc strings for all APIs. Basic sanity checks will be carried out to ensure basic physicality of the solution, especially around melting. We also have data from @shuangma1990 which we will use to check the solution as well, for a specific site. CliMA SNOW.pdf Re Snow data.zip From Shuang: I’ve reached out to a few groups of people that have either snow modeling or observation data (ESM-SNOWMIP, UEB model, Glen model, Niwot Ridge site). I’m sending these data, the email conversations, and SNOWMIP2 original data through JPL’s Large File Transfer system.

I'd suggest trying observation data that's already been published, and used in model validations. So we have a better idea of the data quality. The quality of snow observations collected in these networks is not consistent.

I'd recommend using the data from this paper (attached) 'ESM-SnowMIP: assessing snow models and quantifying snow-related climate feedbacks.' It compares 28 snow models with observations (including SWE, Albedo, snow depth, soil temp) at a few locations. The authors have sent me the driver data and observations.

I processed the data from their original files for one of the sites (attached). ‘SNOWMIP2_Alptal_openarea_summary.xlsx’ has the data and explanations. ‘SNOWMIP2_Alptal_openarea_input4CliMA_v5.csv’ is a cleaned up version ready to write in to the model.

Task breakdown

A preliminary list of PRs and a preliminary timeline of PRs, milestones, and key results.

  • [x] Snow parameterizations, v1: https://github.com/CliMA/ClimaLSM.jl/pull/142
  • [x] Snow RHS, including surface fluxes: [First https://github.com/CliMA/ClimaLSM.jl/pull/148, then https://github.com/CliMA/ClimaLSM.jl/pull/147]
  • [x] Tutorial, comparing to data. [part of https://github.com/CliMA/ClimaLSM.jl/pull/147]
  • [ ] Snow surface temperature different from bulk temp @sarahhzhangg
  • [X] Snow depth as a prognostic variable @a-charbon
  • [] use snow depth model in snow model @a-charbon
  • [ ] non constant albedo model
  • [ ] snow cover fraction model ...

Reviewers

@kmdeck, @tapios, @shuangma1990 as interested :)

kmdeck avatar Feb 02 '23 19:02 kmdeck