Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DSD-NL 2019 Scripting met iMOD-Python - Bootsma

810 views

Published on

Presentatie door Huite Bootsma, Deltares, op de iMOD Gebruikersdag 2019, tijdens de Deltares Software Dagen - Editie 2019. Dinsdag, 18 juni 2019, Delft.

Published in: Software
  • Be the first to comment

  • Be the first to like this

DSD-NL 2019 Scripting met iMOD-Python - Bootsma

  1. 1. i M O D G e b r u i k e r s d a g 2 0 1 9 Scripting met iMOD-Python Huite Bootsma & Martijn Visser
  2. 2. iMODGebruikersdag2019 2 Waarom Python? From: The rise of Python, as seen through a decade of Stack Overflow, by Dan Kopf, October 2, 2018 Geen enkele andere programmeertaal heeft momenteel een vergelijkbaar data science “ecosysteem” Groei wordt gedreven door data manipulatie en visualisatie
  3. 3. Waarom scripting? • Reproduceerbaarheid en kwaliteitsborging: een script is een getuigschrift • Efficiëntie • Vergroting van de flexibiliteit: combineerbaarheid • Versnelt het opzetten van modellen • Bijvoorbeeld ensembles in plaats van een enkel “kanoniek” model • Opent dan de deur voor uitgebreidere onzekerheidsanalyse • Versiebeheer: Git! • Integratie met (wetenschappelijke) workflow systemen iMODGebruikersdag2019 3
  4. 4. iMOD-Python: xarray gebaseerd modelling framework iMODGebruikersdag2019 4 • Pre-processing van input data • Opschonen • Verrastering, herprojectie, hergridding, etc. • Modelopzet • iMODFLOW • iMOD-SEAWAT • In ontwikkeling: MODFLOW 6 • Post-processing • Visualisatie • Validatie • Callibratie • Reproduceerbare workflows via: • Versiebeheer: Git • Workflows: Snakemake • Open source
  5. 5. Xarray: N-D gelabelde arrays en datasets iMODGebruikersdag2019 5 • xarray is geïntegreerd met GDAL (via rasterio), en biedt interfaces naar GIS formats, netCDF, zarr, etc. • Automatische parallel en “out-of-core” rekenen met “broksgewijze, luie evaluatie” (chunked, lazy evaluation) • Data reductie over gelabelde dimensies • Wordt ondersteund door NumFOCUS, breed gebruikt: • geofysica • natuurkunde • machine learning • financiële sector
  6. 6. Bouwen op xarray voor MODFLOW iMODGebruikersdag2019 6 >>> head <xarray.DataArray 'head' (x: 429, y: 284, layer: 1, time: 4018)> [489537048 values with dtype=float32] Coordinates: * y (y) float64 4.996e+05 4.994e+05 4.991e+05 ... 4.291e+05 4.289e+05 * x (x) float64 6.438e+04 6.462e+04 6.488e+04 ... 1.711e+05 1.714e+05 * time (time) datetime64[ns] 1996-01-01 1996-01-02 ... 2006-12-31 * layer (layer) int32 1 >>> head.sel(x=150_000, y=450_000, method="nearest").plot() >>> head.(time="2003-01-01").plot()
  7. 7. Maar FloPy dan? iMODGebruikersdag2019 7 ... m["gcg"] = imod.wq.GeneralizedConjugateGradientSolver( max_iter=150, inner_iter=30, cclose=1.0e-6, preconditioner="mic", lump_dispersion=True, ) m["oc"] = imod.wq.OutputControl( save_head_idf=True, save_concentration_idf=True, ) m.time_discretization( starttime=np.datetime64("2000-01-01T00:00"), endtime=np.datetime64("2000-01-01T00:01"), ) m["time_discretization"]["transient"] = False m.write()
  8. 8. iMOD – MODFLOW 6 Submodelling 1) Fijn “kind”grid 2) Grof “ouder”grid iMODGebruikersdag2019 8

×