Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GFS v16 GSI minimization issues #154

Closed
RussTreadon-NOAA opened this issue Apr 30, 2021 · 61 comments
Closed

GFS v16 GSI minimization issues #154

RussTreadon-NOAA opened this issue Apr 30, 2021 · 61 comments
Assignees

Comments

@RussTreadon-NOAA
Copy link
Contributor

The operational MinMon package occasionally detects and reports problematic GFS v16 GSI minimizations. One such case was the operational 2021041718 gfs cycle (prod curve in figure below). Investigation of this case found that placing a lower bound of 1.e-07 on the saturation specific humidity computed in genqsat.f90 yielded a much smoother minimization (master_qmin in figure below).

gfs_2021041718_gnorm

Constant qmin is defined in constants.f90 as

real(r_kind),parameter:: qmin = 1.e-07_r_kind ! lower bound on ges_q

The corresponding change in genqsat.f90 is

qsat(i,j,k) = max(qmin,qsat(i,j,k))

This issue is opened to document further evaluation of this change. Pending evaluation results this change will be proposed for merger into the master.

@RussTreadon-NOAA RussTreadon-NOAA self-assigned this Apr 30, 2021
@RussTreadon-NOAA
Copy link
Contributor Author

RussTreadon-NOAA commented Apr 30, 2021

GSI tests for normal minimization cases

Compile release/gfsda.v16.1.0 twice. The is the release branch for GFS v16.1. The first compilation did not include the qmin addition to genqsat.f90 described above. The second compilation includes the qmin addition to genqsat.f90.

Curves labeled cntrl on the plots below pertain to global_gsi.x executable build from release/gfsa.v16.1.0 without any changes. Curves labeled qmin on the plots below pertain to the global_gsi.x executable with the modified genqsat.f90.

The GSI was run for 4 cycles using a stand-alone run script. These runs are not cycled. Each run is independent. Input for each run was taken from the cycled GFS v16.1 real-time parallel. The cycles run were 2021042912 to 2021043006. None of these cycles were by flagged by MinMon as having anomalous minimizations. Adding the qmin bound does not significantly alter the nature of the minimization found in the control as shown by the figures below.

gdas_2021042912_gnorm
gdas_2021042918_gnorm
gdas_2021043000_gnorm
gdas_2021043006_gnorm

Again, these four cycles were not cycled. The GSI was individually run for each cycle. Below is a collection over all four cycles of the (observation - analysis) fits for sonde temperature, winds, and humidity.
gsistat_uvtq_Count
gsistat_uvtq_Bias
gsistat_uvtq_RMSE

The similarity between the fits is not surprising given the similarity in the convergence curves. This test indicates that the qmin change does not alter the analysis significantly for normal minimization cases.

@RussTreadon-NOAA
Copy link
Contributor Author

The qmin bound in genqsat.f90 has been added to PR #149. Done at a5d32a17.

@RussTreadon-NOAA
Copy link
Contributor Author

2021041718 gfs case

Rerun global_gsi.x for 2021041718 gfs case with analysis fits added to gsistat. Do this for global_gsi.x built from master (cntrl) and global_gsi.x build from master with qmin change to genqsat.f90 (qmin). Plotted below are observation minus analysis fits for sonde temperature, winds, and RH. The fits are comparable between the two runs. Close inspection of the RMSE plots shows qmin to have slightly smaller rmse than cntrl at certain levels. Even smaller differences are found on the BIAS plot.

gsistat_uvtq_Count
gsistat_uvtq_Bias
gsistat_uvtq_RMSE

None of the plots included thus far in this issue are from cycled DA runs. All plots are based on independent executations of the global_gsi.x for a separate cases. It would be interesting to see the effect of the qmin change to genqsat.f90 in a cycled parallel.

@RussTreadon-NOAA
Copy link
Contributor Author

2021050418 gfs case

The minimization for the operational 2021050418 gfs analysis exhibited a saw-tooth pattern on the second outer loop as shown in the figure below
GFS_gfs 2021050418 gnorms.

NOAA-EMC/GSI PR #149 includes the qsat change which improved minimization in the 2021041718 gfs case. The PR #149 global_gsi.x was run for the 2021050418 gfs case. The qmin change did not improve minimization (see figure below).
gnorm_all_data_2021050418

Through trial and error it was found that turning off correlated error over sea surfaces yielded a smoother minimization for this case
gnorm_all_data no_corerr_sea_2021050418

Correlated error is applied to both IASI and CrIS. Additional runs of the PR #149 global_gsi.x show a smoother minimization curve when only turning off correlated error over sea points for CrIS
gnorm_all_data no_corerr_sea_cris_2021050418

than for only turning off correlated error over sea points for IASI

gnorm_all_data no_corerr_sea_iasi_2021050418

The two runs indicate, though, that turning off correlated error over IASI sea points has a greater "smoothing" effect on the gnorm curve in the first outer loop than turning off correlated error over CrIS sea points.

Other cases, gfs or gdas, should be examined. It's possible minimizations for other cases are not sensitive to correlated error. A horizontal plot of the IASI and/or CrIS sea points for the 2021050418 case might prove enlightening. This issue only reports a sensitivity. Much work remains to understand the nature of this sensitivity.

