3.8.17. Leçon sur les diagnostiques physiques

De nombreux diagnostiques peuvent être ajouter, et vous êtes tous conviés à proposer des idées et des codes adaptables.

3.8.17.1. Leçon 1 : la marée

Voir vacumm.tide.

Fichier courses_phys_tide.py

#!/usr/bin/env python
# -*- coding: utf8 -*-
"""Diagnostics de maree"""

from vcmq import cdms2, P, curve2, savefigs, data_sample
from vacumm.tide.filters import demerliac, godin
from vacumm.tide.filters import extrema, zeros
from vacumm.tide.marigraph import Marigraph
from vacumm.tide.station_info import StationInfo

# Stations
station = StationInfo('Brest')
print station.attributes()
print station.name, station.longitude
print 'Niveau moyen a Brest:', station.nm


# Read sea level at Brest
f = cdms2.open(data_sample("tide.sealevel.BREST.mars.nc"))
sea_level = f('sea_level')
f.close()


# Surcotes/decotes
cotes, tide = demerliac(sea_level, get_tide=True)            # -> ESSAYER GODIN
kwp = dict(date_fmt='%b', date_locator='month')
curve2(sea_level, 'b', show=False, figsize=(15, 4), **kwp)
curve2(tide, 'r', **kwp)
curve2(cotes, figsize=(15, 4), **kwp)


# Extremas
slzoom1 = sea_level(('2006-10-01', '2006-10-02'))[::4] # Toutes les heures
bm, pm = extrema(slzoom1, spline=True, ref='mean')           # -> SANS SPLINES
zz = zeros(slzoom1, ref='mean')                              # -> AUTRES REFERENCE ?
curve2(slzoom1, 'ko', markersize=3, figsize=(6, 4), show=False)
curve2(zz, 'go', linewidth=0, show=False, xstrict=False)
curve2(pm, 'ro', linewidth=0, show=False, xstrict=False)
curve2(bm, 'bo', linewidth=0, xstrict=False, title="Niveau de la mer")


# Outil marégraphique
slzoom2 = sea_level(('2006-10', '2006-11'))[::4] # Toutes les heures
mg = Marigraph(slzoom2, verbose=True)
tide = mg.tide(tide_filter='demerliac')                     # -> ESSAYER COTES/HIGH...
mg.plot()                                                   # -> SELECTION

3.8.17.2. Leçon 2 : dynamique et thermodynamique

Voir vacumm.diag.thermdyn et vacumm.diag.dynamics.

Fichier courses_phys_dyn.py

#!/usr/bin/env python
# -*- coding: utf8 -*-
"""Diagnostics thermodynamiques et dynamiques (:mod:`vacumm.diag.thermdyn` et :mod:`vacumm.diag.dynamics`)"""

from vcmq import DS, data_sample, map2, density, mixed_layer_depth,  barotropic_geostrophic_velocity, kinetic_energy, shapiro2d

# Lecture des données de base
ds = DS(data_sample('menor.nc'))
temp = ds.get_temp(squeeze=1)
sal = ds.get_sal(squeeze=1)
depth = ds.get_depth(squeeze=1)
ssh = ds.get_ssh(squeeze=1)


# Densité
dens_surf = density(temp[-1], sal[-1])                      # -> CALCULER DENSITE 3D
map2(dens_surf)


# Couche mélangée
mld = mixed_layer_depth((temp, sal), depth, mode='deltadens') # -> ESSAYER AUTRES MODES
map2(mld, vmax=600.)


# Vitesse geostrophique
# - vitesses
ug, vg = barotropic_geostrophic_velocity(ssh)
# - energie cinetique
ke = kinetic_energy((ug, vg))                                 # -> TESTER AVEC SSH
ke.long_name = 'Surface geostrophique kinetic energy'
ke = shapiro2d(ke)
# - plot
map2((ke, ug, vg), fill='pcolormesh', vmax=0.2, quiver_vmax=1.5, figsize=(10, 8), 
    quiver_samp=2, quiver_width=2, contour=False, cmap_tint=0.3, 
    quiverkey_value=1, quiver_scale=13)