-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGRIB2_to_PLOT3D_Liutex_OA.sh
78 lines (55 loc) · 2.14 KB
/
GRIB2_to_PLOT3D_Liutex_OA.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/bin/bash
# Author: Oscar Alvarez
# Email: [email protected]
# University of Texas at Arlington
# Department of Mathematics
# Arlington, Texas U.S.
######### Instructions ############
# Requires files:
# liutex_mod.f08
# grib_data_read.f08
# Grib2 files need to be in a data folder in this directory.
# INPUT NEEDED from command line (command line arguments):
# $1 = grib file name (without file name extension)
# $2 = record number of timestamp (usually 1)
# An EXAMPLE on how to run this file:
# $> ./GRIB2_to_PLOT3D_Liutex_OA.sh FABIAN10L_200309021830_Postr_Mean 1
#### Program Start ####
# FILE NAMES and RECORD NUMBER:
filename="data/$1"
ctl_filename="data/$1.ctl"
record_number="$2"
grib_grid_file="output_data/$1_grid.dat"
grib_velocity_file="output_data/$1_velocity.dat"
# COMPILE FORTRAN CODES
echo " "
echo "Compiling Fortran Codes"
gfortran -c liutex_mod.f08
gfortran -c grib_data_read.f08
gfortran grib_data_read.o liutex_mod.o -o grib2liutex.o
# EXTRACTING DATA FROM GRIB FILES
echo "Extracting data from GRIB files"
# GET LATITUDE GRID INFO:
wgrib -V -d $record_number $filename | grep "lat" | grep -oP '(?<= lat ).*?(?=to)|(?<=to).*?(?=by)' > $grib_grid_file
# GET LONGITUDE GRID INFO:
wgrib -V -d $record_number $filename | grep "long" | grep -oP '(?<=long).*?(?=to)|(?<=to).*?(?=by)' >> $grib_grid_file
# GET THE NUMBER OF LEVELS (HEIGHTS):
cat $ctl_filename | grep -oP "(?<=zdef).*?(?=levels)" >> $grib_grid_file
# GET HEIGHTS IN FORM OF mb = millibars GRID INFO:
cat $ctl_filename | grep "zdef" -A 1 | grep -v "zdef" >> $grib_grid_file
# GET THE ORDER OF THE VELOCITY COMPONENTS
wgrib $filename | grep -v "above gnd" | egrep -m 3 "(:UGRD:|:VGRD:|:DZDT:)" >> $grib_grid_file
# GET STARTING TIMESTAMP:
wgrib -d $record_number $filename | grep -oP "(?<=TimeU=).*?(?=:)" >> $grib_grid_file
# GET VELOCITY DATA:
wgrib $filename | egrep "(:UGRD:|:VGRD:|:DZDT:)" | grep -v "above gnd" | wgrib -i -grib $filename -text -o $grib_velocity_file
echo "GRIB file data extraction complete."
echo " "
echo $1
# RUN FORTRAN CODE
./grib2liutex.o $1
# rm $grib_grid_file
# rm $grib_velocity_file
echo " "
echo "Program Complete"
read -p "Press enter to continue"