{"id":1510,"date":"2015-09-15T12:25:20","date_gmt":"2015-09-15T12:25:20","guid":{"rendered":"http:\/\/www.nwpsaf.eu\/site\/?page_id=1510"},"modified":"2024-10-24T12:17:45","modified_gmt":"2024-10-24T12:17:45","slug":"rttov-mathematical-overview","status":"publish","type":"page","link":"https:\/\/nwp-saf.eumetsat.int\/site\/software\/rttov\/documentation\/rttov-mathematical-overview\/","title":{"rendered":"RTTOV &#8211; Mathematical Overview"},"content":{"rendered":"<h2>Mathematical overview of RTTOV<\/h2>\n<p>Given a state vector, <strong>x<\/strong>, which describes the atmospheric\/surface state and a radiance vector, <strong>y<\/strong>, then for all channels required to be simulated:<\/p>\n<p align=\"center\"><strong>y<\/strong> = <em>H<\/em>(<strong>x<\/strong>)<\/p>\n<p align=\"left\">where <em>H<\/em> is the radiative transfer model, i.e. RTTOV (also referred to as the observation operator in data assimilation parlance). This is known as the &#8216;direct&#8217; or &#8216;forward&#8217; model.<\/p>\n<p>In addition RTTOV also computes the Jacobian matrix <strong>H<\/strong> which gives the change in radiance <strong>\u03b4y<\/strong> for a change in any element of the state vector <strong>\u03b4x<\/strong> assuming a linear relationship about a given atmospheric state <strong>x<sub>0<\/sub><\/strong>:<\/p>\n<p align=\"center\"><strong>\u03b4y<\/strong> = <strong>H<\/strong>(<strong>x<sub>0<\/sub><\/strong>)<strong>\u03b4x<\/strong><\/p>\n<p align=\"left\">The elements, H<sub>i,j<\/sub>, of <strong>H<\/strong> contain the partial derivatives <!--<img decoding=\"async\" src=\"https:\/\/nwp-saf.eumetsat.int\/oldsite\/deliverables\/rtm\/equation.gif\" alt=\"RTTOV - Mathematical Overview\" \/> --><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nwp-saf.eumetsat.int\/site\/wp-content\/ql-cache\/quicklatex.com-b4479268282632324801129d9475c3e1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#108;&#101;&#116;&#92;&#111;&#108;&#100;&#104;&#97;&#116;&#92;&#104;&#97;&#116; &#92;&#114;&#101;&#110;&#101;&#119;&#99;&#111;&#109;&#109;&#97;&#110;&#100;&#123;&#92;&#118;&#101;&#99;&#125;&#91;&#49;&#93;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#35;&#49;&#125;&#125; &#92;&#114;&#101;&#110;&#101;&#119;&#99;&#111;&#109;&#109;&#97;&#110;&#100;&#123;&#92;&#104;&#97;&#116;&#125;&#91;&#49;&#93;&#123;&#92;&#111;&#108;&#100;&#104;&#97;&#116;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#35;&#49;&#125;&#125;&#125; &#92;&#102;&#114;&#97;&#99;&#123;&#92;&#112;&#97;&#114;&#116;&#105;&#97;&#108;&#32;&#92;&#118;&#101;&#99;&#123;&#121;&#125;&#95;&#105;&#125;&#123;&#92;&#112;&#97;&#114;&#116;&#105;&#97;&#108;&#32;&#92;&#118;&#101;&#99;&#123;&#120;&#125;&#95;&#106;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"28\" width=\"23\" style=\"vertical-align: -10px;\"\/>where the subscript <strong>i<\/strong> refers to channel number and <strong>j<\/strong> to position in state vector. The Jacobian gives the top of atmosphere radiance change for each channel from each level in the profile given a unit perturbation at any level of the profile vectors or in any of the surface\/cloud parameters. It shows clearly, for a given profile, which levels in the atmosphere are most sensitive to changes in temperature and variable gas concentrations for each channel. RTTOV_K (and its associated subroutines ending in K) compute the <strong>H(x<sub>0<\/sub>)<\/strong> matrix for each input profile.<\/p>\n<p>It is not always necessary to store and access the full Jacobian matrix <strong>H<\/strong> and so the RTTOV package also has routines to only output the <em>tangent linear<\/em> values <strong>\u03b4y<\/strong>, i.e. the change in top of atmosphere radiances, for a given change in atmospheric profile, <strong>\u03b4x<\/strong>, about an initial atmospheric state <strong>x<sub>0<\/sub><\/strong>. The tangent linear routines all have <em>TL<\/em> as an ending. Conversely the adjoint routines (ending in <em>AD<\/em>) compute the change in the gradient of any scalar quantity with respect to the atmospheric state, <strong>x<sub>0<\/sub><\/strong>, given a change in the gradient of that quantity with respect to the radiances, <strong>y<\/strong>. These routines are normally used as part of the variational assimilation of radiances.<\/p>\n<p>For users only interested in the direct or forward model for radiance simulations the TL\/AD\/K routines are not required.<\/p>\n<h3 id=\"TLADK_coding\">Guidance on developing and testing tangent linear and adjoint code<\/h3>\n<p>Tom Kleespies created some slides giving advice on writing tangent linear and adjoint code. This may be of use to some users of RTTOV:<br \/>\n<a href=\"https:\/\/itwg.ssec.wisc.edu\/rtsp\/wp-content\/uploads\/sites\/7\/2023\/07\/TL_Lectures.pdf\">Tangent linear coding<\/a><br \/>\n<a href=\"https:\/\/itwg.ssec.wisc.edu\/rtsp\/wp-content\/uploads\/sites\/7\/2023\/07\/AD_Lectures.pdf\">Adjoint coding<\/a><br \/>\n<a href=\"https:\/\/itwg.ssec.wisc.edu\/rtsp\/wp-content\/uploads\/sites\/7\/2023\/07\/K_Lectures.pdf\">Jacobian (K) coding<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mathematical overview of RTTOV Given a state vector, x, which describes the atmospheric\/surface state and a radiance vector, y, then for all channels required to be simulated: y = H(x) where H is the radiative transfer model, i.e. RTTOV (also referred to as the observation operator in data assimilation parlance). This is known as the &#8216;direct&#8217; or &#8216;forward&#8217; model. In addition RTTOV also computes the Jacobian matrix H which gives the change in radiance \u03b4y for a change in any element of the state vector \u03b4x assuming a linear relationship about a given atmospheric state x0: \u03b4y = H(x0)\u03b4x The [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":42,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-1510","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nwp-saf.eumetsat.int\/site\/wp-json\/wp\/v2\/pages\/1510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nwp-saf.eumetsat.int\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nwp-saf.eumetsat.int\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nwp-saf.eumetsat.int\/site\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nwp-saf.eumetsat.int\/site\/wp-json\/wp\/v2\/comments?post=1510"}],"version-history":[{"count":0,"href":"https:\/\/nwp-saf.eumetsat.int\/site\/wp-json\/wp\/v2\/pages\/1510\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/nwp-saf.eumetsat.int\/site\/wp-json\/wp\/v2\/pages\/42"}],"wp:attachment":[{"href":"https:\/\/nwp-saf.eumetsat.int\/site\/wp-json\/wp\/v2\/media?parent=1510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}