RTTOV performances for MTG-FCI : list of questions

  • This topic has 3 replies, 2 voices, and was last updated 8 years ago by Anonymous.
Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #4991
    Anonymous
    Inactive

    Hi,

    My goal is to obtain some performances for RTTOV, for MTG-FCI.

    – My first question is : If I just want to compute the variable tausun_total_path2 and tausun_levels_path2 for VIS/NIR + 3.8 IR channels, I have to use the routine rttov_direct ? Or I can use an other routine ?
    – For these variables, I use the coefficient rttov9pred54L/rtcoef_mtg_1_fci.dat. If I create new coefficient with only the selected channels ( 8 VIS/NIR + 3.8 IR channels), I will obtain better execution times ?

    For my test, I use forecast database from ECMWF with 721*721 profiles (resolution 0.25°X0.25°), one full disk. The computation times given after was made over these profiles.

    I modified the rttov example code in fortran for this exercice. I used the fortran routine “cpu_time” to calculate the execution times for this routine (before and after call rttov_direct)

    Second question: direct RTTOV model computation :

    – I separate IR and NIR/VIS channels in 2 fortran codes (IR with coef rttov7pred54L/rtcoef_mtg_1_fci.dat, with radiance2 and coef rttov9pred54L/rtcoef_mtg_1_fci.dat for NIR/VIS without radiance2)
    I obtain theses times : IR : 94 s and NIR/VIS 108 s with sun SZA = 0° and NIS/VIS = 33s (SZA = 180° -> night)
    For VIS/NIR, I use solar radiation with suna, not for IR computation

    – Now, I don’t separate IR and NIR/VIS channels (coef rttov9pred54L/rtcoef_mtg_1_fci.dat with radiance2), I compute all channels, I obtain : 197 s (SZA = 0°) and 123 s (SZA=180°), so approxymatly the same time if I do the addition (for example : 94 + 108 = 202 s). This is normal ?

    – If the SZA = 180° (night), RTTOV computes radiations for VIS channels ? only transmission ?

    Third Question: direct model + K model : question about interpolation : !!!! Only 7 IR channels !!! (no solar radiation)
    The ECMWF profils are given with 137 pressure levels. I used the internal RTTOV interpolation and I obtain these times :
    The times are in term of second
    rttov9pred54L rttov7pred54L rttov7pred54L
    RTTOV interpolation option .TRUE. .TRUE. .FALSE.***
    CPU : call routine rttov_direct 99.3 97,3 32,5
    CPU : call routine rttov_k 325.3 291,6 155

    (*** : For this case, I did myself the interpolation from 137 pressure levels to 54 RTTOV levels for the inputs profiles, not for the outputs profiles and I checked if the inputs values are in Min/Max RTTOV values)

    The difference times between direct and k model are good for you ?

    Thank you for your answer,

    regards

    #4992
    Anonymous
    Inactive

    My last table of results is not clear…

    1- With coef : rttov9pred54L and RTTOV interpolation option .TRUE.
    number of pressure levels for inputs : 137
    rttov_direct -> 99.3 s
    rttov_k -> 325.3 s

    2- With coef : rttov7pred54L and RTTOV interpolation option .TRUE.
    number of pressure levels for inputs : 137
    rttov_direct -> 97.3 s
    rttov_k -> 291,6 s

    2- With coef : rttov7pred54L and RTTOV interpolation option .FALSE.
    number of pressure levels for inputs : 54***
    rttov_direct -> 32,5 s
    rttov_k -> 155 s

    #4995
    James HockingJames Hocking
    Keymaster

    Hi,

    1. You need to call rttov_direct to obtain the transmittances: there is no way of calling RTTOV to only obtain the transmittances.

    I would not expect to see improved execution times if you create a coefficient file with a subset of channels. This capability is most useful for hyperspectral instruments when only a subset of hundreds or thousands of channels are required.

    2. I ran a similar set of tests to your description and my timing results were generally comparable to what you found. I would usually expect RTTOV to be slightly faster when simulating all channels together rather than doing the solar-affected channels and IR channels separately.

    If you run a simulation with solar-affected channels, but the solar zenith angle is larger than 85.3 degrees then no computations will be done for the solar channels and all outputs (transmittances and radiances) for these channels will be zero. The reason for this is that RTTOV calculates the transmittances for the solar source term using the combined sun-surface-satellite local path length which depends on the solar zenith angle. This gives more accurate simulations, but it means a valid solar zenith angle in the range 0 – 85.3 degrees is a mandatory input.

    In the case where you ran just the VIS/NIR channels only with a solar zenith angle of 180 degrees you were really asking RTTOV not to simulate anything at all (no thermal source term, no solar source term). There is a non-negligible run-time because RTTOV does not check whether *no* simulations have been requested at all so some computations are done on the input profiles (e.g. checking them for invalid input, profile interpolation, geometry calculations). However for this case no calculations which are specific to a particular channel are performed.

    3. I ran a test similar to yours for the v7/v9 predictor coefficients with/without the interpolator and I got comparable results for the execution time for the different cases with the direct and K models so your measurements look reasonable.

    If you are running RTTOV single-threaded you may find slightly improved performance if you supply the “traj” argument to rttov_direct (and traj, traj_k to rttov_k; see section 7.7 of the RTTOV v11.3 user guide). This can be beneficial if you are calling RTTOV many times because it does some memory allocations outside of RTTOV rather than doing them inside RTTOV for every call. The impact of this depends on the computer architecture and compiler so you would need to try it to see if it helps.

    Alternatively you can take advantage of multi-threaded calls by compiling RTTOV with OpenMP and calling the rttov_parallel_direct (and _k) subroutines (see section 7.10 in the user guide). Note that the traj argument is not compatible with the parallel interface.

    Best wishes,
    James

    #4998
    Anonymous
    Inactive

    Thank you very much for your answers !!!

    Nicolas.

Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.