You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Example 7. Convert spectral GRIB ERA data into UM LAM grid netCDF file
#! /usr/bin/env convsh
# Convsh script era2lam.tcl
#
# Convert ERA spectral data into grid point data on the UM UK LAM grid,
# useful if you need to compare ERA data with a run of the UM LAM.
# Output format is netCDF. For example:
#
# era2lam.tcl -i sppr90122600 -o sppr.nc
# Write out netCDF file
set outformat netcdf
# Automatically work out input file type
set filetype 0
# Convert temperature field in input files to netCDF
set fieldlist 1
# Get command line arguments:
# -i input files (can be more than one file)
# -o output file (single file only)
set i false
set o false
foreach arg $argv {
switch -glob -- $arg {
-i {set i true ; set o false}
-o {set i false ; set o true}
-* {puts "unknown option $arg" ; set i false; set o false}
default {
if {$i} {
set infile [lappend infile $arg]
} elseif {$o} {
set outfile [lappend outfile $arg]
} else {
puts "unknown option $arg"
}
}
}
}
if {! [info exists infile]} {
puts "input file name must be given"
exit
}
if {[info exists outfile]} {
if {[llength $outfile] > 1} {
set outfile [lindex $outfile 0]
puts "Only one output file can be specified, using $outfile"
}
} else {
puts "output file name must be given"
exit
}
# Read in each of the input files
foreach file $infile {
readfile $filetype $file
}
# Transform data from spectral harmonics to the equivalent grid point field
# (T106 data -> 320x160 Gaussian grid)
spec_trans $fieldlist
# Set up 229x132 LAM grid with rotated poles
set nx 229
set x0 309.11
set dx 0.4425
set ny 132
set y0 25.66
set dy -0.4425
set xpole 160.0
set ypole 30.0
# Transform to a regular grid
setgridtype regular
# Define x-axis
setgrid 1 $nx $x0 $dx
# Define y-axis
setgrid 2 $ny $y0 $dy
# Define rotated pole
setrotpole $xpole $ypole
# Interpolate data from 320x160 Gaussian grid to UM 229x132 LAM grid
interp_grid $fieldlist
# Write out all input fields to a single netCDF file
writefile $outformat $outfile $fieldlist