@RussTreadon-NOAA
Copy link
Contributor Author

Kristen suggested increasing kmult in global_anavinfo.l127.txt from 1.0 to 2.0. This was done for IASI and CrIS sea points and the 2021050418 case rerun. The resulting gnorm curve is included below
gnorm_all_data corerr_kmult2 0_2021050418

2021051000 gfs
To increase the sample size another case was examined - 2021051000 gfs. Here is the gnorm curve using the #PR 149 global_gsi.x with correlated error active for CrIS and IASI
gnorm_all_data_2021051000

Below is the gnorm curve for this case with kmult = 2.0 for CrIS and IASI sea points
gnorm_all_data corerr_kmult2_2021051000

Discussion between Kristen and John led to suggesting a run with 0 < kreq < 1. The case kreq=0.5 for CrIS and IASI sea points was run with the resulting gnorm curve below.
gnorm_all_data corerr_kreq0 5_2021051000

kmult=2.0 yields a smoother minimization on the first outer loop than kreq=0.5. Both settings yield comparably smooth second outer loop minimizations.

@RussTreadon-NOAA
Copy link
Contributor Author

@jderber-NOAA , @KristenBathmann-NOAA , @dtkleist

Additional runs and cases have been made based on today's email exchange. Thank you for the kmult and kreq suggestions. It's not hard to find cases of saw tooth or "spiky" minimization in v16 gfs or gdas cycles. Click here for the operational MinMon page. I've been choosing gfs for my tests simply because the gfs cycle runs a bit faster (fewer iterations and no o-a stats) than the gdas cycle.

Files to run the 2021051000 gfs case are being rsync'd to Hera. Look in /scratch2/NCEPDEV/stmp1/Russ.Treadon/gfs/prod for enkfgdas, gdas, and gfs directories and files.

@RussTreadon-NOAA
Copy link
Contributor Author

2021051100 gfs
The gnorm curve for this case has cyclic behavior in the second outer loop
gnorm_all_data_2021051100

Toggling correlated error parameters kmult or kreq for observations over sea points yields smoother minimizations on the second outer loop.
gnorm_all_data corerr_sea_kmult2_kreq0 5_2021051100

2021051012 gfs
The gnorm curve for this case is very choppy.
gnorm_all_data_2021051012

Toggling correlated error parameters do not reduce the choppiness of the gnorm curve (not shown). Even removing all IASI and CrIS data (and therefore no correlated error) does not alter the choppiness.
gnorm_all_data no_iasi_cris_2021051012

There's more to learn about cost function minimization in GFS v16.

FYI, both the 2021051012 and 2021051100 cases were run using global_gsi.x built from PR #149.

@RussTreadon-NOAA
Copy link
Contributor Author

2021051012 gfs

Sensitivity tests found that placing ASCAT winds in monitor mode yields a smooth gnorm curve.
gnorm_all_data no_uv_ascat_2021051012

Placing METOP-2(A) ASCAT (report type 290, subtype 4) in monitor mode yields a smoother gnorm curve than placing METOP-1(B) ASCAT (report type 290, subtype 3) in monitor mode.
merge_ascat
It would be interesting to dig deeper into this case to better understand why METOP-2(A) ASCAT impacts the minimization as it does.

One of the proposed changes for GFS v16.x is to turn on thinning for ASCAT winds. 100 km thinning was active in GFS v15. GFS v16.0 turned off this thinning. The 2021051012 gfs case was rerun with METOP-2(A) and METOP-1(B) ASCAT assimilated with two thinning grids: 50 and 100 km. The resulting gnorm curves are shown below
thin_ascat
Both thinning grids yields comparably smooth gnorm curves.

@RussTreadon-NOAA
Copy link
Contributor Author

Add Emily @emilyhcliu

@jderber-NOAA
Copy link
Contributor

Russ,

I am looking into a different issue with the case you put on Hera. I noted a call to reset_predictors_var within the outer loop in setuprhsall. This changes the background error covariance within the outer loop and thus the relationship between xhatsave and yhatsave will no longer be consistent. I suppose this has been included to account for the change in numbers of channels and aircraft that pass the quality control in setuprhs, but I am afraid it is leading to issues. Also, what is done in reset_predictors_var is inconsistent with what is done in set_predictors_var. The first tests I have done (just removing the call to reset_predictors_var) showed a much smoother second outer iteration. Also, the final value for the gradient went from 41 to 10. I don't think just removing the call to reset_predictors_var is the necessarily the best solution (I am trying some other things now), but I think it shows that this may be an issue. Also, it may explain why we see the sawtooth pattern mostly in the second outer iteration.

@RussTreadon-NOAA
Copy link
Contributor Author

Thanks, John, for the update. This sounds like a fruitful path to investigate. Perhaps making reset_predictors_var consistent with set_predictors_vars will help. You may be exploring this. I wonder if there's anything we do at the end of pcgsoi (e.g., in update_guess) which also adds inconsistency between outer loops.

@jderber-NOAA
Copy link
Contributor

