11 Mai 2023
Pas de mask pour les simus :
if ('cmip5_MRI-ESM1' in file1) | \
('cmip5_MRI-CGCM3' in file1) | \
('cmip5_MIROC4h' in file1) | \
('cmip5_MIROC5' in file1) :
var1_value[var1_value == 0]=np.nan
# Exception : thetao in Celsius & lands=0 °C) ... delicat si temperature à 0
if 'cmip5_EC-EARTH' in file1 :
var1_value[var1_value == 0]=np.nan=> if land = 0 => land = NaN
Peut poser problème quand thetao ou uo strictement = 0.
Mais pas un problème à priori là où on regarde.
Mais risque de générer de la terre là où il n'y en a pas.
Exemple au sud Est de l'australie?
Exemple cmip5ACCESS1-0historical19890101-20051231Omon1mr1i1p1thetaomean
plot lev 1... X inversé.
Mais sans doute un probleme d'affichage automatique non contraint de ferret et ne dérange pas à priori pour faire les sections et les zones
NEAREST ne crée pas d'info, mais NEAREST + LINEAR plus juste pour la moyenne along shore?
Avantage: interpolation avec conservation des flux par exemple
mais long si grilles différente car nécessite la construction de fichiers de poids...
Question de la cold tongue
Avec Juliette? (Réponses à dispatcher dans chapitre Documentation)
Quelle grille choisir ? Grille native gn? Ou regrid gr ???
Quelle scénario ? historical? historical-EXT? historical... ???
Quels forçages? r1i1p1f1 r1i1p1f2?... pour CMIP6? diff avec CMIP5?
(intéressant ou pas de multipliser les expériences d'un même modèle?)
project='CMIP6',
info : Attribute realization ='r1i1p1f*' has multiple values : ['r1i1p1f3', 'r1i1p1f1', 'r1i1p1f2']
info : Attribute grid ='g*' has multiple values : ['gr1', 'gn', 'gr']Est ce parce qu'en 2019 j'allais chercher r1i1p1 et r1i1p2... ??
liste 2023: shortnames detailed
liste 2019: shortnames detailed
en plus par rapport à 2019:
cmip5_FGOALS-s2
cmip5_inmcm4
cmip5_MIROC4h
cmip5_MIROC5en plus par rapport à 2023:
cmip5_MPI-ESM-LR
cmip5_MPI-ESM-MR
cmip5_MPI-ESM-PPourquoi moyenne GLORYS sur 1993-2009 et 2003-2007 ?
Pourquoi moyenne OISST sur 1d20032007 et c1m19892011 ?
des périodes différentes:
1989-1999
1990-2009
1989-2009
... est ce un problème?
Scénarios :
trop025_nemo/
trop025_now/
trop075_nemo/
trop075_now/
trop12_nemo/
Intéressant d'ajouter les simus avec zoom sur Pérou comme
trop075_peru025_nemo ?
"gn":"data reported on a model's native grid",
"gr":"regridded data reported on the data provider's preferred target grid",
en lignes de commandes python
sur spirit: cd /data/cholod/wd/EUC_Upwelling/cmip/01_extract
1989-2005, Omon, monthly, historical, r1i1p1 (27 Avril 2023)
cmip5_ACCESS1-0_historical_19890101-20051231_Omon_1m_r1i1p1_thetao_mean.ORIG.nc1989-2005, Omon, monthly, historical, r1i1p1f1, grid gn (27 Avril 2023)
cmip6_ACCESS-CM2_historical_19890101-20051231_Omon_1m_r1i1p1f1_gn_thetao_mean.ORIG.ncdimensions:
time = UNLIMITED ; // (1 currently)
bnds = 2 ;
ncells = 830305 ;
vertices = 16 ;
depth = 46 ; double rho(rho) ;
rho:_FillValue = NaN ;
rho:standard_name = "sea_water_potential_density" ;
rho:long_name = "potential density referenced to 2000 dbar" ;
rho:units = "kg m-3" ;
rho:positive = "down" ; double lev(lev) ;
lev:standard_name = "ocean_sigma_coordinate" ;
lev:long_name = "ocean sigma coordinate" ;--> 178 var12_A[kk,:,:]=scipy.interpolate.griddata((lon1.flatten(),lat1.flatten()),var1[kk,:,:].flatten(),(lon2,lat2),method=interp_method_A)
179 var12_B[kk,:,:]=scipy.interpolate.griddata((lon1.flatten(),lat1.flatten()),var1[kk,:,:].flatten(),(lon2,lat2),method=interp_method_B)
180 var12_AB[kk,:,:]=np.copy(var12_B[kk,:,:])
/net/nfs/tools/u20/Python/anaconda-2021.11/envs/meso-3.9/lib/python3.9/site-packages/scipy/interpolate/ndgriddata.py in griddata(points, values, xi, method, fill_value, rescale)
258 return ip(xi)
259 elif method == 'linear':
--> 260 ip = LinearNDInterpolator(points, values, fill_value=fill_value,
261 rescale=rescale)
262 return ip(xi)
interpnd.pyx in scipy.interpolate.interpnd.LinearNDInterpolator.__init__()
qhull.pyx in scipy.spatial.qhull.Delaunay.__init__()
qhull.pyx in scipy.spatial.qhull._Qhull.__init__()
QhullError: QH6154 Qhull precision error: Initial simplex is flat (facet 1 is coplanar with the interior point)from bdd on spirit
Olivier Toressur spirit: cd /data/cholod/wd/EUC_Upwelling/cmip/02_pre-processing
script: 02_preprocess.py
traitement
traitement spécial thetao:
traitement spécial lev:
#-------------------------------------------------------------------------------
# lev cmip5
#-------------------------------------------------------------------------------
lev : default
depth : inmcm4 (sinon lev en sigma!)
tous les niveaux vont de la surface vers le fond
Exception : HadGEM2-AO
#-------------------------------------------------------------------------------
# lev cmip6
#-------------------------------------------------------------------------------
lev (m) : default
lev (cm) : CESM2-FV2, CESM2, CESM2-WACCM-FV2, CESM2-WACCM
deptht(m) : IPSL-CM5A2-INCA
olevel(m) : IPSL-CM6A-LR, IPSL-CM6A-LR-INCA
tous les niveaux vont de la surface vers le fond
#-------------------------------------------------------------------------------
# longitude cmip5
#-------------------------------------------------------------------------------
lon :default
#-------------------------------------------------------------------------------
# longitude cmip6
#-------------------------------------------------------------------------------
longitude : default
lon : CESM2, GFDL, GISS
nav_lon : IPSLsur spirit: cd /data/cholod/wd/EUC_Upwelling/cmip/03_interp-horiz
script: interp-horiz-scipy.py
scipy.interpolate.griddata. LINEAR puis NEAREST
On interpole tous les fichiers (GLORYS, cmip & trop) de la même manière avec scipy.
Exception pour les trop dont la résolution est la même que la résolution de la grille d'interpolation:
On ne ré interpole pas puisque les grilles sont les mêmes.
En revanche on passe dans la même moulinette pour avoir exactement les mêmes infos
(notamment les longitudes qui avec l'interpolation passent les valeurs de 180 => 181 en 180 => -179)
sur spirit: cd /data/cholod/wd/EUC_Upwelling/cmip/04_interp-vert
script: interp-vert-cdo.sh
cdo intlevel
sur les 75 niveaux des grilles pulsation
lev_grid="0.50576,1.555855,2.667682,3.85628,5.140361,6.543034,8.092519,9.82275,11.77368,13.99104,16.52532,19.4298,22.75762,26.5583,30.87456,35.7402,41.18002,47.21189,53.85064,61.11284,69.02168,77.61116,86.92943,97.04131,108.0303,120,133.0758,147.4062,163.1645,180.5499,199.79,221.1412,244.8906,271.3564,300.8875,333.8628,370.6885,411.7939,457.6256,508.6399,565.2923,628.026,697.2587,773.3683,856.679,947.4479,1045.854,1151.991,1265.861,1387.377,1516.364,1652.568,1795.671,1945.296,2101.027,2262.422,2429.025,2600.38,2776.039,2955.57,3138.565,3324.641,3513.446,3704.657,3897.982,4093.159,4289.953,4488.155,4687.581,4888.07,5089.479,5291.683,5494.575,5698.061,5902.058"Les premiers niveaux ne sont souvent pas rempli car pas d'extrapolation.
=> On récupère le niveau 1 original pour le mettre au niveau 1 de la grille trop pour plotter la sst réelle.
sur spirit: cd /data/cholod/wd/EUC_Upwelling/cmip/05_lev1_orig
script: lev1_orig.py
Interpolation verticale avec CDO sur les 75 niveaux de la grille trop fait que les premiers et derniers niveaux restent sans valeur.
On recopie sur le premier niveau vertical de la grille trop le premier niveau vertical de la grille native.
=> premier niveau vertical = SST réel de chaque simu CMIP.
Tous les scripts ouverts sur les perspectives (multi zone, o2 comme hdfs...)
même diags... oxycline zone upwelling = f(O2 dans EUC) ???
Va avec interup: qu'elle est la part de l'EUC dans l'alimentation de chaque zone?