Opened 6 years ago

Closed 3 years ago

#543 closed task (fixed)

Implemented forward-modelling to Tdry [1 d]

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

Description

Change history (13)

comment:1 by Ian Culverwell, 6 years ago

Component: ROPP(all)ropp_fm

comment:2 by Ian Culverwell, 5 years ago

There are no TL or AD versions of this routine, so not implementing (yet). Leave ticket open.

comment:3 by Ian Culverwell, 5 years ago

Spoke to Sean about this. We can probably incorporate this, because it just involves the generation of a diagnostic from the forward-modelled refractivity. It doesn't affect the state vector, and no-one is going to try to retrieve dry temperatures with this code. (We hope. If they did, they would have to extend the state vector.) But as a general rule, we should insist that all changes to the forward model MUST be accompanied by corresponding changes to the TL and AD codes. At least, until we have an ROPP_simulation module to go alongside the existing effective ROPP_assimilation module.

comment:4 by Ian Culverwell, 5 years ago

Builds OK, although we need to include bugfix in #546 otherwise we get a crash when running on multifiles. This is apparent from the automatic make tests, and if DMI ran these they would have seen that the fix was needed at the outset.

comment:5 by Ian Culverwell, 5 years ago

But even then we still get a lot of errors like

unix:> test_fm_iono.sh
 
Running t_fm_iono_1 (FM iono; L_neutral) ...

----------------------------------------------------------------------
                     ROPP FM File Comparison Tool
----------------------------------------------------------------------

INFO (from ropp_fm_compare):  Comparing bgr20090401_000329_M02_2030337800_N0007_YYYY_neut.nc and ../data/bgr20090401_000329_M02_2030337800_N0007_YYYY_iono_ref.nc:
   the results of running test t_fm_iono_1 (FM iono; L_neutral)
 
ERROR (from ropp_io_fields_compare):  Profile 1 Lev2a%dry_temp values ARE significantly different: |diff| =                 9.99993E+07 >  1.00000E-06
 
ERROR (from ropp_io_fields_compare):  Profile 1 Lev2a%dry_temp_qual values ARE significantly different: |diff| =            9.99991E+07 >  1.00000E-06
INFO (from ropp_fm_compare):  Differences occurred in profile 1
INFO (from ropp_fm_compare):  2 elements of bgr20090401_000329_M02_2030337800_N0007_YYYY_neut.nc and ../data/bgr20090401_000329_M02_2030337800_N0007_YYYY_iono_ref.nc differ significantly
****************************
********** *FAIL* **********
****************************
... examine t_fm_iono_1.log for details

because the generated Tdry and Tdry_qual clash with the missing values in the reference files. So they need updating - something else DMI didn't do.

comment:6 by Ian Culverwell, 5 years ago

The final results are therefore:

