NCL Introduction Dennis Shea National Center for Atmospheric Research.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

Introducing JavaScript
Introduction to arrays
M AT L AB Programming: scripts & functions. Scripts It is possible to achieve a lot simply by executing one command at a time on the command line (even.
Tutorial 12: Enhancing Excel with Visual Basic for Applications
1 CS 161 Introduction to Programming and Problem Solving Chapter 9 C++ Program Components Herbert G. Mayer, PSU Status 10/20/2014.
By Hrishikesh Gadre Session II Department of Mechanical Engineering Louisiana State University Engineering Equation Solver Tutorials.
Chapter 10.
Chapter Day 5. © 2007 Pearson Addison-Wesley. All rights reserved2-2 Agenda Day 5 Questions from last Class?? Problem set 1 Posted  Introduction on developing.
Working with JavaScript. 2 Objectives Introducing JavaScript Inserting JavaScript into a Web Page File Writing Output to the Web Page Working with Variables.
NetCDF An Effective Way to Store and Retrieve Scientific Datasets Jianwei Li 02/11/2002.
Guide To UNIX Using Linux Third Edition
Introduction to Array The fundamental unit of data in any MATLAB program is the array. 1. An array is a collection of data values organized into rows and.
Chapter 8 Multidimensional Arrays C Programming for Scientists & Engineers with Applications by Reddy & Ziegler.
The NCAR Command Language (NCL) Ethan Alpert Visualization and Enabling Technologies Section, SCD, NCAR.
Mathcad Variable Names A string of characters (including numbers and some “special” characters (e.g. #, %, _, and a few more) Cannot start with a number.
Introduction to FORTRAN
JavaScript, Fifth Edition Chapter 1 Introduction to JavaScript.
Introduction to MATLAB Session 1 Prepared By: Dina El Kholy Ahmed Dalal Statistics Course – Biomedical Department -year 3.
IE 212: Computational Methods for Industrial Engineering
Introduction to Python
General Computer Science for Engineers CISC 106 Lecture 02 Dr. John Cavazos Computer and Information Sciences 09/03/2010.
Lists in Python.
Lesson 1: Introduction to ABAP OBJECTS Todd A. Boyle, Ph.D. St. Francis Xavier University.
Objectives Understand what MATLAB is and why it is widely used in engineering and science Start the MATLAB program and solve simple problems in the command.
1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,
Introduction to SAS. What is SAS? SAS originally stood for “Statistical Analysis System”. SAS is a computer software system that provides all the tools.
Computational Methods of Scientific Programming Lecturers Thomas A Herring, Room A, Chris Hill, Room ,
Programming With C.
Slides based on lectures from the NCL workshop Also see the NCL homepage.
The netCDF-4 data model and format Russ Rew, UCAR Unidata NetCDF Workshop 25 October 2012.
Shell Programming. Introducing UNIX Shells  Shell is also a programming language and provides various features like variables, branching, looping and.
Introduction Dennis Shea NCAR is sponsored by the National Science Foundation.
Matlab Programming for Engineers Dr. Bashir NOURI Introduction to Matlab Matlab Basics Branching Statements Loops User Defined Functions Additional Data.
Integrating netCDF and OPeNDAP (The DrNO Project) Dr. Dennis Heimbigner Unidata Go-ESSP Workshop Seattle, WA, Sept
Variables and ConstantstMyn1 Variables and Constants PHP stands for: ”PHP: Hypertext Preprocessor”, and it is a server-side programming language. Special.
Advanced Utilities Extending ncgen to support the netCDF-4 Data Model Dr. Dennis Heimbigner Unidata netCDF Workshop August 3-4, 2009.
Brief Overview: GRIB, HDF, WRF.nc
Guide to Oracle 10g ITBIS373 Database Development Lecture 4a - Chapter 4: Using SQL Queries to Insert, Update, Delete, and View Data.
Climate Data Formats Deniz Bozkurt
Introducing Python CS 4320, SPRING Lexical Structure Two aspects of Python syntax may be challenging to Java programmers Indenting ◦Indenting is.
Chapter 3 Syntax, Errors, and Debugging Fundamentals of Java.
Eurasia Institute of Earth Sciences Istanbul Technical University NCL Introduction Deniz Bozkurt web.itu.edu.tr/bozkurtd ITU Eurasia Institute of Earth.
NCL Sample Scripts Dennis Shea Climate and Global Dynamics Division Climate Analysis Section.
Introduction to Python Dr. José M. Reyes Álamo. 2 Three Rules of Programming Rule 1: Think before you program Rule 2: A program is a human-readable set.
00/XXXX 1 Data Processing in PRISM Introduction. COCO (CDMS Overloaded for CF Objects) What is it. Why is COCO written in Python. Implementation Data Operations.
INTRODUCTION TO MATLAB DAVID COOPER SUMMER Course Layout SundayMondayTuesdayWednesdayThursdayFridaySaturday 67 Intro 89 Scripts 1011 Work
INTRODUCTION TO MATLAB Dr. Hugh Blanton ENTC 4347.
Chapter 8 Arrays. A First Book of ANSI C, Fourth Edition2 Introduction Atomic variable: variable whose value cannot be further subdivided into a built-in.
1 Faculty Name Prof. A. A. Saati. 2 MATLAB Fundamentals 3 1.Reading home works ( Applied Numerical Methods )  CHAPTER 2: MATLAB Fundamentals (p.24)
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. A Concise Introduction to MATLAB ® William J. Palm III.
Math 252: Math Modeling Eli Goldwyn Introduction to MATLAB.
Javascript Basic Concepts Presentation By: Er. Sunny Chanday Lecturer CSE/IT RBIENT.
 CONACT UC:  Magnific training   
Lecture 11 Introduction to R and Accessing USGS Data from Web Services Jeffery S. Horsburgh Hydroinformatics Fall 2013 This work was funded by National.
Introduction Dennis Shea NCAR is sponsored by the National Science Foundation.
13-1 ANSYS, Inc. Proprietary © 2009 ANSYS, Inc. All rights reserved. April 28, 2009 Inventory # Chapter 13 Solver.out File and CCL Introduction to.
IST 210: PHP Basics IST 210: Organization of Data IST2101.
NcBrowse: A Graphical netCDF File Browser Donald Denbo NOAA-PMEL/UW-JISAO
1-2 What is the Matlab environment? How can you create vectors ? What does the colon : operator do? How does the use of the built-in linspace function.
FILES AND EXCEPTIONS Topics Introduction to File Input and Output Using Loops to Process Files Processing Records Exceptions.
Other Projects Relevant (and Not So Relevant) to the SODA Ideal: NetCDF, HDF, OLE/COM/DCOM, OpenDoc, Zope Sheila Denn INLS April 16, 2001.
File Input / Output Dennis Shea Input Output
NetCDF 資料格式介紹 NCL 變數設定介紹
National Scientific Library at Tbilisi State University
JavaScript: Functions.
Introduction to Python
Use of Mathematics using Technology (Maltlab)
Introduction to Computer Programming
NCL variable based on a netCDF variable model
Presentation transcript:

NCL Introduction Dennis Shea National Center for Atmospheric Research

Workshop Overview Objective Schedule comfortable with NCL; minimize learning curve workshop will not make you an expert access, process and visualize data Schedule day 1: Intro/Language Basics, File I/O, Graphics: Lab day 2: Data Processing [two sessions]: Lab day 3 / optional day 4 [8-12] Lab Labs important: you must invest the time “osmosis” method of learning does not work

Size = 3 1D array time (3) scalar (vector) time(time) x(8), y(8) Q(8,8) Q(y,x) 3D array Z(4) x(8), y(8), z(4) R(4,8,8) R(z,y,x) Time x(8), y(8), z(4), t(3) S(3,4,8,8) (time,z,y,x) 4D array

NCL variable based on a netCDF variable model Introduction to netCDF NCL variable based on a netCDF variable model

netCDF files self describing portable [machine independent] (ideally) all info contained within file no external information needed to determine file contents portable [machine independent] Supported by many software tools / languages NCL, IDL, Matlab, ferret, GrADS,... / F, C, C++, Java,… NCO: netCDF Operators perform various tasks very efficiently http://nco.sourceforge.net ncview quick visualization: COARDS http://meteora.ucsd.edu/~pierce/ncview_home_page.html Many modelling groups use netCDF

Examining a netCDF file ncdump file_name | less dumps the entire contents of a file ncdump -h file_name | less dumps the header info [most commonly used] NCL equivalent: ncl_filedump file_name | less ncdump -v U file_name | less NCL equivalent: ncl_filedump –v U file_name | less Note: ncdump is a Unidata utility not a netCDF Operator (NCO) not associated with NCL ncview to visualize file contents [COARDS] ncl_filedump file_name [ more general ] netCDF, GRIB, HDF, HDF-EOS

Parts of netCDF file ncdump -h 1999.nc VARIABLES: Names , Attributes, Coordinates variables: float lat(lat) ; lat:long_name = "latitude" ; lat:units = "degrees_north" ; float lon(lon) ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; int time(time) ; time:long_name = "time" ; time:units = "Month of Year" ; double T(time, lat, lon) ; T:long_name = “Temperature”; T:units = “C" ; T:missing_value = 1.e+20f ; T:_FillValue = 1.e+20f DIMENSIONS: dimensions: lat = 64 ; lon = 128 ; time = 12 ; FILE ATTRIBUTES: global attributes: :title = “Temp: 1999" ; :source = “NCAR” ; :conventions = "None" ; exercise: ncl_filedump –h UV300.nc | less

Simple Array [fortran] array [regular shape; could be of length 1 (scalar)] parameter (nrow=7, ncol=5) real x(nrow,ncol) 4.35 4.39 0.27 -3.35 -6.90 4.36 4.66 3.77 -1.66 4.06 9.73 -5.84 0.89 8.46 10.39 4.91 4.59 -3.09 7.55 4.56 .17 3.68 5.08 0.14 -5.63 -0.63 -4.12 -2.51 1.76 -1.43 -4.29 0.07 5.85 0.87 8.65 x name: x type: real (float) shape: 2-dimensions [ 2D ] size: 7 (rows) x 5 (columns) values: x(3,4) = 8.46 [col major]

netCDF/NCL variable array [could be of length 1 (scalar)] (may) have additional information 4.35 4.39 0.27 -3.35 -6.90 4.36 4.66 3.77 -1.66 4.06 9.73 -5.84 0.89 8.46 10.39 4.91 4.59 -3.09 7.55 4.56 .17 3.68 5.08 0.14 -5.63 -0.63 -4.12 -2.51 1.76 -1.43 -4.29 0.07 5.85 0.87 8.65 x name: x type: float [real] shape: 2-dimensions size: 7 (rows) x 5 (columns) values: x(2,3) = 8.46 [row major] long_name: “Temperature” units: “C” named dimensions: x(time,lat) lat: (/ -60, -30 ,0, 30, 60 /) time: (/2000,2001,2002,2003,2004,2005,2006 /)

visual: simple 2D netCDF Variable coordinate variables attributes @: long_name units Latitude coordinate variable (1D, &) Longitude coordinate variable (1D, &) NCL is NOT LIMITED to netCDF conforming variables eg: 2D coordinate arrays (curvilinear coords)

netCDF [NCL] Variable model X Scalar or Array f = addfile(“foo.nc”,”r”) ; grb/hdf x = f->X NCL reads the scalar/array, attributes, and coordinate variables as an object attributes long_name _FillValue units add_offset scale_factor etc. X accessed via @ accessed via & values Scalar or Array attributes long_name _FillValue units add_offset scale_factor etc. time lev lat lon etc. coord var time lev lat lon etc. coordinates

Detailed Look netCDF Variable (NCL) ncl <return> ; interactive mode ncl 0 > f = addfile ("UV300.nc", "r") ; open file ncl 1 > u = f->U ; import STRUCTURE ncl 2 > printVarSummary (u) ; overview of variable Variable: u Type: float Total Size: 65536 bytes 16384 values Number of Dimensions: 3 Dimensions and Sizes: [time | 2] x [lat | 64] x [lon | 128] Coordinates: time: [ 1 .. 7 ] lat: [ -87.8638 .. 87.8638 ] lon: [ 0 .. 357.185] Number of Attributes: 5 _FillValue : 1e36 units : m/s long_name : Zonal Wind Component short_name : U missing_value : 1e36 Classic netCDF Variable Model NCL syntax/funcs query use modify add any aspect of data object

when creating output file in NCL (optional) UNLIMITED dimension special dimension essentially a “record” dimension time dimension is most frequently “unlimited” used by the NCO to concatenate files no special meaning to NCL when creating output file in NCL (optional) filedimdef (outputfile, “time”, -1, True ) example: ncdump -h T2m_ud.nc netcdf T2m_ud { dimensions: time = UNLIMITED ; // (204 currently) lat = 94 ; lon = 192 ; lev = 18}

Integrated processing environment NCL Overview Integrated processing environment pdf Vis5D freeware: supported, public domain portable: Linux/Unix, Windows, MacOSX general purpose: unique capabilities excellent graphics

NCL Support Documentation and Examples http://www.ncl.ucar.edu/ numerous downloadable examples to get you going downloadable reference manuals [pdf], FAQ ncl-talk@ucar.edu users must subscribe http://www.ncl.ucar.edu/Support/ncl_talk.shtml [haley@ucar.edu , shea@ucar.edu]

Complete Programming Language NCAR Command Language Complete Programming Language data types variables operators expressions conditional statements loops functions/procedures/graphics Features query / manipulate meta data import data in a variety of formats array syntax / operations can use user fortran/C codes and commercial libraries most functions/procedures ignore missing data

Running NCL Batch Mode [ .ncl suffix is optional] Interactive Mode (Command line) ncl [options][command-line-arguments] <return> ncl> enter commands ncl> quit <return> can save interactive commands ncl> record (“file_name”) ncl> stop record Batch Mode [ .ncl suffix is optional] ncl [options][arguments] script.ncl ncl < script.ncl [also acceptable] ncl [options][arguments] script.ncl >&! out ncl [options][arguments] script.ncl >&! out & appending "&" means put in background note: the >&! & are csh and tcsh syntax

NCL predefined options ncl –hnxV [predfined options are preceded by dash] may be used for interactive or batch mode informational ncl –h [display predefined options and usage and exit] ncl –V [print the NCL version and exit] action ncl –x [echo statements as encountered (debug)] ncl –n [don't enumerate dimensions of values in print() ] multiple predefined options ncl –nx [ not ncl –n –x ]

Sample Batch Script: sample.ncl load “$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl“ load “$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl“ begin ; optional f1 = addfile("TMP_58-97.nc", "r") ; open netCDF file T = f1->Tmp ; T(time,lev,lat,lon) =>(480,17,73,144) f2 = addfile(“P_1958-1997.grb", "r") ; open GRIB file P = f2->Pres ; P(time,lev,lat,lon) f3 = addfile(“Q_1958-1997.hdfeos", "r") ; open hdf –eos file Q = f3->Specific_Humidity ; Q(time,lev,lat,lon) pot = T* (1.+0.622*Q) *(1000/P)^0.286 ; potential temperature (array) print("pot: min="+ min(pot) + " max="+ max(pot) ) wks = gsn_open_wks("ps", “sample") ; open a graphic workstation gsn_define_colormap (wks,"gui_default") ; change from default plot = gsn_csm_contour_map_polar (wks,T(0,5,:,:),False) res = True ; change default plot res@cnFillOn = True ; use colors res@gsnSpreadColors = True ; use entire color map plot = gsn_csm_pres_hgt (wks,T(0,:,{50},:), res ) end ; only if begin is present

Language Basics

Outline: Language Basics special syntax characters data types Variables  netCDF/NCL variable model attributes _FillValue named dimensions coordinate variables print and printVarSummary shaping subscripting

NCL Syntax Characters ; - comment [can appear anywhere] @ - reference/create attributes ! - reference/create named dimension & - reference/create coordinate variable {…} - coordinate subscripting $ - enclose strings when (im/ex)port variables via addfile (/../) - array construct characters : - array syntax | - separator for named dimensions \ - continue character [statement to span multiple lines] :: - syntax for external shared objects (eg, fortran/C) -> - use to (im/ex)port variables via addfile function

Data Types Numeric double (64 bit) float (32 bit) long (32 or 64 bit) integer (32 bit) short (16 bit) byte ( 8 bit, 0-255) complex NOT supported non-Numeric string character graphic file logical list

netCDF/NCL variable array [could be of length 1 (scalar)] (may) have additional information 4.35 4.39 0.27 -3.35 -6.90 4.36 4.66 3.77 -1.66 4.06 9.73 -5.84 0.89 8.46 10.39 4.91 4.59 -3.09 7.55 4.56 .17 3.68 5.08 0.14 -5.63 -0.63 -4.12 -2.51 1.76 -1.43 -4.29 0.07 5.85 0.87 8.65 x name: x type: float [real] shape: 2-dimensions size: 7 (rows) x 5 (columns) values: x(2,3) = 8.46 [row major] long_name: “Temperature” units: “C” named dimensions: x(time,lat) lat: (/ -60, -30 ,0, 30, 60 /) time: (/2000,2001,2002,2003,2004,2005,2006 /) Meta data

NCL variable model (2 of 2) (possibly) has much more info: meta data information about the variable descriptive variable name, units, etc coordinate information dimensions can be 1D variables x(lat,lon) lat/lon are 1D vectors (coord variables) NCL variable => “variable data object” [C: struct , f90: derived type] values (possibly) descriptive info (textual/numeric) (possibly) coordinate information (numeric)

Why Know NCL Variable Model variables imported (read) from nc, grib, hdf, hdf-eos will have the same [consistent] structure powerful programming concept facilitates writing netCDF and HDF files facilitates writing robust functions functions can query, add, use meta data some functions access/use the meta data eg: gsn_csm graphic functions aware of common netCDF conventions will query and use for labels and mapping

Simple Variable Assignment a_int = 1 , a_float = 2.0 [2e-5] a_double = 3.2d a_string = "a” , a_logical = True [False] array constructor characters (/…/) a_integer = (/1,2,3/) a_float = (/1.0, 2.0, 3.0/) a_double = (/1., 2 , 3.2 /) *1d5 a_string = (/"abcd","e", "Hello, World”/) a_logical = (/True, False,True/) a_2darray = (/ (/1,2,3/), (/4,5,6/), (/7,8,9/) /)

Conversion between data types coercion implicit conversion of one type to another automatic coercion when no info is lost fortran: x=i and i=x NCL: x=i and i=floattointeger(x) many functions to perform conversions

Attributes assign/access with @ character info about a variable or file [meta data] attributes can be any data type but file or list scalar, multi dimensional array (string, numeric) assign/access with @ character T@units = “deg C” T@wgts = (/ 0.25, 0.5, 0.25 /) T@x2d = (/ (/1,2,3/), (/4,5,6/), (/7,8,9/) /) T@_FillValue = -999 title = x@long_name attribute functions [isatt, getfilevaratts] if (isatt(T,"units")) then .... end if atts = getfilevaratts (fin, "T") delete can eliminate an attribute delete(T@title)

netCDF Operators [NCO] look for “missing_value” attribute _FillValue Unidata and NCL reserved attribute most NCL functions ignore _FillValue Note: “missing_value” attribute: no special status to NCL if “T” has “missing_value” attribute but no “_FillValue ” T@_FillValue = T@missing_value use built-in function “ismissing” to check for _FillValue if (any(ismissing(T))) then … end if NOTE: if (any(T.eq.T@_FillValue)) will not work netCDF Operators [NCO] look for “missing_value” attribute best to create netCDF files with both NCL: best to not use zero as a _FillValue OK except when contouring [random bug]

Interactive: Variable_1 http://www.ncl.ucar.edu/Training/Workshops/interactive.shtml - demonstrate interactive mode illustrate simple calculations and function use first view of meta data [attributes]

Dimensions may be “named” assigned with ! Character {let T(:,:,:)} provides alternative way to reference subscripts recommendation: always name dimensions use NCL syntax assigned with ! Character {let T(:,:,:)} T!0 = "time" ; leftmost [slowest varying] dim T!1 = "lat“ T!2 = "lon" ; rightmost [fastest varying] dim Dim names may be renamed, retrieved T!1 = "LAT" … dName = T!2 delete can eliminate: delete (T!2) Named dimensions used to reshape

Coordinate Variables used in graphics, coordinate subscripting data coordinates [ eg: time, level, lat, lon ] strict netCDF definition 1D array monotonically in[de]creasing numeric values can only be assigned to a named dimension 1D array must be the same size as dimension should not have _FillValue or missing_value attributes values assigned via & character T&lat = latitude used in graphics, coordinate subscripting coordinate functions iscoord , isfilevarcoord delete can eliminate coordinate array delete(T&time)

Create and Assign Coordinate Variables create 1D array time = (/ 1980, 1981, 1982 /) ; integer lon = ispan(0, 355, 5)*1.0 ; integer->float assign dimension name(s) time!0 = “time” lon!0 = “lon” assign values to named dimension time&time = time lon&lon = lon let x be 2D: name dimensions x!0 = “time” … x!1 = “lon” assign coordinate variables to x x&time = time … x&lon = lon

Access/Change/Create/Delete Meta Data @ attributes u@long_name = "U" lonName = u@long_name ! named dimensions u!0 = "TIME" tName = u!0 & coordinate variable u&lat = (/ -90., -85, .... , 85., 90. /) latitude = u&lat $ substitute string x = fin->$variable(n)$ … x = fin->$”T: p”$

netCDF [NCL] Variable model X Scalar or Array f = addfile(“foo.nc”, “r”) ; grb/hdf x = f->X NCL reads the scalar/array, attributes, and coordinate variables as an object attributes long_name _FillValue units add_offset scale_factor etc. X accessed via @ accessed via & values Scalar or Array attributes long_name _FillValue units add_offset scale_factor etc. time lev lat lon etc. coord var time lev lat lon etc. coordinates

Variable Assignment Variable-to-Variable assignment consider y = x where x is previously defined if y not defined: y has same type/shape/values/meta data as x if y predefined: y must have same shape and type or “x” must be coerceible to the type of y y attributes, dimension names and coordinate variables, if they exist, will be over written Value-only assignment (no meta copy) U multi-dimensional array with meta data Uval = (/ U /) or Uval = (/ f->U/) the (/ ... /) operator pair strips meta data

Interactive: Variable_2 http://www.ncl.ucar.edu/Training/Workshops/interactive.shtml named dimensions create a variable data-object [structure] from scratch standard and coordinate subscripting reordering via named dimensions

Arrays row major ….. like C left dimension varies slowest; right varies fastest dimension numbering left to right [0,1,..] indicies [subscripts] are zero based [0,N-1] Consider T(time,lat,lon) left dimension is 0 [ T!0 ] middle dimension is 1 [ T!1 ] right dimension is 2 [ T!2 ]

Variable Shaping transpose, thin, reorder dimensions functions may require data in specific order map plot functions want array order T(...,lat,lon) can and should be done without loops use NCL syntax or functions very fast for variables in memory how? … two approaches: let T(time,lat,lon) named dimensions: t = T(lat|:, lon|:, time|:) NCL functions: ndtooned: t1D = ndtooned(T) onedtond: t2D = onedtond(t1D, (/N,M/) )

Variable Subscripting (1 of 3) Standard Array Subscripting ranges: start/end and [optional] stride indices separated by : omitting start/end index implies default begin/end Consider T(time,lat,lon) T  entire array [ don't use T(:,:,:) ] T(0,:,::5)  1st time index, all lat, every 5th lon T(0,::-1,:50)  1st time index, reverse lat order, 1st 51 lon T(:1,45,10:20)  1st 2 time indices, 46th index of lat, 10-20 indicies of lon

Variable Subscripting 2 of 3) Coordinate Variable Subscripting only applies to netCDF conforming variables same rules apply for ranges, strides, defaults use curly brackets {…} standard and coordinate subs can be mixed [if no reorder] T(:,{-30:30},:)  all times/lon, lat -30° to +30° (inclusive) T(0,{-20},{-180:35:3})  1st time, lat nearest - 20°, every 3rd lon between -180° and 35°

Variable Subscripting (3 of 3) Named Dimensions only used for dimension reordering indicated by | dimension names must be used for each subscript named/coordinate subscripting can be mixed Consider T(time,lat,lon) t = T(lat|:, lon|:, time|:)  makes t(lat,lon,time) t = T(time|:,{lon|90:120},{lat|-20:20})  all times, 90-120° lon, -20-20° lat

Standard and Coordinate Subscripting Latitude coordinate variable (1D) Combined: T({-10:20}, 1:8) Longitude coordinate variable (1D)

Interactive: Variable_3 http://www.ncl.ucar.edu/Training/Workshops/interactive.shtml standard and coordinate subscripting reorder via named dimensions shape remains the same [same number of dimensions] reshape via ndtooned and onedtond number of dimensions changes

“printing” printVarSummary print write_matrix gives gross overview of a variable print same info as printVarSummary prints values write_matrix print to standard out or a file format control of numerical output can write to file also

printVarSummary Print out variable (data object) information type dimension information coordinate information (if present) attributes (if present) printVarSummary (u) Variable: u Type: double Total Size: 1179648 bytes 147456 values Number of Dimensions: 4 Dimensions / Sizes: [time | 1] x [lev | 18] x [lat | 64] x [lon | 128] Coordinates: time: [4046..4046] lev: [4.809 .. 992.5282] lat: [-87.86379 .. 87.86379] lon: [ 0. 0 .. 357.1875] Number of Attributes: 2 long_name: zonal wind component units: m/s

print (1 of 3) Prints out all variable information including meta data, values T(lat,lon): print (T) Variable: T Type: float Total Size: 32768 bytes 8192 values Number of Dimensions: 2 Dimensions / Sizes: [lat | 64] x [lon | 128] Coordinates: lat: [-87.86379 .. 87.86379] lon: [ 0. 0 .. 357.1875] Number of Attributes: 2 long_name: Temperature units: C (0,0) -31.7 (0,1) -31.4 (0,2) -32.3 (0,3) -33.4 (0,4) -31.3 etc. [entire T array will be printed]

print (2 of 3) can be used to print a subset of array meta data, values T(lat,lon): print( T(:,103) ) or print( T(:,{110}) ) Variable: T (subsection) Type: float Total Size: 256 bytes 64 values Number of Dimensions: 1 Dimensions / Sizes: [lat | 64] Coordinates: lat: [-87.86379 .. 87.86379] Number of Attributes: 3 long_name: Temperature units: C lon: 109.6875 [ added ] (0) -40.7 (1) -33.0 -25.1 -20.0 (4) -15.3 etc.

print (3 of 3) print with embedded strings no meta data print ( "min(T)="+min(T)+" max(T)="+max(T) ) (0) min(T)=-53.8125 max(T)=25.9736 sprintf and sprinti provide formatting often used in graphics print ( "min(T) = "+ sprintf("%5.2f ", min(T)) ) (0) min(T) = -53.81 sprinti can left fill with zeros (ex: let n=3) fnam = "h" + sprinti ("%0.5i", n) + ".nc" print("file name = "+fnam) (0) file name = h00003.nc

write_matrix(x[*][*], fmt, opt) pretty-print 2D array (table) to standard out integer, float, double user format control (fmt) T(N,M), N=7, M=5: write_matrix (T, “5f7.2”, False) 4.35 4.39 0.27 -3.35 -6.90 4.36 4.66 3.77 -1.66 4.06 9.73 -5.84 0.89 8.46 10.39 4.91 4.59 -3.09 7.55 4.56 .17 3.68 5.08 0.14 -5.63 -0.63 -4.12 -2.51 1.76 -1.43 -4.29 0.07 5.85 0.87 8.65 can also create an ASCII file opt = True opt@fout = “foo.ascii” ; file name write_matrix (T, “5f7.2”, opt)