UFO
|
Fortran module containing the routines to perform a Marquardt-Levenberg minimization. More...
Functions/Subroutines | |
subroutine, public | ufo_rttovonedvarcheck_minimize_ml (self, ob, r_matrix, b_matrix, b_inv, b_sigma, local_geovals, hofxdiags, rttov_simobs, profile_index, onedvar_success) |
Perform a minimization using the Marquardt-Levenberg method. More... | |
subroutine | ufo_rttovonedvarcheck_ml_rttov12 (self, DeltaBT, nChans, ob, H_Matrix, H_Matrix_T, nprofelements, profile_index, DeltaProfile, GuessProfile, BackProfile, b_inv, r_matrix, geovals, hofxdiags, rttov_simobs, gamma, Jold, Status) |
Updates the profile vector during the Marquardt-Levenberg minimization. More... | |
Fortran module containing the routines to perform a Marquardt-Levenberg minimization.
subroutine, public ufo_rttovonedvarcheck_minimize_ml_mod::ufo_rttovonedvarcheck_minimize_ml | ( | type(ufo_rttovonedvarcheck), intent(inout) | self, |
type(ufo_rttovonedvarcheck_ob), intent(inout) | ob, | ||
type(ufo_rttovonedvarcheck_rsubmatrix), intent(in) | r_matrix, | ||
real(kind_real), dimension(:,:), intent(in) | b_matrix, | ||
real(kind_real), dimension(:,:), intent(in) | b_inv, | ||
real(kind_real), dimension(:), intent(in) | b_sigma, | ||
type(ufo_geovals), intent(inout) | local_geovals, | ||
type(ufo_geovals), intent(inout) | hofxdiags, | ||
type(ufo_radiancerttov), intent(inout) | rttov_simobs, | ||
type(ufo_rttovonedvarcheck_profindex), intent(in) | profile_index, | ||
logical, intent(out) | onedvar_success | ||
) |
Perform a minimization using the Marquardt-Levenberg method.
Heritage: Ops_SatRad_MinimizeML_RTTOV12.f90
Find the most probable atmospheric state vector by minimizing a cost function through a series of iterations. if a solution exists, the iterations will converge when the iterative increments are acceptably small. A limit on the total number of iterations allowed is imposed.
Using the formulation given by Rodgers (1976) :
Delta_x = xn + (xb-xn).I' + Wn.(ym-y(xn) - H.(xb-xn))
where:
x is an atmospheric state vector, subscripted b=background,n=nth iteration
I' is a diagonal matrix with I'(J,J) = B_damped(J,J)/B_undamped(J,J) although, however, damping will no longer be used
Wn = B.Hn'.(Hn.B.Hn'+R)^-1
B is the background error covariance matrix
R is the combined forward model and ob error covariance matrix
Delta_x is checked for convergence after each iteration
The loop is exited with convergence if either of the following conditions are true, depending on whether UseJforConvergence is true or false
Either of the following two conditions will cause the 1dvar to stop and exit with an error.
References:
Rodgers, Retrieval of atmospheric temperature and composition from remote measurements of thermal radiation, Rev. Geophys.Sp.Phys. 14, 1976.
Eyre, Inversion of cloudy satellite sounding radiances by nonlinear optimal estimation. I: Theory and simulation for TOVS,QJ,July 89.
[in,out] | self | structure containing settings |
[in,out] | ob | satellite metadata |
[in] | r_matrix | observation error covariance |
[in] | b_matrix | state error covariance |
[in] | b_inv | inverse state error covariance |
[in] | b_sigma | standard deviations of the state error covariance diagonal |
[in,out] | local_geovals | model data at obs location |
[in,out] | hofxdiags | model data containing the jacobian |
[in,out] | rttov_simobs | rttov simulated obs object |
[in] | profile_index | index array for x vector |
[out] | onedvar_success | convergence flag |
Definition at line 82 of file ufo_rttovonedvarcheck_minimize_ml_mod.f90.
|
private |
Updates the profile vector during the Marquardt-Levenberg minimization.
Heritage: Ops_SatRad_MarquardtLevenberg_RTTOV12.f90
Updates the profile vector DeltaProfile according to Rodgers (1976), Eqn. 100, extended to allow for additional cost function terms and Marquardt-Levenberg descent.
x_(n+1) = xb + U^-1.V
where
U=(B^-1 + H^T R^-1 H + J2)
V=H^T R^-1 [(ym-y(x_n))+H(x_n-xb)] - J1
and
J_extra=J0+J1.(x-xb)+(x-xb)^T.J2.(x-xb) is the additional cost function
x is an atmospheric state vector, subscripted b=background,n=nth iteration
ym is the measurement vector (i.e. observed brightness temperatures)
y(xn) is the observation vector calculated for xn
ym and y(xn) are not used individually at all, hence these are input
as a difference vector DeltaBT.
B is the background error covariance matrix
R is the combined forward model and ob error covariance matrix
H is the forward model gradient (w.r.t. xn) matrix
H' is the transpose of H
When J_extra is zero this is simply Rogers (1976), Eqn. 100.
U^-1.V is solved using Cholesky decomposition.
This routine should be used when:
References:
Rodgers, Retrieval of atmospheric temperature and composition from remote measurements of thermal radiation, Rev. Geophys.Sp.Phys. 14, 1976.
Rodgers, Inverse Methods for Atmospheres: Theory and Practice. World Scientific Publishing, 2000.
[in] | self | structure containing settings |
[in] | deltabt | y-y(x) |
[in] | nchans | number of channels |
[in,out] | ob | satellite metadata |
[in] | h_matrix | Jacobian |
[in] | h_matrix_t | transpose of the Jacobian |
[in] | nprofelements | number of profile elements |
[in] | profile_index | index array for x vector |
[in,out] | deltaprofile | x_(n+1) - xb |
[in,out] | guessprofile | x_(n+1) |
[in] | backprofile | xb |
[in] | b_inv | inverse of the state error covariance |
[in] | r_matrix | observation error covariance |
[in,out] | geovals | model data at obs location |
[in,out] | hofxdiags | model data containing the jacobian |
[in,out] | gamma | steepness of descent parameter |
[in,out] | jold | previous steps cost which gets update by good step |
[out] | status | code to capture failed Cholesky decomposition |
Definition at line 452 of file ufo_rttovonedvarcheck_minimize_ml_mod.f90.