Presentation is loading. Please wait.

Presentation is loading. Please wait.

Data processing of current estimates

Similar presentations


Presentation on theme: "Data processing of current estimates"— Presentation transcript:

1 Data processing of current estimates
from glider observations Lucas Merckelbach, Bartolome Garau

2 Table of contents Basic principle of current calculation Definitions
Real Time and Delayed Mode Example netCDF header

3 Basic principle

4 Definitions watercurrents_lat = ( lat0 + lat1) / 2
watercurrents_lon = ( lon0 + lon1) / 2 watercurrents_time = (time0 + time1) / 2

5 Definitions watercurrents_water_vx (standard_name: eastward_sea_water_velocity) watercurrents_water_vy (standard_name: northward_sea_water_velocity) OR watercurrents_water_speed (standard_name: sea_water_speed) watercurrents_water_direction (standard_name: direction_of_sea_water_velocity)

6 Definitions watercurrents_integration_time = time1 – time0
watercurrents_mean_depth = sum(depth * deltaTime) / watercurrents_integration_time

7 Definitions watercurrents_glider_speed (standard_name: platform_speed_wrt_sea_water) watercurrents_glider_direction (standard_name: platform_orientation) CF does not know about east/north components for platform velocity So it is proposed to represent water currents in polar coordinates for reasons of consistency.

8 Definitions max_depth_considered_as_surface (5 m)
"if the 75% percentile depth is larger than this value, the profile is considered as a proper dive." max_gps_fix_interval (300 s) if the interval between gps fixes is larger than this value, they are considered as seperate surfacing events. depth_considered_as_underwater 1. (m) "the dive starts as soon as the observed depth is larger than this value and ends when there are no more depth readings larger than this value between two surface events." max_drift_time (1800. s) "if the glider drifts for longer than this value, any depth averaged current calculations reported after this time are not considered anymore." ideal_drift_time (300 s) "if multiple water current calculations are reported, the one that is closest to this value is selected."

9 Real Time / Delayed Mode
Algorithm for deadreckoned position does not include angle of attack. Consequence: glider speed through water is overestimated by 2- 4 cm/s. Recent glider firmware allows for including the angle of attack, but user can only switch it on or off. Angle of attack depends heavily on drag coefficient, which can increase considerably in longer missions (biofouling).

10 Real Time / Delayed Mode
Real time mode: Base calculations on m_water_{vx,vy} as m_final_water_{vx,vy} is not available until next surfacing with data transmission Optionally correct current estimate due to overestimation glider speed, based on relationship between pitch and angle of attack derived from historic data Delayed mode: Base calculations on m_final_water_{vx,vy}. Optionally correct current estimate by determining the angle of attack from high-density glider data (Throws in a lot of extra ballast in terms of models)

11 Sources of error Compass calibration: Magnetic variation:
It makes only sense to compute water velocities if the compass has been calibrated prior to the mission Post-mission compass calibration is possible, but very cumbersome. In-mission compass calibration should be possible in theory (special mission definition, and cumbersome post-processing) Magnetic variation: Magnetic variation is “measured” from GPS sentences. In comparison to heading error, the uncertainty in magnetic variation is negligible.

12 NetCDF example Code: Currently implemented in Python
Available in subversion: svn co Login account required (K. Bernadet CNRS/DT-INSU)

13 NetCDF example netcdf test2 { dimensions: Time = 244 ; variables:
double watercurrents_lat(Time) ; watercurrents_lat:unit = "deg" ; watercurrents_lat:long_name = "Dive averaged latitude" ; double watercurrents_lon(Time) ; watercurrents_lon:unit = "deg" ; watercurrents_lon:long_name = "Dive averaged longitude" ; double watercurrents_time(Time) ; watercurrents_time:unit = "seconds since 1 Jan 1970" ; watercurrents_time:long_name = "Dive averaged time" ; double watercurrents_water_speed(Time) ; watercurrents_water_speed:unit = "m/s" ; watercurrents_water_speed:long_name = "Dive averaged water current speed" ; double watercurrents_water_direction(Time) ; watercurrents_water_direction:unit = "deg" ; watercurrents_water_direction:long_name = "Dive averaged water current direction" ; double watercurrents_integration_time(Time) ; watercurrents_integration_time:unit = "s" ; watercurrents_integration_time:long_name = "Subsurface time" ; double watercurrents_mean_depth(Time) ; watercurrents_mean_depth:unit = "m" ; watercurrents_mean_depth:long_name = "Dive averaged depth" ; double watercurrents_glider_speed(Time) ; watercurrents_glider_speed:unit = "m/s" ; watercurrents_glider_speed:long_name = "Dive averaged glider speed" ; double watercurrents_glider_direction(Time) ; watercurrents_glider_direction:unit = "deg" ; watercurrents_glider_direction:long_name = "Dive averaged glider direction" ; // global attributes:

14 NetCDF example // global attributes: :Creator = "currents.py" ;
:Creation_time = "31 May :44 Z" ; :Water_current_estimate = "Final estimate" ; :Water_current_estimate_accuracy = "TODO" ; :max_depth_considered_as_surface = 5. ; :max_depth_considered_as_surface_unit = "m" ; :max_depth_considered_as_surface_description = "if the 75% percentile depth is larger than this value, the profile is considered as a proper dive." ; :max_gps_fix_interval = 300. ; :max_gps_fix_interval_unit = "s" ; :max_gps_fix_interval_description = "if the interval between gps fixes is larger than this value, they are considered as seperate surfacing events." ; :depth_considered_as_underwater = 1. ; :depth_considered_as_underwater_unit = "m" ; :depth_considered_as_underwater_description = "the dive starts as soon as the observed depth is larger than this value and ends when there are no more depth readings larger than this value between two surface events." ; :max_drift_time = ; :max_drift_time_unit = "s" ; :max_drift_time_description = "if the glider drifts for longer than this value, any depth averaged current calculations reported after this time are not considered anymore." ; :ideal_drif_time = 300. ; :ideal_drift_time_unit = "s" ; :ideal_drift_time_description = "if multiple water current calculations are reported, the one that is closest to this value is selected." ; }


Download ppt "Data processing of current estimates"

Similar presentations


Ads by Google