SpeedyWeather / SpeedyWeather.jl

Play atmospheric modelling like it's LEGO.
https://speedyweather.github.io/SpeedyWeather.jl/dev
MIT License
423 stars 26 forks source link

Design choices towards stochastic parameterizations #199

Open milankl opened 1 year ago

milankl commented 1 year ago

Several classes of stochastic parameterizations with multiplicative noise that are currently in use/proposed

Let $V$ be any prognostic variable, and $r$ a random number following some distribution (sometimes people write 1+r with r symmetric around 0, but let's keep it general here), and some set of parameters $p_i$

  1. SPPT: $\partial_t V = Dynamics(V) + r*Physics(V, p_i)$

$r$ is usually the same for all $V$, but space/time dependent with some autocorrelation time/length scale. Ideally, one would want r to be independent of height (to only perturb fluxes), but for stability reasons that used to be tricky, hence ECMWF did some tapering in the planetary boundary layer / stratosphere.

  1. SPP: $\partial_t V = Dynamics(V) + Physics(V, r*p_i)$

Here, every parameter $p_i$ gets its own $r$, but the pattern generation is similar to SPPT. Not sure about vertical depedency.

  1. SPPI: $\partial_t V = Dynamics(V) + Physics(V_r, p_i)$

Here, the physical parameterizations are evaluated from a perturbed state $V_r$ that's obtained similar to SPPT: $V_r = V(t-\Delta t) + \Delta t (Dynamics(V) + rPhysics(V, p_i))$. This has the advantage that any flux inconsistencies are immediately resolved and the SPPT idea to perturb those physics tendencies the strongest that are also the largest is retained. How exactly to do that, we'll have to see, but I believe that can be done without any additional computational burden within parameterization_tendencies! (tendencies from previous time steps are still available and one can do a simple, cheap time stepping to obtain a perturbed state)

What that means for SpeedyWeather.jl:

Fortran-SPEEDY computes things in the following order:

  1. $P = Physics(V,p_i)$ (grid-point space)
  2. $P$ += $Dynamics(V)$ (+= in grid-point space)
  3. convert $P$ to $P_s$ in spectral space ($P$ is not overwritten)
  4. time stepping in spectral space with $P_s$

Sofar I didn't have the intention to change that, but maybe we have to:

@white-alistair @dmey @justinfocus12

milankl commented 1 year ago

@emilemathieu