Open kmdeck opened 4 days ago
I also want to point out that an evaluation of the surface temperature is also required for sea ice and is well-justified for the ocean as well. For example Fairall et al. 1996 showed that skin temperature errors can produce errors of ~ 10 W / m^2 in the latent heat flux (see also Zeng and Beljaars 2005). So I think it will be generally useful (and also is not very difficult) to be able to incorporate submodels for the surface state (as distinct from the prognostic interior state of the land/ocean model) into the flux solver.
Here's are some links to ClimaOcean's implementation of a flux solver based on fixed point iteration:
I think it makes sense to start with a solver based on fixed point iteration, which is very simple, and consider more complicated / efficient solvers once the design is matured a little bit and we have evaluated its relative performance.
The Climate Modeling Alliance
Software Design Issue 📜
Purpose
In summary, the purpose is to extend the MOST solve to let roughness lengths and surface state vary as a function of the solver state u_star, q_star, theta_star.
Cost/Benefits/Risks
costs: developer time and testing time benefits: allows land to compute parallel surface fluxes (atmos-land component) for each component with a single interface, allows land to compute atmos- composite land surface fluxes with the same interface. allows ocean to compute SF with the roughness parameterization they like, allows ocean and land to use the same SF interface risks: the solver is very slow to converge
People and Personnel
@akshaysridhar @kmdeck @glwagner @simone-silvestri
Components
New module in SF.jl which allows the user to pass in functions for roughness lengths and surface states. These functions could be of the form
f(surface_properties, solver_state, atmos_state)
, where for land, surface_state would include resistances, q_sat(T_land component), while for ocean, surface_properties could contain whatever is needed to compute z_0.Note that: the land bucket model uses q_a in estimated q_s, so I included the atmos_state as an input. If we only support the bucket model using the current SF module, this function can be instead:
f(surface_properties, solver_state)
Inputs
Equations to solve from ocean and land
Results and Deliverables
Ocean and land using a single stable SF.jl package in offline (forced ERA5/reanalysis) simulations (OMIP/LMIP). Current bucket AMIP simulations unaffected by change
Scope of Work
SDI Revision Log
CC
@tapios @sriharshakandala @charleskawczynski @cmbengue