Opened 6 years ago
Closed 3 years ago
#551 closed task (fixed)
Deactivated shum<0 checks in 1D-Var [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/common/ropp_fm_state2roprof.f90 https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/model_ecmwf/ropp_fm_state2state_ecmwf.f90 https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/model_ecmwf/ropp_fm_state2state_ecmwf_ad.f90 https://trac.romsaf.org/ropp/changeset/5427/ropp_src/branches/dev/Share/dmi_trunk_9.0/ropp_fm/model_ecmwf/ropp_fm_state2state_ecmwf_tl.f90
Original changesets:
Deactivated shum<0 checks in 1D-Var: https://trac.romsaf.org/ropp/changeset/5194
Attachments (1)
Change history (22)
comment:1 by , 6 years ago
Component: | ROPP(all) → ropp_fm |
---|
comment:2 by , 5 years ago
comment:3 by , 5 years ago
comment:4 by , 5 years ago
The changes pass the ropp_fm tests OK, presumably because there are no negative humidities in the input files, so the check is never invoked anyway.
************************** 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 | PASS | | t_fm_1D_2 | FM 1D; compress factors | Run | PASS | | 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 | PASS | | t_fm_iono_2 | FM iono; L1 and L2 | Run | PASS | --------------------------------------------------------------------------------------
For 1dvar, however, the situation is different:
************************** SUMMARY OF ROPP_1DVAR TEST RESULTS ************************ -------------------------------------------------------------------------------------- | Test name | Description | Run? | PASS? | -------------------------------------------------------------------------------------- | t_1dvar_01_refrac | 1DVAR basic; default | Run | PASS | | t_1dvar_01comp_refrac | 1DVAR basic; comp factors | Run | PASS | | t_1dvar_GRAS_05_bangle | 1DVAR GRAS; default | Run | PASS | | t_1dvar_GRAS_05comp_bangle | 1DVAR GRAS; comp factors | Run | *FAIL* | | t_1dvar_GRAS_05newop_bangle | 1DVAR GRAS; new interp | Run | *FAIL* | | t_1dvar_GRAS_05_refrac | 1DVAR GRAS; default | Run | PASS | | t_1dvar_GRAS_05comp_refrac | 1DVAR GRAS; comp factors | Run | PASS | | t_1dvar_GRAS_05newop_refrac | 1DVAR GRAS; new interp | Run | *FAIL* | | t_1dvar_COSMIC_04_bangle | 1DVAR COSMIC; default | Run | *FAIL* | | t_1dvar_COSMIC_04comp_bangle | 1DVAR COSMIC; comp factors | Run | *FAIL* | | t_1dvar_COSMIC_04newop_bangle | 1DVAR COSMIC; new interp | Run | *FAIL* | | t_1dvar_COSMIC_04_refrac | 1DVAR COSMIC; default | Run | PASS | | t_1dvar_COSMIC_04comp_refrac | 1DVAR COSMIC; comp factors | Run | PASS | | t_1dvar_COSMIC_04newop_refrac | 1DVAR COSMIC; new interp | Run | *FAIL* | | t_1dvar_iono_bangle | 1DVAR L1 and L2 | Run | *FAIL* | --------------------------------------------------------------------------------------
This is what you get when, as in the revisions above, check_qmin}} takes its default value of {{{.FALSE.
, i.e. the check that q >= 0 is no longer applied.
Most of these differences are tolerable. E.g. for t_1dvar_GRAS_05comp_bangle:
Running t_1dvar_GRAS_05comp_bangle (1DVAR GRAS; comp factors) ... ---------------------------------------------------------------------- ROPP 1DVAR File Comparison Tool ---------------------------------------------------------------------- INFO (from ropp_1dvar_compare): Comparing IT-1DVAR-05comp_bangle.1.nc and ../data/IT-1DVAR-05comp_bangle.1_reference.nc: the results of running test t_1dvar_GRAS_05comp_bangle (1DVAR GRAS; comp factors) ERROR (from ropp_io_fields_compare): Profile 2 Lev1b%bangle values ARE significantly different: |diff| = 1.26520E-05 > 1.00000E-05 INFO (from ropp_1dvar_compare): 1 differences exist in profile 2 INFO (from ropp_1dvar_compare): 1 elements of IT-1DVAR-05comp_bangle.1.nc and ../data/IT-1DVAR-05comp_bangle.1_reference.nc differ significantly **************************** ********** *FAIL* ********** **************************** ... examine t_1dvar_GRAS_05comp_bangle.log for details
The change in the model has slightly altered the results. In this case, the humidity in profile 2 has changed from
ncks -H -Q -ddim_unlim,1 -ddim_lev2b,25,35 -vshum ../data/IT-1DVAR-05comp_bangle.1_reference.nc shum[116]=0.0289645919525 shum[117]=0.0210176534746 shum[118]=0.0104072435666 shum[119]=1e-06 shum[120]=1e-06 shum[121]=1e-06 shum[122]=0.00292413396373 shum[123]=0.00750465604681 shum[124]=0.00966479086194 shum[125]=0.0102306308937 shum[126]=0.00987928105004
in the reference, to
ncks -H -Q -ddim_unlim,1 -ddim_lev2b,25,35 -vshum IT-1DVAR-05comp_bangle.1.nc shum[116]=0.0289645838819 shum[117]=0.0210176481164 shum[118]=0.0104072824476 shum[119]=-0.00405092588467 shum[120]=-0.00977518228682 shum[121]=-0.00594936754709 shum[122]=0.00292405733526 shum[123]=0.0075046210028 shum[124]=0.00966477497692 shum[125]=0.0102306167125 shum[126]=0.00987926143778
in the test. This change in retrieved shum is responsible for this change in bangle:
(Note that without the reduction in the minimum allowable q from 0 to -20 g/kg (!), the differences are much more severe, because negative humidities get range checked to ropp_MDFV.)
comment:5 by , 5 years ago
This is all fair enough (although it does suggests that no one has run these changes through 'make test' - the first check to make, I would have thought).
For the final test, test_1dvar_iono.sh, however, differences are more larger. We find:
*** Results log of t_1dvar_iono_bangle (1DVAR L1 and L2) *** ./../tools/ropp_1dvar_bangle -direct_ion -d -y ../data/obs20090401_000329_M02_2030337800_N0007_YYYY1_reference.nc --obs-corr ../errors/ropp_ob_bangle_error_corr_300L.nc -b ../data/bgr20090401_000329_M02_2030337800_N0007_YYYY1_reference.nc --bg-corr ../errors/ropp_bg_ecmwf_error_corr_L91.nc -c ../config/ecmwf_bangle_1dvar_iono.cf -o anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc --------------------------------------------------------------------- ROPP Bending Angle 1D-Var --------------------------------------------------------------------- INFO (from ropp_1dvar_bangle): Reading configuration file ../config/ecmwf_bangle_1dvar_iono.cf. INFO (from ropp_1dvar_bangle): Reading observation data for profile 1 from the file ../data/obs20090401_000329_M02_2030337800_N0007_YYYY1_reference.nc. ... (from ropp_io_read_ncdf_get): 'start_time' and yr/mo/dy/hr/mn/sc/ms timestamps differ by 2.000 seconds (probably a leap-second issue) - using yr/../ms timestamp WARNING (from ropp_fm_roprof2obs (1D bending angles)): Azimuth (of -0.1E+09 deg) out of range or missing. WARNING (from ropp_fm_roprof2obs (1D bending angles)): Check input data and valid_range attributes. WARNING (from ropp_fm_roprof2obs (1D bending angles)): Continuing, as azimuth not needed for 1D bending angles. WARNING (from ropp_fm_roprof2obs (1D bending angles)): Azimuth (of -0.1E+09 deg) out of range or missing. WARNING (from ropp_fm_roprof2obs (1D bending angles)): Check input data and valid_range attributes. WARNING (from ropp_fm_roprof2obs (1D bending angles)): Continuing, as azimuth not needed for 1D bending angles. WARNING (from ropp_fm_roprof2obs (1D bending angles)): Missing LEO position or centre of curvature ... will try to estimate r_LEO from satellite ID. INFO (from ropp_fm_roprof2obs (1D bending angles)): Assuming LEO height of 830 km (Metop-A/B/C profile) INFO (from ropp_1dvar_bangle): Reading background data for profile 1 from the file ../data/bgr20090401_000329_M02_2030337800_N0007_YYYY1_reference.nc. ... (from ropp_io_read_ncdf_get): 'start_time' and yr/mo/dy/hr/mn/sc/ms timestamps differ by 2.000 seconds (probably a leap-second issue) - using yr/../ms timestamp **** in ropp_fm_roprof2state.f90: x%shum(1:3) = 1.000000000000000E-002 1.000000000000000E-002 1.000000000000000E-002 **** in ropp_fm_roprof2state.f90: x%check_qmin = F **** in ropp_fm_state2state_ecmwf.f90: x%shum(1:3) = 1.000000000000000E-002 1.000000000000000E-002 1.000000000000000E-002 **** in ropp_fm_state2state_ecmwf.f90: x%check_qmin = F INFO (from ropp_fm_iono_set_default): -direct_ion requested but sigma(Ne_max) not set ... defaulting to 200.0e9 m-3. INFO (from ropp_fm_iono_set_default): -direct_ion requested but sigma(H_peak) not set ... defaulting to 150.0 km. INFO (from ropp_fm_iono_set_default): -direct_ion requested but sigma(H_width) not set ... defaulting to 25.0 km. **** in ropp_fm_roprof2state.f90: x%shum(1:3) = 1.000000000000000E-002 1.000000000000000E-002 1.000000000000000E-002 **** in ropp_fm_roprof2state.f90: x%check_qmin = F **** in ropp_fm_state2state_ecmwf.f90: x%shum(1:3) = 1.000000000000000E-002 1.000000000000000E-002 1.000000000000000E-002 **** in ropp_fm_state2state_ecmwf.f90: x%check_qmin = F INFO (from ropp_qc_bgqc): Background quality control lets all bending angle values pass. INFO (from ropp_qc_ion_bangle): First derivative check removes 1 points from L1 bending angle profile. INFO (from ropp_qc_ion_bangle): First derivative check removes 1 points from L2 bending angle profile. INFO (from ropp_qc_ion_bg): L2-L1 data cause background Ne_max to be set to 323.68e9 m-3. In ropp_1dvar_bangle.f90: checkqmin = F In ropp_1dvar_bangle.f90: bg%check_qmin = F **** in ropp_fm_state2state_ecmwf.f90: x%shum(1:3) = 1.000000000000000E-002 1.000000000000000E-002 1.000000000000000E-002 **** in ropp_fm_state2state_ecmwf.f90: x%check_qmin = F **** in ropp_fm_state2state_ecmwf.f90: x%shum(1:3) = NaN NaN NaN **** in ropp_fm_state2state_ecmwf.f90: x%check_qmin = F n_iter = 1 J = 210.01 max(relative change in state) = - **** in ropp_fm_state2state_ecmwf.f90: x%shum(1:3) = NaN NaN NaN **** in ropp_fm_state2state_ecmwf.f90: x%check_qmin = F **** in ropp_fm_state2state_ecmwf.f90: x%shum(1:3) = NaN NaN NaN **** in ropp_fm_state2state_ecmwf.f90: x%check_qmin = F n_iter = 2 J = NaN max(relative change in state) = -Infinity **** in ropp_fm_state2roprof.f90: ro_data%Lev2b%shum(1:3) = NaN NaN NaN **** in ropp_fm_state2roprof.f90: x%check_qmin = F INFO (from ropp_1dvar_bangle): Writing 1DVar retrieval for profile 1 to the file anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc.
and
Running t_1dvar_iono_bangle (1DVAR L1 and L2) ... ---------------------------------------------------------------------- ROPP 1DVAR File Comparison Tool ---------------------------------------------------------------------- INFO (from ropp_1dvar_compare): Comparing anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc: the results of running test t_1dvar_iono_bangle (1DVAR L1 and L2) ERROR (from ropp_io_fields_compare): Profile 1 Lev2b%Npoints values ARE significantly different: |diff| = 0091 > 0000 INFO (from ropp_1dvar_compare): 1 differences exist in profile 1 INFO (from ropp_1dvar_compare): 1 elements of anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc differ significantly **************************** ********** *FAIL* ********** **************************** ... examine t_1dvar_iono_bangle.log for details
No lev2b fields are output if check_qmin = .FALSE.
.
(If it's .TRUE.
, things are OK - ish. In fact we have
Running t_1dvar_iono_bangle (1DVAR L1 and L2) ... ---------------------------------------------------------------------- ROPP 1DVAR File Comparison Tool ---------------------------------------------------------------------- INFO (from ropp_1dvar_compare): Comparing anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc: the results of running test t_1dvar_iono_bangle (1DVAR L1 and L2) ERROR (from ropp_io_fields_compare): Profile 1 Lev2c%ne_max values values ARE significantly different: |diff| = 3.93216E+05 > 1.00000E-06 ERROR (from ropp_io_fields_compare): Profile 1 Lev2c%h_peak values values ARE significantly different: |diff| = 1.87500E-01 > 1.00000E-06 ERROR (from ropp_io_fields_compare): Profile 1 Lev2c%h_width values values ARE significantly different: |diff| = 7.81250E-03 > 1.00000E-06 INFO (from ropp_1dvar_compare): 3 differences exist in profile 1 INFO (from ropp_1dvar_compare): 3 elements of anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc differ significantly **************************** ********** *FAIL* ********** **************************** ... examine t_1dvar_iono_bangle.log for details
I'm putting these small changes down to other recent developments in the FM this week - to be checked.)
comment:7 by , 5 years ago
(Apparently not: very small diffs in Ne_max, H_width and H_peak between test and reference for ROPP9.1 at ifort17.)
comment:8 by , 5 years ago
Come back to that later. What about the more pressing problem that ROPP10.0_prototype has when test_1dvar_iono.sh is run with check_qmin = .FALSE.
?
comment:9 by , 5 years ago
This is traceable to a nasty little trap in ropp_fm/bangle_1d/ropp_fm_bangle_1d_tl.f90:
pwvp_tl = pwvp * ( x_tl%pres/x%pres + x_tl%shum/x%shum & - x_tl%shum*pwvp*(1.0_wp - epsilon_water) / (x%pres*x%shum))
This particular test uses shums that are exactly zero. If check_qmin = .FALSE.
, this results in NaN
s being returned from the above code. (If check_qmin = .TRUE.
the minimum shum is reset to 1e-9, which generates large but processable pwvp_tl
s.)
comment:10 by , 5 years ago
Really we should restructure the code to avoid logarithmic differentiation. Meanwhile we can probably get around it by not using such silly shums in the test.
comment:11 by , 5 years ago
The test file has been modified to have a minimum shum of 1.e-6 at r5920. When we do this, the check_qmin = .TRUE.
run now gives
test_1dvar_iono.sh Running t_1dvar_iono_bangle (1DVAR L1 and L2) ... ---------------------------------------------------------------------- ROPP 1DVAR File Comparison Tool ---------------------------------------------------------------------- INFO (from ropp_1dvar_compare): Comparing anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc: the results of running test t_1dvar_iono_bangle (1DVAR L1 and L2) **************************** ********** PASS ********** **************************** ... examine t_1dvar_iono_bangle.log for details
i.e. as at ROPP9.1, whereas the check_qmin = .FALSE.
run now gives
test_1dvar_iono.sh Running t_1dvar_iono_bangle (1DVAR L1 and L2) ... ---------------------------------------------------------------------- ROPP 1DVAR File Comparison Tool ---------------------------------------------------------------------- INFO (from ropp_1dvar_compare): Comparing anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc: the results of running test t_1dvar_iono_bangle (1DVAR L1 and L2) ERROR (from ropp_io_fields_compare): Profile 1 Lev2c%ne_max values values ARE significantly different: |diff| = 6.55360E+04 > 1.00000E-06 ERROR (from ropp_io_fields_compare): Profile 1 Lev2c%h_peak values values ARE significantly different: |diff| = 3.12500E-02 > 1.00000E-06 INFO (from ropp_1dvar_compare): 2 differences exist in profile 1 INFO (from ropp_1dvar_compare): 2 elements of anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc differ significantly **************************** ********** *FAIL* ********** **************************** ... examine t_1dvar_iono_bangle.log for details
which seems entirely reasonable.
comment:12 by , 5 years ago
The reason why the check_qmin=.TRUE.
case was not reproducing the ROPP9.1 results is that bg%check_qmin
needs to be set before the call to ropp_fm_roprof2state
that defines bg
, because it defines the humidities that end up in bg%shum
. Fix this.
comment:13 by , 5 years ago
OK. The ropp_fm changes committed at r5921 and the ropp_1dvar changes committed at r5922, in which check_qmin = .TRUE.
in State1dFM
and State2dFM
, deliver results that match the default. Good.
If we set check_qmin = .FALSE.
in State1dFM
and State2dFM
then the FM results are still the same, because there are no negative shums in the test input files, but the 1dvar results are subtly different:
************************** SUMMARY OF ROPP_1DVAR TEST RESULTS ************************ -------------------------------------------------------------------------------------- | Test name | Description | Run? | PASS? | -------------------------------------------------------------------------------------- | t_1dvar_01_refrac | 1DVAR basic; default | Run | PASS | | t_1dvar_01comp_refrac | 1DVAR basic; comp factors | Run | PASS | | t_1dvar_GRAS_05_bangle | 1DVAR GRAS; default | Run | *FAIL* | | t_1dvar_GRAS_05comp_bangle | 1DVAR GRAS; comp factors | Run | *FAIL* | | t_1dvar_GRAS_05newop_bangle | 1DVAR GRAS; new interp | Run | *FAIL* | | t_1dvar_GRAS_05_refrac | 1DVAR GRAS; default | Run | PASS | | t_1dvar_GRAS_05comp_refrac | 1DVAR GRAS; comp factors | Run | PASS | | t_1dvar_GRAS_05newop_refrac | 1DVAR GRAS; new interp | Run | *FAIL* | | t_1dvar_COSMIC_04_bangle | 1DVAR COSMIC; default | Run | *FAIL* | | t_1dvar_COSMIC_04comp_bangle | 1DVAR COSMIC; comp factors | Run | *FAIL* | | t_1dvar_COSMIC_04newop_bangle | 1DVAR COSMIC; new interp | Run | *FAIL* | | t_1dvar_COSMIC_04_refrac | 1DVAR COSMIC; default | Run | PASS | | t_1dvar_COSMIC_04comp_refrac | 1DVAR COSMIC; comp factors | Run | PASS | | t_1dvar_COSMIC_04newop_refrac | 1DVAR COSMIC; new interp | Run | *FAIL* | | t_1dvar_iono_bangle | 1DVAR L1 and L2 | Run | *FAIL* | --------------------------------------------------------------------------------------
(Note, yet again, that this basic test has obviously not been done by DMI.)
These failures are the result of expected small differences during the iteration. See, for example, the differences in the results of t_1dvar_GRAS_05comp_bangle, which were plotted above. Note in particular that test_1dvar_iono.sh now fails in a 'small' way, rather than the complete failure we saw with the original test dataset:
Running t_1dvar_iono_bangle (1DVAR L1 and L2) ... ---------------------------------------------------------------------- ROPP 1DVAR File Comparison Tool ---------------------------------------------------------------------- INFO (from ropp_1dvar_compare): Comparing anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc: the results of running test t_1dvar_iono_bangle (1DVAR L1 and L2) ERROR (from ropp_io_fields_compare): Profile 1 Lev2c%ne_max values values ARE significantly different: |diff| = 6.55360E+04 > 1.00000E-06 ERROR (from ropp_io_fields_compare): Profile 1 Lev2c%h_peak values values ARE significantly different: |diff| = 3.12500E-02 > 1.00000E-06 INFO (from ropp_1dvar_compare): 2 differences exist in profile 1 INFO (from ropp_1dvar_compare): 2 elements of anl20090401_000329_M02_2030337800_N0007_YYYY_iono.nc and ../data/anl20090401_000329_M02_2030337800_N0007_YYYY_iono_reference.nc differ significantly **************************** ********** *FAIL* ********** **************************** ... examine t_1dvar_iono_bangle.log for details
comment:14 by , 5 years ago
All this is good. But what should be the default? Personally, I would prefer for negative shums to be prevented by default, and for the users who wish to allow fewer than zero water molecules in a box of air to have to ask for it. In other words, I think we should have check_qmin
defaulted to .TRUE.
, and for the tools to have an option -nocheck_qmin
to switch it off. (This would also avoid the need to change the reference datasets, although we should keep the new ropp_1dvar/data/bgr20090401_000329_M02_2030337800_N0007_YYYY1_reference.nc, in case people want to switch off shum zeroing.)
comment:16 by , 5 years ago
comment:19 by , 5 years ago
r6044 fixes a nasty little bug, which prevented the -no_checkqmin
flag from having any effect!
comment:20 by , 5 years ago
r6045:6049 and r6053:6054 contain some finessing of the check_qmin
options.
comment:21 by , 3 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Version: | 9.0 → 11.0 |
The patronising condescension implicit within this ticket is the main reason that I want nothing more to do with the ROM SAF.
The entire justification for the change is this:
! Hack for reproc1 JKN 2017 ! WHERE ( ro_data%Lev2b%shum < 0.0 ) ro_data%Lev2b%shum = 1.0e-7_wp
and
! Hack for reproc1 JKN 2017 ! WHERE (x%shum <= 0.0_wp) ! x%shum = 1.0e-9_wp ! ENDWHERE
Note the implication: "We thought we'd try this fix, it seems to work, now be so good as to run along and implement, test, document and justify it, would you? Surely we can leave that to you. It's not really appropriate for professional research scientists like us to dirty our hands with such low-grade, technical support work."
I hope that in CDOP-4, reviewers will be strict about rejecting such under-prepared changes.
Closing ticket.
Probably best to do this via a
state%check_qmin
logical in theState1DFM
structure, like thestate%check_qsat
logical, which tests against supersaturation. The former, unlike the latter, should probably be.TRUE.
by default, because negative q is not physical whereas supersaturation (q > qsat) is.