GEUS-Glaciology-and-Climate / pypromice

Process AWS data from L0 (raw logger) through Lx (end user)
https://pypromice.readthedocs.io
GNU General Public License v2.0
12 stars 4 forks source link

Feature/surface heights and thermistor depths #269

Open BaptisteVandecrux opened 3 days ago

BaptisteVandecrux commented 3 days ago

This PR builds on top of #268 as it adds functionality to L2toL3.py.

Surface height processing

The idea of the surface height processing is that there are many cases where automated adjustments can be made. F.e. if the z_pt_cor is working fine, then we can adjust the two SR50 to the end of the ablation period. Or if z_pt_cor is missing but that z_stake is available, then z_stake can be used to describe the ablation of ice instead of the pressure transducer. There are many test being done in combineSurfaceHeight corresponding to recurring situations where the continuity in at least one of the three surface-sensing instruments would allow to adjust the two others.

However, there are still many situations where manual adjustments are needed: e.g. when the station, the stake assembly or the pressure transducer are being maintained, the shift introduced needs to be removed manually. So it is an iterative process between what can be done automatically and what needed to be done manually. A clear tutorial on how to make those adjustment should follow once the PR is implemented.

The result is a z_surf_combined ensuring continuity from year to year and combining information from all three surface-sensing instruments. For the ablation stations, the minimum of z_surf_combined in the past one year (or in other words the "only-decreasing" version of z_surf_combined) represents z_ice_surf. The different between z_surf_combined and z_ice_surf (always positive) is the snow_height.

The surface height processing does the following:

Thermistor depth calculation

Besides a continuous surface height, the thermistor depth calculation needs a list of thermistor re-installation and, if available, the non-standard depths at which they were installed. This info was digitized from maintenance sheet and posted on AWS-L0/metadata (we can discuss where we can have this file so that it is easy to update and easy to pull by our processing scripts.

The depth for each thermistor d_t_* s calculated from surface height change (burial when surface height increases and inversely) and depth are reset each time there is a maintenance. These depth then indicate whenever thermistors are likely melting out due to ablation, and therefore can be used to further clean the t_i_* variables.

After those depths are calculates, and interpolation function allows to calculate, for each timestamp the 10 m subsurface temperature t_i_10m (if there are thermistors close enough to that depth). Note that, in the accumulation area, we assume that the snow and firn compaction does not affect the spacing between the thermistor.