Opened 11 years ago
Closed 11 years ago
#331 closed enhancement (fixed)
ropp_fm_abel consistency fix
Reported by: | Ian Culverwell | Owned by: | Ian Culverwell |
---|---|---|---|
Priority: | minor | Milestone: | 7.1 |
Component: | ropp_fm | Version: | 7.0 |
Keywords: | erf_up, ropp_fm_abel | Cc: | sti, cburrows |
Description
An internal ROPP7.0 beta reviewer noted that
However, I noticed a *minor inconsistency* between equation 4.27, extrapolating above the model, and the actual code in ropp_fm_abel.f90: IF (i == n_lev - 1) THEN t_upper = SQRT(kval(i) * (nr(i+1) + 1.0d5 - impact(l))) ELSE t_upper = SQRT(kval(i) * (nr(i+1) - impact(l))) ENDIF This adds 100 km to the uppermost model level, and effectively erf(t_upper)~1.0 as stated in the text. However, the code could be made consistent with 4.27 by adding a line IF (i == n_lev - 1) erf_up = 1.0_wp As noted above, this is minor and is unlikely to have any impact on simulated values.
We should remove this inconsistency between code and documentation.
Attachments (1)
Change history (5)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
Milestone: | 8.0 → 7.0 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Included in ROPP7.0.
Closing ticket.
comment:3 by , 11 years ago
Cc: | added |
---|---|
Keywords: | ropp_fm_abel added |
Milestone: | 7.0 → 7.1 |
Resolution: | fixed |
Status: | closed → reopened |
Chris B noticed that erf_up_ad wasn't being set to 0.0_wp in ropp_fm_abel_ad, as it should have been for consistency with this change.
Fixing it (see r3962) changes t_fascod_ad results from
Checking REFRACTIVITY AD FASCOD_TRO ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 473496185.147 473496185.147 1.0000000 0.00000E+00 Checking BENDING ANGLE AD FASCOD_TRO norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 76.512 76.512 1.0000000 0.14326E-09 Checking REFRACTIVITY AD FASCOD_MLS ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 355823536.657 355823536.657 1.0000000 -0.16751E-15 Checking BENDING ANGLE AD FASCOD_MLS norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 144.439 144.439 1.0000000 0.62949E-10 Checking REFRACTIVITY AD FASCOD_MLW ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 474645859.385 474645859.385 1.0000000 -0.50231E-15 Checking BENDING ANGLE AD FASCOD_MLW norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 143.528 143.528 1.0000000 0.19013E-10 Checking REFRACTIVITY AD FASCOD_SAS ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 379867322.074 379867322.074 1.0000000 0.00000E+00 Checking BENDING ANGLE AD FASCOD_SAS norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 107.062 107.062 1.0000000 0.54630E-10 Checking REFRACTIVITY AD FASCOD_SAW ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 475400740.028 475400740.028 1.0000000 -0.25076E-15 Checking BENDING ANGLE AD FASCOD_SAW norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 79.056 79.056 1.0000000 0.15081E-10
to
Checking REFRACTIVITY AD FASCOD_TRO ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 473496185.147 473496185.147 1.0000000 0.00000E+00 Checking BENDING ANGLE AD FASCOD_TRO norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 76.512 76.512 1.0000000 -0.55720E-15 Checking REFRACTIVITY AD FASCOD_MLS ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 355823536.657 355823536.657 1.0000000 -0.16751E-15 Checking BENDING ANGLE AD FASCOD_MLS norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 144.439 144.439 1.0000000 0.78709E-15 Checking REFRACTIVITY AD FASCOD_MLW ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 474645859.385 474645859.385 1.0000000 -0.50231E-15 Checking BENDING ANGLE AD FASCOD_MLW norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 143.528 143.528 1.0000000 -0.23763E-14 Checking REFRACTIVITY AD FASCOD_SAS ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 379867322.074 379867322.074 1.0000000 0.00000E+00 Checking BENDING ANGLE AD FASCOD_SAS norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 107.062 107.062 1.0000000 0.26547E-15 Checking REFRACTIVITY AD FASCOD_SAW ad, x%non_ideal = F norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 475400740.028 475400740.028 1.0000000 -0.25076E-15 Checking BENDING ANGLE AD FASCOD_SAW norm1, norm2, norm1/norm2, (norm1-norm2)/norm2 = 79.056 79.056 1.0000000 0.17976E-15
ie much more like it.
(It 'passed' the t_fascod_ad test previously because the threshold |norm1/norm2-1| was ridiculously big for an adjoint test: 0.1%. It's now (r3950) been set to 1.e-9. In view of the above it could be reduced further still.)
comment:4 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Closing the ticket as this update is in ROPP7.1
Basically, set erf_up = 1.0_wp and erf_up_tl = 0.0_wp if i=nlev-1. See r3786 for details.
Still passes t_fascod, t_fascod_tl, t_fascod_ad tests.
Makes small (but consistent, as expected) difference to bangles generated from standard ropp_fm_bg2ro_1d test dataset bg_cntlr20090401_multi.nc:
Sorted?