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
https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/build/Makefile.am https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/common/ropp_fm.f90 https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/refrac_1d/Makefile.am https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/refrac_1d/ropp_fm_tdry.f90 https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/refrac_1d/ropp_fm_tdry_1d.f90 https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/tools/ropp_fm_bg2ro_1d.f90
Original changesets:
Implemented forward-modelling to Tdry: https://trac.romsaf.org/ropp/changeset/4652
Change history (13)
comment:1 by , 6 years ago
Component: | ROPP(all) → ropp_fm |
---|
comment:2 by , 5 years ago
comment:3 by , 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 , 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 , 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 , 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 , 5 years ago
Change, including the updating of the reference files, committed at r5951.
comment:8 by , 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 , 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 , 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 , 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 , 4 years ago
comment:13 by , 3 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Version: | 9.0 → 11.0 |
This is done well enough. Closing ticket.
There are no TL or AD versions of this routine, so not implementing (yet). Leave ticket open.