80 likes | 192 Views
ESMF within UV-CDAT. Charles Doutriaux AIMS Team LLNL June 12 th 2014. UV-CDAT.
E N D
ESMF within UV-CDAT Charles Doutriaux AIMS Team LLNL June 12th 2014
UV-CDAT open source, easy-to-use application that links together disparate software subsystems and packages to form an integrated environment for analysis and visualization. This project seeks to advance climate science by fulfilling computational and diagnostic/visualization capabilities needed for DOE's climate research
UV-CDAT • UV-CDAT builds on the following key technologies: • The Climate Data Analysis Tools (CDAT) framework developed at LLNL for the analysis, visualization, and management of large-scale distributed climate data; • ParaView: an open-source, multi-platform, parallel-capable visualization tool with recently added capabilities to better support specific needs of the climate-science community; • VisTrails, an open-source scientific workflow and provenance management system that supports data exploration and visualization;
UV-CDAT • In short: • Climate (for now) oriented set of tools with python-based end-user interface. • Developed at PCMDI heart of MIPs projects • I/O, Analysis and Viz. • Variables are based upon Numpywith the addition of metadata which enables for “smart software” -> cdms2
CDMS2 UV-CDAT’s primary I/O system. Can read multiple file format Variables read in and based on top of Numpy’s masked arrays. Preserve metadata as much/long as possible
Regrid UV-CDAT developed tools can take advantage of MVs metadata. Because each modeling group has its own (set of) grid, regrid of data often necessary Historically used area-weighted method. Worked only for regular grids. AR5 lot of “non-regular” grids
ESMF CMIP5 users needed easy way to go back and forth between models’ grids. In came ESMF with python bindings BUT learning curve was a bit steep. With the help of Alex Pletzer and TechX ESMF was integrated into cdms2’ regridder(Summer 2012). And actually became the default regridder.
ESMF and UV-CDAT filename = "so_Omon_inmcm4_1pctCO2_r1i1p1_209001-209412_2timesteps.nc” g = cdms2.open(filename) so = g('so’) gLat = cdms2.createGaussianAxis(64) deltaLon = (360/128.) gLon = cdms2.createUniformLongitudeAxis(0, 128, deltaLon) gaussGrid = cdms2.grid.createGenericGrid(gLat[:], gLon[:], gLat.getBounds(), gLon.getBounds()) soN = so.regrid(gaussGrid, rt = 'esmf', rm = 'conserve', coordSys = 'deg', periodicity = 1, fixSrcBounds=True)