Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
cdo
Commits
bd6db9ed
Commit
bd6db9ed
authored
Jan 21, 2009
by
Uwe Schulzweida
Browse files
Sinusoidal and Lambert Azimuthal Equal Area grids with units [km]
parent
f0a4bc52
Changes
3
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
bd6db9ed
2009-02-?? Uwe Schulzweida <Uwe.Schulzweida@zmaw.de>
* using CDI library version 1.3.1
* Sinusoidal and Lambert Azimuthal Equal Area grids with units [km]
* Version 1.3.1 released
2009-01-15 Uwe Schulzweida <Uwe.Schulzweida@zmaw.de>
* using CDI library version 1.3.0
...
...
doc/tex/mod/Importcmsaf
View file @
bd6db9ed
@BeginModule
@NewPage
@Name = Importcmsaf
@Title = Import CM-SAF HDF5 files
@Section = Miscellaneous
...
...
@@ -7,7 +8,74 @@
@BeginDescription
This operator imports gridded CM-SAF (Satellite Application Facility on Climate Monitoring)
HDF5 files.
HDF5 files. CM-SAF exploits data from polar-orbiting and geostationary satellites in order
to provide climate monitoring products of the following parameters:
@IfMan
Cloud parameters: cloud fraction (CFC), cloud type (CTY), cloud phase (CPH),
cloud top height, pressure and temperature (CTH,CTP,CTT),
cloud optical thickness (COT), cloud water path (CWP).
Surface radiation components: Surface albedo (SAL); surface incoming (SIS)
and net (SNS) shortwave radiation; surface downward (SDL)
and outgoing (SOL) longwave radiation, surface net longwave
radiation (SNL) and surface radiation budget (SRB).
Top-of-atmosphere radiation components: Incoming (TIS) and reflected (TRS)
solar radiative flux at top-of-atmosphere. Emitted thermal
radiative flux at top-of-atmosphere (TET).
Water vapour: Vertically integrated water vapour (HTW), layered vertically
integrated water vapour and layer mean temperature and relative
humidity for 5 layers (HLW), temperature and mixing ratio at
6 pressure levels.
@EndifMan
@IfDoc
\vspace*{2mm}
\setlength{\miniwidth}{\textwidth}
\addtolength{\miniwidth}{-0mm}
\hspace*{0mm}\begin{minipage}{\miniwidth}
\begin{defalist}{\bf Cloud para\ }
\item[{\bf Cloud parameters:}]
cloud fraction (CFC), cloud type (CTY), cloud phase (CPH),
cloud top height, pressure and temperature (CTH,CTP,CTT),
cloud optical thickness (COT), cloud water path (CWP).
\item[{\bf Surface radiation components:}]
Surface albedo (SAL); surface incoming (SIS)
and net (SNS) shortwave radiation; surface downward (SDL)
and outgoing (SOL) longwave radiation, surface net longwave
radiation (SNL) and surface radiation budget (SRB).
\item[{\bf Top-of-atmosphere radiation components:}]
Incoming (TIS) and reflected (TRS)
solar radiative flux at top-of-atmosphere. Emitted thermal
radiative flux at top-of-atmosphere (TET).
\item[{\bf Water vapour:}]
Vertically integrated water vapour (HTW), layered vertically
integrated water vapour and layer mean temperature and relative
humidity for 5 layers (HLW), temperature and mixing ratio at
6 pressure levels.
\end{defalist}
\end{minipage}
\addtolength{\miniwidth}{8mm}
\vspace*{2mm}
@EndifDoc
Daily and monthly mean products can be ordered via the CM-SAF web page (www.cmsaf.eu).
Products with higher spatial and temporal resolution, i.e. instantaneous swath-based products,
are available on request (contact.cmsaf@dwd.de). All products are distributed free-of-charge.
More information on the data is available on the CM-SAF homepage (www.cmsaf.eu).
Daily and monthly mean products are provided in equal-area projections. CDO reads the
projection parameters from the metadata in the HDF5-headers in order to allow spatial
operations like remapping. For spatial operations with instantaneous products on original
satellite projection, additional files with arrays of latitudes and longitudes are needed.
These can be obtained from CM-SAF together with the data.
@EndDescription
@EndModule
...
...
@@ -21,7 +89,9 @@ HDF5 files.
@BeginNote
This operator is only available if the program was compiled with HDF5 support!
To use this operator, it is necessary to build CDO with HDF5 support (version 1.6 or higher).
The PROJ.4 library (version 4.6 or higher) is needed for full support of the remapping
functionality.
@EndNote
...
...
src/grid.c
View file @
bd6db9ed
...
...
@@ -2,7 +2,7 @@
This file is part of CDO. CDO is a collection of Operators to
manipulate and analyse Climate model Data.
Copyright (C) 2003-200
8
Uwe Schulzweida, Uwe.Schulzweida@zmaw.de
Copyright (C) 2003-200
9
Uwe Schulzweida, Uwe.Schulzweida@zmaw.de
See COPYING file for copying and redistribution conditions.
This program is free software; you can redistribute it and/or modify
...
...
@@ -316,10 +316,18 @@ int gridToCurvilinear(int gridID1)
double
*
xvals2D
,
*
yvals2D
;
double
*
xbounds
=
NULL
,
*
ybounds
=
NULL
;
double
*
xbounds2D
,
*
ybounds2D
;
char
xunits
[
128
],
yunits
[
128
];
double
xscale
=
1
,
yscale
=
1
;
nx
=
gridInqXsize
(
gridID1
);
ny
=
gridInqYsize
(
gridID1
);
gridInqXunits
(
gridID1
,
xunits
);
gridInqYunits
(
gridID1
,
yunits
);
if
(
strncmp
(
xunits
,
"km"
,
2
)
==
0
)
xscale
=
1000
;
if
(
strncmp
(
yunits
,
"km"
,
2
)
==
0
)
yscale
=
1000
;
gridDefXsize
(
gridID2
,
nx
);
gridDefYsize
(
gridID2
,
ny
);
...
...
@@ -411,8 +419,8 @@ int gridToCurvilinear(int gridID1)
for
(
j
=
0
;
j
<
ny
;
j
++
)
for
(
i
=
0
;
i
<
nx
;
i
++
)
{
data
.
u
=
xvals
[
i
];
data
.
v
=
yvals
[
j
];
data
.
u
=
xscale
*
xvals
[
i
];
data
.
v
=
yscale
*
yvals
[
j
];
res
=
pj_inv
(
data
,
libProj
);
xvals2D
[
j
*
nx
+
i
]
=
res
.
u
*
rad2deg
;
yvals2D
[
j
*
nx
+
i
]
=
res
.
v
*
rad2deg
;
...
...
@@ -454,8 +462,8 @@ int gridToCurvilinear(int gridID1)
for
(
j
=
0
;
j
<
ny
;
j
++
)
for
(
i
=
0
;
i
<
nx
;
i
++
)
{
data
.
u
=
xvals
[
i
];
data
.
v
=
yvals
[
j
];
data
.
u
=
xscale
*
xvals
[
i
];
data
.
v
=
yscale
*
yvals
[
j
];
res
=
pj_inv
(
data
,
libProj
);
xvals2D
[
j
*
nx
+
i
]
=
res
.
u
*
rad2deg
;
yvals2D
[
j
*
nx
+
i
]
=
res
.
v
*
rad2deg
;
...
...
@@ -606,26 +614,26 @@ int gridToCurvilinear(int gridID1)
{
index
=
j
*
4
*
nx
+
4
*
i
;
data
.
u
=
xbounds
[
2
*
i
];
data
.
v
=
ybounds
[
2
*
j
];
data
.
u
=
xscale
*
xbounds
[
2
*
i
];
data
.
v
=
yscale
*
ybounds
[
2
*
j
];
res
=
pj_inv
(
data
,
libProj
);
xbounds2D
[
index
+
0
]
=
res
.
u
*
rad2deg
;
ybounds2D
[
index
+
0
]
=
res
.
v
*
rad2deg
;
data
.
u
=
xbounds
[
2
*
i
];
data
.
v
=
ybounds
[
2
*
j
+
1
];
data
.
u
=
xscale
*
xbounds
[
2
*
i
];
data
.
v
=
yscale
*
ybounds
[
2
*
j
+
1
];
res
=
pj_inv
(
data
,
libProj
);
xbounds2D
[
index
+
1
]
=
res
.
u
*
rad2deg
;
ybounds2D
[
index
+
1
]
=
res
.
v
*
rad2deg
;
data
.
u
=
xbounds
[
2
*
i
+
1
];
data
.
v
=
ybounds
[
2
*
j
+
1
];
data
.
u
=
xscale
*
xbounds
[
2
*
i
+
1
];
data
.
v
=
yscale
*
ybounds
[
2
*
j
+
1
];
res
=
pj_inv
(
data
,
libProj
);
xbounds2D
[
index
+
2
]
=
res
.
u
*
rad2deg
;
ybounds2D
[
index
+
2
]
=
res
.
v
*
rad2deg
;
data
.
u
=
xbounds
[
2
*
i
+
1
];
data
.
v
=
ybounds
[
2
*
j
];
data
.
u
=
xscale
*
xbounds
[
2
*
i
+
1
];
data
.
v
=
yscale
*
ybounds
[
2
*
j
];
res
=
pj_inv
(
data
,
libProj
);
xbounds2D
[
index
+
3
]
=
res
.
u
*
rad2deg
;
ybounds2D
[
index
+
3
]
=
res
.
v
*
rad2deg
;
...
...
@@ -673,26 +681,26 @@ int gridToCurvilinear(int gridID1)
{
index
=
j
*
4
*
nx
+
4
*
i
;
data
.
u
=
xbounds
[
2
*
i
];
data
.
v
=
ybounds
[
2
*
j
];
data
.
u
=
xscale
*
xbounds
[
2
*
i
];
data
.
v
=
yscale
*
ybounds
[
2
*
j
];
res
=
pj_inv
(
data
,
libProj
);
xbounds2D
[
index
+
0
]
=
res
.
u
*
rad2deg
;
ybounds2D
[
index
+
0
]
=
res
.
v
*
rad2deg
;
data
.
u
=
xbounds
[
2
*
i
];
data
.
v
=
ybounds
[
2
*
j
+
1
];
data
.
u
=
xscale
*
xbounds
[
2
*
i
];
data
.
v
=
yscale
*
ybounds
[
2
*
j
+
1
];
res
=
pj_inv
(
data
,
libProj
);
xbounds2D
[
index
+
1
]
=
res
.
u
*
rad2deg
;
ybounds2D
[
index
+
1
]
=
res
.
v
*
rad2deg
;
data
.
u
=
xbounds
[
2
*
i
+
1
];
data
.
v
=
ybounds
[
2
*
j
+
1
];
data
.
u
=
xscale
*
xbounds
[
2
*
i
+
1
];
data
.
v
=
yscale
*
ybounds
[
2
*
j
+
1
];
res
=
pj_inv
(
data
,
libProj
);
xbounds2D
[
index
+
2
]
=
res
.
u
*
rad2deg
;
ybounds2D
[
index
+
2
]
=
res
.
v
*
rad2deg
;
data
.
u
=
xbounds
[
2
*
i
+
1
];
data
.
v
=
ybounds
[
2
*
j
];
data
.
u
=
xscale
*
xbounds
[
2
*
i
+
1
];
data
.
v
=
yscale
*
ybounds
[
2
*
j
];
res
=
pj_inv
(
data
,
libProj
);
xbounds2D
[
index
+
3
]
=
res
.
u
*
rad2deg
;
ybounds2D
[
index
+
3
]
=
res
.
v
*
rad2deg
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment