Opened 6 years ago

Closed 3 years ago

Last modified 3 years ago

#644 closed task (fixed)

Get now also platform reference coordinates when running occ_point [1 d]

Reported by: Ian Culverwell Owned by: Ian Culverwell
Priority: normal Milestone: ROPP9.1 carry over
Component: aftermath Version: 11.0
Keywords: Cc:

Description

Get now also platform reference coordinates when running occ_point: https://trac.romsaf.org/ropp/changeset/5432/ropp_src/branches/dev/Share/dmi_trunk_9.0

Get now also platform reference coordinates when running occ_point. Remove use of occ_point in ropp_pp_preprocess_grasrs.f90 for two reasons: 1) velocities there are in ECF - we want reference velocities in ECI 2) necessary occ_point info is already in the input ro_data structure

Change history (2)

comment:1 by Ian Culverwell, 3 years ago

Resolution: fixed
Status: newclosed
Version: 9.011.0

There are two aspects to this change:

  • Updating occ_point.f90 to output ref sat posns and vels;
  • Updating the calls to it.

The occ_point code has been updated at r6852. The ROPP UTILS UG has been updated at r6853.

This code-calling change (note that ropp_pp_wopt_2D_tool.f90 also needed updating) caused the core tests to fail:

************************** SUMMARY OF ROPP_PP TEST RESULTS ***************************
--------------------------------------------------------------------------------------
|                   Test name    |              Description       |    Run? |  PASS? |
--------------------------------------------------------------------------------------
|                  t_pp_invert_1 |     PP invert; default options |     Run |  PASS  |
|                 t_pp_occ_inv_1 |        PP occ; 'invert' option |     Run |  PASS  |
|                     t_pp_occ_1 |        PP occ; default options |     Run | *FAIL* |
|                t_pp_occ_gnos_1 |              PP occ; GNOS data |     Run | *FAIL* |
|                      t_pp_rs_1 | PP raw sampling; default optio |     Run | *FAIL* |
|                    t_pp_abel_1 |          PP Abel/Inv; def opts |     Run |  PASS  |
|                t_pp_spectra_1a |    PP spectra; def opt (L1 dt) |     Run |  PASS  |
|                t_pp_spectra_1b |    PP spectra; def opt (L2 dt) |     Run |  PASS  |
|                t_pp_spectra_1c |    PP spectra; def opt (L1 ep) |     Run |  PASS  |
|                t_pp_spectra_1d |    PP spectra; def opt (L2 ep) |     Run |  PASS  |
|                    t_pp_wopt_1 |      PP 1D WOPT; quick options |     Run | *FAIL* |
|                 t_pp_wopt_2d_1 |      PP 2D WOPT; quick options |     Run | *FAIL* |
--------------------------------------------------------------------------------------

This is not surprising, because we have changed (e.g. for the first 5 times of the 2D wopt test)

    r_gns_ref = 
    -9.9999e+07, -9.9999e+07, -9.9999e+07 ;

    r_leo_ref = 
    -9.9999e+07, -9.9999e+07, -9.9999e+07 ;

    v_gns = 
    -99999000, -99999000, -99999000, -99999000, -99999000, 
    -99999000, -99999000, -99999000, -99999000, -99999000, 
    -99999000, -99999000, -99999000, -99999000, -99999000 ;

    v_gns_ref = 
    -9.9999e+07, -9.9999e+07, -9.9999e+07 ;

    v_leo = 
    -99999000, -99999000, -99999000, -99999000, -99999000, 
    -99999000, -99999000, -99999000, -99999000, -99999000, 
    -99999000, -99999000, -99999000, -99999000, -99999000 ;

    v_leo_ref = 
    -9.9999e+07, -9.9999e+07, -9.9999e+07 ;

to

    r_gns_ref = 
    6458137, -2.578158e+07, 0 ;

    r_leo_ref = 
    6367918, 3312894, 0 ;

    v_gns = 
    0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0 ;

    v_gns_ref = 
    0, 0, 0 ;

    v_leo = 
    -3230.23474820294, -3230.57792015161, -3230.92108351687, -3231.2642382978, -3231.60738449349, 
    6657.74612549189, 6657.57961287951, 6657.41308257841, 6657.24653458904, 6657.07996891183, 
    0, 0, 0, 0, 0 ;

    v_leo_ref = 
    -3415.29, 6564.739, 0 ;

(Note that he similarities of the reference POD values of pos and vel are close to the timeseries values, which shows that occ_point is doing the right thing.)

Only the grasRS test shows differences in other fields:

    azimuth = 350.2512 ;

    lat = -79.48388 ;

    lon = -12.17495 ;

    time_offset = 26.19351 ;

changes to

    azimuth = 350.2515 ;

    lat = -79.48389 ;

    lon = -12.17523 ;

    time_offset = 26.197 ;

and there are ~1e-6 change in bangle, 1e-6 in refrac, 1e-5 in tdry and 1e-4 in impact, etc. I guess this is as expected.

Code-calling changes committed at r6854.

ROPP-11 PP UG changes made at r6855.

Closing ticket.

comment:2 by Ian Culverwell, 3 years ago

As an aside, I checked the coordinate transformation after the call to occ_point in ropp_pp_occ_tool.f90:

        CALL occ_point( ro_data%lev1a%dtime,                             &
                        ro_data%lev1a%r_leo,  ro_data%lev1a%v_leo,       &
                        ro_data%lev1a%r_gns,  ro_data%lev1a%v_gns,       &
                        ro_data%georef%lat,   ro_data%georef%lon,        &
                        ro_data%georef%r_coc, ro_data%georef%roc,        &
                        ro_data%georef%azimuth,                          &
                        ro_data%georef%undulation,                       &
                        ro_data%georef%leo_pod%pos,                      &
                        ro_data%georef%leo_pod%vel,                      &
                        ro_data%georef%gns_pod%pos,                      &
                        ro_data%georef%gns_pod%vel,                      &
                        ro_data%georef%time_offset,                      &
                        config%egm96, config%corr_egm96)

        ! Rotate reference velocities to ECI-BUFR (ECI frame aligned to ECF)
        ro_data%georef%leo_pod%vel = eci2ecf(ro_data%dtocc%year,  ro_data%dtocc%month,  &
                                             ro_data%dtocc%day,   ro_data%dtocc%hour,   &
                                             ro_data%dtocc%minute,ro_data%dtocc%second, &
                                             ro_data%georef%time_offset +               &
                                             ro_data%dtocc%msec/1000.0_wp,              &
                                             ro_data%georef%leo_pod%vel)
        ro_data%georef%gns_pod%vel = eci2ecf(ro_data%dtocc%year,  ro_data%dtocc%month,  &
                                             ro_data%dtocc%day,   ro_data%dtocc%hour,   &
                                             ro_data%dtocc%minute,ro_data%dtocc%second, &
                                             ro_data%georef%time_offset +               &
                                             ro_data%dtocc%msec/1000.0_wp,              &
                                             ro_data%georef%gns_pod%vel)

The input file has

    v_gns = 
    -1288.82484742801, -1288.83517629421, -1288.84550514969, -1288.85583397906, -1288.8661628131, 
    2414.69485266608, 2414.69467141563, 2414.69449014458, 2414.69430885317, 2414.69412754089, 
    -2746.90900125233, -2746.90436531614, -2746.89972935637, -2746.89509337995, -2746.89045737304 ;

    v_leo = 
    -2122.93123362148, -2122.90486073667, -2122.8784869507, -2122.85211230285, -2122.82573671451, 
    -1312.48896794681, -1312.63901259307, -1312.78905665345, -1312.9390999044, -1313.08914279312, 
    6995.11622736296, 6995.09566702654, 6995.07510370152, 6995.05453741855, 6995.03396811631 ;

Without eci2ecf rotation we get

    v_gns_ref = 
    -1327.339, 2413.874, -2729.425 ;

==> |v_gns_ref| = 3877.93467446552023

    v_leo_ref = 
    -2018.216, -1868.427, 6897.544 ;

==> |v_leo_ref| = 7425.65340619402999

Similar to input.

With eci2ecf rotation we get

    v_gns_ref = 
    -2607.045, -889.9047, -2729.425 ;

==> |v_gns_ref| = 3877.93435191109082

    v_leo_ref = 
    1491.263, -2310.92, 6897.544 ;

==> |v_leo_ref| = 7425.65349403707367

Dissimilar to input.

(Note no difference in z-cmpts.)

This makes sense, as the input file says

		v_leo:reference_frame = "ECI" ;

		v_gns:reference_frame = "ECI" ;

So that's what the velocities stay if we don't rotate them to ECF (which is where we need them.)

Note: See TracTickets for help on using tickets.