rc-qlc 0.3.24__cp311-cp311-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qlc/__init__.py +8 -0
- qlc/cli/__init__.py +21 -0
- qlc/cli/installer.py +16 -0
- qlc/cli/qlc_main.py +185 -0
- qlc/cli/qlc_py_main.py +74 -0
- qlc/config/json/qlc_config.json +41 -0
- qlc/config/json/qlc_config_example_1a_all-obs.json +237 -0
- qlc/config/json/qlc_config_example_1b_all-mod.json +353 -0
- qlc/config/json/qlc_config_example_1c_all-coll.json +266 -0
- qlc/config/json/qlc_config_example_2a_all-obs.json +237 -0
- qlc/config/json/qlc_config_example_2b_all-mod.json +353 -0
- qlc/config/json/qlc_config_example_2c_all-coll.json +265 -0
- qlc/config/json/qlc_config_example_3a-us_obs.json +82 -0
- qlc/config/json/qlc_config_example_3b-us_mod.json +122 -0
- qlc/config/json/qlc_config_example_3c-us_coll.json +46 -0
- qlc/config/json/qlc_config_example_4a_eu-obs.json +41 -0
- qlc/config/json/qlc_config_example_4b_eu-mod.json +122 -0
- qlc/config/json/qlc_config_example_4c_eu-coll.json +45 -0
- qlc/config/nml/mars_A1_sfc.nml +19 -0
- qlc/config/nml/mars_A2_sfc.nml +19 -0
- qlc/config/nml/mars_A3_sfc.nml +19 -0
- qlc/config/nml/mars_B1_pl.nml +19 -0
- qlc/config/nml/mars_B2_pl.nml +19 -0
- qlc/config/nml/mars_C1_pl.nml +19 -0
- qlc/config/nml/mars_C2_pl.nml +19 -0
- qlc/config/nml/mars_C3_ml.nml +19 -0
- qlc/config/nml/mars_D.nml +19 -0
- qlc/config/nml/mars_E.nml +19 -0
- qlc/config/nml/mars_F.nml +19 -0
- qlc/config/nml/mars_G.nml +19 -0
- qlc/config/qlc_cams.conf +26 -0
- qlc/config/qlc_test.conf +26 -0
- qlc/config/qlc_tex.conf +107 -0
- qlc/doc/CONTRIBUTING.md +105 -0
- qlc/doc/README.md +116 -0
- qlc/doc/USAGE.md +58 -0
- qlc/examples/cams_case_1/config/json/qlc_config.json +41 -0
- qlc/examples/cams_case_1/config/nml/mars_A3_sfc.nml +19 -0
- qlc/examples/cams_case_1/config/nml/mars_B1_pl.nml +19 -0
- qlc/examples/cams_case_1/config/nml/mars_C1_pl.nml +19 -0
- qlc/examples/cams_case_1/config/qlc_cams.conf +122 -0
- qlc/examples/cams_case_1/mod/b2ro/2018/b2ro_20181215-20181231_A3_sfc.grb +0 -0
- qlc/examples/cams_case_1/mod/iqi9/2018/iqi9_20181215-20181231_A3_sfc.grb +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181201.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181202.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181203.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181204.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181205.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181206.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181207.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181208.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181209.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181210.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181211.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181212.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181213.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181214.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181215.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181216.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181217.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181218.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181219.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181220.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181221.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181222.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181223.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181224.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181225.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181226.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181227.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181228.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181229.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181230.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_daily/v_20240216/201812/ebas_20181231.nc +0 -0
- qlc/examples/cams_case_1/obs/ebas_station-locations.csv +50 -0
- qlc/install.py +285 -0
- qlc/py/__main__.cpython-311-darwin.so +0 -0
- qlc/py/averaging.cpython-311-darwin.so +0 -0
- qlc/py/bias_plots.cpython-311-darwin.so +0 -0
- qlc/py/control.cpython-311-darwin.so +0 -0
- qlc/py/io.cpython-311-darwin.so +0 -0
- qlc/py/loadmod.cpython-311-darwin.so +0 -0
- qlc/py/loadobs.cpython-311-darwin.so +0 -0
- qlc/py/logging_utils.cpython-311-darwin.so +0 -0
- qlc/py/map_plots.cpython-311-darwin.so +0 -0
- qlc/py/matched.cpython-311-darwin.so +0 -0
- qlc/py/plot_config.cpython-311-darwin.so +0 -0
- qlc/py/plotting.cpython-311-darwin.so +0 -0
- qlc/py/plugin_loader.cpython-311-darwin.so +0 -0
- qlc/py/processing.cpython-311-darwin.so +0 -0
- qlc/py/scatter_plots.cpython-311-darwin.so +0 -0
- qlc/py/stations.cpython-311-darwin.so +0 -0
- qlc/py/statistics.cpython-311-darwin.so +0 -0
- qlc/py/style.cpython-311-darwin.so +0 -0
- qlc/py/timeseries_plots.cpython-311-darwin.so +0 -0
- qlc/py/utils.cpython-311-darwin.so +0 -0
- qlc/py/version.cpython-311-darwin.so +0 -0
- qlc/sh/qlc_A1.sh +127 -0
- qlc/sh/qlc_B1a.sh +123 -0
- qlc/sh/qlc_B2.sh +258 -0
- qlc/sh/qlc_C5.sh +825 -0
- qlc/sh/qlc_D1.sh +130 -0
- qlc/sh/qlc_Z1.sh +165 -0
- qlc/sh/qlc_common_functions.sh +157 -0
- qlc/sh/qlc_main.sh +127 -0
- qlc/sh/qlc_start.sh +23 -0
- qlc/sh/qlc_start_batch.sh +46 -0
- rc_qlc-0.3.24.dist-info/METADATA +142 -0
- rc_qlc-0.3.24.dist-info/RECORD +113 -0
- rc_qlc-0.3.24.dist-info/WHEEL +5 -0
- rc_qlc-0.3.24.dist-info/entry_points.txt +6 -0
- rc_qlc-0.3.24.dist-info/licenses/LICENSE +21 -0
- rc_qlc-0.3.24.dist-info/top_level.txt +1 -0
qlc/sh/qlc_C5.sh
ADDED
@@ -0,0 +1,825 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
|
3
|
+
# Source the configuration file to load the settings
|
4
|
+
. "$CONFIG_FILE"
|
5
|
+
# Include common functions
|
6
|
+
source $FUNCTIONS
|
7
|
+
|
8
|
+
PLOTTYPE="pyferret"
|
9
|
+
SCRIPT="$0"
|
10
|
+
log "________________________________________________________________________________________"
|
11
|
+
log "Start ${SCRIPT} at `date`"
|
12
|
+
log "Create Ferret plots for selected variables (to be defined in $CONFIG_FILE) "
|
13
|
+
#log "----------------------------------------------------------------------------------------"
|
14
|
+
#log "Copyright (c) 2021-2025 ResearchConcepts io GmbH. All Rights Reserved. "
|
15
|
+
#log "Questions / comments to: Swen M. Metzger <sm@researchconcepts.io> "
|
16
|
+
log "----------------------------------------------------------------------------------------"
|
17
|
+
|
18
|
+
# Loop through and process the parameters received
|
19
|
+
for param in "$@"; do
|
20
|
+
log "Subscript $0 received parameter: $param"
|
21
|
+
done
|
22
|
+
|
23
|
+
log "$0 ANALYSIS_DIRECTORY = $ANALYSIS_DIRECTORY"
|
24
|
+
|
25
|
+
# module load for ATOS
|
26
|
+
myOS="`uname -s`"
|
27
|
+
HOST=`hostname -s | awk '{printf $1}' | cut -c 1`
|
28
|
+
log "HOST = ${HOST} | `hostname -s`"
|
29
|
+
log "myOS = ${myOS}"
|
30
|
+
if [ "${HOST}" == "a" ] && [ "${myOS}" != "Darwin" ]; then
|
31
|
+
module load ferret/7.6.3
|
32
|
+
fi
|
33
|
+
|
34
|
+
# Check if pyferret exists
|
35
|
+
if ! command_exists pyferret; then
|
36
|
+
log "Error: pyferret command not found" >&2
|
37
|
+
exit 1
|
38
|
+
else
|
39
|
+
log "Success: pyferret command found"
|
40
|
+
which pyferret
|
41
|
+
fi
|
42
|
+
|
43
|
+
# Create output directory if not existent
|
44
|
+
if [ ! -d "$PLOTS_DIRECTORY" ]; then
|
45
|
+
mkdir -p "$PLOTS_DIRECTORY"
|
46
|
+
fi
|
47
|
+
|
48
|
+
# get script name without path and extension
|
49
|
+
script_name="${SCRIPT##*/}" # Remove directory path
|
50
|
+
script_name="${script_name%.*}" # Remove extension
|
51
|
+
QLTYPE="$script_name"
|
52
|
+
|
53
|
+
# Assign the command line input parameters to variables
|
54
|
+
exp1="$1"
|
55
|
+
exp2="$2"
|
56
|
+
sDat="$3"
|
57
|
+
eDat="$4"
|
58
|
+
sDate="${sDat//[-:]/}"
|
59
|
+
eDate="${eDat//[-:]/}"
|
60
|
+
mDate="$sDate-$eDate"
|
61
|
+
ext="$PLOTEXTENSION"
|
62
|
+
|
63
|
+
hpath="$PLOTS_DIRECTORY/${exp1}-${exp2}_${mDate}"
|
64
|
+
|
65
|
+
# Create help directory if not existent
|
66
|
+
if [ ! -d "$hpath" ]; then
|
67
|
+
mkdir -p "$hpath"
|
68
|
+
fi
|
69
|
+
|
70
|
+
# list name for plot files used for final tex pdf
|
71
|
+
texPlotsfile="${hpath}/texPlotfiles_${QLTYPE}.list"
|
72
|
+
texFile="${texPlotsfile%.list}.tex"
|
73
|
+
# clean up previous plot file for current tex pdf creation
|
74
|
+
rm -f $texPlotsfile
|
75
|
+
touch $texPlotsfile
|
76
|
+
|
77
|
+
exps="$exp1 $exp2"
|
78
|
+
for exp in $exps ; do
|
79
|
+
log "----------------------------------------------------------------------------------------"
|
80
|
+
log "Processing ${PLOTTYPE} plot for experiment: $exp"
|
81
|
+
|
82
|
+
log "QLTYPE : $QLTYPE"
|
83
|
+
log "TEAM_PREFIX : $TEAM_PREFIX"
|
84
|
+
log "EVALUATION_PREFIX: $EVALUATION_PREFIX"
|
85
|
+
log "MODEL_RESOLUTION : $MODEL_RESOLUTION"
|
86
|
+
log "TIME_RESOLUTION : $TIME_RESOLUTION"
|
87
|
+
log "mDate : $mDate"
|
88
|
+
log "ext : $ext"
|
89
|
+
log "exp1 : $exp1"
|
90
|
+
log "exp2 : $exp2"
|
91
|
+
|
92
|
+
# definition of plot file base name
|
93
|
+
pfile="${TEAM_PREFIX}_${exp1}-${exp2}_${mDate}_${QLTYPE}"
|
94
|
+
log "pfile base name : $pfile"
|
95
|
+
|
96
|
+
ipath="$ANALYSIS_DIRECTORY/$exp"
|
97
|
+
tpath="$PLOTS_DIRECTORY/$exp"
|
98
|
+
|
99
|
+
# Create analysis directory if not existent
|
100
|
+
if [ ! -d "$ipath" ]; then
|
101
|
+
mkdir -p "$ipath"
|
102
|
+
fi
|
103
|
+
# Create output directory if not existent
|
104
|
+
if [ ! -d "$tpath" ]; then
|
105
|
+
mkdir -p "$tpath"
|
106
|
+
fi
|
107
|
+
|
108
|
+
cd $tpath
|
109
|
+
pwd -P
|
110
|
+
|
111
|
+
for name in "${MARS_RETRIEVALS[@]}"; do
|
112
|
+
|
113
|
+
log "name : $name"
|
114
|
+
|
115
|
+
# Define the corresponding arrays based on the name
|
116
|
+
param_var="param_${name}[@]"
|
117
|
+
ncvar_var="ncvar_${name}[@]"
|
118
|
+
myvar_var="myvar_${name}[@]"
|
119
|
+
|
120
|
+
log "param_var : $param_var"
|
121
|
+
log "ncvar_var : $ncvar_var"
|
122
|
+
log "myvar_var : $myvar_var"
|
123
|
+
|
124
|
+
# Use variable indirection to access the arrays
|
125
|
+
param=("${!param_var}")
|
126
|
+
ncvar=("${!ncvar_var}")
|
127
|
+
myvar=("${!myvar_var}")
|
128
|
+
|
129
|
+
log "param : $param"
|
130
|
+
log "ncvar : $ncvar"
|
131
|
+
log "myvar : $myvar"
|
132
|
+
|
133
|
+
# Loop through the variables for this $name
|
134
|
+
for ((i = 0; i < ${#ncvar[@]}; i++)); do
|
135
|
+
|
136
|
+
myvar_name="${myvar[i]}"
|
137
|
+
pvars="${myvar_name}"
|
138
|
+
|
139
|
+
log "i : $i"
|
140
|
+
log "#ncvar[@] : "${#ncvar[@]}
|
141
|
+
log "myvar_${name}[@] : "myvar_${name}[@]
|
142
|
+
log "myvar_name : $myvar_name"
|
143
|
+
log "pvars : ${pvars}"
|
144
|
+
|
145
|
+
# special case for diagnostic output of EQSAM4clim (71 / 80 sub-variables)
|
146
|
+
if [ "${name}" == "E" ]; then
|
147
|
+
case "$myvar_name" in
|
148
|
+
"EQdiag")
|
149
|
+
# declare -a pvars=("GFh2o" "GFhsa" "GFhna" "GFhca" "GFxam" "GFalc" "GFasu" "GFahs" "GFano" "GFacl" "GFslc" "GFssu" "GFshs" "GFsno" "GFscl" "GFplc" "GFpsu" "GFphs" "GFpno" "GFpcl" "GFc01" "GFcsu" "GFc02" "GFcno" "GFccl" "GFm01" "GFmsu" "GFm02" "GFmno" "GFmcl" "AWh2o" "AWhsa" "AWhna" "AWhca" "AWxam" "AWalc" "AWasu" "AWahs" "AWano" "AWacl" "AWslc" "AWssu" "AWshs" "AWsno" "AWscl" "AWplc" "AWpsu" "AWphs" "AWpno" "AWpcl" "AWc01" "AWcsu" "AWc02" "AWcno" "AWccl" "AWm01" "AWmsu" "AWm02" "AWmno" "AWmcl" "EQpH1" "EQpH2" "EQpH3" "EQpH4" "EQpH5" "EQAW1" "EQAW2" "EQAW3" "EQAW4" "EQAD" "EQHp" "EQPMt" "EQPMs" "EQsPM" "EQaPM" "EQRHO" "EQGF" "EQTT" "EQRH" "EQP")
|
150
|
+
# declare -a nvars=( "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" "79" "80")
|
151
|
+
# declare -a nvars=( "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" "79" "80")
|
152
|
+
# declare -a pvars=("pHtot" "pHaeq" "pHaer" "pHcld" "pHpre" "GFalc" "GFasu" "GFahs" "GFano" "GFacl" "GFslc" "GFssu" "GFshs" "GFsno" "GFscl" "GFplc" "GFpsu" "GFphs" "GFpno" "GFpcl" "GFc01" "GFcsu" "GFc02" "GFcno" "GFccl" "GFm01" "GFmsu" "GFm02" "GFmno" "GFmcl" "LWtot" "LWaeq" "LWaer" "LWcld" "LWpre" "AWalc" "AWasu" "AWahs" "AWano" "AWacl" "AWslc" "AWssu" "AWshs" "AWsno" "AWscl" "AWplc" "AWpsu" "AWphs" "AWpno" "AWpcl" "AWc01" "AWcsu" "AWc02" "AWcno" "AWccl" "AWm01" "AWmsu" "AWm02" "AWmno" "AWmcl" "eq_TT" "eq_RH" "eq__P" "eq_ID" "eqPMt" "eqPMs" "eqsPM" "eqaPM" "eqRHO" "eq_Hp" "eq_GF" "DUMMY" "DUMMY" "DUMMY" "DUMMY" "DUMMY" "DUMMY" "DUMMY" "DUMMY" "DUMMY")
|
153
|
+
# declare -a nvars=( "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" )
|
154
|
+
declare -a pvars=("pHtot" "pHaeq" "pHaer" "pHcld" "pHpre" "GFalc" "GFasu" "GFahs" "GFano" "GFacl" "GFslc" "GFssu" "GFshs" "GFsno" "GFscl" "GFplc" "GFpsu" "GFphs" "GFpno" "GFpcl" "GFc01" "GFcsu" "GFc02" "GFcno" "GFccl" "GFm01" "GFmsu" "GFm02" "GFmno" "GFmcl" "LWtot" "LWaeq" "LWaer" "LWcld" "LWpre" "AWalc" "AWasu" "AWahs" "AWano" "AWacl" "AWslc" "AWssu" "AWshs" "AWsno" "AWscl" "AWplc" "AWpsu" "AWphs" "AWpno" "AWpcl" "AWc01" "AWcsu" "AWc02" "AWcno" "AWccl" "AWm01" "AWmsu" "AWm02" "AWmno" "AWmcl" "eqTT" "eqRH" "eqP" "eqID" "eqPMt" "eqPMs" "eqsPM" "eqaPM" "eqRHO" "eqHp" "eqGF")
|
155
|
+
# declare -a pvars=("pHtot" "pHaeq" "pHaer" "pHcld" "pHpre" "LWtot" "LWaeq" "LWaer" "LWcld" "LWpre")
|
156
|
+
# declare -a pvars=("pHtot" "pHaeq" "pHaer" "pHcld" "pHpre")
|
157
|
+
# declare -a pvars=("GFano" "AWano")
|
158
|
+
;;
|
159
|
+
esac
|
160
|
+
fi
|
161
|
+
|
162
|
+
log "pvars : ${pvars}"
|
163
|
+
|
164
|
+
for ((j=0; j<${#pvars[@]}; j++)); do
|
165
|
+
pvar="${pvars[$j]}"
|
166
|
+
if [[ "$pvar" == *"_"* ]]; then
|
167
|
+
pvar2=$(echo "$pvar" | sed 's/_/\-/g')
|
168
|
+
else
|
169
|
+
pvar2=$pvar
|
170
|
+
fi
|
171
|
+
|
172
|
+
log "j : $j"
|
173
|
+
log "pvar : ${pvar}"
|
174
|
+
|
175
|
+
# one NC-file file for each variable is expected here
|
176
|
+
# Extract the data level type
|
177
|
+
cd $ipath
|
178
|
+
file="`echo ${exp}_${mDate}_*${pvar}_tavg.nc`"
|
179
|
+
ltype="_$(echo "$file" | awk -F'_' '{print $4}' | cut -d'.' -f1)"
|
180
|
+
cd $tpath
|
181
|
+
|
182
|
+
# ifile="$ipath/${exp}_${mDate}_${name}${ltype}_${pvar}_tavg.nc"
|
183
|
+
# ifile1="$ANALYSIS_DIRECTORY/$exp1/${exp1}_${mDate}_${name}${ltype}_${pvar}_tavg.nc"
|
184
|
+
# ifile2="$ANALYSIS_DIRECTORY/$exp2/${exp2}_${mDate}_${name}${ltype}_${pvar}_tavg.nc"
|
185
|
+
|
186
|
+
ifile="$ipath/${exp}_${mDate}_${name}_${pvar}_tavg.nc"
|
187
|
+
ifile1="$ANALYSIS_DIRECTORY/$exp1/${exp1}_${mDate}_${name}_${pvar}_tavg.nc"
|
188
|
+
ifile2="$ANALYSIS_DIRECTORY/$exp2/${exp2}_${mDate}_${name}_${pvar}_tavg.nc"
|
189
|
+
|
190
|
+
if [ -f "${ifile}" ]; then
|
191
|
+
|
192
|
+
rm -f ${pvar}.nc
|
193
|
+
ln -s ${ifile} ${pvar}.nc
|
194
|
+
|
195
|
+
nlev="`ncdump -h ${pvar}.nc | grep 'plev = ' | awk -F' ' '{print $3}'`"
|
196
|
+
if [ "${nlev}" == "" ] ; then
|
197
|
+
plev="0"
|
198
|
+
else
|
199
|
+
plev="${nlev}"
|
200
|
+
fi
|
201
|
+
log "${plev} plot for: $pvar"
|
202
|
+
|
203
|
+
# definition of plot files for each exp + variable (log, diff for exp1)
|
204
|
+
# tfile="${pfile}_${name}_${pvar}_${exp}"
|
205
|
+
tfile="${pfile}_${name}_${pvar2}_${exp}"
|
206
|
+
|
207
|
+
log "${PLOTTYPE} plot for: $pvar - $tpath/$tfile.$ext"
|
208
|
+
|
209
|
+
# ferret journal file variable definition
|
210
|
+
var='`var`'
|
211
|
+
pal='`pal`'
|
212
|
+
lon='`lon`'
|
213
|
+
lat='`lat`'
|
214
|
+
lev='`lev`'
|
215
|
+
tim='`tim`'
|
216
|
+
# crude workaround, needs to be implemented properly
|
217
|
+
# plev="21" # 1000 hPa
|
218
|
+
if [ "${plev}" == "21" ]; then
|
219
|
+
ulev="11:15" # 100:300 hPa
|
220
|
+
elif [ "${plev}" == "16" ]; then
|
221
|
+
ulev="11:13" # 100:300 hPa
|
222
|
+
else
|
223
|
+
ulev="11:12" # default
|
224
|
+
fi
|
225
|
+
facS="1*"
|
226
|
+
facB="1*"
|
227
|
+
facZ="1*"
|
228
|
+
facM="1*"
|
229
|
+
facU="1*"
|
230
|
+
if [ "${pvar}" == "NO3a" ] || [ "${pvar}" == "NO3_ks" ] || [ "${pvar}" == "NO3_as" ] || [ "${pvar}" == "NO3_cs" ]; then
|
231
|
+
facS="1e11*"
|
232
|
+
facB="1e10*"
|
233
|
+
facZ="1e11*"
|
234
|
+
facM="1e11*"
|
235
|
+
facU="1e10*"
|
236
|
+
elif [ "${pvar}" == "NO3b" ]; then
|
237
|
+
facS="1e11*"
|
238
|
+
facB="1e10*"
|
239
|
+
facZ="1e11*"
|
240
|
+
facM="1e11*"
|
241
|
+
facU="1e11*"
|
242
|
+
elif [ "${pvar}" == "HNO3" ]; then
|
243
|
+
facS="1e11*"
|
244
|
+
facB="1e9*"
|
245
|
+
facZ="1e10*"
|
246
|
+
facM="1e10*"
|
247
|
+
facU="1e9*"
|
248
|
+
elif [ "${pvar}" == "NH3" ]; then
|
249
|
+
facS="1e11*"
|
250
|
+
facB="1e10*"
|
251
|
+
facZ="1e11*"
|
252
|
+
facM="1e11*"
|
253
|
+
facU="1e11*"
|
254
|
+
elif [ "${pvar}" == "NH4" ] || [ "${pvar}" == "NH4_ks" ] || [ "${pvar}" == "NH4_as" ] || [ "${pvar}" == "NH4_cs" ]; then
|
255
|
+
facS="1e11*"
|
256
|
+
facB="1e10*"
|
257
|
+
facZ="1e11*"
|
258
|
+
facM="1e11*"
|
259
|
+
facU="1e10*"
|
260
|
+
elif [ "${pvar}" == "O3" ]; then
|
261
|
+
facS="1e8*"
|
262
|
+
facB="1e7*"
|
263
|
+
facZ="1e7*"
|
264
|
+
facM="1e7*"
|
265
|
+
facU="1e8*"
|
266
|
+
elif [ "${pvar}" == "SO2" ]; then
|
267
|
+
facS="1e11*"
|
268
|
+
facB="1e10*"
|
269
|
+
facZ="1e11*"
|
270
|
+
facM="1e11*"
|
271
|
+
facU="1e11*"
|
272
|
+
elif [ "${pvar}" == "SO4" ] || [ "${pvar}" == "SO4_ks" ] || [ "${pvar}" == "SO4_as" ] || [ "${pvar}" == "SO4_cs" ]; then
|
273
|
+
facS="1e10*"
|
274
|
+
facB="1e9*"
|
275
|
+
facZ="1e11*"
|
276
|
+
facM="1e11*"
|
277
|
+
facU="1e10*"
|
278
|
+
fi
|
279
|
+
|
280
|
+
# create default ferret journal file (variable independent)
|
281
|
+
# To resolve system dependent memory issues, please see:
|
282
|
+
# https://ferret.pmel.noaa.gov/Ferret/documentation/users-guide/commands-reference/SET#_VPINDEXENTRY_set_memory
|
283
|
+
# SET MEMORY/SIZE=100 (Approximately 0.8 Gigabytes)
|
284
|
+
FERRETMEMSIZE="500"
|
285
|
+
LEVELS1='/LEVELS="(1,10,0.5,0)(10,50,5,0)(50,100,10,0)"'
|
286
|
+
LEVELS2='/LEVELS="(-10,10,0.5,0)"'
|
287
|
+
LEVELS3='/LEVELS="(-2,2,0.1,0)"'
|
288
|
+
LEVELS4='/LEVELS="(-10,-1,0.5,0)(-1,0,0.1,0)(0,1,0.1,0)(1,10,0.5,0)"'
|
289
|
+
LEVELS2=''
|
290
|
+
LEVELS3=''
|
291
|
+
CONTOUR='CONTOUR/OVER/NOLAB/COLOR=lightgrey'
|
292
|
+
cat > ${tfile}_burden_1x1.jnl <<EOF
|
293
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
294
|
+
use ${pvar}.nc
|
295
|
+
show data
|
296
|
+
CANCEL MODE logo
|
297
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
298
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
299
|
+
PPL AXLSZE,0.14,0.14
|
300
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
301
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
302
|
+
let pal="/PALETTE=rainbow"
|
303
|
+
!let pal="/PALETTE=rain_cmyk"
|
304
|
+
!let pal="/PALETTE=no_green_centered"
|
305
|
+
!let pal="/PALETTE=white_centered"
|
306
|
+
let lon="-180:180"
|
307
|
+
let lat="-90:90"
|
308
|
+
let tim="@AVE"
|
309
|
+
let lev="@SUM"
|
310
|
+
let var="${facB}${pvar}"
|
311
|
+
fill ${pal} ${LEVELS1} /title="Burden: ${MODEL_RESOLUTION} - ${exp}: ${var}" (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
312
|
+
!${CONTOUR} ${LEVELS1} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}])
|
313
|
+
! FRAME/TRANSPARENT/file=${tfile}_burden.$ext
|
314
|
+
FRAME/file=${tfile}_burden.$ext
|
315
|
+
!SPAWN ls -l ${tfile}_burden.$ext
|
316
|
+
fill ${pal} ${LEVELS2} /title="Burden: ${MODEL_RESOLUTION} - ${exp}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
317
|
+
!${CONTOUR} ${LEVELS2} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
318
|
+
! FRAME/TRANSPARENT/file=${tfile}_burden_log.$ext
|
319
|
+
FRAME/file=${tfile}_burden_log.$ext
|
320
|
+
!SPAWN ls -l ${tfile}_burden_log.$ext
|
321
|
+
!SPAWN pwd
|
322
|
+
EOF
|
323
|
+
cat > ${tfile}_burden_1x1_diff.jnl <<EOF
|
324
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
325
|
+
use ${ifile1}
|
326
|
+
use ${ifile2}
|
327
|
+
show data
|
328
|
+
CANCEL MODE logo
|
329
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
330
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
331
|
+
PPL AXLSZE,0.14,0.14
|
332
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
333
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
334
|
+
!let pal="/PALETTE=rainbow"
|
335
|
+
!let pal="/PALETTE=rain_cmyk"
|
336
|
+
!let pal="/PALETTE=no_green_centered"
|
337
|
+
let pal="/PALETTE=white_centered"
|
338
|
+
let lon="-180:180"
|
339
|
+
let lat="-90:90"
|
340
|
+
let tim="@AVE"
|
341
|
+
let lev="@SUM"
|
342
|
+
let var="${facB}${pvar}"
|
343
|
+
fill ${pal} /title="Burden: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: ${var}" ${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}];go land
|
344
|
+
!${CONTOUR} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}])
|
345
|
+
! FRAME/TRANSPARENT/file=${tfile}_burden_diff.$ext
|
346
|
+
FRAME/file=${tfile}_burden_diff.$ext
|
347
|
+
!SPAWN ls -l ${tfile}_burden_diff.$ext
|
348
|
+
fill ${pal} /title="Burden: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
349
|
+
!${CONTOUR} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
350
|
+
! FRAME/TRANSPARENT/file=${tfile}_burden_log_diff.$ext
|
351
|
+
FRAME/file=${tfile}_burden_log_diff.$ext
|
352
|
+
!SPAWN ls -l ${tfile}_burden_log_diff.$ext
|
353
|
+
!SPAWN pwd
|
354
|
+
EOF
|
355
|
+
######## zonal plots ########
|
356
|
+
FERRETMEMSIZE="4000" # 5000
|
357
|
+
cat > ${tfile}_zonal_1x1.jnl <<EOF
|
358
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
359
|
+
use ${pvar}.nc
|
360
|
+
show data
|
361
|
+
CANCEL MODE logo
|
362
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
363
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
364
|
+
PPL AXLSZE,0.14,0.14
|
365
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
366
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
367
|
+
let pal="/PALETTE=rainbow"
|
368
|
+
!let pal="/PALETTE=rain_cmyk"
|
369
|
+
!let pal="/PALETTE=no_green_centered"
|
370
|
+
!let pal="/PALETTE=white_centered"
|
371
|
+
let lon="-180:180@AVE"
|
372
|
+
let lat="-90:90"
|
373
|
+
let tim="@AVE"
|
374
|
+
let lev="1:${plev}"
|
375
|
+
let var="${facZ}${pvar}"
|
376
|
+
fill ${pal} ${LEVELS1} /title="Zonal avg: ${MODEL_RESOLUTION} - ${exp}: ${var}" (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
377
|
+
${CONTOUR} ${LEVELS1} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}])
|
378
|
+
! FRAME/TRANSPARENT/file=${tfile}_zonal.$ext
|
379
|
+
FRAME/file=${tfile}_zonal.$ext
|
380
|
+
!SPAWN ls -l ${tfile}_zonal.$ext
|
381
|
+
fill ${pal} ${LEVELS2} /title="Zonal avg: ${MODEL_RESOLUTION} - ${exp}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
382
|
+
${CONTOUR} ${LEVELS2} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
383
|
+
! FRAME/TRANSPARENT/file=${tfile}_zonal_log.$ext
|
384
|
+
FRAME/file=${tfile}_zonal_log.$ext
|
385
|
+
!SPAWN ls -l ${tfile}_zonal_log.$ext
|
386
|
+
!SPAWN pwd
|
387
|
+
EOF
|
388
|
+
cat > ${tfile}_zonal_1x1_diff.jnl <<EOF
|
389
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
390
|
+
use ${ifile1}
|
391
|
+
use ${ifile2}
|
392
|
+
show data
|
393
|
+
CANCEL MODE logo
|
394
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
395
|
+
PPL AXLSZE,0.14,0.14
|
396
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
397
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
398
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
399
|
+
!let pal="/PALETTE=rainbow"
|
400
|
+
!let pal="/PALETTE=rain_cmyk"
|
401
|
+
!let pal="/PALETTE=no_green_centered"
|
402
|
+
let pal="/PALETTE=white_centered"
|
403
|
+
let lon="-180:180@AVE"
|
404
|
+
let lat="-90:90"
|
405
|
+
let tim="@AVE"
|
406
|
+
let lev="1:${plev}"
|
407
|
+
let var="${facZ}${pvar}"
|
408
|
+
fill ${pal} /title="Zonal avg: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: ${var}" ${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}];go land
|
409
|
+
${CONTOUR} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}])
|
410
|
+
! FRAME/TRANSPARENT/file=${tfile}_zonal_diff.$ext
|
411
|
+
FRAME/file=${tfile}_zonal_diff.$ext
|
412
|
+
!SPAWN ls -l ${tfile}_zonal_diff.$ext
|
413
|
+
fill ${pal} /title="Zonal avg: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
414
|
+
${CONTOUR} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
415
|
+
! FRAME/TRANSPARENT/file=${tfile}_zonal_log_diff.$ext
|
416
|
+
FRAME/file=${tfile}_zonal_log_diff.$ext
|
417
|
+
!SPAWN ls -l ${tfile}_zonal_log_diff.$ext
|
418
|
+
!SPAWN pwd
|
419
|
+
EOF
|
420
|
+
######## meridional plots ########
|
421
|
+
cat > ${tfile}_meridional_1x1.jnl <<EOF
|
422
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
423
|
+
use ${pvar}.nc
|
424
|
+
show data
|
425
|
+
CANCEL MODE logo
|
426
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
427
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
428
|
+
PPL AXLSZE,0.14,0.14
|
429
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
430
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
431
|
+
let pal="/PALETTE=rainbow"
|
432
|
+
!let pal="/PALETTE=rain_cmyk"
|
433
|
+
!let pal="/PALETTE=no_green_centered"
|
434
|
+
!let pal="/PALETTE=white_centered"
|
435
|
+
let lon="-180:180"
|
436
|
+
let lat="-90:90@AVE"
|
437
|
+
let tim="@AVE"
|
438
|
+
let lev="1:${plev}"
|
439
|
+
let var="${facM}${pvar}"
|
440
|
+
fill ${pal} ${LEVELS1} /title="Meridional avg: ${MODEL_RESOLUTION} - ${exp}: ${var}" (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
441
|
+
${CONTOUR} ${LEVELS1} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}])
|
442
|
+
! FRAME/TRANSPARENT/file=${tfile}_meridional.$ext
|
443
|
+
FRAME/file=${tfile}_meridional.$ext
|
444
|
+
!SPAWN ls -l ${tfile}_meridional.$ext
|
445
|
+
fill ${pal} ${LEVELS2} /title="Meridional avg: ${MODEL_RESOLUTION} - ${exp}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
446
|
+
${CONTOUR} ${LEVELS2} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
447
|
+
! FRAME/TRANSPARENT/file=${tfile}_meridional_log.$ext
|
448
|
+
FRAME/file=${tfile}_meridional_log.$ext
|
449
|
+
!SPAWN ls -l ${tfile}_meridional_log.$ext
|
450
|
+
!SPAWN pwd
|
451
|
+
EOF
|
452
|
+
cat > ${tfile}_meridional_1x1_diff.jnl <<EOF
|
453
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
454
|
+
use ${ifile1}
|
455
|
+
use ${ifile2}
|
456
|
+
show data
|
457
|
+
CANCEL MODE logo
|
458
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
459
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
460
|
+
PPL AXLSZE,0.14,0.14
|
461
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
462
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
463
|
+
!let pal="/PALETTE=rainbow"
|
464
|
+
!let pal="/PALETTE=rain_cmyk"
|
465
|
+
!let pal="/PALETTE=no_green_centered"
|
466
|
+
let pal="/PALETTE=white_centered"
|
467
|
+
let lon="-180:180"
|
468
|
+
let lat="-90:90@AVE"
|
469
|
+
let tim="@AVE"
|
470
|
+
let lev="1:${plev}"
|
471
|
+
let var="${facM}${pvar}"
|
472
|
+
fill ${pal} /title="Meridional avg: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: ${var}" ${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}];go land
|
473
|
+
${CONTOUR} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}])
|
474
|
+
! FRAME/TRANSPARENT/file=${tfile}_meridional_diff.$ext
|
475
|
+
FRAME/file=${tfile}_meridional_diff.$ext
|
476
|
+
!SPAWN ls -l ${tfile}_meridional_diff.$ext
|
477
|
+
fill ${pal} /title="Meridional avg: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
478
|
+
${CONTOUR} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
479
|
+
! FRAME/TRANSPARENT/file=${tfile}_meridional_log_diff.$ext
|
480
|
+
FRAME/file=${tfile}_meridional_log_diff.$ext
|
481
|
+
!SPAWN ls -l ${tfile}_meridional_log_diff.$ext
|
482
|
+
!SPAWN pwd
|
483
|
+
EOF
|
484
|
+
######## surface plots ########
|
485
|
+
FERRETMEMSIZE="500"
|
486
|
+
cat > ${tfile}_surface_1x1.jnl <<EOF
|
487
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
488
|
+
use ${pvar}.nc
|
489
|
+
show data
|
490
|
+
CANCEL MODE logo
|
491
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
492
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
493
|
+
PPL AXLSZE,0.14,0.14
|
494
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
495
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
496
|
+
let pal="/PALETTE=rainbow"
|
497
|
+
!let pal="/PALETTE=rain_cmyk"
|
498
|
+
!let pal="/PALETTE=no_green_centered"
|
499
|
+
!let pal="/PALETTE=white_centered"
|
500
|
+
let lon="-180:180"
|
501
|
+
let lat="-90:90"
|
502
|
+
let tim="@AVE"
|
503
|
+
let lev="${plev}"
|
504
|
+
let var="${facS}${pvar}"
|
505
|
+
fill ${pal} ${LEVELS1} /title="Surface: ${MODEL_RESOLUTION} - ${exp}: ${var}" (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
506
|
+
!${CONTOUR} ${LEVELS1} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}])
|
507
|
+
! FRAME/TRANSPARENT/file=${tfile}_surface.$ext
|
508
|
+
FRAME/file=${tfile}_surface.$ext
|
509
|
+
!SPAWN ls -l ${tfile}_surface.$ext
|
510
|
+
fill ${pal} ${LEVELS2} /title="Surface: ${MODEL_RESOLUTION} - ${exp}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
511
|
+
!${CONTOUR} ${LEVELS2} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
512
|
+
! FRAME/TRANSPARENT/file=${tfile}_surface_log.$ext
|
513
|
+
FRAME/file=${tfile}_surface_log.$ext
|
514
|
+
!SPAWN ls -l ${tfile}_surface_log.$ext
|
515
|
+
!SPAWN pwd
|
516
|
+
EOF
|
517
|
+
cat > ${tfile}_surface_1x1_diff.jnl <<EOF
|
518
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
519
|
+
use ${ifile1}
|
520
|
+
use ${ifile2}
|
521
|
+
show data
|
522
|
+
CANCEL MODE logo
|
523
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
524
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
525
|
+
PPL AXLSZE,0.14,0.14
|
526
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
527
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
528
|
+
!let pal="/PALETTE=rainbow"
|
529
|
+
!let pal="/PALETTE=rain_cmyk"
|
530
|
+
!let pal="/PALETTE=no_green_centered"
|
531
|
+
let pal="/PALETTE=white_centered"
|
532
|
+
let lon="-180:180"
|
533
|
+
let lat="-90:90"
|
534
|
+
let tim="@AVE"
|
535
|
+
let lev="${plev}"
|
536
|
+
let var="${facS}${pvar}"
|
537
|
+
fill ${pal} /title="Surface: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: ${var}" ${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}];go land
|
538
|
+
!${CONTOUR} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}])
|
539
|
+
! FRAME/TRANSPARENT/file=${tfile}_surface_diff.$ext
|
540
|
+
FRAME/file=${tfile}_surface_diff.$ext
|
541
|
+
!SPAWN ls -l ${tfile}_surface_diff.$ext
|
542
|
+
fill ${pal} /title="Surface: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
543
|
+
!${CONTOUR} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
544
|
+
! FRAME/TRANSPARENT/file=${tfile}_surface_log_diff.$ext
|
545
|
+
FRAME/file=${tfile}_surface_log_diff.$ext
|
546
|
+
!SPAWN ls -l ${tfile}_surface_log_diff.$ext
|
547
|
+
!SPAWN pwd
|
548
|
+
EOF
|
549
|
+
######## UTLS plots ########
|
550
|
+
FERRETMEMSIZE="500"
|
551
|
+
cat > ${tfile}_utls_1x1.jnl <<EOF
|
552
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
553
|
+
use ${pvar}.nc
|
554
|
+
show data
|
555
|
+
CANCEL MODE logo
|
556
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
557
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
558
|
+
PPL AXLSZE,0.14,0.14
|
559
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
560
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
561
|
+
let pal="/PALETTE=rainbow"
|
562
|
+
!let pal="/PALETTE=rain_cmyk"
|
563
|
+
!let pal="/PALETTE=no_green_centered"
|
564
|
+
!let pal="/PALETTE=white_centered"
|
565
|
+
let lon="-180:180"
|
566
|
+
let lat="-90:90"
|
567
|
+
let tim="@AVE"
|
568
|
+
let lev="${ulev}@SUM"
|
569
|
+
let var="${facU}${pvar}"
|
570
|
+
fill ${pal} ${LEVELS1} /title="UTLS: ${MODEL_RESOLUTION} - ${exp}: ${var}" (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
571
|
+
!${CONTOUR} ${LEVELS1} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}])
|
572
|
+
! FRAME/TRANSPARENT/file=${tfile}_utls.$ext
|
573
|
+
FRAME/file=${tfile}_utls.$ext
|
574
|
+
!SPAWN ls -l ${tfile}_utls.$ext
|
575
|
+
fill ${pal} ${LEVELS3} /title="UTLS: ${MODEL_RESOLUTION} - ${exp}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
576
|
+
!${CONTOUR} ${LEVELS3} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
577
|
+
! FRAME/TRANSPARENT/file=${tfile}_utls_log.$ext
|
578
|
+
FRAME/file=${tfile}_utls_log.$ext
|
579
|
+
!SPAWN ls -l ${tfile}_utls_log.$ext
|
580
|
+
!SPAWN pwd
|
581
|
+
EOF
|
582
|
+
cat > ${tfile}_utls_1x1_diff.jnl <<EOF
|
583
|
+
! pyferret -nodisplay -script ferret_1x1.jnl
|
584
|
+
use ${ifile1}
|
585
|
+
use ${ifile2}
|
586
|
+
show data
|
587
|
+
CANCEL MODE logo
|
588
|
+
SET MEMORY/SIZE=${FERRETMEMSIZE}
|
589
|
+
SET VAR/BAD=-9.e+33 ${pvar}
|
590
|
+
PPL AXLSZE,0.14,0.14
|
591
|
+
PPL LABSET 0.18,0.18,0.18,0.18 ! character heights for labels
|
592
|
+
PPL SHASET 0 100 100 100 ! white for 0% LEVEL
|
593
|
+
!let pal="/PALETTE=rainbow"
|
594
|
+
!let pal="/PALETTE=rain_cmyk"
|
595
|
+
!let pal="/PALETTE=no_green_centered"
|
596
|
+
let pal="/PALETTE=white_centered"
|
597
|
+
let lon="-180:180"
|
598
|
+
let lat="-90:90"
|
599
|
+
let tim="@AVE"
|
600
|
+
let lev="${ulev}@SUM"
|
601
|
+
let var="${facU}${pvar}"
|
602
|
+
fill ${pal} /title="UTLS: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: ${var}" ${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}];go land
|
603
|
+
!${CONTOUR} (${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}])
|
604
|
+
! FRAME/TRANSPARENT/file=${tfile}_utls_diff.$ext
|
605
|
+
FRAME/file=${tfile}_utls_diff.$ext
|
606
|
+
!SPAWN ls -l ${tfile}_utls_diff.$ext
|
607
|
+
fill ${pal} /title="UTLS: ${MODEL_RESOLUTION} - Diff: ${exp1}-${exp2}: log(${var})" log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]);go land
|
608
|
+
!${CONTOUR} (log(${var}[d=1,x=${lon},y=${lat},k=${lev},l=${tim}]-${var}[d=2,x=${lon},y=${lat},k=${lev},l=${tim}]))
|
609
|
+
! FRAME/TRANSPARENT/file=${tfile}_utls_log_diff.$ext
|
610
|
+
FRAME/file=${tfile}_utls_log_diff.$ext
|
611
|
+
!SPAWN ls -l ${tfile}_utls_log_diff.$ext
|
612
|
+
!SPAWN pwd
|
613
|
+
EOF
|
614
|
+
######## ########## ########
|
615
|
+
|
616
|
+
# ferret plots using user provided journal file
|
617
|
+
ferret="$SCRIPTS_PATH/pyferret/ferret_${pvar}"
|
618
|
+
if [ -f "$ferret.jnl" ]; then
|
619
|
+
cp -p $ferret.jnl .
|
620
|
+
rm -f ${tfile}_burden.${ext} ${tfile}_burden_log.${ext}
|
621
|
+
log "pyferret -nodisplay -script $ferret.jnl ${ifile} ${pvar} ${MODEL_RESOLUTION} ${exp} ${tfile}_burden ${ext}"
|
622
|
+
pyferret -nodisplay -script $ferret.jnl ${ifile} ${pvar} ${MODEL_RESOLUTION} ${exp} ${tfile}_burden ${ext}
|
623
|
+
else
|
624
|
+
# ferret plots for default journal file
|
625
|
+
rm -f ${tfile}_burden.${ext} ${tfile}_burden_log.${ext}
|
626
|
+
log "pyferret -nodisplay -script ${tfile}_burden_1x1.jnl"
|
627
|
+
pyferret -nodisplay -script ${tfile}_burden_1x1.jnl
|
628
|
+
|
629
|
+
rm -f ${tfile}_zonal.${ext} ${tfile}_zonal_log.${ext}
|
630
|
+
log "pyferret -nodisplay -script ${tfile}_zonal_1x1.jnl"
|
631
|
+
pyferret -nodisplay -script ${tfile}_zonal_1x1.jnl
|
632
|
+
|
633
|
+
rm -f ${tfile}_meridional.${ext} ${tfile}_meridional_log.${ext}
|
634
|
+
log "pyferret -nodisplay -script ${tfile}_meridional_1x1.jnl"
|
635
|
+
pyferret -nodisplay -script ${tfile}_meridional_1x1.jnl
|
636
|
+
|
637
|
+
rm -f ${tfile}_surface.${ext} ${tfile}_surface_log.${ext}
|
638
|
+
log "pyferret -nodisplay -script ${tfile}_surface_1x1.jnl"
|
639
|
+
pyferret -nodisplay -script ${tfile}_surface_1x1.jnl
|
640
|
+
|
641
|
+
rm -f ${tfile}_utls.${ext} ${tfile}_utls_log.${ext}
|
642
|
+
log "pyferret -nodisplay -script ${tfile}_utls_1x1.jnl"
|
643
|
+
pyferret -nodisplay -script ${tfile}_utls_1x1.jnl
|
644
|
+
fi
|
645
|
+
|
646
|
+
if [ "${exp}" == "${exp1}" ]; then
|
647
|
+
rm -f ${tfile}_burden_diff.${ext} ${tfile}_burden_log_diff.${ext}
|
648
|
+
log "pyferret -nodisplay -script ${tfile}_burden_1x1_diff.jnl"
|
649
|
+
pyferret -nodisplay -script ${tfile}_burden_1x1_diff.jnl
|
650
|
+
|
651
|
+
rm -f ${tfile}_zonal_diff.${ext} ${tfile}_zonal_log_diff.${ext}
|
652
|
+
log "pyferret -nodisplay -script ${tfile}_zonal_1x1_diff.jnl"
|
653
|
+
pyferret -nodisplay -script ${tfile}_zonal_1x1_diff.jnl
|
654
|
+
|
655
|
+
rm -f ${tfile}_meridional_diff.${ext} ${tfile}_meridional_log_diff.${ext}
|
656
|
+
log "pyferret -nodisplay -script ${tfile}_meridional_1x1_diff.jnl"
|
657
|
+
pyferret -nodisplay -script ${tfile}_meridional_1x1_diff.jnl
|
658
|
+
|
659
|
+
rm -f ${tfile}_surface_diff.${ext} ${tfile}_surface_log_diff.${ext}
|
660
|
+
log "pyferret -nodisplay -script ${tfile}_surface_1x1_diff.jnl"
|
661
|
+
pyferret -nodisplay -script ${tfile}_surface_1x1_diff.jnl
|
662
|
+
|
663
|
+
rm -f ${tfile}_utls_diff.${ext} ${tfile}_utls_log_diff.${ext}
|
664
|
+
log "pyferret -nodisplay -script ${tfile}_utls_1x1_diff.jnl"
|
665
|
+
pyferret -nodisplay -script ${tfile}_utls_1x1_diff.jnl
|
666
|
+
|
667
|
+
# files=("${tfile}" "${tfile}_log" "${tfile}_diff" "${tfile}_log_diff")
|
668
|
+
files=("${tfile}_surface" "${tfile}_surface_log" "${tfile}_surface_diff" "${tfile}_surface_log_diff" \
|
669
|
+
"${tfile}_burden" "${tfile}_burden_log" "${tfile}_burden_diff" "${tfile}_burden_log_diff" \
|
670
|
+
"${tfile}_meridional" "${tfile}_meridional_log" "${tfile}_meridional_diff" "${tfile}_meridional_log_diff" \
|
671
|
+
"${tfile}_zonal" "${tfile}_zonal_log" "${tfile}_zonal_diff" "${tfile}_zonal_log_diff" \
|
672
|
+
"${tfile}_utls" "${tfile}_utls_log" "${tfile}_utls_diff" "${tfile}_utls_log_diff" \
|
673
|
+
)
|
674
|
+
else
|
675
|
+
# files=("${tfile}" "${tfile}_log")
|
676
|
+
# files=("${tfile}" "${tfile}_log" "${tfile}_zonal" "${tfile}_zonal_log" "${tfile}_meridional" "${tfile}_meridional_log" "${tfile}_surface" "${tfile}_surface_log" "${tfile}_utls" "${tfile}_utls_log")
|
677
|
+
files=("${tfile}_surface" "${tfile}_surface_log" \
|
678
|
+
"${tfile}_burden" "${tfile}_burden_log" \
|
679
|
+
"${tfile}_meridional" "${tfile}_meridional_log" \
|
680
|
+
"${tfile}_zonal" "${tfile}_zonal_log" \
|
681
|
+
"${tfile}_utls" "${tfile}_utls_log" \
|
682
|
+
)
|
683
|
+
fi
|
684
|
+
|
685
|
+
for file in "${files[@]}"; do
|
686
|
+
file=$file.$ext
|
687
|
+
if [ -f "${file}" ]; then
|
688
|
+
log "success: ${file} generated"
|
689
|
+
ls -lh "${file}"
|
690
|
+
echo "${tpath}/${file}" >> "$texPlotsfile"
|
691
|
+
if [ "${myOS}" == "Darwin1" ] && [ "${pvar}" == "AW" ] ; then
|
692
|
+
open "${file}"
|
693
|
+
fi
|
694
|
+
else
|
695
|
+
log "error: ${file} not generated"
|
696
|
+
fi
|
697
|
+
done
|
698
|
+
else # ifile
|
699
|
+
log "error: ${ifile} not found!"
|
700
|
+
fi # ifile
|
701
|
+
|
702
|
+
done # pvar
|
703
|
+
done # ncvar
|
704
|
+
done # name
|
705
|
+
done # exps
|
706
|
+
log "----------------------------------------------------------------------------------------"
|
707
|
+
log "${texPlotsfile}"
|
708
|
+
cat ${texPlotsfile}
|
709
|
+
log "----------------------------------------------------------------------------------------"
|
710
|
+
tQLTYPE=$(echo "$QLTYPE" | sed 's/_/\\_/g')
|
711
|
+
rm -f ${texFile}
|
712
|
+
cat > ${texFile} <<EOF
|
713
|
+
%===============================================================================
|
714
|
+
\subsection{${tQLTYPE} -- ${mDate} (${TIME_RESOLUTION})}
|
715
|
+
EOF
|
716
|
+
pfiles="`cat ${texPlotsfile}`"
|
717
|
+
#log "${pfiles}"
|
718
|
+
log "----------------------------------------------------------------------------------------"
|
719
|
+
log "sorted file list:"
|
720
|
+
sorted_files="${hpath}/sorted_files_${script_name}.list"
|
721
|
+
touch ${sorted_files}
|
722
|
+
log "sort_files "${QLTYPE}" "${exp1}" "${exp2}" "$texPlotsfile" "${ext}" "${hpath}""
|
723
|
+
sort_files "${QLTYPE}" "${exp1}" "${exp2}" "$texPlotsfile" "${ext}" "${hpath}"
|
724
|
+
#cp ${texPlotsfile} ${sorted_files} # test / remove
|
725
|
+
tfiles="`cat ${sorted_files}`"
|
726
|
+
log "${tfiles}"
|
727
|
+
log "----------------------------------------------------------------------------------------"
|
728
|
+
|
729
|
+
for plot in ${tfiles} ; do
|
730
|
+
|
731
|
+
file_name=${plot}
|
732
|
+
# Extract the file name without directory and extension
|
733
|
+
file_name="${file_name##*/}" # Remove directory path
|
734
|
+
file_name="${file_name%.*}" # Remove extension
|
735
|
+
|
736
|
+
# Split the file name into parts
|
737
|
+
IFS="_" read -ra parts <<< "$file_name"
|
738
|
+
|
739
|
+
pqlc="${parts[5]}"
|
740
|
+
pnml="${parts[6]}"
|
741
|
+
# files without level type (_pl _ml _sfc)
|
742
|
+
#pvar2="${parts[7]}"
|
743
|
+
#pexp="${parts[8]}"
|
744
|
+
#ptyp="${parts[9]}"
|
745
|
+
#pdif="${parts[11]}"
|
746
|
+
# files with level type (_pl _ml _sfc)
|
747
|
+
tlev="${parts[7]}"
|
748
|
+
pvar2="${parts[8]}"
|
749
|
+
pexp="${parts[9]}"
|
750
|
+
ptyp="${parts[10]}"
|
751
|
+
plog="${parts[11]}"
|
752
|
+
pdif="${parts[12]}"
|
753
|
+
if [[ "$pvar2" == *"-"* ]]; then
|
754
|
+
# echo "INFO: variable name '$pvar2' contains dash, display as underscore."
|
755
|
+
pvar=$pvar2
|
756
|
+
# pvar=$(echo "$pvar2" | sed 's/-/\_/g')
|
757
|
+
pvar3=$(echo "$pvar2" | sed 's/-/\\_/g')
|
758
|
+
else
|
759
|
+
pvar=$pvar2
|
760
|
+
pvar3=$pvar2
|
761
|
+
fi
|
762
|
+
tvar="${ptyp}: ${pvar3} of ${exp1} vs ${exp2}"
|
763
|
+
for part in "${parts[@]}"; do
|
764
|
+
if [ "${plog}" == "log" ] ; then
|
765
|
+
tvar="${ptyp}: ${pvar3} of ${exp1} vs ${exp2} (log)"
|
766
|
+
fi
|
767
|
+
if [ "${plog}" == "diff" ]; then
|
768
|
+
tvar="${ptyp}: ${pvar3} | diff of ${exp1}-${exp2}"
|
769
|
+
fi
|
770
|
+
if [ "${pdif}" == "diff" ]; then
|
771
|
+
tvar="${ptyp}: ${pvar3} | diff of ${exp1}-${exp2} (log)"
|
772
|
+
fi
|
773
|
+
done
|
774
|
+
|
775
|
+
GO="no"
|
776
|
+
if [ "${tlev}" == "sfc" ] && [ "${ptyp}" == "surface" ] ; then
|
777
|
+
GO="GO"
|
778
|
+
fi
|
779
|
+
if [ "${tlev}" != "sfc" ] ; then
|
780
|
+
GO="GO"
|
781
|
+
fi
|
782
|
+
|
783
|
+
if [ "${GO}" == "GO" ] && [ "${pexp}" == "${exp1}" ] && [ "${plog}" == "" ] ; then
|
784
|
+
plot1="$PLOTS_DIRECTORY/${exp1}/${TEAM_PREFIX}_${exp1}-${exp2}_${mDate}_${QLTYPE}_${pnml}_${tlev}_${pvar}_${exp1}_${ptyp}.${ext}"
|
785
|
+
plot2="$PLOTS_DIRECTORY/${exp2}/${TEAM_PREFIX}_${exp1}-${exp2}_${mDate}_${QLTYPE}_${pnml}_${tlev}_${pvar}_${exp2}_${ptyp}.${ext}"
|
786
|
+
plot3="$PLOTS_DIRECTORY/${exp1}/${TEAM_PREFIX}_${exp1}-${exp2}_${mDate}_${QLTYPE}_${pnml}_${tlev}_${pvar}_${exp1}_${ptyp}_diff.${ext}"
|
787
|
+
plot4="$PLOTS_DIRECTORY/${exp1}/${TEAM_PREFIX}_${exp1}-${exp2}_${mDate}_${QLTYPE}_${pnml}_${tlev}_${pvar}_${exp1}_${ptyp}_log.${ext}"
|
788
|
+
plot5="$PLOTS_DIRECTORY/${exp2}/${TEAM_PREFIX}_${exp1}-${exp2}_${mDate}_${QLTYPE}_${pnml}_${tlev}_${pvar}_${exp2}_${ptyp}_log.${ext}"
|
789
|
+
plot6="$PLOTS_DIRECTORY/${exp1}/${TEAM_PREFIX}_${exp1}-${exp2}_${mDate}_${QLTYPE}_${pnml}_${tlev}_${pvar}_${exp1}_${ptyp}_log_diff.${ext}"
|
790
|
+
cat >> ${texFile} <<EOF
|
791
|
+
%===============================================================================
|
792
|
+
\frame{
|
793
|
+
\frametitle{${MODEL_RESOLUTION} -- ${tvar} (${tlev})}
|
794
|
+
\vspace{0mm}
|
795
|
+
\centering
|
796
|
+
\begin{minipage}[t]{0.89\textwidth}
|
797
|
+
\vspace{-2mm}
|
798
|
+
\begin{figure}[H]
|
799
|
+
\centering
|
800
|
+
\includegraphics[angle=0,clip=true, trim= 2mm 4mm 3mm 8mm, height=0.32\textheight, width=0.32\textwidth]{${plot1}}
|
801
|
+
\includegraphics[angle=0,clip=true, trim=27.5mm 4mm 3mm 8mm, height=0.32\textheight, width=0.32\textwidth]{${plot2}}
|
802
|
+
\includegraphics[angle=0,clip=true, trim=27.5mm 4mm 0mm 8mm, height=0.32\textheight, width=0.32\textwidth]{${plot3}}
|
803
|
+
|
804
|
+
\includegraphics[angle=0,clip=true, trim= 2mm 4mm 3mm 28mm, height=0.32\textheight, width=0.32\textwidth]{${plot4}}
|
805
|
+
\includegraphics[angle=0,clip=true, trim=27.5mm 4mm 3mm 28mm, height=0.32\textheight, width=0.32\textwidth]{${plot5}}
|
806
|
+
\includegraphics[angle=0,clip=true, trim=27.5mm 4mm 0mm 28mm, height=0.32\textheight, width=0.32\textwidth]{${plot6}}
|
807
|
+
% \vspace{-10mm}\caption{. }
|
808
|
+
\end{figure}
|
809
|
+
\end{minipage}
|
810
|
+
}
|
811
|
+
%===============================================================================
|
812
|
+
EOF
|
813
|
+
fi
|
814
|
+
done # plot
|
815
|
+
log "----------------------------------------------------------------------------------------"
|
816
|
+
log "${texFile}"
|
817
|
+
cat ${texFile}
|
818
|
+
log "----------------------------------------------------------------------------------------"
|
819
|
+
log "$ipath"
|
820
|
+
log "$tpath"
|
821
|
+
log "----------------------------------------------------------------------------------------"
|
822
|
+
log "End ${SCRIPT} at `date`"
|
823
|
+
log "________________________________________________________________________________________"
|
824
|
+
|
825
|
+
exit 0
|