50
NCL Introducti on Dennis Shea National Center for Atmospheric Research

NCL Introduction Dennis Shea National Center for Atmospheric Research

Embed Size (px)

Citation preview

Page 1: NCL Introduction Dennis Shea National Center for Atmospheric Research

NCL

Introduction

Dennis Shea

National Center forAtmospheric Research

Page 2: NCL Introduction Dennis Shea National Center for Atmospheric Research

Workshop Overview

Labs important: you must invest the time “osmosis” method of learning does not work

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

Objective comfortable with NCL; minimize learning curve

workshop will not make you an expert access, process and visualize data

Page 3: NCL Introduction Dennis Shea National Center for Atmospheric Research

scalar

2D array

X(8)

Y(8)

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)

Size = 31D array(vector)Time

time (3)time(time)

Time

x(8), y(8), z(4), t(3) S(3,4,8,8) (time,z,y,x)

4D array

Page 4: NCL Introduction Dennis Shea National Center for Atmospheric Research

NCL variable based on a netCDF variable model

Page 5: NCL Introduction Dennis Shea National Center for Atmospheric Research

netCDF filesself describing

(ideally) all info contained within file no external information needed to determine file

contentsportable [machine independent]

Many modelling groups use netCDF

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

Page 6: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

• ncl_filedump file_name [ more general ] netCDF, GRIB, HDF, HDF-EOS

• ncview to visualize file contents [COARDS]

Page 7: NCL Introduction Dennis Shea National Center for Atmospheric Research

Parts of netCDF filencdump -h 1999.nc

DIMENSIONS:dimensions: lat = 64 ; lon = 128 ; time = 12 ;

VARIABLES: Names , Attributes, Coordinatesvariables: 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

FILE ATTRIBUTES:global attributes: :title = “Temp: 1999" ; :source = “NCAR” ; :conventions = "None" ;

exercise: ncl_filedump –h UV300.nc | less

Page 8: NCL Introduction Dennis Shea National Center for Atmospheric Research

Simple Array [fortran]• array [regular shape; could be of length 1 (scalar)]

name: xtype: real (float)shape: 2-dimensions [ 2D ]size: 7 (rows) x 5 (columns)values: x(3,4) = 8.46 [col major]

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

parameter (nrow=7, ncol=5)

real x(nrow,ncol)

Page 9: NCL Introduction Dennis Shea National Center for Atmospheric Research

netCDF/NCL variable

long_name: “Temperature”units: “C”named dimensions: x(time,lat)lat: (/ -60, -30 ,0, 30, 60 /)time: (/2000,2001,2002,2003,2004,2005,2006 /)

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

• array [could be of length 1 (scalar)]• (may) have additional information

name: xtype: float [real]shape: 2-dimensionssize: 7 (rows) x 5 (columns)values: x(2,3) = 8.46 [row major]

Page 10: NCL Introduction Dennis Shea National Center for Atmospheric Research

Longitude coordinate variable (1D, &)

Latitude coordinate variable (1D, &

)

attributes @:

• long_name

• units

visual: simple 2D netCDF Variable

coordinate variables

NCL is NOT LIMITED to netCDF conforming variables

• eg: 2D coordinate arrays (curvilinear coords)

Page 11: NCL Introduction Dennis Shea National Center for Atmospheric Research

netCDF [NCL] Variable model

f = addfile(“foo.nc”,”r”) ; grb/hdfx = f->X

XScalar

or Array

attributeslong_name_FillValue

unitsadd_offset

scale_factoretc. values

Scalar or

Array

attributeslong_name_FillValue

unitsadd_offset

scale_factoretc.

accessed via @ accessed via &

timelevlatlonetc.

coordinates timelevlatlonetc.

coord var

NCL reads the scalar/array, attributes, and coordinate

variables as an object

X

Page 12: NCL Introduction Dennis Shea National Center for Atmospheric Research

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: uType: floatTotal Size: 65536 bytes 16384 valuesNumber of Dimensions: 3Dimensions 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 netCDFVariable Model

NCL syntax/funcs query use modify add any aspect of data object

Page 13: NCL Introduction Dennis Shea National Center for Atmospheric Research

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}

Page 14: NCL Introduction Dennis Shea National Center for Atmospheric Research

pdf

Vis5D

NCL Overview

• portable: Linux/Unix, Windows, MacOSX

• general purpose: unique capabilities

• excellent graphics

• freeware: supported, public domain

• Integrated processing environment

Page 15: NCL Introduction Dennis Shea National Center for Atmospheric Research

NCL Support• Documentation and Examples

http://www.ncl.ucar.edu/ numerous downloadable examples to get you going

downloadable reference manuals [pdf], FAQ

[email protected]

users must subscribe

http://www.ncl.ucar.edu/Support/ncl_talk.shtml

[[email protected] , [email protected]]

Page 16: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 17: NCL Introduction Dennis Shea National Center for Atmospheric Research

Running NCL• Interactive Mode (Command line)

ncl [options][command-line-arguments] <return> ncl> enter commands ncl> quit <return>

can save interactive commandsncl> 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

Page 18: NCL Introduction Dennis Shea National Center for Atmospheric Research

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 ]

Page 19: NCL Introduction Dennis Shea National Center for Atmospheric Research

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“

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)

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 )

pot = T* (1.+0.622*Q) *(1000/P)^0.286 ; potential temperature (array)

print("pot: min="+ min(pot) + " max="+ max(pot) )

begin ; optional

end ; only if begin is present