OK - I was wrong for this case. It turns out the background error does not change because the number of observations do not change enough to hit the criterion in reset_predictors_var from the first to second outer iteration. However, the routine does change the values specified in set_predictors_var and the improved convergence appears to be coming from using those original values in set_predictors_var. I think the inconsistency between xhatsave and yhatsave could occur, just not in this case. What is done in reset_predictors_var is very crude and does not seem to be as good as that in set_predictors_var. Wish I knew why this routine was included. Will look at set_predictors_var to see if we can make an improvement in these values so that reset_predictors_var is not needed.

@jderber-NOAA
Copy link
Contributor

Russ,

I was finally able to get things where I was happy. The output is in /scratch2/NCEPDEV/stmp1/John.Derber/tmp766/ pr149_gfs_b6.2021051000, I don't know what my changes to the background error to the radiances and aircraft temperatures, but the convergence looks better to me.

Code changes are in /scratch1/NCEPDEV/da/John.Derber/jderber/src/gsi in routines berror, aircraftinfo, radinfo, and setuprhsall.

John

@RussTreadon-NOAA
Copy link
Contributor Author

Thanks, John. I am cloning your corr branch on WCOSS_D and will try it in the cases of poor minimization.

@jderber-NOAA
Copy link
Contributor

jderber-NOAA commented May 14, 2021 via email

@RussTreadon-NOAA
Copy link
Contributor Author

2021051000 gfs
Clone and build jderber-NOAA:corr on WCOSS_D. Rerun 2021051000 gfs case with resulting global_gsi.x. Shown below is the original gnorm curve on the left with the corr gnorm curve on the right.
test

The minimization is improved. Earlier sensitivity tests altering kmult or kreq indicate that tuning of correlated error parameters might also improve the minimization for this case. It is possible that updates to the correlated error fix files or formulation could also yield improvements in the minimization.

It would be interesting to test the corr branch for other cases and see its impact.

@RussTreadon-NOAA
Copy link
Contributor Author

2021051318 gfs

The operational MinMon package flagged the operational 2021051318 gfs analysis with the following message:
Final gnorm gross check failure: suffix = GFS, cycle = 2021051318, final gnorm = 0.00130159302389528 File source for report is: /gpfs/dell1/nco/ops/com/gfs/prod/gfs.20210513/18/atmos/gfs.t18z.gsistat

Below is the MinMon gnorm curve for this case
GFS_gfs 2021051318 gnorms

Through a series of sensitivity tests it was found that placing npp cris-fsr channel 1008 in monitor mode results in a much smoother gnorm curve (right). The choppy gnorm curve (left) was generated by running PR #149 global_gsi.x for this case with all data, including npp cris-fsr channel 1008, assimilated. The same executable was run to generate the curve on the right.
merge_wv1008

CrIS fsr channel 1008 is a water vapor channel. It would be good to dig deeper into this case to better understand why assimilation of npp cris-fsr channel 1008 has this impact on the minimization.

@RussTreadon-NOAA
Copy link
Contributor Author

Summary (thus far)

The following cases have been examined and sensitivities identified.

case behavior sensitivity / action
2021041718 gfs choppy gnorm on second outer loop placing lower bound of 1.0e-7 on qsat in genqsat.f90 smooths gnorm curve. This change is included in PR #149
2021050418 gfs sawtooth gnorm on first and second outer loop. higher frequency sawtooth pattern on second outer loop gnorm curve smoothed by (1) turning off correlated error over sea points (larger impact for CrIS than IASI). (2) setting correlated error parameter kmult = 2 for sea points in anavinfo
2021051000 gfs sawtooth gnorm on first and second outer loop (1) kmult = 2 or kreq = 0.5 smooth gnorm curve with greater improvement from kmult = 2, (2) jderber-NOAA:corr includes source code changes which smooths gnorm curve without adjusting kmult or kreq
2021051012 gfs choppy gnorm on first and second outer loop, sawtooth pattern evident on second outer loop thinning ASCAT winds to 50 or 100 km via settings in convinfo smooths gnorm curve on both loops
2021051100 gfs cyclic gnorm increase / decrease on second outer loop setting (1) kmult = 2 or kreq = 0.5 smooth gnorm curve with greater improvement from kmult = 2, (2) jderber-NOAA:corr does not remove cyclic gnorm behavior for this case
2021051318 gfs choppy gnorm on second outer loop placing NPP CrIS FSR channel 1008 (water vapor channel) in monitor mode smooths gnorm curve on second outer loop

Note: gfs (early dump) cases have been examined thus far due to quicker turn around for stand alone gsi run script. The gfs gsi has 50 fewer iterations on the second outer loop than the gdas (late dump) gsi.

@jderber-NOAA
Copy link
Contributor

Russ,

I have been trying various values of kreq on the case I have on Hera. I think .5 is too large and I was trying some smaller values. I was hoping that .1 (a small value that does not change the variance too much), but I am not seeing much improvement. In fact it looks a little worse than 0.. However, somewhat smaller values (.15 and .25) seem to be a bit better. I think .25 might still be a bit too large. I really think kmult = 2. is way too large, eventhough it produces smoother results. kmult will increase the errors assigned to the radiances by a lot and I am afraid this will change things too much.

John

@KristenBathmann
Copy link
Contributor

What about testing the sensitivity to a group of channels, for example only applying kreq or kmult to the water vapor channels? The GSI code doesn't allow this, but I can do it offline.

