Skip to content

Commit

Permalink
Merge branch 'master' of github.com:VACUMM/vacumm
Browse files Browse the repository at this point in the history
* 'master' of github.com:VACUMM/vacumm:
  Introduction of atmospheric and wave variables
  Add new classes for MesoNh, Sympĥonie and WW3 models
  mars3d model : add t,z,y,xaxis_name class attributes
  fix vacumm.validator.valid.ValidXYT.py : bad import
  fix vacumm.diag.dynamics : bad indexes
  • Loading branch information
stefraynaud committed Nov 2, 2017
2 parents 137c432 + 5dafed3 commit d496186
Show file tree
Hide file tree
Showing 9 changed files with 696 additions and 35 deletions.
359 changes: 331 additions & 28 deletions lib/python/vacumm/data/cf.cfg

Large diffs are not rendered by default.

20 changes: 16 additions & 4 deletions lib/python/vacumm/data/misc/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -2075,14 +2075,22 @@ def torect(self, var, curvsel=None):
class AtmosSurfaceDataset(Dataset):

# For auto-declaring methods
auto_generic_var_names = ['senhf', 'lathf', 'lhf', 'swhf', 'lwhf', 'evap', 'rain',
'taux', 'tauy', 'u10m', 'v10m']
auto_generic_var_names = ['nethf', 'senhf', 'hfsen', 'lathf', 'hflat', 'swhf', 'lwhf', 'evap', 'rain',
'taux', 'tauy', 'u10m', 'v10m', 't2m', 'hu2m', 'z0a', 'cda', 'cha', 'cea']

@getvar_decmets
class OceanSurfaceDataset(Dataset):

# For auto-declaring methods
auto_generic_var_names = ['sst', 'sss', 'ssh', 'usurf', 'vsurf', 'hs']
auto_generic_var_names = ['sst', 'sss', 'ssh', 'usurf', 'vsurf']

@getvar_decmets
class WaveSurfaceDataset(Dataset):
# For auto-declaring methods
auto_generic_var_names = ['hs','mss','mssx','mssy','mss','dir','fp','t0m1','lm',
'ubot','uubr','vubr','bhd','foc','utwo','vtwo','utaw','vtaw','uuss','vuss','utus','vtus',
'fbb','utbb','vtbb','mapsta','bathy','wlv','ucur','vcur','uwnd','vwnd','dp','cha','utaw','vtaw']


@getvar_decmets
class OceanDataset(OceanSurfaceDataset):
Expand Down Expand Up @@ -3663,11 +3671,15 @@ def plot_ped(self, select, **kwargs):
m.post_plot(**plotkw)
return m,c

@getvar_decmets
class AtmosDataset(AtmosSurfaceDataset):
name = 'atmos'
description = 'Generic atmospheric dataset'
ncobj_specs = {}
default_depth_search_mode = None

# For auto-declaring methods
auto_generic_var_names = ['oro','wdir','wspd','ua','va','wa','tair','pa',
'tkea']

def _at_(at, squeezet=False, focus=None, prefix=False):
"""Convert location letters"""
Expand Down
3 changes: 3 additions & 0 deletions lib/python/vacumm/data/model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,6 @@
import mars3d
import nemo
import swan
import mesonh
import symphonie
import ww3
14 changes: 13 additions & 1 deletion lib/python/vacumm/data/model/mars3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,22 @@ class Mars3D(OceanDataset,AtmosSurfaceDataset):
#: Positive up?
positive = 'up'

#: Name of time axis
taxis_name = 'time'

#: Name of vertical axis
zaxis_name = 'levels'

#: Name of meridional / j axis
yaxis_name = 'nj'

#: Name of zonal / i axis
xaxis_name = 'ni'