************************** SUMMARY OF ROPP_FM TEST RESULTS ***************************
--------------------------------------------------------------------------------------
|                   Test name    |              Description       |    Run? |  PASS? |
--------------------------------------------------------------------------------------
|                     t_fascod_1 |                   FM FASCOD 1D |     Run |  PASS  |
|                  t_fascod_tl_1 |                FM_TL FASCOD 1D |     Run |  PASS  |
|                  t_fascod_ad_1 |                FM_AD FASCOD 1D |     Run |  PASS  |
|                     t_fascod_2 |             FM FASCOD 1D -comp |     Run |  PASS  |
|                  t_fascod_tl_2 |          FM_TL FASCOD 1D -comp |     Run |  PASS  |
|                  t_fascod_ad_2 |          FM_AD FASCOD 1D -comp |     Run |  PASS  |
|                     t_fascod_3 |           FM FASCOD 1D -new_op |     Run |  PASS  |
|                  t_fascod_tl_3 |        FM_TL FASCOD 1D -new_op |     Run |  PASS  |
|                  t_fascod_ad_3 |        FM_AD FASCOD 1D -new_op |     Run |  PASS  |
|                     t_fascod_4 |     FM FASCOD 1D -comp -new_op |     Run |  PASS  |
|                  t_fascod_tl_4 |  FM_TL FASCOD 1D -comp -new_op |     Run |  PASS  |
|                  t_fascod_ad_4 |  FM_AD FASCOD 1D -comp -new_op |     Run |  PASS  |
|                     t_twodop_1 |                        FM TWOD |     Run |  PASS  |
|                     t_twodtl_1 |                     FM_TL TWOD |     Run |  PASS  |
|                     t_twodad_1 |                     FM_AD TWOD |     Run |  PASS  |
|                     t_twodop_2 |                  FM TWOD -comp |     Run |  PASS  |
|                     t_twodtl_2 |               FM_TL TWOD -comp |     Run |  PASS  |
|                     t_twodad_2 |               FM_AD TWOD -comp |     Run |  PASS  |
|                       t_iono_1 |                   FM L1 and L2 |     Run |  PASS  |
|                    t_iono_tl_1 |                FM_TL L1 and L2 |     Run |  PASS  |
|                    t_iono_ad_1 |                FM_AD L1 and L2 |     Run |  PASS  |
|                      t_fm_1D_1 |         FM 1D; default options |     Run | *FAIL* |
|                      t_fm_1D_2 |        FM 1D; compress factors |     Run | *FAIL* |
|                      t_fm_2D_1 |         FM 2D; default options |     Run |  PASS  |
|                      t_fm_2D_2 |        FM 2D; compress factors |     Run |  PASS  |
|                    t_fm_iono_1 |             FM iono; L_neutral |     Run | *FAIL* |
|                    t_fm_iono_2 |             FM iono; L1 and L2 |     Run | *FAIL* |
--------------------------------------------------------------------------------------

comment:7 by Ian Culverwell, 5 years ago

Change, including the updating of the reference files, committed at r5951.

comment:8 by Ian Culverwell, 5 years ago

No impact on ropp_1dvar, because this change only affects the FM executable, not the underlying routines. It adds two of those, ropp_fm_tdry.f90 and ropp_fm_tdry_1d.f90, but these are only called from ropp_fm_bg2ro_1d, and this executable is not called by the 1dvar routines.

comment:9 by Ian Culverwell, 5 years ago

Note that the ROPP FM user guide will need updating by DMI before it can be included in the official release.

comment:10 by Ian Culverwell, 5 years ago

FUNCTION GravityGC in ropp_fm_tdry.f90 apparently uses the 'Invert' formulas for g_surf and R_eff (see RSR 14). ROPP uses Somigliana's formulas for both. We therefore need a reference for the former - and an explanation for the choice, given DMI's general desire for unification and rationalisation of ROPP code. (Note, however, that RSR 14 shows that the fractional difference between the two surface gravity expressions is less than 3e-7, and that between the two expressions for effective radius is less than 3e-5, so in practice the difference should not matter.)

(The 'Invert' formulas in FUNCTION GravityGC also appear the be calculated for geocentric latitudes. Is this correct? Most geodesy expressions use the geodetic latitude.)

comment:11 by Ian Culverwell, 5 years ago

In connection with the point about consistency: the sister program ropp_fm_tdry_1d.f90 uses the ROPP function gravity for surface gravity:

  gtop   = gravity(y%lat, alt_x(x%n_lev))   ! + Hgeoid ?
  Hscale = (kap1*x%pres(x%n_lev)*R_dry)/(gtop*refrac(x%n_lev))
  CALL ropp_fm_tdry(y%lat, alt_x, refrac, qdum_x, tdry_x, pdry_x, Zscale=Hscale)   ! , Zstep=100.0d0)

comment:12 by Ian Culverwell, 4 years ago

The FM user guide was updated with these changes at r6087.

Fig 4.2 was updated to include calculation of Tdry at r6396.

comment:13 by Ian Culverwell, 3 years ago

Resolution: fixed
Status: newclosed
Version: 9.011.0

This is done well enough. Closing ticket.

Note: See TracTickets for help on using tickets.