@RussTreadon-NOAA
Copy link
Contributor Author

RussTreadon-NOAA commented May 17, 2021

2021051318 gfs update
Comment out all calls to upd_positive_fldr3 in PR #149 update_guess.f90. Recompile and rerun 2021051318 gfs case with all operational data assimilated and without any changes to info files. Resulting gnorm curve below
gnorm_all_data no_upd_positive_fldr3_2021051318

John pointed out the error in the above test. By commenting out update_postive_fldr3, the increment was NOT added to the background. This is wrong. When the increment is added in update_guess without applying the lower bound imposed by upd_positve_fldr3 the gnorm curve remains choppy on the second outer loop (see below).

@jderber-NOAA
Copy link
Contributor

Russ,

Very nice. My test is still waiting on Hera.

I hope you replaced the calls with "ptr3dges = ptr3dges + ptr3dinc" for 3d fields ("ptr2dges = ptr2dges + ptr2dinc" for 2d). Otherwise the fields are not updated. This update is not necessary for the jacobian calculations and I cannot see any issues with replacing the calls. We might want to add something that limits the fields before writing out so that the model does not get negative values.

John

@RussTreadon-NOAA
Copy link
Contributor Author

Russ,

Very nice. My test is still waiting on Hera.

I hope you replaced the calls with "ptr3dges = ptr3dges + ptr3dinc" for 3d fields ("ptr2dges = ptr2dges + ptr2dinc" for 2d). Otherwise the fields are not updated. This update is not necessary for the jacobian calculations and I cannot see any issues with replacing the calls. We might want to add something that limits the fields before writing out so that the model does not get negative values.

John

Touché, you caught my mistake. I simply commented out the call to upd_positive_ptr* without looking at the routines. I corrected my mistake as you indicated. Below is the gnorm curve for the 2021051318 case with all upd_positive_ptr* calls commented out AND the increment added to the guess.
gnorm_all_data no_upd_positive_fldr3_all_2021051318

The gnorm curve remains choppy on the second outer loop. Back to the drawing board ... at least for this case.

@jderber-NOAA
Copy link
Contributor

When I removed the check on minimum values in both update_guess and compute derived I am getting a much smoother reduction in gradient in the second outer iteration for the case I have on Hera. This case was not too bad in the second outer iteration, so I cannot say how much it will help in other cases. The first outer iteration was identical, indicating the that qmin was being applied earlier in the code as well. This looks very promising.

@jderber-NOAA
Copy link
Contributor

The third case Russ put on Hera (2021052006) does not appear to be moisture related. By changing preconditioning I have been able to get a significant change in the convergence properties, but still resulted in a magnitude of the gradient that was a bit too large at the end of the second outer iteration. I am looking into some changes that might help.

@RussTreadon-NOAA
Copy link
Contributor Author

This sounds very promising. The operational 2021052318 gfs has a choppy gnorm curve on both outer loops. We may want to test your preconditioning changes on this case, too.

@jderber-NOAA
Copy link
Contributor

Not much progress through the preconditioning route. Some improvement on the smoothness, but gradient still ends too high. Appears to be a problem related to the ensembles, but getting weird results (i.e., input parameters are changed and after read in they are set correctly, but then they change back to the original values.)

@RussTreadon-NOAA
Copy link
Contributor Author

John opened issue #170 to document changes to bias correction variances. These changes improve convergences in certain cases and overall improve consistency between outer loops. Please see this issue for details regarding his changes.

@RussTreadon-NOAA
Copy link
Contributor Author

2021060806 gfs

The operational MinMon package flagged the operational 2021060806 gfs analysis with the following message:
Final gnorm gross check failure: suffix = GFS, cycle = 2021060806, final gnorm = 0.000517371673207889 File source for report is: /gpfs/dell1/nco/ops/com/gfs/prod/gfs.20210608/06/atmos/gfs.t06z.gsistat

Below is the MinMon gnorm curve for this case
GFS_gfs 2021060806 gnorms

Through trial and error it was found that placing Metop-A and Metop-B IASI channels 2701 to 3310 (8 channels in all) in monitor mode results in a much smoother gnorm curve.
gnorm_pr169 all_data iasi_mon2701_3110_2021060806

Tests placing eight IASI channels from 2701 to 3310 in monitor mode from a single satellite show Metop-A contributes more to the choppy gnorm curve than Metop-B for this case.
merge

The above subset of monitored channels can be narrowed to {2993, 3002, 3049} and still yield a smoother gnorm curve than the original operational run.
gnorm_pr169 iasi_mon2993_3002_3049_2021060806

What atmospheric constituents are these IASI channels sensitive to? What parts of the atmospheric column are these channels sensitive to? It would be interesting to generate horizontal maps to see where large innovations occur.

@RussTreadon-NOAA
Copy link
Contributor Author

2021061918 gfs

While MinMon did not flag the operational gfs analysis for 2021061918, the gnorm curve is choppy for this cycle.
GFS_gfs 2021061918 gnorms

The NOAA-EMC/GSI master at a67b816 was built and used to run the 2021061918 case. The gnorm curve remains choppy with the master global_gsi.x.
gnorm_master all_data_2021061918

