Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Continuous surface height, ice surface height, snow height and thermistor depths calculation #254

Closed
wants to merge 5 commits into from

Conversation

BaptisteVandecrux
Copy link
Member

This PR builds on top of #253 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:

  • It calculates z_surf_1 from z_boom_u, z_surf_2 from either z_boom_l or z_boom_l, and z_ice_surf from z_pt_cor

  • After z_surf_1, z_surf_2 and z_ice_surf_1 are created, they are partially adjusted using the QC adjustData function.

  • The processing is different is the station is defined as site_type = 'accumulation' or site_type = 'ablation' in the updated config files on aws-l0

  • For the accumulation sites, the z_surf_combined and snow_height are both defined as the average of z_surf_1 and z_surf_2 (after the jumps due to maintenance are being removed)

  • For the ablation sites, combineSurfaceHeight makes a list of tests and adjustments based on recurrent situations at the station. It first determines for each year the duration of the ablation period (first from z_pt_cor, and if not available, from z_stake, and if not available from the month). Once those periods estimated, then the adjustment loop can begin and is basically a long list of test like "if pressure transducer was working all summer, then adjust the the surface height derived from the two SR50s to the ice surface height on the last ablation day".

  • Eventually z_surf_combined is taken (to put it simply) as the combination of z_pt_cor and z_stake in the ablation period and as the combination of z_boom_u and z_stake in the summer. It should be continuous from year to year and should take its reference "zero" height as the surface height at installation. It only includes surface processes and therefore does not describes completely the elevation change at that site. For this the height change due to ice dynamic should be added to z_surf_combined

  • For each timestamp, 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.

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 PROMICE-AWS-data-issues (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.

- `calcHumid` renamed to `calcSpHumid` for clarity
- `cleanHeatFlux` and `cleanSpHumid` were just removing NaNs, so it is now done at the end of `calcHeatFlux` and `calcSpHumid`
- `rho_atm`, `nu` were only used in `calcSpHumid` so they are calculated inside the function rather than outside
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant