UFO
|
Fortran module to perform newton steepest descent minimization. More...
Functions/Subroutines | |
subroutine, public | ufo_rttovonedvarcheck_minimize_newton (self, ob, r_matrix, b_matrix, b_inv, b_sigma, local_geovals, hofxdiags, rttov_simobs, profile_index, onedvar_success) |
Get the jacobian used in the 1D-Var. More... | |
subroutine | ufo_rttovonedvarcheck_newtonfewchans (DeltaBT, nChans, H_Matrix, H_Matrix_T, nprofelements, DeltaProfile, B_matrix, r_matrix, Status) |
Update the profile if newber of channels is less than number of elements in the profile. More... | |
subroutine | ufo_rttovonedvarcheck_newtonmanychans (DeltaBT, nChans, H_Matrix, H_Matrix_T, nprofelements, DeltaProfile, B_inverse, r_matrix, Status) |
Update the profile if number of channels is more than number of elements in the profile. More... | |
Fortran module to perform newton steepest descent minimization.
subroutine, public ufo_rttovonedvarcheck_minimize_newton_mod::ufo_rttovonedvarcheck_minimize_newton | ( | 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 | ||
) |
Get the jacobian used in the 1D-Var.
Heritage: Ops_SatRad_MinimizeNewton_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
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 | Main 1D-Var object |
[in,out] | ob | satellite metadata |
[in] | r_matrix | observation error covariance |
[in] | b_matrix | state error covariance |
[in] | b_inv | inverse of the 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] | profile_index | index array for x vector |
[out] | onedvar_success | convergence flag |
Definition at line 80 of file ufo_rttovonedvarcheck_minimize_newton_mod.f90.
|
private |
Update the profile if newber of channels is less than number of elements in the profile.
Heritage: Ops_SatRad_NewtonFewChans.f90
Updates the profile vector DeltaProfile according to Rodgers (1976), Eqn. 101:
x_(n+1) = xb + B.Hn'.Q
Q = U^-1.V
where:
x is an atmospheric state vector, subscripted b=background,n=nth iteration
U = (Hn.B.Hn'+R)
V = (ym-y(xn) - H.(xb-xn))
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
Q = U^-1.V is solved by Cholesky decomposition.
This routine should be used when:
Note on input/output variable DeltaProfile:
On input, DeltaProfile is x(n-1)-xb.
in construction of variable v, the sign is reversed:
V = (ym-y(xn) + H.(xn-xb)) – see equation in description above.
On output, DeltaProfile is xn-xb and should be ADDED to the background profile
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] | deltabt | y-y(x) |
[in] | nchans | number of channels |
[in] | h_matrix | Jacobian |
[in] | h_matrix_t | (Jacobian)^T |
[in] | nprofelements | number of elements in x profile |
[in,out] | deltaprofile | x-xb |
[in] | b_matrix | state error covariance |
[in] | r_matrix | observation error covariance |
[out] | status | check if Cholesky decomposition fails |
Definition at line 509 of file ufo_rttovonedvarcheck_minimize_newton_mod.f90.
|
private |
Update the profile if number of channels is more than number of elements in the profile.
Heritage: Ops_SatRad_NewtonManyChans.f90
Updates the profile vector Delta_Profile according to Rodgers (1976), Eqn. 100, extended to allow for additional cost function terms.
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] | deltabt | y-y(x) |
[in] | nchans | number of channels |
[in] | h_matrix | Jacobian |
[in] | h_matrix_t | (Jacobian)^T |
[in] | nprofelements | number of elements in profile vector |
[in,out] | deltaprofile | x-xb |
[in] | b_inverse | inverse state error covariance |
[in] | r_matrix | observation error covariance |
[out] | status | check if Cholesky decomposition fails |
Definition at line 624 of file ufo_rttovonedvarcheck_minimize_newton_mod.f90.