Three tests were subsequently run:

  1. thin ASCAT winds to 75 km
  2. monitor Metop-A and Metop-B IASI water vapor channels 2889 to 5480 (10 channels for each satellite)
  3. monitor CrIS-FSR N20 water vapor channels 882 to 1058 (7 channels). All CrIS-FSR NPP channels are monitored due to an instrument anomaly.

The resulting gnorm curves are shown below.
gnorm_master thin_ascat75_2021061918
Thinning ASCAT data to 75 km does not yield a smoother gnorm curve for this case.

gnorm_master iasi_mon2889_5480_2021061918
Monitoring Metop-A/B IASI water vapor channels does not impact the gnorm curve on the first outer loop but the gnorm curve on the second outer loop is much smoother.

gnorm_master crisn20_mon882_1058_2021061918
Monitoring CrIS-FSR N20 water vapor channels impacts both the first and second outer loops.

The improvement in convergence from small changes (e.g. placing 7 channels in monitor mode) is considerable. These results and those for other cycles suggest that we should take a closer look at the assimilation of CrIS and IASI water vapor channels in v16. This is not meant to say that there is a problem with assimilation of these water vapor channels. The sensitivity of the gnorm curve to these channels may lead other aspects of the analysis (e.g., ensembles, correlated error, increased vertical resolution, ...).

@jderber-NOAA
Copy link
Contributor

jderber-NOAA commented Jun 23, 2021 via email

@RussTreadon-NOAA
Copy link
Contributor Author

Reran 2021061918 gfs case with satinfo error changed for 7 assimilated CrIS-FSR N20 water vapor channels. No impact. Looking at the code I don't think the satinfo error is used when correlated error is on. Is this correct, Kristen?

Rerain 2021061918 gfs case with satinfo ermax changed for 7 assimilated CrIS-FSR N20 water vapor channels. Operations currently uses ermax = 0.900 for these water vapor channels. Reduce this to 0.450 with the resulting gnorm curve
gnorm_master crisn20_errmax045_882_1058_2021061918

ermax=0.450 yields a smoother gnorm curve on the first outer loop but is still spiky on the second outer loop.

Rerun with incrementally smaller ermax. Below are gnorm curves with ermax=0.420, 0.410, and 0.400 for the 7 assimilated CrIS-FSR N20 water vapor channels
gnorm_master crisn20_errmax042_882_1058_2021061918
gnorm_master crisn20_errmax041_882_1058_2021061918
gnorm_master crisn20_errmax040_882_1058_2021061918

The second outer loop gnorm curve is progressively smoother as ermax is decreased.

One final run was made with ermax=0.200 for the 7 assimilated water vapor channels
gnorm_master crisn20_errmax020_882_1058_2021061918

For previous cases we experimented with adjustments to correlated error parameters kreq and kmult in the anavinfo file. Sensitivity tests with adjustments to these parameters could be run for this case. However, adjustments to kreq and kmult affect all channels.

Earlier on in this issue Kristen mentioned the following channel specific option

What about testing the sensitivity to a group of channels, for example only applying kreq or kmult to the water vapor channels? The GSI code doesn't allow this, but I can do it offline.

Kristen, do we have the necessary code modifications in hand to run channel specific kreq and kmult sensitivity tests?

@KristenBathmann
Copy link
Contributor

We use correlated error for CrIS over sea surfaces only, so non-sea surfaces continue to use the satinfo errors. Running channel specific tests with kreq and kmult is very instrument-dependent, so I can either supply separate covariance files for each option you want to test, or make some inelegant code changes to the GSI.

@RussTreadon-NOAA
Copy link
Contributor Author

RussTreadon-NOAA commented Jun 24, 2021 via email

@KristenBathmann
Copy link
Contributor

Changing the GSI code would probably be the easiest option for testing. Are these tests are based on the GSI master, or on John's corr branch?

@RussTreadon-NOAA
Copy link
Contributor Author

RussTreadon-NOAA commented Jun 24, 2021 via email

@KristenBathmann
Copy link
Contributor

