Closed brancomat closed 3 years ago
Ho aggiunto la ricetta, per favore assaggia e dimmi se è lei
Mi sa che c'è stato un misunderstanding: mcont era il nome della function magics, ho corretto gli shortname delle variabili.
Ho confrontato i plot con quelli operativi, l'unica cosa che resta da sistemare è il ritaglio sulle linee di costa che in questo caso specifico non sarebbe da fare, ri-approfondirò con l'anno nuovo
Preparando un unit test per questa ricetta, ho notato una discrepanza: filtrando con arkimet, pantry/wmax/any_mcont+12.grib
contiene:
edition centre typeOfLevel level dataDate stepRange shortName packingType gridType
1 cnmc heightAboveGround 10 20210110 12-13 vmax_10m grid_simple rotated_ll
Mentre filtrando con eccodes contiene:
edition centre typeOfLevel level dataDate stepRange shortName packingType gridType
1 cnmc heightAboveGround 10 20210110 11-12 vmax_10m grid_simple rotated_ll
Quindi sembrerebbe che cambiando il metodo di dispatch, venga shiftato tutto di un'ora.
La regola che viene scritta per eccodes è:
if ( {i.eccodes} ) {
write "{recipe_dir}/{i.name}_{name}+[endStep].grib";
}
Mentre per arkimet uso:
trange = md.to_python("timerange")
output_step = trange['p1']
source = md.to_python("source")
dest = os.path.join(recipe_dir, f"{inp.name}_{name}+{output_step}.{source['format']}")
Evidentemente non sono equivalenti :)
Qualcuno mi aiuta a trovare quale possa essere il modo giusto di smistare gli input per step nei casi arkimet ed eccodes?
Per riprodurlo velocemente si può provare a fare dispatch con --filter=arkimet
e --filter=eccodes
su due workdir diverse, usando come input: input.tar.gz
Con ifs invece, il filtro eccodes lascia una pantry vuota. Dato di test: ifs.tar.gz
Magari dico un cagatone (@dcesari e @edigiacomo bastonatemi se sbaglio) ma quello che per eccodes è endStep
, per il timerange non è il p2? (edit: in caso di cumulata, media o max/min)
Segue esempio empirico:
[branco@kinotto buttami]$ arki-query --data 'Reftime:=today 0:00;product:GRIB1,,201,187;timerange:GRIB1,,11h,12h' http://arkiope.metarpa:8090/dataset/cosmo_5M_ita > wmax.grib
[branco@kinotto buttami]$ grib_ls wmax.grib
wmax.grib
edition centre typeOfLevel level dataDate stepRange shortName packingType gridType
1 cnmc heightAboveGround 10 20210121 11-12 vmax_10m grid_simple rotated_ll
1 of 1 messages in wmax.grib
1 of 1 total messages in 1 files
[branco@kinotto buttami]$ cat grib.filter
write "pippo+[endStep].grib";
[branco@kinotto buttami]$ grib_filter grib.filter wmax.grib
[branco@kinotto buttami]$ ls pippo*
pippo+12.grib
ora approfondisco cos'ha ifs (ma ho qualche idea, devo aver fatto un replace di troppo)
(confermo typo su filtro eccodes ifs)
integro risposta sopra alla luce di ripassino di https://apps.ecmwf.int/codes/grib/format/grib1/ctable/5/. Da quel che posso capire:
endStep
endStep
(volendo si può metterla giù anche come: "su Time range indicator da 0 a 7 piglia il più grande fra p1 e p2")
Sul resto delle casistiche esotiche per prudenza credo si possa anche tirare un crepone finché non salterà fuori l'esigenza di plottarle (che forse è meglio di prendere comunque di default il più grande fra p1 e p2 e plottarle male finché qualcuno non se ne accorge)
Grande! Ora i conti tornano anche nei test. Chiudo l'issue
sigla : wmax
nota: pur riguardando il vento qui viene plottata solo un valore massimo in m/s (leggi: non sono componenti separate u/v, si usa
mcont
e nonmwind
)variabili necessarie:
GRIB1,98,228,28
(IFS-ECMWF)GRIB1,,201,187
(COSMO) entrambe associate a level tipoGRIB1,100,500
(livello di pressione, tipicamente 250, 500, 700, 850)contouring (isotache)