# Local specs
ncobj_specs = {

# salinity
# diffusivity
'kz':{'search':{'id':['kzm']}},

# sea surface temperature
Expand Down
118 changes: 118 additions & 0 deletions lib/python/vacumm/data/model/mesonh.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
#!/usr/bin/env python
# -*- coding: utf8 -*-
#
# Copyright or © or Copr. Actimar/IFREMER (2010-2017)
#
# [email protected]
#
# This software is a computer program whose purpose is to provide
# utilities for handling oceanographic and atmospheric data,
# with the ultimate goal of validating the MARS model from IFREMER.
#
# This software is governed by the CeCILL license under French law and
# abiding by the rules of distribution of free software. You can use,
# modify and/ or redistribute the software under the terms of the CeCILL
# license as circulated by CEA, CNRS and INRIA at the following URL
# "http://www.cecill.info".
#
# As a counterpart to the access to the source code and rights to copy,
# modify and redistribute granted by the license, users are provided only
# with a limited warranty and the software's author, the holder of the
# economic rights, and the successive licensors have only limited
# liability.
#
# In this respect, the user's attention is drawn to the risks associated
# with loading, using, modifying and/or developing or reproducing the
# software by the user in light of its specific status of free software,
# that may mean that it is complicated to manipulate, and that also
# therefore means that it is reserved for developers and experienced
# professionals having in-depth computer knowledge. Users are therefore
# encouraged to load and test the software's suitability as regards their
# requirements in conditions enabling the security of their systems and/or
# data to be ensured and, more generally, to use and operate it in the
# same conditions as regards security.
#
# The fact that you are presently reading this means that you have had
# knowledge of the CeCILL license and that you accept its terms.
#



__author__ = 'Valerie Garnier'
__email__ = '[email protected]'
__date__ = '2015-07-08'
__doc__ = 'MesoNH model data manipulation'


from vacumm.data import register_dataset
from vacumm.data.misc.dataset import AtmosDataset,OceanSurfaceDataset


class MesoNH(AtmosDataset,OceanSurfaceDataset):
""":class:`~vacumm.data.misc.dataset.Dataset` class to read the
MesoNH ocean model outputs
Read the :class:`~vacumm.data.misc.dataset.Dataset` for more information
"""

name = 'mesonh'
description = "The MesoNH non-hydrostatic mesoscale atmospheric model of the French research community"


# remplacer names par id a priori ?

ncobj_specs = {

# sea surface zonal wind
'usurf':{
'inherit':'ua', # relatif a la methode get_ua et non au nom de variable
'select':{'level':slice(0, None)},
'squeeze':'z',
}
,
# sea surface meridional wind
'vsurf':{
'inherit':'v3d', # heritage des specs
'select':{'level':slice(0, None)},
'squeeze':'z',
}

}

positive = 'up'

def nbcells(self):

"""
For MesoNH, the number of cells along X and Y axes must be a multiple of 2,3,5
"""

list_nb_cells = []
for l in range(10):
for m in range(10):
for n in range(10):
list_nb_cells.append( (2**l*3**m*5**n,l,m,n) )

return sorted(list_nb_cells)

#: Alias for :class:`MesoNH`
mesonh = MesoNH

# Register the class
register_dataset(mesonh)


if __name__ == '__main__' :

nb_cell = mesonh.mesonh().nb_cells()
print nb_cell[0:100]
from vacumm.data import DS
from vacumm.misc.plot import map2 as map
#map(sshmod[0, Ellipsis], res=None)
print "test utus"
f = DS('/temp/vgarnier/AMICO/WORKENV_METHODO/AROME/./AROME_IROISE_20110901-0000_20110910-0000.nc','mesonh')
xwind = f.get_u10m()
xxx
#f.get_depth()
xxxx

114 changes: 114 additions & 0 deletions lib/python/vacumm/data/model/symphonie.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
#!/usr/bin/env python
# -*- coding: utf8 -*-
#
# Copyright or © or Copr. Actimar/IFREMER (2010-2017)
#
# [email protected]
#
# This software is a computer program whose purpose is to provide
# utilities for handling oceanographic and atmospheric data,
# with the ultimate goal of validating the MARS model from IFREMER.
#
# This software is governed by the CeCILL license under French law and
# abiding by the rules of distribution of free software. You can use,
# modify and/ or redistribute the software under the terms of the CeCILL
# license as circulated by CEA, CNRS and INRIA at the following URL
# "http://www.cecill.info".
#
# As a counterpart to the access to the source code and rights to copy,
# modify and redistribute granted by the license, users are provided only
# with a limited warranty and the software's author, the holder of the
# economic rights, and the successive licensors have only limited
# liability.
#
# In this respect, the user's attention is drawn to the risks associated
# with loading, using, modifying and/or developing or reproducing the
# software by the user in light of its specific status of free software,
# that may mean that it is complicated to manipulate, and that also
# therefore means that it is reserved for developers and experienced
# professionals having in-depth computer knowledge. Users are therefore
# encouraged to load and test the software's suitability as regards their
# requirements in conditions enabling the security of their systems and/or
# data to be ensured and, more generally, to use and operate it in the
# same conditions as regards security.
#
# The fact that you are presently reading this means that you have had
# knowledge of the CeCILL license and that you accept its terms.
#



__author__ = 'Valerie Garnier'
__email__ = '[email protected]'
__date__ = '2012-11-14'
__doc__ = 'SYMPHONIE model data manipulation'


from vacumm.data import register_dataset
from vacumm.data.misc.dataset import OceanDataset


class Symphonie(OceanDataset):
""":class:`~vacumm.data.misc.dataset.Dataset` class to read the
SYMPHONIE ocean model outputs
Read the :class:`~vacumm.data.misc.dataset.Dataset` for more information
"""

name = 'symphonie'
description = "The Symphonie ocean model from Laboratoire d'Aerologie"

ncobj_specs = {

# remplacer names par id a priori ?
# depth
'depth':{'search':{'id':['depth_t']}},

# sea surface height
'ssh':{'search':{'id':['ssh_ib']}},

# temperature
'temp':{'search':{'id':['tem']}},

# salinity
'sal':{'search':{'id':['sal']}},

# zonal current (3d)
#useless ? 'u3d':{'search':{'id':['u']}},

# zonal current (barotrope)
#'ubt':{'search':{'id': ['vosaline']}},

# meridional current (3d)
#useless ? 'v3d':{'search':{'id':['v']}},

# meridional current (2d)
#'vbt':{'search':{'id':['vomecrty']}}

}


positive = 'up'


#: Alias for :class:`Symphonie`
symp = Symphonie

# Register the class
register_dataset(symp)

if __name__ == '__main__' :
from vacumm.data import setup_dataset
from vacumm.misc.plot import map2 as map
#f = setup_dataset('symphonie', dataset='/home2/creizic/pgarreau/SIMED/SYMPHONIE/LION/GV_MFSTEP-SYS4_20040702_ASLV.nc')
#sshmod = f.get_ssh()
#map(sshmod[0, Ellipsis], res=None)
# f = DS('symphonie', dataset='/home2/creizic/pgarreau/SIMED/SYMPHONIE/SST/20100501_000118.nc')
print "test temperature"
f = setup_dataset('symp', '/home2/creizic/pgarreau/SIMED/SYMPHONIE/SST/20100501_000118.nc')
# f = setup_dataset('symphonie', '/home2/creizic/pgarreau/SIMED/SYMPHONIE/SST/20100501_000118.nc')
temp = f.get_temp()
xxx
#f.get_depth()
xxxx

Loading

0 comments on commit d496186

Please sign in to comment.