Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
LIVVkit
lex
Commits
d1fde1b3
Commit
d1fde1b3
authored
Nov 16, 2018
by
Kennedy, Joseph H
Browse files
Updates for E3SM v1 (preliminary) (MR
!2
)
Resolved
!2
parents
6d96bc36
f5d638b6
Changes
129
Hide whitespace changes
Inline
Side-by-side
README.rst
View file @
d1fde1b3
...
...
@@ -110,7 +110,6 @@ into the directory ``lex``, you can reproduce all the figures and tables in
dynamics
/
dynamics_cisma
.
json
\
-
o
vv_evans2018
-
s
All
the
*
model
*
data
used
for
these
analyses
,
and
provided
as
an
example
,
required
some
postprocessing
to
generate
the
required
input
data
for
analysis
with
LIVVkit
.
A
set
of
task
-
parallel
postprocessing
scripts
are
provided
in
the
``
postproc
``
directory
.
While
these
scripts
are
...
...
@@ -118,6 +117,7 @@ currently model specific, a new model can be adapted from current scripts using
the
`
postprocessing
README
<
https
://
code
.
ornl
.
gov
/
LIVVkit
/
lex
/
blob
/
master
/
postproc
/
README
.
md
>`
__
.
Note
:
A
more
generalized
method
of
postprocessing
model
data
is
currently
under
development
.
Developing
a
custom
extension
-----------------------------
...
...
clouds/clouds/
cesm
_cldhgh_ann.py
→
clouds/clouds/
model
_cldhgh_ann.py
View file @
d1fde1b3
...
...
@@ -9,37 +9,31 @@ from livvkit.util import elements as el
describe
=
"""
Climatological annual average of high cloud cover over Greenland
for
CESM
(left), ISCCP (middle; Rossow and Schiffer, 1999), and CLOUDSAT (right;
for
Model
(left), ISCCP (middle; Rossow and Schiffer, 1999), and CLOUDSAT (right;
Kay and Gettelman, 2009). The black solid lines denote the 0, 1000, 2000, and
3000 meter Greenland ice sheet elevation contours as seen by
CESM
.
3000 meter Greenland ice sheet elevation contours as seen by
the Model
.
"""
title
=
"High cloud cover over Greenland"
def
make_plot
(
config
,
out_path
=
'.'
):
# ---------------- Data source in TITAN ------------------------
f_cism
=
os
.
path
.
join
(
config
[
'cism_data'
],
'Greenland_5km_v1.1_SacksRev_c110629.nc'
)
f_cesm_atm_climo_jja
=
os
.
path
.
join
(
config
[
'cesm_atm_climos'
],
'b.e10.BG20TRCN.f09_g16.002_JJA_climo.nc'
)
f_isccp
=
os
.
path
.
join
(
config
[
'cloud_data'
],
'ISCCP_ANN_climo.nc'
)
f_cloudsat
=
os
.
path
.
join
(
config
[
'cloud_data'
],
'CLOUDSAT_ANN_climo.nc'
)
# --------------------------------------------------------------
img_list
=
[]
# read f_cism, the elevation data
cism
=
Dataset
(
f_cism
)
cism
=
Dataset
(
config
[
'glc_surf'
])
cism_usrf
=
cism
.
variables
[
'usrf'
][
0
,
:,
:]
cism_lat
=
cism
.
variables
[
'lat'
][
0
,
:,
:]
cism_lon
=
cism
.
variables
[
'lon'
][
0
,
:,
:]
# read f_cesm_atm_climo_jja and file2, CESM variable
cesm
=
Dataset
(
f_cesm_atm_climo_jja
)
cesm_cldhgh
=
cesm
.
variables
[
'CLDHGH'
][
0
,
:,
:]
cesm_lat
=
cesm
.
variables
[
'lat'
][:]
cesm_lon
=
cesm
.
variables
[
'lon'
][:]
model
=
Dataset
(
config
[
'atm_climo'
])
model_cldhgh
=
model
.
variables
[
'CLDHGH'
][
0
,
:,
:]
model_lat
=
model
.
variables
[
'lat'
][:]
model_lon
=
model
.
variables
[
'lon'
][:]
cesm
_cldhgh
=
cesm
_cldhgh
*
100
# to get percent
model
_cldhgh
=
model
_cldhgh
*
100
# to get percent
# --- ISCCP data without remapping [64,128]
isccp
=
Dataset
(
f_isccp
)
...
...
@@ -54,7 +48,7 @@ def make_plot(config, out_path='.'):
cloudsat_lon
=
cloudsat
.
variables
[
'lon'
][:]
# print("contour plot of CLDHGH vs obs")
# maxmodel = np.max(
cesm
_cldhgh)
# maxmodel = np.max(
model
_cldhgh)
# maxisccp = np.max(isccp_hgh)
# maxcldsat = np.max(cloudsat_hgh)
# print("Max CLDHGH model: {}".format(maxmodel))
...
...
@@ -67,7 +61,7 @@ def make_plot(config, out_path='.'):
wkres
=
Ngl
.
Resources
()
# wkres.wkOrientation = "portrait"
wks_type
=
"png"
wks_img
=
str
(
os
.
path
.
join
(
out_path
,
'
CESM
_cldhgh_ANN'
))
wks_img
=
str
(
os
.
path
.
join
(
out_path
,
'
Model
_cldhgh_ANN'
))
wks
=
Ngl
.
open_wks
(
wks_type
,
wks_img
,
wkres
)
...
...
@@ -91,12 +85,11 @@ def make_plot(config, out_path='.'):
mres
.
mpFillOn
=
False
mres
.
mpPerimOn
=
True
# add box around map
# --- for the
CESM
contour -------
# --- for the
Model
contour -------
res1
=
Ngl
.
Resources
()
res1
.
cnFillPalette
=
"percent_11lev"
res1
.
nglDraw
=
False
# Don't draw individual plots
res1
.
nglFrame
=
False
# Don't advance frame.
res1
.
cnLineLabelsOn
=
False
res1
.
cnFillOn
=
True
res1
.
cnLinesOn
=
False
res1
.
cnLineLabelsOn
=
False
...
...
@@ -107,15 +100,14 @@ def make_plot(config, out_path='.'):
res1
.
lbLabelBarOn
=
True
# Turn on labelbar.
res1
.
lbLabelFontHeightF
=
0.04
res1
.
sfXArray
=
cesm
_lon
res1
.
sfYArray
=
cesm
_lat
res1
.
sfXArray
=
model
_lon
res1
.
sfYArray
=
model
_lat
# --- for the data contour -------
res2
=
Ngl
.
Resources
()
res2
.
cnFillPalette
=
"percent_11lev"
res2
.
nglDraw
=
False
# Don't draw individual plots
res2
.
nglFrame
=
False
# Don't advance frame.
res2
.
cnLineLabelsOn
=
False
res2
.
cnFillOn
=
True
res2
.
cnLinesOn
=
False
res2
.
cnLineLabelsOn
=
False
...
...
@@ -135,7 +127,6 @@ def make_plot(config, out_path='.'):
res3
.
cnFillPalette
=
"percent_11lev"
res3
.
nglDraw
=
False
# Don't draw individual plots
res3
.
nglFrame
=
False
# Don't advance frame.
res3
.
cnLineLabelsOn
=
False
res3
.
cnFillOn
=
True
res3
.
cnLinesOn
=
False
res3
.
cnLineLabelsOn
=
False
...
...
@@ -157,6 +148,7 @@ def make_plot(config, out_path='.'):
sres
.
cnFillOn
=
False
sres
.
cnLinesOn
=
True
sres
.
cnLineLabelsOn
=
False
sres
.
trGridType
=
"TriangularMesh"
sres
.
cnLevelSelectionMode
=
"ExplicitLevels"
sres
.
cnLevels
=
[
0
,
1000
,
2000
,
3000
]
sres
.
sfXArray
=
cism_lon
...
...
@@ -168,13 +160,13 @@ def make_plot(config, out_path='.'):
usrf_plot2
=
Ngl
.
contour
(
wks
,
cism_usrf
,
sres
)
usrf_plot3
=
Ngl
.
contour
(
wks
,
cism_usrf
,
sres
)
cesm
_plot
=
Ngl
.
contour
(
wks
,
cesm
_cldhgh
,
res1
)
model
_plot
=
Ngl
.
contour
(
wks
,
model
_cldhgh
,
res1
)
isccp_plot
=
Ngl
.
contour
(
wks
,
isccp_hgh
,
res2
)
cldsat_plot
=
Ngl
.
contour
(
wks
,
cloudsat_hgh
,
res3
)
# Create multiple figures and draw, which now contains the elevation and temperature
# "[1,3]" indicates 1 row, 3 columns.
map_title
=
[
"
CESM
"
,
"ISCCP"
,
"CLOUDSAT"
]
map_title
=
[
"
Model
"
,
"ISCCP"
,
"CLOUDSAT"
]
nmap
=
3
plot
=
[]
...
...
@@ -183,7 +175,7 @@ def make_plot(config, out_path='.'):
plot
.
append
(
Ngl
.
map
(
wks
,
mres
))
# Overlay everything on the map plot.
Ngl
.
overlay
(
plot
[
0
],
cesm
_plot
)
Ngl
.
overlay
(
plot
[
0
],
model
_plot
)
Ngl
.
overlay
(
plot
[
0
],
usrf_plot1
)
Ngl
.
overlay
(
plot
[
1
],
isccp_plot
)
Ngl
.
overlay
(
plot
[
1
],
usrf_plot2
)
...
...
clouds/clouds/
cesm
_cldlow_ann.py
→
clouds/clouds/
model
_cldlow_ann.py
View file @
d1fde1b3
...
...
@@ -9,37 +9,32 @@ from livvkit.util import elements as el
describe
=
"""
Climatological annual average of low cloud cover over Greenland
for
CESM
(left), ISCCP (middle; Rossow and Schiffer, 1999), and CLOUDSAT (right;
for
Model
(left), ISCCP (middle; Rossow and Schiffer, 1999), and CLOUDSAT (right;
Kay and Gettelman, 2009). The black solid lines denote the 0, 1000, 2000, and
3000 meter Greenland ice sheet elevation contours as seen by
CESM
.
3000 meter Greenland ice sheet elevation contours as seen by
the Model
.
"""
title
=
"Low cloud cover over Greenland"
def
make_plot
(
config
,
out_path
=
'.'
):
# ---------------- Data source in TITAN ------------------------
f_cism
=
os
.
path
.
join
(
config
[
'cism_data'
],
'Greenland_5km_v1.1_SacksRev_c110629.nc'
)
f_cesm_atm_climo_jja
=
os
.
path
.
join
(
config
[
'cesm_atm_climos'
],
'b.e10.BG20TRCN.f09_g16.002_JJA_climo.nc'
)
f_isccp
=
os
.
path
.
join
(
config
[
'cloud_data'
],
'ISCCP_ANN_climo.nc'
)
f_cloudsat
=
os
.
path
.
join
(
config
[
'cloud_data'
],
'CLOUDSAT_ANN_climo.nc'
)
# --------------------------------------------------------------
img_list
=
[]
# read f_cism, the elevation data
cism
=
Dataset
(
f_cism
)
cism
=
Dataset
(
config
[
'glc_surf'
])
cism_usrf
=
cism
.
variables
[
'usrf'
][
0
,
:,
:]
cism_lat
=
cism
.
variables
[
'lat'
][
0
,
:,
:]
cism_lon
=
cism
.
variables
[
'lon'
][
0
,
:,
:]
# read f_cesm_atm_climo_jja, CESM variable
cesm
=
Dataset
(
f_cesm_
atm_climo
_jja
)
cesm
_low
=
cesm
.
variables
[
'CLDLOW'
][
0
,
:,
:]
cesm
_lat
=
cesm
.
variables
[
'lat'
][:]
cesm
_lon
=
cesm
.
variables
[
'lon'
][:]
model
=
Dataset
(
config
[
'
atm_climo
'
]
)
model
_low
=
model
.
variables
[
'CLDLOW'
][
0
,
:,
:]
model
_lat
=
model
.
variables
[
'lat'
][:]
model
_lon
=
model
.
variables
[
'lon'
][:]
cesm
_low
=
cesm
_low
*
100
# to get percent
model
_low
=
model
_low
*
100
# to get percent
# --- ISCCP data without remapping [64,128]
isccp
=
Dataset
(
f_isccp
)
...
...
@@ -54,7 +49,7 @@ def make_plot(config, out_path='.'):
cloudsat_lon
=
cloudsat
.
variables
[
'lon'
][:]
# print("contour plot of CLDLOW vs obs")
# maxmodel = np.max(
cesm
_low)
# maxmodel = np.max(
model
_low)
# maxisccp = np.max(isccp_low)
# maxcldsat = np.max(cloudsat_low)
# print("Max CLDLOW model: {}".format(maxmodel))
...
...
@@ -67,7 +62,7 @@ def make_plot(config, out_path='.'):
wkres
=
Ngl
.
Resources
()
# wkres.wkOrientation = "portrait" # "portrait" or "landscape"
wks_type
=
"png"
wks_img
=
str
(
os
.
path
.
join
(
out_path
,
"
CESM
_cldlow_ANN"
))
wks_img
=
str
(
os
.
path
.
join
(
out_path
,
"
Model
_cldlow_ANN"
))
wks
=
Ngl
.
open_wks
(
wks_type
,
wks_img
,
wkres
)
# --- for the map -------
...
...
@@ -90,12 +85,11 @@ def make_plot(config, out_path='.'):
mres
.
mpFillOn
=
False
mres
.
mpPerimOn
=
True
# add box around map
# --- for the
CESM
contour -------
# --- for the
Model
contour -------
res1
=
Ngl
.
Resources
()
res1
.
cnFillPalette
=
"percent_11lev"
res1
.
nglDraw
=
False
# Don't draw individual plots
res1
.
nglFrame
=
False
# Don't advance frame.
res1
.
cnLineLabelsOn
=
False
res1
.
cnFillOn
=
True
res1
.
cnLinesOn
=
False
res1
.
cnLineLabelsOn
=
False
...
...
@@ -106,15 +100,14 @@ def make_plot(config, out_path='.'):
res1
.
lbLabelBarOn
=
True
# Turn on labelbar.
res1
.
lbLabelFontHeightF
=
0.04
res1
.
sfXArray
=
cesm
_lon
res1
.
sfYArray
=
cesm
_lat
res1
.
sfXArray
=
model
_lon
res1
.
sfYArray
=
model
_lat
# --- for the data contour -------
res2
=
Ngl
.
Resources
()
res2
.
cnFillPalette
=
"percent_11lev"
res2
.
nglDraw
=
False
# Don't draw individual plots
res2
.
nglFrame
=
False
# Don't advance frame.
res2
.
cnLineLabelsOn
=
False
res2
.
cnFillOn
=
True
res2
.
cnLinesOn
=
False
res2
.
cnLineLabelsOn
=
False
...
...
@@ -134,7 +127,6 @@ def make_plot(config, out_path='.'):
res3
.
cnFillPalette
=
"percent_11lev"
res3
.
nglDraw
=
False
# Don't draw individual plots
res3
.
nglFrame
=
False
# Don't advance frame.
res3
.
cnLineLabelsOn
=
False
res3
.
cnFillOn
=
True
res3
.
cnLinesOn
=
False
res3
.
cnLineLabelsOn
=
False
...
...
@@ -156,6 +148,7 @@ def make_plot(config, out_path='.'):
sres
.
cnFillOn
=
False
sres
.
cnLinesOn
=
True
sres
.
cnLineLabelsOn
=
False
sres
.
trGridType
=
"TriangularMesh"
sres
.
cnLevelSelectionMode
=
"ExplicitLevels"
sres
.
cnLevels
=
[
0
,
1000
,
2000
,
3000
]
sres
.
sfXArray
=
cism_lon
...
...
@@ -167,13 +160,13 @@ def make_plot(config, out_path='.'):
usrf_plot2
=
Ngl
.
contour
(
wks
,
cism_usrf
,
sres
)
usrf_plot3
=
Ngl
.
contour
(
wks
,
cism_usrf
,
sres
)
cesm
_plot
=
Ngl
.
contour
(
wks
,
cesm
_low
,
res1
)
model
_plot
=
Ngl
.
contour
(
wks
,
model
_low
,
res1
)
isccp_plot
=
Ngl
.
contour
(
wks
,
isccp_low
,
res2
)
cldsat_plot
=
Ngl
.
contour
(
wks
,
cloudsat_low
,
res3
)
# Creat multiple figures and draw, which now contains the elevation and temperature
# "[1,3]" indicates 1 row, 3 columns.
map_title
=
[
"
CESM
"
,
"ISCCP"
,
"CLOUDSAT"
]
map_title
=
[
"
Model
"
,
"ISCCP"
,
"CLOUDSAT"
]
nmap
=
3
plot
=
[]
...
...
@@ -182,7 +175,7 @@ def make_plot(config, out_path='.'):
plot
.
append
(
Ngl
.
map
(
wks
,
mres
))
# Overlay everything on the map plot.
Ngl
.
overlay
(
plot
[
0
],
cesm
_plot
)
Ngl
.
overlay
(
plot
[
0
],
model
_plot
)
Ngl
.
overlay
(
plot
[
0
],
usrf_plot1
)
Ngl
.
overlay
(
plot
[
1
],
isccp_plot
)
Ngl
.
overlay
(
plot
[
1
],
usrf_plot2
)
...
...
clouds/clouds/
cesm
_cldtot_ann.py
→
clouds/clouds/
model
_cldtot_ann.py
View file @
d1fde1b3
...
...
@@ -9,37 +9,32 @@ from livvkit.util import elements as el
describe
=
"""
Climatological annual average of cloud cover over Greenland
for
CESM
(left), ISCCP (middle; Rossow and Schiffer, 1999), and CLOUDSAT (right;
for
Model
(left), ISCCP (middle; Rossow and Schiffer, 1999), and CLOUDSAT (right;
Kay and Gettelman, 2009). The black solid lines denote the 0, 1000, 2000, and
3000 meter Greenland ice sheet elevation contours as seen by
CESM
.
3000 meter Greenland ice sheet elevation contours as seen by
the Model
.
"""
title
=
"Cloud cover over Greenland"
def
make_plot
(
config
,
out_path
=
'.'
):
# ---------------- Data source in TITAN ------------------------
f_cism
=
os
.
path
.
join
(
config
[
'cism_data'
],
'Greenland_5km_v1.1_SacksRev_c110629.nc'
)
f_cesm_atm_climo_jja
=
os
.
path
.
join
(
config
[
'cesm_atm_climos'
],
'b.e10.BG20TRCN.f09_g16.002_JJA_climo.nc'
)
f_isccp
=
os
.
path
.
join
(
config
[
'cloud_data'
],
'ISCCP_ANN_climo.nc'
)
f_cloudsat
=
os
.
path
.
join
(
config
[
'cloud_data'
],
'CLOUDSAT_ANN_climo.nc'
)
# --------------------------------------------------------------
img_list
=
[]
# read f_cism, the elevation data
cism
=
Dataset
(
f_cism
)
cism
=
Dataset
(
config
[
'glc_surf'
])
cism_usrf
=
cism
.
variables
[
'usrf'
][
0
,
:,
:]
cism_lat
=
cism
.
variables
[
'lat'
][
0
,
:,
:]
cism_lon
=
cism
.
variables
[
'lon'
][
0
,
:,
:]
# read f_cesm_atm_climo_jja and file2, CESM variable
cesm
=
Dataset
(
f_cesm_
atm_climo
_jja
)
cesm
_tot
=
cesm
.
variables
[
'CLDTOT'
][
0
,
:,
:]
cesm
_lat
=
cesm
.
variables
[
'lat'
][:]
cesm
_lon
=
cesm
.
variables
[
'lon'
][:]
model
=
Dataset
(
config
[
'
atm_climo
'
]
)
model
_tot
=
model
.
variables
[
'CLDTOT'
][
0
,
:,
:]
model
_lat
=
model
.
variables
[
'lat'
][:]
model
_lon
=
model
.
variables
[
'lon'
][:]
cesm
_tot
=
cesm
_tot
*
100
# to get percent
model
_tot
=
model
_tot
*
100
# to get percent
# --- ISCCP data without remapping [64,128]
isccp
=
Dataset
(
f_isccp
)
...
...
@@ -54,7 +49,7 @@ def make_plot(config, out_path='.'):
cloudsat_lon
=
cloudsat
.
variables
[
'lon'
][:]
# print("contour plot of CLDTOT vs obs")
# maxmodel = np.max(
cesm
_tot)
# maxmodel = np.max(
model
_tot)
# maxisccp = np.max(isccp_tot)
# maxcldsat = np.max(cloudsat_tot)
# print("Max CLDTOT model: {}".format(maxmodel))
...
...
@@ -67,7 +62,7 @@ def make_plot(config, out_path='.'):
wkres
=
Ngl
.
Resources
()
# wkres.wkOrientation = "portrait" # "portrait" or "landscape"
wks_type
=
"png"
wks_img
=
str
(
os
.
path
.
join
(
out_path
,
"
CESM
_cldtot_ANN"
))
wks_img
=
str
(
os
.
path
.
join
(
out_path
,
"
Model
_cldtot_ANN"
))
wks
=
Ngl
.
open_wks
(
wks_type
,
wks_img
,
wkres
)
# --- for the map -------
...
...
@@ -90,12 +85,11 @@ def make_plot(config, out_path='.'):
mres
.
mpFillOn
=
False
mres
.
mpPerimOn
=
True
# add box around map
# --- for the
CESM
contour -------
# --- for the
Model
contour -------
res1
=
Ngl
.
Resources
()
res1
.
cnFillPalette
=
"percent_11lev"
res1
.
nglDraw
=
False
# Don't draw individual plots
res1
.
nglFrame
=
False
# Don't advance frame.
res1
.
cnLineLabelsOn
=
False
res1
.
cnFillOn
=
True
res1
.
cnLinesOn
=
False
res1
.
cnLineLabelsOn
=
False
...
...
@@ -106,15 +100,14 @@ def make_plot(config, out_path='.'):
res1
.
lbLabelBarOn
=
True
# Turn on labelbar.
res1
.
lbLabelFontHeightF
=
0.04
res1
.
sfXArray
=
cesm
_lon
res1
.
sfYArray
=
cesm
_lat
res1
.
sfXArray
=
model
_lon
res1
.
sfYArray
=
model
_lat
# --- for the data contour -------
res2
=
Ngl
.
Resources
()
res2
.
cnFillPalette
=
"percent_11lev"
res2
.
nglDraw
=
False
# Don't draw individual plots
res2
.
nglFrame
=
False
# Don't advance frame.
res2
.
cnLineLabelsOn
=
False
res2
.
cnFillOn
=
True
res2
.
cnLinesOn
=
False
res2
.
cnLineLabelsOn
=
False
...
...
@@ -134,7 +127,6 @@ def make_plot(config, out_path='.'):
res3
.
cnFillPalette
=
"percent_11lev"
res3
.
nglDraw
=
False
# Don't draw individual plots
res3
.
nglFrame
=
False
# Don't advance frame.
res3
.
cnLineLabelsOn
=
False
res3
.
cnFillOn
=
True
res3
.
cnLinesOn
=
False
res3
.
cnLineLabelsOn
=
False
...
...
@@ -156,6 +148,7 @@ def make_plot(config, out_path='.'):
sres
.
cnFillOn
=
False
sres
.
cnLinesOn
=
True
sres
.
cnLineLabelsOn
=
False
sres
.
trGridType
=
"TriangularMesh"
sres
.
cnLevelSelectionMode
=
"ExplicitLevels"
sres
.
cnLevels
=
[
0
,
1000
,
2000
,
3000
]
sres
.
sfXArray
=
cism_lon
...
...
@@ -167,13 +160,13 @@ def make_plot(config, out_path='.'):
usrf_plot2
=
Ngl
.
contour
(
wks
,
cism_usrf
,
sres
)
usrf_plot3
=
Ngl
.
contour
(
wks
,
cism_usrf
,
sres
)
cesm
_plot
=
Ngl
.
contour
(
wks
,
cesm
_tot
,
res1
)
model
_plot
=
Ngl
.
contour
(
wks
,
model
_tot
,
res1
)
isccp_plot
=
Ngl
.
contour
(
wks
,
isccp_tot
,
res2
)
cldsat_plot
=
Ngl
.
contour
(
wks
,
cloudsat_tot
,
res3
)
# Creat multiple figures and draw, which now contains the elevation and temperature
# "[1,3]" indicates 1 row, 3 columns.
map_title
=
[
"
CESM
"
,
"ISCCP"
,
"CLOUDSAT"
]
map_title
=
[
"
Model
"
,
"ISCCP"
,
"CLOUDSAT"
]
nmap
=
3
plot
=
[]
...
...
@@ -182,7 +175,7 @@ def make_plot(config, out_path='.'):
plot
.
append
(
Ngl
.
map
(
wks
,
mres
))
# Overlay everything on the map plot.
Ngl
.
overlay
(
plot
[
0
],
cesm
_plot
)
Ngl
.
overlay
(
plot
[
0
],
model
_plot
)
Ngl
.
overlay
(
plot
[
0
],
usrf_plot1
)
Ngl
.
overlay
(
plot
[
1
],
isccp_plot
)
Ngl
.
overlay
(
plot
[
1
],
usrf_plot2
)
...
...
clouds/clouds/yearly_cycle_cldhgh.py
View file @
d1fde1b3
...
...
@@ -9,7 +9,7 @@ from livvkit.util import elements as el
describe
=
"""
Climatological monthly average of total high cloud cover over Greenland
for
CESM
(red), ISCCP (green; Rossow and Schiffer, 1999), and CLOUDSAT (cyan;
for
Model
(red), ISCCP (green; Rossow and Schiffer, 1999), and CLOUDSAT (cyan;
Kay and Gettelman, 2009).
"""
...
...
@@ -27,10 +27,7 @@ def make_plot(config, out_path='.'):
isccp_vals
=
[]
for
month
in
months
:
# CESM1
f_cesm
=
os
.
path
.
join
(
config
[
'cesm_atm_climos'
],
"b.e10.BG20TRCN.f09_g16.002_{:02d}_aavg_climo.nc"
.
format
(
month
))
ncid1
=
Dataset
(
f_cesm
,
mode
=
'r'
)
ncid1
=
Dataset
(
config
[
'atm_glob'
].
replace
(
'??'
,
'{:02d}'
.
format
(
month
)),
mode
=
'r'
)
model_cld
=
ncid1
.
variables
[
'CLDHGH'
][
0
]
# CLDSAT
...
...
@@ -55,7 +52,7 @@ def make_plot(config, out_path='.'):
percent
=
percent
*
100
percent_vals
.
append
(
percent
)
# plot months of the year versus CLDHGH for
CESM
and CLOUDSAT
# plot months of the year versus CLDHGH for
Model
and CLOUDSAT
plt
.
plot
(
months
,
percent_vals
,
'r'
)
plt
.
plot
(
months
,
cldsat_vals
,
'g--'
)
...
...
@@ -64,7 +61,7 @@ def make_plot(config, out_path='.'):
plt
.
ylabel
(
'Percent total cloud'
)
plt
.
tight_layout
()
img_path
=
os
.
path
.
join
(
out_path
,
'
CESM
_yearly_cycle_CLDHGH.png'
)
img_path
=
os
.
path
.
join
(
out_path
,
'
Model
_yearly_cycle_CLDHGH.png'
)
plt
.
savefig
(
img_path
)
plt
.
close
()
...
...
clouds/clouds/yearly_cycle_cldlow.py
View file @
d1fde1b3
...
...
@@ -9,7 +9,7 @@ from livvkit.util import elements as el
describe
=
"""
Climatological monthly average of total low cloud cover over Greenland
for
CESM
(red), ISCCP (green; Rossow and Schiffer, 1999), and CLOUDSAT (cyan;
for
Model
(red), ISCCP (green; Rossow and Schiffer, 1999), and CLOUDSAT (cyan;
Kay and Gettelman, 2009).
"""
...
...
@@ -27,11 +27,7 @@ def make_plot(config, out_path='.'):
isccp_vals
=
[]
for
month
in
months
:
# ---------------- Data source at OLCF ------------------------
# CESM1
input_file1
=
os
.
path
.
join
(
config
[
'cesm_atm_climos'
],
"b.e10.BG20TRCN.f09_g16.002_{:02d}_aavg_climo.nc"
.
format
(
month
))
ncid1
=
Dataset
(
input_file1
,
mode
=
'r'
)
ncid1
=
Dataset
(
config
[
'atm_glob'
].
replace
(
'??'
,
'{:02d}'
.
format
(
month
)),
mode
=
'r'
)
model_cld
=
ncid1
.
variables
[
'CLDLOW'
][
0
]
# CLDSAT
...
...
@@ -56,7 +52,7 @@ def make_plot(config, out_path='.'):
percent
=
percent
*
100
percent_vals
.
append
(
percent
)
# plot months of the year versus CLDLOW for
CESM
and CLOUDSAT
# plot months of the year versus CLDLOW for
Model
and CLOUDSAT
plt
.
plot
(
months
,
percent_vals
,
'r'
)
plt
.
plot
(
months
,
cldsat_vals
,
'g--'
)
...
...
@@ -65,7 +61,7 @@ def make_plot(config, out_path='.'):
plt
.
ylabel
(
'Percent total cloud'
)
plt
.
tight_layout
()
img_path
=
os
.
path
.
join
(
out_path
,
'
CESM
_yearly_cycle_CLDLOW.png'
)
img_path
=
os
.
path
.
join
(
out_path
,
'
Model
_yearly_cycle_CLDLOW.png'
)
plt
.
savefig
(
img_path
)
plt
.
close
()
...
...
clouds/clouds/yearly_cycle_cldtot.py
View file @
d1fde1b3
...
...
@@ -9,7 +9,7 @@ from livvkit.util import elements as el
describe
=
"""
Climatological monthly average of total cloud cover over Greenland
for
CESM
(red), ISCCP (green; Rossow and Schiffer, 1999), and CLOUDSAT (cyan;
for
Model
(red), ISCCP (green; Rossow and Schiffer, 1999), and CLOUDSAT (cyan;
Kay and Gettelman, 2009).
"""
...
...
@@ -27,11 +27,7 @@ def make_plot(config, out_path='.'):
isccp_vals
=
[]
for
month
in
months
:
# ---------------- Data source at OLCF ------------------------
# CESM1
f_cesm
=
os
.
path
.
join
(
config
[
'cesm_atm_climos'
],
"b.e10.BG20TRCN.f09_g16.002_{:02d}_aavg_climo.nc"
.
format
(
month
))
ncid1
=
Dataset
(
f_cesm
,
mode
=
'r'
)
ncid1
=
Dataset
(
config
[
'atm_glob'
].
replace
(
'??'
,
'{:02d}'
.
format
(
month
)),
mode
=
'r'
)
model_cld
=
ncid1
.
variables
[
'CLDTOT'
][
0
]
# CLDSAT
...
...
@@ -56,7 +52,7 @@ def make_plot(config, out_path='.'):
percent
=
percent
*
100
percent_vals
.
append
(
percent
)
# plot months of the year versus CLDTOT for
CESM
and CLOUDSAT
# plot months of the year versus CLDTOT for
Model
and CLOUDSAT
plt
.
plot
(
months
,
percent_vals
,
'r'
)
plt
.
plot
(
months
,
cldsat_vals
,
'g--'
)
...
...
@@ -65,7 +61,7 @@ def make_plot(config, out_path='.'):
plt
.
ylabel
(
'Percent total cloud'
)
plt
.
tight_layout
()
img_path
=
os
.
path
.
join
(
out_path
,
'
CESM
_yearly_cycle_CLDTOT.png'
)
img_path
=
os
.
path
.
join
(
out_path
,
'
Model
_yearly_cycle_CLDTOT.png'
)
plt
.
savefig
(
img_path
)
plt
.
close
()
...
...
clouds/clouds_cesm.json
View file @
d1fde1b3
{
"clouds_cesm"
:
{
"module"
:
"clouds/clouds_cesm.py"
,
"references"
:
"clouds/clouds_cesm.bib"
,
"cesm_atm_climos"
:
"data/cesm/atm"
,
"cism_data"
:
"data/cism/glissade"
,
"references"
:
"clouds/clouds_model.bib"
,
"atm_glob"
:
"data/cesm/atm/b.e10.BG20TRCN.f09_g16.002_??_aavg_climo.nc"
,
"atm_climo"
:
"data/cesm/atm/b.e10.BG20TRCN.f09_g16.002_JJA_climo.nc"
,
"glc_surf"
:
"data/cism/glissade/Greenland_5km_v1.1_SacksRev_c110629.nc"
,
"cloud_data"
:
"data/clouds"
,
"image_height"
:
300
}
...
...
clouds/clouds_cesm.py
View file @
d1fde1b3
...
...
@@ -39,9 +39,9 @@ from livvkit.util import functions as fn
with
fn
.
temp_sys_path
(
os
.
path
.
dirname
(
__file__
)):
import
clouds.utils
as
utils
import
clouds.
cesm
_cldhgh_ann
as
clouds_high
import
clouds.
cesm
_cldlow_ann
as
clouds_low
import
clouds.
cesm
_cldtot_ann
as
clouds_total
import
clouds.
model
_cldhgh_ann
as
clouds_high
import
clouds.
model
_cldlow_ann
as
clouds_low
import
clouds.
model
_cldtot_ann
as
clouds_total
import
clouds.yearly_cycle_cldhgh
as
yrly_high
import
clouds.yearly_cycle_cldlow
as
yrly_low
import
clouds.yearly_cycle_cldtot
as
yrly_total
...
...
clouds/clouds_e3sm.json
0 → 100644
View file @
d1fde1b3
{
"clouds_e3sm"
:
{
"module"
:
"clouds/clouds_e3sm.py"
,
"references"
:
"clouds/clouds_model.bib"
,
"atm_glob"
:
"data/e3sm/atm/20180612.B_case.T62_oEC60to30v3wLI.modified_runoff_mapping.edison_??_aavg_climo.nc"
,
"atm_climo"
:
"data/e3sm/atm/20180612.B_case.T62_oEC60to30v3wLI.modified_runoff_mapping.edison_JJA_climo.nc"
,
"glc_surf"
:
"data/cism/glissade/Greenland_5km_v1.1_SacksRev_c110629.nc"
,
"cloud_data"
:
"data/clouds"
,
"image_height"
:
300
}
}
clouds/clouds_e3sm.py
0 → 100644
View file @
d1fde1b3
# Copyright (c) 2015,2016, UT-BATTELLE, LLC
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors
# may be used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""An analysis of E3SM's cloud cover over Greenland."""
from
__future__
import
absolute_import
,
division
,
print_function
,
unicode_literals
import
os