Opened 11 years ago

Closed 8 years ago

#314 closed enhancement (fixed)

Make 247L default output grid in ropp_fm_bg2ro_1d

Reported by: Ian Culverwell Owned by: Ian Culverwell
Priority: normal Milestone: 9.0
Component: ropp_fm Version: 8.0
Keywords: Cc:

Description

If the input file to ropp_fm_bg2ro_1d contains no lev2a or lev1b data, the code generates a uniform 300L (0 to 60km) output grid.

AvE@EUM would like the "standard" 247L to be the default in such cases.

Attachments (9)

WOP_Study_Cases.nc (260.8 KB ) - added by Ian Culverwell 10 years ago.
WOP_Study_Cases.nc
ropp_fm_bg2ro_1d.f90 (31.3 KB ) - added by Ian Culverwell 10 years ago.
ropp_fm_bg2ro_1d.f90
ropp_fm_bg2ro_1d.f90_14042015 (34.4 KB ) - added by Ian Culverwell 10 years ago.
ropp_fm_bg2ro_1d.f90_14042015
ropp_fm_bg2ro_1d.f90.22052015 (35.2 KB ) - added by Ian Culverwell 10 years ago.
ropp_fm_bg2ro_1d.f90.22052015
bgr20120611-15_iono2_prof671.nc (21.0 KB ) - added by Ian Culverwell 9 years ago.
bgr20120611-15_iono2_prof671.nc
bgr20120611-15_iono2_prof671_fm.nc (66.8 KB ) - added by Ian Culverwell 9 years ago.
bgr20120611-15_iono2_prof671_fm.nc
ropp_fm_bg2ro_1d.f90.16062015 (35.3 KB ) - added by Ian Culverwell 9 years ago.
ropp_fm_bg2ro_1d.f90.16062015
ropp_fm_bg2ro_1d.f90.14072015 (35.7 KB ) - added by Ian Culverwell 9 years ago.
ropp_fm_bg2ro_1d.f90.14072015
FM_levs.pdf (72.5 KB ) - added by Ian Culverwell 9 years ago.
FM_levs.pdf

Download all attachments as: .zip

Change history (27)

comment:1 by Ian Culverwell, 11 years ago

Milestone: 7.08.0

Note that the standard 247 levels are impact heights = impact params - RoC. Currently, ropp_fm_bg2ro_1d invents 300L geops (for lev2a) and converts to IPs. We'd need to do the opposite: read in 247 impact heights; add RoC to get IPs for lev1b. This is easy, but generating geom hts/geops from this (for lev2a refracs) is not possible without knowing N, which we don't yet. Need to think about this.

comment:2 by Ian Culverwell, 10 years ago

A bit of jiggery-pokery to establish this has been included at r4215.

Typically get convergence to within 1 mm using 12 < iter < 24.

bgr20090401_000329_M02_2030337800_N0007_XXXX.nc takes the longest, and generates:

dim_unlim[0] dim_lev2a[0] geop_refrac[0]=-295.758 
dim_unlim[0] dim_lev2a[1] geop_refrac[1]=-23.2642 
dim_unlim[0] dim_lev2a[2] geop_refrac[2]=155.355 
dim_unlim[0] dim_lev2a[3] geop_refrac[3]=304.471 
dim_unlim[0] dim_lev2a[4] geop_refrac[4]=461.021 

dim_unlim[0] dim_lev2a[0] refrac[0]=374.389778895 
dim_unlim[0] dim_lev2a[1] refrac[1]=349.959192321 
dim_unlim[0] dim_lev2a[2] refrac[2]=340.406511553 
dim_unlim[0] dim_lev2a[3] refrac[3]=335.73442538 
dim_unlim[0] dim_lev2a[4] refrac[4]=329.889329043 

But the first two points are below the ellipsoid, so they don't generate bangles:

dim_unlim[0] dim_lev1b[0] bangle[0]=-99999000 
dim_unlim[0] dim_lev1b[1] bangle[1]=-99999000 
dim_unlim[0] dim_lev1b[2] bangle[2]=0.0282254769632 
dim_unlim[0] dim_lev1b[3] bangle[3]=0.0288559659811 
dim_unlim[0] dim_lev1b[4] bangle[4]=0.029973177802 

dim_unlim[0] dim_lev1b[0] impact[0]=6352125.84698 
dim_unlim[0] dim_lev1b[1] impact[1]=6352243.51642 
dim_unlim[0] dim_lev1b[2] impact[2]=6352361.68637 
dim_unlim[0] dim_lev1b[3] impact[3]=6352481.31637 
dim_unlim[0] dim_lev1b[4] impact[4]=6352600.94637 

dim_unlim[0] dim_lev1b[0] impact_height[0]=2094.24061301 
dim_unlim[0] dim_lev1b[1] impact_height[1]=2211.9100545 
dim_unlim[0] dim_lev1b[2] impact_height[2]=2330.08 
dim_unlim[0] dim_lev1b[3] impact_height[3]=2449.71 
dim_unlim[0] dim_lev1b[4] impact_height[4]=2569.34 

dim_unlim[0] roc[0]=6350031.60637 

