UFO
|
Module for containing a general refractivity forward operator and its K-matrix. More...
Functions/Subroutines | |
subroutine, public | ufo_calculate_refractivity (nlevP, nlevq, za, zb, P, q, vert_interp_ops, pseudo_ops, min_temp_grad, refracerr, nRefLevels, refractivity, model_heights, temperature, interp_pressure) |
Calculation of the refractivity from the pressure and specific humidity. More... | |
subroutine, public | ufo_refractivity_kmat (nlevP, nlevq, nRefLevels, za, zb, P, q, pseudo_ops, vert_interp_ops, min_temp_grad, dref_dP, dref_dq, dPb_dP, refractivity) |
Calculate general refractivity K matrix. More... | |
subroutine | ufo_refractivity_partial_derivatives (nlevP, nlevq, za, zb, P, q, vert_interp_ops, dT_dTv, dT_dq, dref_dPb, dref_dT, dref_dq, refractivity, T, Pb, dEx_dP, dExtheta_dPb, dTv_dExtheta, dPb_dP_local, dTv_dEx) |
Calculate some partial derivatives of refractivity on model levels. More... | |
Module for containing a general refractivity forward operator and its K-matrix.
subroutine, public ufo_utils_refractivity_calculator::ufo_calculate_refractivity | ( | integer, intent(in) | nlevP, |
integer, intent(in) | nlevq, | ||
real(kind_real), dimension(nlevp), intent(in) | za, | ||
real(kind_real), dimension(nlevq), intent(in) | zb, | ||
real(kind_real), dimension(nlevp), intent(in) | P, | ||
real(kind_real), dimension(nlevq), intent(in) | q, | ||
logical, intent(in) | vert_interp_ops, | ||
logical, intent(in) | pseudo_ops, | ||
real(kind_real), intent(in) | min_temp_grad, | ||
logical, intent(out) | refracerr, | ||
integer, intent(out) | nRefLevels, | ||
real(kind_real), dimension(:), intent(out), allocatable | refractivity, | ||
real(kind_real), dimension(:), intent(out), allocatable | model_heights, | ||
real(kind_real), dimension(nlevq), intent(out), optional | temperature, | ||
real(kind_real), dimension(nlevq), intent(out), optional | interp_pressure | ||
) |
Calculation of the refractivity from the pressure and specific humidity.
ufo_calculate_refractivity
[in] | nlevp | no. of p levels in state vec. |
[in] | nlevq | no. of theta levels |
[in] | za | heights of rho levs |
[in] | zb | heights of theta levs |
[in] | p | state vector |
[in] | q | state vector |
[in] | vert_interp_ops | Use log(p) for vertical interpolation? |
[in] | pseudo_ops | Use pseudo-levels to reduce errors? |
[in] | min_temp_grad | Minimum value for the vertical temperature gradient |
[out] | refracerr | refractivity error |
[out] | nreflevels | no. of pseudo levs |
[out] | refractivity | Ref. on pseudo levs |
[out] | model_heights | height of pseudo levs |
[out] | temperature | Calculated temperature on model levels |
[out] | interp_pressure | Model pressure, interpolated to temperature levels |
Definition at line 66 of file RefractivityCalculator.F90.
subroutine, public ufo_utils_refractivity_calculator::ufo_refractivity_kmat | ( | integer, intent(in) | nlevP, |
integer, intent(in) | nlevq, | ||
integer, intent(in) | nRefLevels, | ||
real(kind_real), dimension(nlevp), intent(in) | za, | ||
real(kind_real), dimension(nlevq), intent(in) | zb, | ||
real(kind_real), dimension(nlevp), intent(in) | P, | ||
real(kind_real), dimension(nlevq), intent(in) | q, | ||
logical, intent(in) | pseudo_ops, | ||
logical, intent(in) | vert_interp_ops, | ||
real(kind_real), intent(in) | min_temp_grad, | ||
real(kind_real), dimension(:,:), intent(out), allocatable | dref_dP, | ||
real(kind_real), dimension(:,:), intent(out), allocatable | dref_dq, | ||
real(kind_real), dimension(nlevq,nlevp), intent(out), optional | dPb_dP, | ||
real(kind_real), dimension(:), intent(out), optional, allocatable | refractivity | ||
) |
Calculate general refractivity K matrix.
ufo_refractivity_kmat
[in] | nlevp | no. of pressure levels |
[in] | nlevq | no. of specific humidity levels |
[in] | nreflevels | no. of refractivity levels |
[in] | za | Height of the pressure levels |
[in] | zb | Height of the specific humidity levels |
[in] | p | Pressure |
[in] | q | Specific humidity |
[in] | pseudo_ops | Whether to use pseudo-levels in calculation |
[in] | vert_interp_ops | Whether to interpolate vertically using exner or ln(p) |
[in] | min_temp_grad | Minimum value for the vertical temperature gradient |
[out] | dref_dp | kmatrix for p |
[out] | dref_dq | kmatrix for q |
[out] | dpb_dp | Gradient of pressure on theta levels wrt pressure on pressure levels |
[out] | refractivity | Calculated refractivity |
Definition at line 300 of file RefractivityCalculator.F90.
subroutine ufo_utils_refractivity_calculator::ufo_refractivity_partial_derivatives | ( | integer, intent(in) | nlevP, |
integer, intent(in) | nlevq, | ||
real(kind_real), dimension(nlevp), intent(in) | za, | ||
real(kind_real), dimension(nlevq), intent(in) | zb, | ||
real(kind_real), dimension(nlevp), intent(in) | P, | ||
real(kind_real), dimension(nlevq), intent(in) | q, | ||
logical, intent(in) | vert_interp_ops, | ||
real(kind_real), dimension(nlevq,nlevq), intent(out) | dT_dTv, | ||
real(kind_real), dimension(nlevq,nlevq), intent(out) | dT_dq, | ||
real(kind_real), dimension(nlevq,nlevq), intent(out) | dref_dPb, | ||
real(kind_real), dimension(nlevq,nlevq), intent(out) | dref_dT, | ||
real(kind_real), dimension(nlevq,nlevq), intent(out) | dref_dq, | ||
real(kind_real), dimension(nlevq), intent(out) | refractivity, | ||
real(kind_real), dimension(nlevq), intent(out) | T, | ||
real(kind_real), dimension(nlevq), intent(out) | Pb, | ||
real(kind_real), dimension(nlevp,nlevp), intent(out) | dEx_dP, | ||
real(kind_real), dimension(nlevq,nlevq), intent(out) | dExtheta_dPb, | ||
real(kind_real), dimension(nlevq,nlevq), intent(out) | dTv_dExtheta, | ||
real(kind_real), dimension(nlevq,nlevp), intent(out) | dPb_dP_local, | ||
real(kind_real), dimension(nlevq,nlevp), intent(out) | dTv_dEx | ||
) |
Calculate some partial derivatives of refractivity on model levels.
ufo_refractivity_partial_derivatives
[in] | nlevp | no. of pressure levels |
[in] | nlevq | no. of specific humidity levels |
[in] | za | Height of the pressure levels |
[in] | zb | Height of the specific humidity levels |
[in] | p | Pressure |
[in] | q | Specific humidity |
[in] | vert_interp_ops | Whether to interpolate vertically using exner or ln(p) |
[out] | dt_dtv | Partial derivative of temperature wrt virtual temperature |
[out] | dt_dq | Partial derivative of temperature wrt specific humidity |
[out] | dref_dpb | Partial derivative of refractivity wrt pressure on model theta levels |
[out] | dref_dt | Partial derivative of refractivity wrt temperature |
[out] | dref_dq | Partial derivative of refractivity wrt specific humidity |
[out] | refractivity | Calculated refractivity |
[out] | t | Calculated temperature |
[out] | pb | Pressure on model theta levels |
[out] | dex_dp | Partial derivative of exner wrt pressure |
[out] | dextheta_dpb | Partial derivative of refractivity wrt pressure (at ob location) |
[out] | dtv_dextheta | Virtual temperature divided by exner on theta levels |
[out] | dpb_dp_local | Partial derivative of pressure on theta levels wrt pressure on pressure levels |
[out] | dtv_dex | Partial derivative of virtual temperature wrt exner |
Definition at line 650 of file RefractivityCalculator.F90.