NCAR / DART

Data Assimilation Research Testbed
https://dart.ucar.edu/
Apache License 2.0
198 stars 145 forks source link

Improve WRF documentation for surface obs interpolation and boundary condition perturbation #700

Closed braczka closed 3 months ago

braczka commented 4 months ago

Use case

Give WRF-DART users a better introduction to the operation of the forward operator process for surface observations. Inferring the inner-workings of the forward operator from the code itself is very challenging.

Also, add more documentation to the implementation of ensemble generation (perturbation) process. The use of the WRFDA CV3 option for the WRF domain is already covered a bit, but the perturbation of the boundary conditions (application of tendencies) is not covered and mostly hidden in the code.

Is your feature request related to a problem?

Users can usually get the WRF-DART tutorial to work, but are challenged when customizing for their own application, because some fundamental concepts are not covered.

Describe your preferred solution

Devote a documentation section/paragraph specifically to an overview of forward operation functionality, and also how ensemble spread is generated.

Describe any alternatives you have considered

Do nothing -- continue to respond to users through email support.

braczka commented 3 months ago

Two bugs identified in WRF forward operators. First, surface temperature observations (2 meter temperatures) are not spatially interpolated correctly. For the default tutorial setup, for example, METAR_TEMPERATURE_2_METER observations are assigned quantity 'QTY_TEMPERATURE' which will operate on the 3D temperature WRF output (e.g. T or THM). This will generate an expected surface temperature observation by horizontally interpolating on the lowest level (kth) of the 3D temperature variable. Side note: The code performs vertical interpolation, but because the observation is 'VERTISSURFACE' the k+1 level is ignored. It is highly unlikely the lowest model height corresponds with 2 meters. A preferred approach would be for the forward operator to horizontally interpolate directly on the WRF 2 meter surface temperature (T2). This requires minimal changes -- assign METAR_TEMPERATURE_2_METER to QTY_2M_TEMPERATURE and adjust &model_nml to link 'T2' variable with QTY_2M_TEMPERATURE.

Second the QTY_2M_SPECIFIC_HUMIDITY section in WRF model_mod.f90 does not apply proper conversion from vapor mixing ratio to specific humidity. Requires simple conversion, SH= Qv/(1+Qv), similar to QTY_SPECIFIC_HUMIDITY section.

hkershaw-brown commented 3 months ago

fixed by #708