Page 20: NCL Introduction Dennis Shea National Center for Atmospheric Research
Page 21: NCL Introduction Dennis Shea National Center for Atmospheric Research
Page 22: NCL Introduction Dennis Shea National Center for Atmospheric Research

Outline: Language Basics

• special syntax characters• data types• Variables netCDF/NCL variable model • attributes • _FillValue• named dimensions• coordinate variables• print and printVarSummary• shaping • subscripting

Page 23: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 24: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 25: NCL Introduction Dennis Shea National Center for Atmospheric Research

netCDF/NCL variable

long_name: “Temperature”units: “C”named dimensions: x(time,lat)lat: (/ -60, -30 ,0, 30, 60 /)time: (/2000,2001,2002,2003,2004,2005,2006 /)

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

• array [could be of length 1 (scalar)]• (may) have additional information

name: xtype: float [real]shape: 2-dimensionssize: 7 (rows) x 5 (columns)values: x(2,3) = 8.46 [row major]

Meta data

Page 26: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 27: NCL Introduction Dennis Shea National Center for Atmospheric Research

Simple Variable Assignmenta_int = 1 , a_float = 2.0 [2e-5] a_double = 3.2da_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/) /)

Page 28: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 29: NCL Introduction Dennis Shea National Center for Atmospheric Research

Attributes

• 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)

• info about a variable or file [meta data] attributes can be any data type but file or list scalar, multi dimensional array (string, numeric)

Page 30: NCL Introduction Dennis Shea National Center for Atmospheric Research

_FillValue• Unidata and NCL reserved attribute • most NCL functions ignore _FillValue

• 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]

• 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

Page 31: NCL Introduction Dennis Shea National Center for Atmospheric Research

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]

Page 32: NCL Introduction Dennis Shea National Center for Atmospheric Research

Dimensions

• 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

• may be “named”provides alternative way to reference subscriptsrecommendation: always name dimensionsuse NCL syntax

Page 33: NCL Introduction Dennis Shea National Center for Atmospheric Research

Coordinate Variables• 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 arraydelete(T&time)

Page 34: NCL Introduction Dennis Shea National Center for Atmospheric Research

Create and Assign Coordinate Variables

• 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

• assign dimension name(s) time!0 = “time” lon!0 = “lon”

•create 1D array time = (/ 1980, 1981, 1982 /) ; integer lon = ispan(0, 355, 5)*1.0 ; integer->float

Page 35: NCL Introduction Dennis Shea National Center for Atmospheric Research

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”$

Page 36: NCL Introduction Dennis Shea National Center for Atmospheric Research

netCDF [NCL] Variable model

f = addfile(“foo.nc”, “r”) ; grb/hdfx = f->X

XScalar

or Array

attributeslong_name_FillValue

unitsadd_offset

scale_factoretc. values

Scalar or

Array

attributeslong_name_FillValue

unitsadd_offset

scale_factoretc.

accessed via @ accessed via &

timelevlatlonetc.

coordinates timelevlatlonetc.

coord var

NCL reads the scalar/array, attributes, and coordinate

variables as an object

X

Page 37: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 38: NCL Introduction Dennis Shea National Center for Atmospheric Research

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 ]

Page 39: NCL Introduction Dennis Shea National Center for Atmospheric Research

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/) )

Page 40: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 41: NCL Introduction Dennis Shea National Center for Atmospheric Research

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°

Page 42: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 43: NCL Introduction Dennis Shea National Center for Atmospheric Research

Longitude coordinate variable (1D)

Latitude coordinate variable (1D)

Standard and Coordinate Subscripting

Standard:

T(9:13,1:8)

Coordinate:

T({-10:20},{-170:-110})

Combined:

T({-10:20}, 1:8)

Page 44: NCL Introduction Dennis Shea National Center for Atmospheric Research

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

Page 45: NCL Introduction Dennis Shea National Center for Atmospheric Research

“printing”• printVarSummary

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

Page 46: NCL Introduction Dennis Shea National Center for Atmospheric Research

printVarSummary• Print out variable (data object) information

type dimension information coordinate information (if present) attributes (if present)

• printVarSummary (u)

Variable: uType: doubleTotal Size: 1179648 bytes 147456 valuesNumber 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

Page 47: NCL Introduction Dennis Shea National Center for Atmospheric Research

print (1 of 3)

Variable: TType: floatTotal Size: 32768 bytes 8192 valuesNumber 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]

• Prints out all variable information including meta data, values T(lat,lon): print (T)

Page 48: NCL Introduction Dennis Shea National Center for Atmospheric Research

print (2 of 3)

Variable: T (subsection)Type: floatTotal Size: 256 bytes 64 valuesNumber 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(2) -25.1 (3) -20.0(4) -15.3 etc.

• can be used to print a subset of array meta data, values T(lat,lon): print( T(:,103) ) or print( T(:,{110}) )

Page 49: NCL Introduction Dennis Shea National Center for Atmospheric Research

print (3 of 3)

• print with embedded strings no meta data print ( "min(T)="+min(T)+" max(T)="+max(T) )

• sprintf and sprinti provide formatting- often used in graphics- print ( "min(T) = "+ sprintf("%5.2f ", min(T)) )

(0) min(T)=-53.8125 max(T)=25.9736

(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

Page 50: NCL Introduction Dennis Shea National Center for Atmospheric Research

write_matrix(x[*][*], fmt, opt)

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

• 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)

• can also create an ASCII fileopt = Trueopt@fout = “foo.ascii” ; file namewrite_matrix (T, “5f7.2”, opt)