I created a branch called kreqtune to allow for separate values of kreq for surface, water vapor and other channels. This is an additive inflation value
Rcov(r,r)=(sqrt(Rcov(r,r)+kreq)^2.
The code is also on hera, here:
/scratch1/NCEPDEV/stmp4/Kristen.Bathmann/mintest/GSI
This update requires a change to the anavinfo file, and I regrettably had difficultly committing that change. If it is not there, two columns need to be added to the correlated obs table:
correlated_observations::
! isis method kreq kreq_surf kreq_wv kmult type cov_file
iasi_metop-a 2 0.0 0.0 0.0 1.0 sea Rcov_iasiasea

kreq_surf and kreq_wv are the inflations for the surface and water vapor channels. I also updated the Rcov_cris* covariance files to the versions I plan to use when IASI-C is implemented.
...

@RussTreadon-NOAA
Copy link
Contributor Author

Rerun with correlated error turned off for CrIS-FSR N20.
gnorm_master no_crisn20_corerr_2021061918
Interesting cyclic behavior observed in gnorm curve.

Runs using John's biasvar and corr branches do not yield smoother gnorm curves.

CrIS-FSR N20 water vapor channels seem to be the key for this case. Rather than adjusting correlated error would it suffice to adjust satinfo parameter ermax? This parameter is satellite, sensor, and channel specific. Might comparison of CrIS-FSR N20 diagnostic files for ermax=0.9 (control) and ermax=0.4 (test) point to useful CrIS-FSR QC to add to qcmod?

@KristenBathmann
Copy link
Contributor

It might be useful to look at the jacobains in the diag files, but this requires re-running with certain options turned on. I have a code somewhere that can plot jacobians. It would be sufficient to just look at the control file, and examine observations that have 3(O-G)>0.4.

@RussTreadon-NOAA
Copy link
Contributor Author

Install Kristen's kreqtune on Venus and run 2021061918 case. Below is the resulting gnorm curve.
gnorm_kreqtune all_data_2021061918

This run used updated Rcov files in the kreqtune branch. CrIS-FSR N20 kreq_surf=0.1 and kreq_wv=0.2. The gnorm curve is smoother on the first outer loop but remains choppy on the second loop.

Repeat this test with kreq_wv=0.5. The resulting gnorm cuve is below
gnorm_kreqtune kreq_wv05_2021061918

Repeat this test with kreq_uv=1.0. The resulting gnorm curve is below:
gnorm_kreqtune kreq_wv1_2021061918

@KristenBathmann
Copy link
Contributor

Here are spaghetti plots of the temperature, humidity and ozone jacobians for CrIS channel 1058, from the operational gfs diag file at 2021061918:

tjac

qjac

o3jac

The jacobians are definitely larger with errmax>0.4. The ozone jacobians look a bit odd.

@KristenBathmann
Copy link
Contributor

To clarify on my last comment, plots with errmax>0.4 show jacobians of observations that would pass quality control if errmax is greater than 0.4. Plots with errmax<0.4 show jacobians of observations that would pass quality control if errmax is less than 0.4.

@RussTreadon-NOAA
Copy link
Contributor Author

2021070106 gfs

MinMon flagged the operational GFS 2021070106 gfs cycle with the following alert

 Final gnorm gross check failure:  suffix = GFS,  cycle = 2021070106, final gnorm = 0.000454794453772121   File source for report is:  /gpfs/dell1/nco/ops/com/gfs/prod/gfs.20210701/06/atmos/gfs.t06z.gsistat

 http://www.emc.ncep.noaa.gov/gmb/gdas/gsi_stat/index.html?src=GFS&typ=gnorm&cyc=2021070106

Below is the gnorm curve for this case
GFS_gfs 2021070106 gnorms

Replicated this gnorm behavior using NOAA-GSI/EMC master at 17cddf0.
gnorm_master all_data_2021070106

Rerun this case using stand-alone GSI script testing various configurations. Find gnorm sensitivities to ASCAT thinning and correlated error tuning for CrIS and IASI water vapor channels. Use Kristen's kreqtune branch at 7a1b66a to explore gnorm sensitivity to CrIS and IASI water vapor error tuning. Best gnorm behavior obtained with the following configuration

  • thin ASCAT winds to 75 km
  • set kreq_wv = 0.2 for CrIS
  • set kreq_wv = 0.2 for IASI

The resulting gnorm curve for this configuration is shown below
gnorm_kreqtune thin_ascat75 kreq_wv02_cris_iasi_2021070106

@RussTreadon-NOAA
Copy link
Contributor Author

2021070106 gfs (update)
Kristen found that removing the ensemble yields a smooth minimization.

gnorm_master_gfs all_data 3dvar nhr_obsbin1_2021070106

Turning off assimilation of CrIS and IASI does not yield a smooth minimization.

Kristen's kreqtune branch with kreq_wv = 0.2 for CrIS (sea) and IASI (sea and land) yields the following gnorm curve with ensembles (ie, 4denvar) used.
gnorm_kreqtune_gfs all_data ascat75 cris_iasi_kreq_wv0 2_2021070106

@RussTreadon-NOAA
Copy link
Contributor Author

2021072312 gfs

The operational MinMon package flagged 2021072312 gfs with the following alert

Final gnorm gross check failure: suffix = GFS, cycle = 2021072312, final gnorm = 0.00103280304291467 File source for report is: /gpfs/dell1/nco/ops/com/gfs/prod/gfs.20210723/12/atmos/gfs.t12z.gsistat
GFS_gfs 2021072312 gnorms

This is a case of poor convergence.

Various sensitivity tests have been run by Kristen. In all tests correlated error was turned off.

  • Turn off ensemble, turn off cris WV channels, no improvement.
  • Turning off IASI WV channels in addition to this showed considerable improvement, but the final gradient value was still larger than it should be.

Additional sensitivity tests have been run on Mars. The best convergence thus far has been obtained by not assimilating IASI and CrIS along with thinning ASCAT winds to 75 km.
gnorm_master all_data ascat75 no_iasi no_cris_2021072312

Additional tests should be run.

@jderber-NOAA
Copy link
Contributor

jderber-NOAA commented Jul 29, 2021

Some changes in minimization technique. In the right direction, but more improvement necessary

image

@RussTreadon-NOAA
Copy link
Contributor Author

RussTreadon-NOAA commented Aug 2, 2021

2021073018 gfs & gdas

Both the gfs and gdas cycles for 2021073018 were flagged by MinMon for minimization resets (4 gfs, 3 gdas). Below are the gnorm curves for each
GFS_gfs 2021073018 gnorms
GFS_gdas 2021073018 gnorms

Various sensitivity tests were run for the gfs case using a standalone GSI run script and the master at 3656d50.
gnorm_master all_data_2021073018

Thinning ASCAT winds to 75 km by itself did not noticeably improve the minimization. This agrees with a check of the b terms from fort.220. The largest negative b occurs for the radiance term. Turning off or adjusting the amplitude of correlated error for CrIS and IASI did not improve the minimization. Turning off the moisture (and even all) constraints did not improve convergence. Not assimilating IASI data along with thinning ASCAT winds to 75 km yielded smoother gnorm curve.
gnorm_master all_data ascat75 no_iasi_2021073018

The best convergence for 4denvar was obtained by thinning ASCAT winds to 75 km and setting the ensemble contribution to the q background error to zero.
gnorm_master all_data ascat75 no_qens_2021073018

Attempts to reduce the ensemble q perturbations above the tropopause did not improve convergence. Sensitivity to q perturbations may be in the lower troposphere where the L127 model has extra layers compared with L64.

@RussTreadon-NOAA
Copy link
Contributor Author

2021073018 gfs

Additional tests were run in which the ensemble q perturbations were set to zero on specified ranges of model layers. The greatest impact on convergence (in a positive sense) was found when zeroing the ensemble q perturbations on layers 42 to 55.
gnorm_master all_data ascat75 kbot42_ktop55_2021073018

A check of the atmanl.nc shows layers 42 to 55 approximately correspond to 669 to 455 hPa.

@RussTreadon-NOAA
Copy link
Contributor Author

RussTreadon-NOAA commented Aug 19, 2021

2021081906_gfs

MinMon flagged the 2021081906 gfs cycle with the following warning

Final gnorm gross check failure: suffix = GFS, cycle = 2021081906, final gnorm = 0.00084927489879786 File source for report is: /gpfs/dell1/nco/ops/com/gfs/prod/gfs.20210819/06/atmos/gfs.t06z.gsistat

Below is the gnorm curve.
GFS_gfs 2021081906 gnorms

No resets occurred in the minimization. This is a case of poor convergence.

global_gsi.x was built from the master at e306315 and run for this case. The master global_gsi.x exhibits similar choppy gnorm behavior with poor convergence.
gnorm_master_gfs all_data_2021081906

Examination of fort.220 showed large negative b values for term 20 - winds. The master global_gsi.x was run with ASCAT winds thinned to 75 km. This improved convergence, though the odd cyclic behavior we've seen before is evident on the second outer loop.
gnorm_master_gfs all_data ascat75_2021081906

Previous cases have shown sensitivity to CrIS and/or IASI water vapor channels. The master global_gsi.x was run with ASCAT winds thinned to 75 km and CrIS and IASI water vapor channels placed in monitor mode. The gnorm curve for this configuration does not exhibit cyclical behavior on the second outer loop.
gnorm_master_gfs all_data ascat75 mon_iasi_cris_wv_2021081906

Three more runs were made, each placing water vapor channels from only one sensor in monitor mode. The goal here was to see if the smoothness of the above gnorm curve correlates with a specific satellite.
gnorm_master_gfs all_data ascat75 mon_3way

Placing N20 CrIS or Metop-B IASI water vapor channels in monitor mode yields gnorm curves with cyclic behavior on the second outer loop. Placing Metop-A IASI water vapor channels in monitor mode yields the smoothest gnorm curve. Additional tests could be run to quantify the impact of specific Metop-A IASI water vapor channels on the gnorm curve.

@RussTreadon-NOAA
Copy link
Contributor Author

20211118 06 & 18Z gfs

MinMon flagged the operational gfs analyses for insufficient convergence on 2021111818 in the 06, and 18Z cycles. Sensitivity tests using the master at f442020 were run for each cycle. The resulting gnorm curves are available as links in the table below. All rows except the first, gfs.v16.1.x, ran the master global_gsi.x with the indicated configuration. Configurations are explained below the table.

run 2021111806 2021111818
gfs.v16.1.5 (opr) plot plot
master plot plot
ascat75 plot plot
mon_iasi_cris_wv plot plot
ascat75.mon_iasi_cris_wv plot plot
no_corerr plot plot
mon_iasi_cris_wv.no_corerr plot plot
ascat75.mon_iasi_cris_wv.no_corerr plot plot

The following configurations were tested

  • master - global_gsi.x built from f442020 with operational configuration
  • ascat75 - master with ASCAT winds thinned to 75 km and observation error increased to 2.5 m/s
  • mon_iasi_cris_wv - master with IASI and CrIS water vapor channels placed in monitor mode
  • ascat75.mon_iasi_cris_wv - combine ascat75 and mon_iasi_cris_wv
  • no_corerr - master with correlated error turned off for IASI and CrIS
  • mon_iasi_cris_wv.no_corerr - combine mon_iasi_cris_wv and no_corerr
  • ascat75.mon_iasi_cris_wv.no_corerr - combine ascat75, mon_iasi_cris_wv, and no_corerr

For both cases placing IASI and CrIS water vapor channels in monitor mode and turning off correlated error for the remaining assimilated IASI and CrIS channels yielded much smoother gnorm curves. Adding to this the thinning of ASCAT winds and increased ASCAT wind observation error yielded additional improvements.

Gnorm curves for sensitivity tests not mentioned above are found in

@RussTreadon-NOAA
Copy link
Contributor Author

20211118 06 & 18Z gfs follow up

Run an additional tests toggling on/off correlated error for entries in global_anavinfo.l127.txt. Gnorm curves for various tests are tabulated below

run 2021111806 2021111818
no rcov_crisn20 (sea) plot plot
no rcov_iasib land plot plot
no rcov_iasic land plot plot
no rcov_iasib & c land plot plot
no rcov_iasib sea plot plot
no rcov_iasic sea plot plot
no rcov_iasib & c sea plot plot

Examination of the above plots shows that turning off correlated error for Metop-C IASI over sea has the greatest impact in terms of yielding a smoother gnorm curve.

  • For the 2021111818 case this change alone yields a very smooth gnorm curve.
  • For 2021111806 the gnorm curve is smoother but still exhibits cyclical behavior on the second outer loop.
  • For the 2021111806 case turning off correlated error for both Metop-B and Metop-C IASI over sea yields the smoothest gnorm curve.

Turning off correlated error for N20 CrIS does not yield as great an improvement in convergence as does turning off correlated error over sea for IASI.

Some interconnected questions:

  • Why does turning off correlated error over sea, especially for IASI, result in a smoother gnorm curve?
  • Are the above findings limited to the given cases (2021111806 and 2021111818) or is a similar, yet perhaps smaller, response found in other cases?
  • For 2021111818 turning off correlated error for Metop-C IASI over sea significantly improves convergence. Why?
  • Would tuning correlated error parameters in the anavinfo file (master or Kristen's extension) result in smoother convergence with correlated error still on?
  • Would correlated error benefit from regeneration of the Rcov files using a larger database?

Other ideas or thoughts?

@KristenBathmann
Copy link
Contributor

(Try testing with the kreqtune branch and remember to add columns to the anavinfo. Use negative values for kreq* for CrIS NPP.)

@RussTreadon-NOAA
Copy link
Contributor Author

2021112118 gdas and 2021112200 gfs

MinMon flagged the operational 2021112118_gdas and 2021112200_gfs with minimization resets. Given findings from the 20211118 gfs cases, the f442020 master global_gsi.x was run with the following configuration

  • ASCAT winds thinned to 75 km with 2.5 m/s observation error
  • Monitor IASI and CrIS water vapor channels
  • Turn off correlated error over sea points (e.g, do not use Rcovsea files)

The resulting 2021112118_gdas and 2021112200_gfs gnorm curves are much smoother with significantly improved reduction in the gradient norm.

Additional tests for the 2021112200_gfs case show that the combination of monitoring IASI and CrIS water vapor channels along with turning off correlated error over sea points contributes the most to smoothing the gnorm curve and improving convergence. Thinning ASCAT to 75 km and increasing the observation error improves convergence, but this is a secondary effect for this case. Click here to view gnorm curves for other tests run for 2021112200_gfs.

@RussTreadon-NOAA
Copy link
Contributor Author

2021112506 gfs

MinMon flagged the operational 2021112506 gfs cycle for insufficient reduction.

Final gnorm gross check failure: suffix = GFS, cycle = 2021112506, final gnorm = 0.000768855949438719 File source for report is: /gpfs/dell1/nco/ops/com/gfs/prod/gfs.20211125/06/atmos/gfs.t06z.gsistat

Various sensitivity tests were run

  1. thin ASCAT winds to 75 km & increase observation error to 2.5 m/s
  2. monitor IASI & CrIS water vapor channels
  3. combine 1 and 2
  4. omit various Rcov (correlated error) files without 1 and 2
  5. combine 4 with 2
  6. combine 4 with 3

For this case the combination of thinning ASCAT winds to 75 km with an increased observation error along with monitoring IASI and CrIS water vapor channels (test 3) yields the greatest improvement in convergence with respect to operations.

Turning off correlated error over all land or sea points in test 3 improves convergence a bit. The overall best gnorm performance is obtained by combining test 3 with turning off correlated error off over sea points.

Gnorm curves for all tests run for this case are in https://www.emc.ncep.noaa.gov/gmb/wd20rt/plots/gnorm/gfs_2021112506/.

@RussTreadon-NOAA
Copy link
Contributor Author

2021112906 gfs and gdas and 2021112912 gfs

MinMon flagged the 2021112906 gfs, 2021112906 gdas, and 2021112912 gfs cycles for minimization resets and insufficient convergence.

Sensitivity tests were run for the two gfs cycles. The greatest gnorm reduction was obtained with the following combinations:

@RussTreadon-NOAA
Copy link
Contributor Author

@jderber-NOAA has extensively investigated GSI minimizations issues. He has developed a set of changes which significantly improve the minimization. NOAA-EMC/GSI issue #375 has been opened to document these changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants