Dear Geng Xiaowen,
When you say “weighting function”, do you mean derivative of transmittance with respect to vertical coordinate (e.g. pressure), or do you mean Jacobian (i.e. derivative of top-of-atmosphere radiance with respect to input profile variables)?
Jacobians are calculated by the RTTOV K model. The RTTOV v11.3 user guide describes this in section 7.9, and there is example code in src/test/example_k.F90. You can run the executable from the rttov_test/ directory using run_example_k.sh in the same way as the example_fwd.F90 forward model example is run using run_example_fwd.sh (see section 5.3 in the user guide).
If you mean weighting function in the first sense given above, then there are different ways of calculating weighting functions. One common way is: d(transmittance) / d(-log(p))
So you can compute this directly from the RTTOV transmittance output for the channel corresponding to chanprof index i as follows:
prof = chanprof(i)%prof
weighting_fn(1:nlayers) = &
(transmission%tau_levels(2:nlevels,i) – transmission%tau_levels(1:nlevels-1,i)) / &
(LOG(profiles(prof)%p(1:nlevels-1)) – LOG(profiles(prof)%p(2:nlevels)))
I hope this helps, but please get in touch if it doesn’t answer your question.
Best wishes,
James