Nonetheless, the implied impact_heights correctly match those in ropp_fm_levels.f90

  REAL(wp), PARAMETER, DIMENSION(247)  :: impact_height_eum_247=(/ &
  2094.240_wp,  2211.910_wp,  2330.080_wp,  2449.710_wp,  2569.340_wp,  2690.920_wp,  2812.500_wp, ...

So I think this is fine - as an option. Don't make it the default yet (despite the title of the ticket).

comment:3 by Ian Culverwell, 10 years ago

Resolution: fixed
Status: newclosed

Seems safe enough, so close ticket.

comment:4 by Ian Culverwell, 10 years ago

Resolution: fixed
Status: closedreopened

comment:5 by Ian Culverwell, 10 years ago

There were problems assoc with the fact that refrac is now missing if geop_refrac is below the bottom of the model. Surprisingly tricky to solve, but finally done in r4367.

comment:6 by Ian Culverwell, 10 years ago

Resolution: fixed
Status: reopenedclosed

Works OK, so reclosing ticket.

comment:7 by Ian Culverwell, 10 years ago

Resolution: fixed
Status: closedreopened

by Ian Culverwell, 10 years ago

Attachment: WOP_Study_Cases.nc added

WOP_Study_Cases.nc

by Ian Culverwell, 10 years ago

Attachment: ropp_fm_bg2ro_1d.f90 added

ropp_fm_bg2ro_1d.f90

comment:8 by Ian Culverwell, 10 years ago

Milestone: 8.09.0
Type: enhancementdefect
Version: 6.18.0

Reopened as Axel von Engeln found convergence problems with the attached file WOP_Study_Cases.nc.

These are, I hope, fixed by the attached file ropp_fm_bg2ro_1d.f90.

Ask Axel to test again. If successful, incorporate these changes in ROPP9.0.

by Ian Culverwell, 10 years ago

ropp_fm_bg2ro_1d.f90_14042015

comment:9 by Ian Culverwell, 10 years ago

A better solution is in the new attached ropp_fm_bg2ro_1d.f90_14052015 file.

comment:10 by Ian Culverwell, 10 years ago

And the attached ropp_fm_bg2ro_1d.f90.22052015.f90 is even better: it fixes the last remaining funnies[*] that appear when the 55-profile WOP_Study_Cases.nc dataset is forward modelled.

[*]
1) In 'default mode' (ie, uniform N-levels), profile 3 still has a downward kink in IP where it crosses the bottom of the model at ~3700 m ASL. This is a consequence of limiting N to 500 N-units in this region. (500 N-units is rpetty large, so it generates larger than expected a = r n(r).) It is, however, much better than the ROPP8.0 version, which had impact heights going up to 185 km (!) near the surface. Now the impact height at the surface is 3.4 km.

2) In '247L mode', again for profile 3, there's a small step in the refractivity heights at the bottom of the model. This is also a consequence of having to guess a value of n below the bottom of the model. (As you know, this profile failed on the ROPP8.0 version.) The bending angles and refractivities are both missing in this region.

by Ian Culverwell, 10 years ago

ropp_fm_bg2ro_1d.f90.22052015

comment:11 by Ian Culverwell, 9 years ago

Later tests of the new code allowed it to process 3*3500 ~ 10500 GRAS profiles, but it still failed eventually with

INFO (from ropp_fm_bg2ro_1d):  Processing profile  671 of   3347
INFO (from ropp_fm_bg2ro_1d):  (BG_20120612000652_UNKN_U999_DMI_) 

 
WARNING (from set_obs_levels_refrac_247):  RoC missing from data structure ... setting equal to effective radius
 
FATAL ERROR (from set_obs_levels_refrac_247):  GPH iteration failed to converge in 200 iterations

when running

$ROPP_ROOT/ifort/bin/ropp_fm_bg2ro_1d bgr20120611-15_iono2_prof671.nc -f -247L -o bgr20120611-15_iono2_prof671_fm.nc

through the attached. I think we need to make this a non-fatal error somehow.

(For this particular case, increasing the max no. of iterations to 1000 allows it to converge (in 231 iters).)

by Ian Culverwell, 9 years ago

bgr20120611-15_iono2_prof671.nc

by Ian Culverwell, 9 years ago

bgr20120611-15_iono2_prof671_fm.nc

by Ian Culverwell, 9 years ago

ropp_fm_bg2ro_1d.f90.16062015

comment:12 by Ian Culverwell, 9 years ago

A slightly better (improved message reporting) solution is attached.

by Ian Culverwell, 9 years ago

ropp_fm_bg2ro_1d.f90.14072015

comment:13 by Ian Culverwell, 9 years ago

Some of the subtleties of this are discussed in the attached FM_levs.pdf.

by Ian Culverwell, 9 years ago

Attachment: FM_levs.pdf added

FM_levs.pdf

comment:14 by Ian Culverwell, 9 years ago

First updates in support of ROPP9.0 FM updates made at r4872; config directory, containing the configuration namelists, added at r4876.

comment:15 by Ian Culverwell, 9 years ago

Further cosmetic changes made at r4878. ROPP FM user guide updated at r4879.

comment:16 by Ian Culverwell, 9 years ago

Type: defectenhancement

Leave open for now, as the question of the correct defaults awaits Axel's input.

comment:17 by Ian Culverwell, 8 years ago

A -best option to ropp_fm_bg2ro_1d, which allows the user to select the currently advised 'best' option - that is, those that use the latest, validated, code developments and/or the most useful configuration specifications (eg output levels), has been implemented at r4898. Currently these options are:

use_247L = .TRUE.,       ! Use 'standard' 247 bending angle levels,
ih_from_geop = .FALSE.,  ! Derive impact heights from refrac geopotentials.
calc_grad  = .FALSE.,    ! Calculate Jacobians d{refrac, bangle}/d{state}?
compress   = .TRUE.,     ! Use non-ideal gas compressibility factors?
new_op     = .TRUE.,     ! Use new interpolation scheme?

Updates to the ROPP FM UG have been made at r4901.

This should answer Axel's request that 247L, and the other 'optimum' choices, should be the defaults in ROPP. By use of one switch, they can all be applied.

comment:18 by Ian Culverwell, 8 years ago

Resolution: fixed
Status: reopenedclosed

This works out OK in practice, so closing ticket.

Note: See TracTickets for help on using tickets.