-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove offset on GOES obs converter #732
Changes from 7 commits
d5bd801
89932c4
f2f2e8d
7b00844
e470a4a
4f969a4
899e7b4
02c92ad
775e1bd
4d94575
ddfec02
c9a330b
effe720
a58694a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | |||||||
---|---|---|---|---|---|---|---|---|---|
|
@@ -46,19 +46,114 @@ Although a model may not have the necessary inputs by itself, | ||||||||
the defaults in RTTOV based on climatology can be used. | |||||||||
The impact on the quality of the results should be investigated. | |||||||||
|
|||||||||
The quanities for each observation type are defined in obs_def_rttov{13}_mod.f90, like so: | |||||||||
The quanities for each observation type are defined in obs_def_rttov{13}_mod.f90, for example: | |||||||||
|
|||||||||
.. code:: | |||||||||
|
|||||||||
! HIMAWARI_8_AHI_RADIANCE, QTY_RADIANCE | |||||||||
! HIMAWARI_9_AHI_RADIANCE, QTY_RADIANCE | |||||||||
|
|||||||||
If you want to change the quantity associated with an observation, for example, if you want | |||||||||
to assimilate HIMAWARI_8_AHI_RADIANCE as QTY_BRIGHTNESS_TEMPERATURE, edit the QTY | |||||||||
in obs_def_rttov{13}_mod.f90 and rerun quickbuild.sh. | |||||||||
to assimilate HIMAWARI_9_AHI_RADIANCE as QTY_BRIGHTNESS_TEMPERATURE, edit the QTY | |||||||||
in obs_def_rttov{13}_mod.f90 and rerun quickbuild.sh. Although both spectral radiance | |||||||||
(mW/cm/m^2/sr) and brightness temperature (Kelvin) quantify the same emitted/reflected | |||||||||
radiance from the atmosphere, the tendency for brightness temperatures to adhere closer | |||||||||
to a gaussian distribution may improve the quality of the assimilation if using | |||||||||
a DART filter type that depends on Gaussian assumptions (e.g. EAKF). This is | |||||||||
an ongoing area of research. | |||||||||
|
|||||||||
|
|||||||||
Known issues: | |||||||||
|
|||||||||
RTTOV Metadata | |||||||||
--------------- | |||||||||
|
|||||||||
The RTTOV module ingests metadata from the ``obs_seq.out`` file in order to calculate the | |||||||||
expected observed radiance. For example, a single ``HIMAWARI_9_AHI_RADIANCE`` | |||||||||
synthetic observation in units of brightness temperature (Kelvin) looks like the following: | |||||||||
|
|||||||||
.. code:: | |||||||||
|
|||||||||
|
|||||||||
OBS 1 | |||||||||
288.370817896852 | |||||||||
288.456378689407 | |||||||||
0.000000000000000E+000 | |||||||||
-1 2 -1 | |||||||||
obdef | |||||||||
loc3d | |||||||||
1.766273140907288 0.1535889655351639 34000.00000000000 2 | |||||||||
kind | |||||||||
304 | |||||||||
visir | |||||||||
100.500000000000 46.6700000000000 -888888.000000000 | |||||||||
-888888.000000000 | |||||||||
31 9 56 8 | |||||||||
-888888.000000000 | |||||||||
1 | |||||||||
0 154166 | |||||||||
1.00000000000000 | |||||||||
|
|||||||||
|
|||||||||
Please note, that in this example the radiance observation was assigned a vertical level (34000 Pa) | |||||||||
with the ``VERTISPRESSURE`` (integer = 2) vertical coordinate. | |||||||||
Although radiance/BT observations are technically representative of the entire atmospheric | |||||||||
column and not a single vertical level, in some applications | |||||||||
this approximation improves the skill of the assimilation forecast. This is an ongoing | |||||||||
area of research. As an alternative, it is also common to leave the vertical level | |||||||||
as undefined (VERTISUNDEF, integer = -2), however, this limits the ability to vertically | |||||||||
localize the impact of the observation on the model state. | |||||||||
|
|||||||||
The RTTOV specific metadata is located after the ``visir`` line. This includes the | |||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This example if for visir observations, the microwave observations have |
|||||||||
azimuth and elevation angle of the satellite and the sun respectively. Note, in this | |||||||||
instance the sun azimuth/elevation are given missing values (-888888) because solar | |||||||||
reflectance has no impact on an IR radiance observation. Also note, the observation | |||||||||
provides a 4 integer description (31/9/56/8) of the platform/satellite/sensor/channel | |||||||||
combination specific to this satellite observation. For more information on this | |||||||||
metadata refer to this GOES observation converter example here: | |||||||||
:doc:`../observations/obs_converters/GOES/README.rst` | |||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This link is not correct and so does not get built:
The relative path is incorrect and you have .rst on the file
Suggested change
or add an anchor to the GEOS/README.rst file and link to that anchor. |
|||||||||
|
|||||||||
.. Important :: | |||||||||
|
|||||||||
**It is imperative that the user confirms the satellite integer metadata matches the | |||||||||
appropriate RTTOV coefficient (parameter) file. See next section for more information.** | |||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is a little hard to tell which file is which from the description. |
|||||||||
|
|||||||||
RTTOV coefficient files | |||||||||
----------------------- | |||||||||
|
|||||||||
The RTTOV coefficent file contains the appropriate parameter values for a specific satellite | |||||||||
radiance observation. The RTTOV database file (``rttov_sensor_db.csv``) refers to the coefficent | |||||||||
file. For the ``HIMAWARI_9_AHI_RADIANCE`` observation type, for example, the following information | |||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The rttov_sensor_db.csv a DART file, correct? I would be good to make that clear. At the moment it reads like the RTTOV database file is something you should be getting from RTTOV. The namelist option:
looking at the code the channel list is optional:
there are no channels in the rttov_sensor_db.csv sensor file in the repo:
are users supposed to edit rttov_sensor_db.csv or leave it as is? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The recommendation is to leave as is, and allow for all channels to be available, and the correct channel parameters are specified through the obs_seq.out channel metadata. Not clear to me if there would be any application where excluding certain channels through the DART database file would be appropriate. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @hkershaw-brown, I think I addressed all your review suggestions. Check through these docs changes, and make sure the converter code doesn't give you any issues. |
|||||||||
is provided: | |||||||||
|
|||||||||
.. code:: | |||||||||
|
|||||||||
HIMAWARI_9_AHI 31 9 56 ir rtcoef_himawari_9_ahi.dat | |||||||||
|
|||||||||
The coefficent file (.dat) is included with the RTTOV installation and can be found at the | |||||||||
path ``~{RTTOV_install}/rtcoef_rttov13/rttov9pred54L/rtcoef_himawari_9_ahi.dat``. This file | |||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. $path to the rttov install, rather than the home directory of ~rttov_install
Suggested change
|
|||||||||
should be included in your run folder at runtime. Additional coefficent files for a given | |||||||||
satellite sensor may be required. | |||||||||
|
|||||||||
It is good practice to always view your coefficent file (.dat) to confirm that the | |||||||||
channels listed in the file match the channel from the ``obs_seq.out`` file. The coefficent | |||||||||
file will include a list of channels (wavebands) with the associated wavelength (microns). | |||||||||
|
|||||||||
|
|||||||||
.. Important :: | |||||||||
|
|||||||||
The RTTOV package includes multiple coefficent files (e.g. all wavelengths, IR only, etc.) that | |||||||||
contain the appropriate parameter data for each satellite/sensor/channel combination. Whether | |||||||||
the file contains all wavelengths versus only IR wavelengths is **extremely important** because | |||||||||
it will shift the value of the channel number. Recommended practice is to choose a coefficient file | |||||||||
with all channels included. If, on the other hand, you subset your coefficent file to only include | |||||||||
IR channels, you will also have to adjust your channel number in the obs_seq.out file. | |||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For this, are you suggesting people edit the obs_seq.out file or run the converter with the correct channels? It is probably better to tell people to change the converter if they are using a subset of channels. |
|||||||||
If RTTOV always returns expected observations of radiance = 0, or if the prior expected radiance | |||||||||
is unusually biased from your prior, this could be a sign there is a mismatch between the | |||||||||
obs_seq.out channel and the coefficient file channel. | |||||||||
|
|||||||||
|
|||||||||
|
|||||||||
Known issues: | |||||||||
------------- | |||||||||
- DART does not yet provide any type of bias correction | |||||||||
- Cross-channel error correlations are not yet supported. A principal component approach has been discussed. For now, | |||||||||
the best bet is to use a subset of channels that are nearly independent of one another. | |||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,70 +35,129 @@ observation type). | |
Specifying a vertical location | ||
------------------------------ | ||
|
||
Jeff Steward added (PR 48) the capability to specify a vertical location | ||
if desired. This allows for localization in the vertical. | ||
|
||
It’s sometimes helpful, even though definitely wrong from a theoretical | ||
standpoint, to give a vertical location to satellite observations | ||
(which are integrated quantities). This has been an issue with | ||
observation-space localization for some time, and this is the standard | ||
workaround pioneered by Lili Lei and Jeff Whittaker. | ||
|
||
A short description of the namelist options | ||
------------------------------------------- | ||
|
||
This table is meant to familiarize you with some of the options | ||
available. Until we fully implement automatic documentation generation, | ||
you would be well advised to familiarize yourself with the code. This is | ||
not the full list of namelist variables … | ||
|
||
+-------------------------+---------------------+---------------------+ | ||
| variable | default | meaning | | ||
+=========================+=====================+=====================+ | ||
| x_thin | 0 | Skip this many per | | ||
| | | X scan. | | ||
+-------------------------+---------------------+---------------------+ | ||
| y_thin | 0 | Skip this many per | | ||
| | | Y scan. | | ||
+-------------------------+---------------------+---------------------+ | ||
| goes_num | 16 | GOES Satellite | | ||
| | | number. | | ||
+-------------------------+---------------------+---------------------+ | ||
| reject_dqf_1 | .true. | Bad scan rejection | | ||
| | | criteria. If .true. | | ||
| | | and DQF /= 0, the | | ||
| | | scan is rejected. | | ||
| | | If .false. any DQF | | ||
| | | > 1 rejects the | | ||
| | | scan. | | ||
+-------------------------+---------------------+---------------------+ | ||
| verbose | .false. | Run-time output | | ||
| | | verbosity | | ||
+-------------------------+---------------------+---------------------+ | ||
| obs_err | MISSING_R8 | The observation | | ||
| | | error standard | | ||
| | | deviation (std dev, | | ||
| | | in radiance units) | | ||
| | | TODO: make this | | ||
| | | more sophisticated. | | ||
| | | You must supply a | | ||
| | | value other than | | ||
| | | MISSING_R8. Be | | ||
| | | aware that the | | ||
| | | observation | | ||
| | | sequence files | | ||
| | | convert this to a | | ||
| | | variance. | | ||
+-------------------------+---------------------+---------------------+ | ||
| vloc_pres_hPa | -1.0 | The vertical | | ||
| | | location of this | | ||
| | | observation (hPa). | | ||
| | | A negative means | | ||
| | | there is no | | ||
| | | vertical location | | ||
| | | (which is typical | | ||
| | | for a | | ||
| | | ve | | ||
| | | rtically-integrated | | ||
| | | quantity). | | ||
+-------------------------+---------------------+---------------------+ | ||
Top of the atmosphere radiance observations are sensitive to the | ||
atmospheric constituents (e.g. water vapor) that reside in the vertical | ||
profile of the atmosphere. Given this is an integrated quantity and does | ||
not depend on a single vertical location, it may be appropriate to leave | ||
the vertical location undefined (i.e. VERTISUNDEF) within the ``obs_seq.out`` | ||
file. This approach, however, limits the application of vertical localization | ||
during the assimilation step. | ||
|
||
Alternatively, for some applications it may be appropriate to assign | ||
a vertical location to the radiance observation. This is an ongoing area | ||
of observation-space localization research, and is the standard | ||
workaround pioneered by Lili Lei and Jeff Whittaker. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this section "Specifying a vertical location" talking about the namelist option I think it would be better to explain the vertical choice in terms of the namelist option for the GEOS converter. |
||
|
||
Radiance versus Brightness Temperature | ||
-------------------------------------- | ||
|
||
This converter assigns the observation type as ``GOES[16-19]_ABI_RADIANCE``. | ||
The default setup in DART is that this radiance observation type is assigned | ||
the quantity ``QTY_RADIANCE``. Radiance observations are commonly expressed | ||
in spectrally resolved units (mW/cm/m^2/sr). | ||
|
||
Alternatively, radiances can also be expressed as brightness temperatures | ||
(units: Kelvin) and the DART code also supports observation quantities of | ||
``QTY_BRIGHTNESS_TEMPERATURE``. Both the spectral and temperature units | ||
quantify the same physical properties of the atmosphere | ||
(emitted and reflected radiation), however, in some applications it may | ||
be advantageous to use brightness temperatures given their Gaussian | ||
distribution. This is an ongoing area of research. | ||
|
||
|
||
An overview of the namelist options | ||
----------------------------------- | ||
|
||
A description of the most important namelist options. Note that supplying | ||
an observation error value is mandatory. This is not the full list of namelist | ||
variables. | ||
|
||
+-------------------------+------------+-----------------------------+ | ||
| Variable | Default | Description | | ||
+=========================+============+=============================+ | ||
| x_thin | 0 | Skip this many observations | | ||
| | | per X scan | | ||
+-------------------------+------------+-----------------------------+ | ||
| y_thin | 0 | Skip this many observations | | ||
| | | per Y scan | | ||
+-------------------------+------------+-----------------------------+ | ||
| goes_num | 16 | GOES Satellite number | | ||
+-------------------------+------------+-----------------------------+ | ||
| reject_dqf_1 | .true. | Bad scan rejection critera. | | ||
| | | If .true. and DQF /= 0, the | | ||
| | | scan is rejected. If | | ||
| | | .false. any DQF > 1 | | ||
| | | rejects the scan. | | ||
+-------------------------+------------+-----------------------------+ | ||
| verbose | .false. | Run-time output verbosity | | ||
+-------------------------+------------+-----------------------------+ | ||
| obs_err | MISSING_R8 | The observation error | | ||
| | | standard deviation in units | | ||
| | | of radiance. IMPORTANT: | | ||
| | | the user must supply a | | ||
| | | value other than MISSING_R8.| | ||
| | | Be aware that the | | ||
| | | observation sequence files | | ||
| | | convert this to a variance. | | ||
+-------------------------+------------+-----------------------------+ | ||
| vloc_pres_hPa | -1.0 | If a positive value, the | | ||
| | | vertical location of the | | ||
| | | observation (hPa) is | | ||
| | | assigned with a vertical | | ||
| | | coordinate of | | ||
| | | VERTISPRESSURE. If negative | | ||
| | | value there is no vertical | | ||
| | | location and the coordinate | | ||
| | | is VERTISUNDEFINED. | | ||
+-------------------------+------------+-----------------------------+ | ||
|
||
Radiance metadata supplied to obs_seq.out file | ||
---------------------------------------------- | ||
|
||
This converter is designed to supply metadata to the radiative transfer | ||
model (RTTOV) :doc:`../../../observations/forward_operators/obs_def_rttov_mod` | ||
that supports the calculation of the expected radiance | ||
observation during the assimilation step. Below is a description | ||
of this metadata information. | ||
|
||
The integer values that describe the platform/satellite/sensor/channel | ||
combination for the GOES satellite are required by the RTTOV radiance | ||
model to assign the appropriate coefficent file during the radiance | ||
calculation. For more details refer to the | ||
`RTTOV user guide. <https://www.nwpsaf.eu/site/software/rttov/documentation/>`__ | ||
|
||
|
||
+-------------------------+------------+-----------------------------+ | ||
| Variable | Value | Description | | ||
+=========================+============+=============================+ | ||
| sat az/el | Supplied | GOES satellite azimuth and | | ||
| | by data | elevation angle | | ||
| | file | | | ||
+-------------------------+------------+-----------------------------+ | ||
| sun az/el | -888888 | Sun azimuth and elevation | | ||
| | | angle. The default is for | | ||
| | | missing values. For IR | | ||
| | | channels reflected solar | | ||
| | | has no impact. For NIR/ | | ||
| | | VIS/UV providing sun az/el | | ||
| | | may be desirable but not | | ||
| | | required by RTTOV. | | ||
+-------------------------+------------+-----------------------------+ | ||
| platform | 4 | Platform number supplied | | ||
| | | by converter code. | | ||
+-------------------------+------------+-----------------------------+ | ||
| sat_id | 16 | Satellite ID number | | ||
| | | supplied by converter code. | | ||
+-------------------------+------------+-----------------------------+ | ||
| instrument | 44 | Sensor number supplied by | | ||
| | | converter code | | ||
+-------------------------+------------+-----------------------------+ | ||
| channel | Supplied | The wavelength channel | | ||
| | by data | (1-16) assigned from band_id| | ||
| | file | variable in data file. | | ||
+-------------------------+------------+-----------------------------+ | ||
|
||
|
||
|
||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -462,8 +462,9 @@ subroutine make_obs_sequence (seq, map, lon1, lon2, lat1, lat2, & | |
specularity = MISSING_R8 | ||
end if | ||
|
||
! the RTTOV ABI coefficients start from channel 7 | ||
goes_channel = map%channel-6 | ||
! Defines the GOES ABI wavelength channels (band_id) | ||
! Channels range from 1-16 covering UV/VIS/NIR/IR spectrum | ||
goes_channel = map%channel | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. note in release notes, this will affect people using subsetted rttov files. |
||
|
||
! add additional metadata for this obs type. returns key to use in create call | ||
call set_visir_metadata(key, sat_az, sat_ze, sun_az, sun_ze, platform_id, sat_id, sensor_id, & | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like two observations copies in this example. Do you want two copies? I think for an obs_seq.out it would normally be obs & qc:
288.456378689407
0.000000000000000E+000